/* ============================================================
   Denis Ponté — Portraits parlés
   © Denis Ponté — Tous droits réservés.
   Auteur et créateur : Denis Ponté.
   ============================================================ */

:root{
  --bg:#0a0a0a;--bg2:#111;--fg:#ede8df;--dim:#6a6a6a;--dim2:#3a3a3a;
  --accent:#c8a77a;--line:#1e1e1e;
  --serif:'Instrument Serif',Georgia,serif;
  --sans:'Inter',system-ui,sans-serif;
  --mono:'JetBrains Mono',monospace;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;scroll-padding-top:130px}
body{background:var(--bg);color:var(--fg);font-family:var(--sans);font-weight:300;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden;min-height:100vh}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:none;cursor:pointer}
::selection{background:var(--accent);color:var(--bg)}

/* ---------- OUVERTURE ---------- */
.overture{position:fixed;inset:0;background:#000;z-index:10000;display:flex;align-items:center;justify-content:center;transition:opacity 1.8s ease;padding:24px}
.overture p{font-family:var(--serif);font-style:italic;font-size:clamp(1.05rem,2.6vw,1.7rem);color:#5a5a5a;text-align:center;max-width:640px}
.overture.hide{opacity:0;pointer-events:none}

/* ---------- HEADER ---------- */
.site-header{position:sticky;top:0;z-index:100;background:rgba(10,10,10,.94);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}
.header-top{display:flex;justify-content:space-between;align-items:center;padding:16px 32px;gap:24px}
.brand-block{display:flex;align-items:center;gap:18px;flex-shrink:0;min-height:54px}
.brand-title{font-family:var(--serif);font-size:23px;font-style:italic;color:var(--fg);letter-spacing:-.01em;white-space:nowrap;line-height:1}
.logo-img{display:block;height:auto;width:auto;max-height:54px;max-width:220px;object-fit:contain;flex-shrink:0}
.header-controls{display:flex;align-items:center;gap:24px}
.sound-toggle{display:flex;align-items:center;gap:10px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;opacity:.75;transition:opacity .3s}
.sound-toggle:hover{opacity:1}
.sound-dot{width:7px;height:7px;border-radius:50%;background:#555;transition:background .4s,box-shadow .4s}
.sound-toggle.on .sound-dot{background:var(--accent);box-shadow:0 0 14px var(--accent)}
.lang-switch{display:flex;gap:2px;font-family:var(--mono);font-size:11px;letter-spacing:.1em}
.lang-switch a{padding:4px 10px;color:#666;transition:color .3s,background .3s;border-radius:2px}
.lang-switch a:hover{color:#fff}
.lang-switch a.active{color:#fff;background:rgba(255,255,255,.12)}
.header-nav{display:flex;padding:0 32px;border-top:1px solid var(--line);overflow-x:auto;scrollbar-width:none}
.header-nav::-webkit-scrollbar{display:none}
.header-nav a{padding:12px 20px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim);white-space:nowrap;border-left:1px solid var(--line);transition:color .3s,background .3s}
.header-nav a:last-child{border-right:1px solid var(--line)}
.header-nav a:hover{color:var(--fg);background:rgba(255,255,255,.03)}
.header-nav a.active{color:var(--fg);background:rgba(255,255,255,.06)}
.nav-num{color:var(--accent);margin-right:8px}

/* ---------- DROPDOWN SITES ---------- */
.sites-nav{position:relative;z-index:150}
.sites-toggle{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;opacity:.75;padding:6px 0;transition:opacity .3s}
.sites-nav:hover .sites-toggle,
.sites-toggle:hover{opacity:1}
.sites-toggle .caret{font-size:8px;line-height:1;transition:transform .3s}
.sites-nav:hover .sites-toggle .caret,
.sites-nav.open .sites-toggle .caret{transform:rotate(180deg)}
.sites-menu{position:absolute;top:100%;right:0;min-width:240px;background:#111;border:1px solid var(--line);padding:8px 0;list-style:none;opacity:0;visibility:hidden;transform:translateY(-6px);transition:opacity .25s,transform .25s,visibility .25s;box-shadow:0 10px 40px rgba(0,0,0,.7)}
@media (hover: hover) and (pointer: fine){
  .sites-nav:hover .sites-menu,
  .sites-nav:focus-within .sites-menu{opacity:1;visibility:visible;transform:translateY(0)}
}
.sites-nav.open .sites-menu{opacity:1;visibility:visible;transform:translateY(0)}
.sites-menu li a{display:block;padding:11px 20px;font-family:var(--mono);font-size:11px;letter-spacing:.12em;color:var(--dim);transition:background .2s,color .2s;white-space:nowrap}
.sites-menu li a:hover{background:rgba(255,255,255,.05);color:var(--fg)}

/* ---------- HERO ---------- */
.hero{min-height:80vh;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:80px 24px 40px;position:relative}
.hero-title{font-family:var(--serif);font-weight:400;font-size:clamp(3rem,12vw,11rem);line-height:.92;letter-spacing:-.035em;margin-bottom:36px}
.hero-title .letter{display:inline-block;opacity:0;transform:translateY(.35em);animation:letterIn 1.1s cubic-bezier(.2,.8,.2,1) forwards}
.hero-title .space{display:inline-block;width:.28em}
.subtitle{font-family:var(--mono);font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}
.scroll-hint{position:absolute;bottom:36px;left:50%;transform:translateX(-50%);font-family:var(--mono);font-size:10px;letter-spacing:.32em;text-transform:uppercase;color:var(--dim);display:flex;flex-direction:column;align-items:center;gap:14px}
.scroll-hint::after{content:'';width:1px;height:44px;background:var(--dim);animation:scrollLine 2.4s ease-in-out infinite}
@keyframes letterIn{to{opacity:1;transform:translateY(0)}}
@keyframes scrollLine{0%,100%{transform:scaleY(.25);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}}

/* ---------- MAIN / SECTIONS ---------- */
main{padding:0 32px;position:relative;z-index:2}
.section-label{display:flex;align-items:center;gap:18px;font-family:var(--mono);font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-bottom:56px}
.section-label .num{color:var(--accent)}
.section-label .line{flex:1;height:1px;background:var(--line)}
.section-intro{font-family:var(--serif);font-size:clamp(1.5rem,3vw,2.4rem);line-height:1.25;letter-spacing:-.015em;max-width:820px;margin-bottom:64px}

/* ---------- MANIFESTE ---------- */
.manifesto{padding:120px 0 80px;max-width:1280px;margin:0 auto}
.manifesto-statement{font-family:var(--serif);font-size:clamp(2rem,5.5vw,4.5rem);line-height:1.06;letter-spacing:-.02em;margin-bottom:64px}
.manifesto-statement em{font-style:italic;color:var(--accent)}
.manifesto-text{font-size:clamp(1rem,1.4vw,1.15rem);line-height:1.75;max-width:620px;margin-left:auto;color:#b8b2a8}
.manifesto-img{margin:80px auto 0;max-width:800px;display:flex;flex-direction:column;align-items:center;text-align:center}
.manifesto-img img{max-width:100%;width:100%;height:auto;display:block;border:1px solid var(--line);background:#151515}
.manifesto-img figcaption{margin-top:16px;font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim)}

/* ---------- JOURNEY ---------- */
.journey{padding-top:40px;padding-bottom:80px}
.journey-cta{display:inline-block;margin-top:48px;font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg);border-bottom:1px solid var(--accent);padding-bottom:4px;transition:color .3s}
.journey-cta:hover{color:var(--accent)}

/* ---------- EXPOSITION ---------- */
.expo-intro{padding:80px 0 40px;max-width:1280px;margin:0 auto}
.expo-grid{columns:3;column-gap:12px;max-width:1400px;margin:40px auto 120px}
.expo-grid figure{break-inside:avoid;margin:0 0 12px;cursor:zoom-in;position:relative}
.expo-grid img{width:100%;height:auto;display:block;background:#151515;transition:filter .5s}
.expo-grid figure:hover img{filter:brightness(1.15)}
.expo-grid figcaption{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;background:linear-gradient(to top,rgba(0,0,0,.9),transparent);font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:#ddd;opacity:0;transition:opacity .4s}
.expo-grid figure:hover figcaption{opacity:1}

/* ---------- TABLE LUMINEUSE ---------- */
.alphabet-intro{padding:80px 0 40px;max-width:1280px;margin:0 auto}
.apercu-section{padding:20px 0 80px;max-width:1400px;margin:0 auto}
.apercu-section .section-label{padding:0 32px;margin-bottom:24px}
.light-table{position:relative;max-width:1400px;margin:0 auto;padding:0 32px}
.light-table-viewport{overflow-x:auto;overflow-y:hidden;padding:50px 0;background:radial-gradient(ellipse at center, #17130f 0%, #0a0a0a 70%);border-top:1px solid var(--line);border-bottom:1px solid var(--line);cursor:grab;scrollbar-width:thin;scrollbar-color:var(--accent) var(--bg2)}
.light-table-viewport.grabbing{cursor:grabbing}
.light-table-viewport::-webkit-scrollbar{height:6px}
.light-table-viewport::-webkit-scrollbar-track{background:var(--bg2)}
.light-table-viewport::-webkit-scrollbar-thumb{background:var(--accent);border-radius:3px}
.light-table-track{display:flex;gap:28px;padding:0 40px;width:max-content;align-items:flex-start}
.light-slot{flex:0 0 480px;display:flex;flex-direction:column;gap:16px;cursor:zoom-in;user-select:none}
.light-slot-img{position:relative;background:#1a1512;border:1px solid #2a2018;padding:16px;box-shadow:0 0 50px rgba(200,167,122,.10),inset 0 0 80px rgba(200,167,122,.06);transition:box-shadow .5s,border-color .5s}
.light-slot:hover .light-slot-img{box-shadow:0 0 90px rgba(200,167,122,.30),inset 0 0 80px rgba(200,167,122,.15);border-color:#4a3a28}
.light-slot img{width:100%;aspect-ratio:4/5;object-fit:contain;display:block;pointer-events:none}
.light-slot--portrait{flex:0 0 500px}
.light-slot--rect{flex:0 0 500px}
.light-slot--rect img{aspect-ratio:3/2}
.light-slot-meta{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;padding:0 2px}
.light-slot-num{color:var(--accent)}
.light-slot-name{color:var(--fg);font-family:var(--serif);font-size:1.25rem;letter-spacing:-.01em;text-transform:none;font-style:italic}
.light-slot-country{font-family:var(--mono);font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);padding:0 2px;margin-top:-4px}
.light-table-nav{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;background:rgba(10,10,10,.92);border:1px solid var(--line);color:var(--fg);display:flex;align-items:center;justify-content:center;z-index:5;font-family:var(--mono);font-size:20px;transition:border-color .3s,color .3s,background .3s}
.light-table-nav:hover{border-color:var(--accent);color:var(--accent);background:rgba(20,20,20,.98)}
.light-table-prev{left:12px}
.light-table-next{right:12px}
.light-table-hint{text-align:center;margin-top:20px;font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim2)}

/* ============================================================
   PRESSE — archive radio, lecteurs natifs
   ============================================================ */
.press{padding:80px 0 120px}
.press-media{max-width:1100px;margin:0 auto}
.press-media-stack{display:flex;flex-direction:column;gap:1px;background:var(--line);border:1px solid var(--line)}

.press-media-card{
  background:var(--bg);
  padding:36px;
  display:grid;
  grid-template-columns:140px 1fr;
  gap:36px;
  align-items:start;
  transition:background .4s;
}
.press-media-card:hover{background:var(--bg2)}

.press-media-card .cover{
  width:100%;
  aspect-ratio:1/1;
  object-fit:contain;
  background:#0a0a0a;
  border:1px solid var(--line);
  padding:14px;
  filter:grayscale(1) brightness(.8);
  transition:filter .4s;
}
.press-media-card:hover .cover{filter:grayscale(.4) brightness(1)}

.press-media-card .body{display:flex;flex-direction:column;gap:12px;min-width:0}
.press-media-card .cat{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}
.press-media-card h3{font-family:var(--serif);font-weight:400;font-size:clamp(1.5rem,2.5vw,2rem);line-height:1.15;letter-spacing:-.01em;color:var(--fg)}
.press-media-card .desc{color:#a8a29a;font-size:.95rem;line-height:1.65;max-width:640px}

/* Lecteurs audio natifs */
.player{
  margin-top:14px;
  width:100%;
}
.player audio{
  width:100%;
  display:block;
  color-scheme: dark;
  accent-color: var(--accent);
  border-radius: 4px;
  background: #0a0a0a;
  min-height: 54px;
}
.player + .player-fallback{
  display:block;
  margin-top:8px;
  font-family:var(--mono);
  font-size:10px;
  letter-spacing:.1em;
  color:var(--dim);
}
.player-fallback a{
  color:var(--accent);
  border-bottom:1px solid var(--accent);
  padding-bottom:1px;
  text-decoration:none;
}
.player-fallback a:hover{color:#dcbb8e}

.press-media-card .row{display:flex;justify-content:space-between;align-items:baseline;gap:16px;flex-wrap:wrap;margin-top:6px}
.press-media-card .meta{font-family:var(--mono);font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--dim)}

.link-arrow{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg);border-bottom:1px solid var(--dim);padding-bottom:3px;align-self:flex-start;transition:border-color .3s,color .3s}
.link-arrow:hover{color:var(--accent);border-color:var(--accent)}

.press-ecrite{margin-top:100px;max-width:1400px;margin-left:auto;margin-right:auto}
.docs{display:grid;grid-template-columns:repeat(2,1fr);gap:0 32px}
.docs a{font-family:var(--mono);font-size:12px;padding:16px 0;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:baseline;gap:16px;transition:color .3s,padding-left .3s}
.docs a:hover{color:var(--accent);padding-left:8px}
.docs a span:first-child{color:var(--dim);font-size:10px;letter-spacing:.2em;text-transform:uppercase}

/* ---------- CONTACT ---------- */
.contact-page{padding:100px 0 120px;max-width:1100px;margin:0 auto}
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);margin-top:40px}
.contact-block{background:var(--bg);padding:48px}
.contact-block h2{font-family:var(--serif);font-size:clamp(2rem,4vw,3rem);font-weight:400;line-height:1.1;letter-spacing:-.02em;margin-bottom:24px}
.contact-block p{color:#b8b2a8;line-height:1.75;margin-bottom:14px;font-size:1rem}
.contact-block a{color:var(--fg);border-bottom:1px solid var(--dim2);transition:color .3s,border-color .3s;font-family:var(--mono);font-size:.95rem}
.contact-block a:hover{color:var(--accent);border-color:var(--accent)}
.contact-block .label{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--accent);margin-bottom:12px;display:block}

/* ---------- CREDITS / FOOTER ---------- */
.credits{padding:100px 0 60px;text-align:center;border-top:1px solid var(--line)}
.credits-text{font-family:var(--serif);font-size:clamp(1.4rem,2.6vw,2rem);line-height:1.3;max-width:720px;margin:0 auto 60px;letter-spacing:-.01em}
.footer-logos{display:flex;justify-content:center;align-items:center;gap:56px;margin:56px 0 40px;padding-top:40px;border-top:1px solid var(--line);flex-wrap:wrap}
.footer-logos a{display:block;opacity:.9;transition:opacity .3s}
.footer-logos a:hover{opacity:1}
.footer-logos img{height:auto;max-height:64px;width:auto;max-width:220px;filter:brightness(0) invert(1)}
.footer-logos img.no-filter{filter:none;background:transparent;padding:0}
.contact{margin-top:32px;font-family:var(--mono);font-size:12px;letter-spacing:.1em;line-height:2;color:var(--dim)}
.contact a{color:var(--fg);border-bottom:1px solid var(--dim2);transition:color .3s,border-color .3s}
.contact a:hover{color:var(--accent);border-color:var(--accent)}
.copy{margin-top:32px;font-family:var(--mono);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--dim2)}

/* ---------- SCROLL-TOP ---------- */
.to-top{position:fixed;bottom:28px;right:28px;z-index:90;width:48px;height:48px;border:1px solid var(--line);background:rgba(10,10,10,.9);backdrop-filter:blur(8px);color:var(--fg);display:flex;align-items:center;justify-content:center;opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .3s,transform .3s,border-color .3s,color .3s}
.to-top.visible{opacity:1;transform:translateY(0);pointer-events:auto}
.to-top:hover{border-color:var(--accent);color:var(--accent)}
.to-top::before{content:'↑';font-family:var(--mono);font-size:16px}

/* ---------- LIGHTBOX ---------- */
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.97);z-index:2000;display:none;align-items:center;justify-content:center;padding:60px;cursor:zoom-out}
.lightbox.open{display:flex}
.lightbox img{max-width:100%;max-height:100%;object-fit:contain;cursor:zoom-out}
.lightbox-close{position:absolute;top:20px;right:32px;font-size:40px;color:#fff;line-height:1;font-weight:300;cursor:pointer}
.lightbox-nav{position:absolute;top:50%;transform:translateY(-50%);font-size:40px;color:#fff;padding:20px;opacity:.5;transition:opacity .3s;cursor:pointer}
.lightbox-nav:hover{opacity:1}
.lightbox-prev{left:20px}
.lightbox-next{right:20px}

/* ---------- ERROR ---------- */
.error-wrap{padding:80px 0 120px;max-width:1400px;margin:0 auto}
.error-langs{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:40px}
.error-block{background:var(--bg);padding:48px 32px;display:flex;flex-direction:column;gap:14px}
.error-block .lang-label{font-family:var(--mono);font-size:10px;letter-spacing:.22em;text-transform:uppercase;color:var(--dim);margin-bottom:8px}
.error-block .err-num{font-family:var(--serif);font-size:clamp(4rem,8vw,7rem);line-height:.85;letter-spacing:-.04em;color:var(--accent);margin-bottom:16px}
.error-block h2{font-family:var(--serif);font-size:1.75rem;font-weight:400;letter-spacing:-.01em;margin-bottom:8px}
.error-block p{color:#b8b2a8;line-height:1.65;margin-bottom:20px}
.error-block a{font-family:var(--mono);font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--fg);border-bottom:1px solid var(--accent);padding-bottom:4px;align-self:flex-start}
.error-block a:hover{color:var(--accent)}

/* ---------- REVEAL ---------- */
.reveal{opacity:0;transform:translateY(34px);transition:opacity 1s cubic-bezier(.2,.8,.2,1),transform 1s cubic-bezier(.2,.8,.2,1)}
.reveal.visible{opacity:1;transform:translateY(0)}

/* ---------- RESPONSIVE ---------- */
@media (max-width:900px){
  html{scroll-padding-top:110px}
  main{padding:0 20px}
  .header-top{padding:12px 20px}
  .header-nav{padding:0 20px}
  .header-nav a{padding:10px 14px;font-size:10px}
  .nav-num{display:none}
  .header-controls{gap:14px}
  .sound-label{display:none}
  .brand-title{font-size:18px}
  .logo-img{max-height:42px;max-width:160px}
  .docs,.contact-grid,.error-langs{grid-template-columns:1fr}
  .manifesto{padding:90px 0 60px}
  .manifesto-img{max-width:100%}
  .expo-grid{columns:2}
  .light-table{padding:0 20px}
  .light-table-viewport{padding:32px 0}
  .light-table-track{padding:0 20px;gap:18px}
  .light-slot{flex-basis:380px}
  .light-slot--portrait{flex-basis:400px}
  .light-slot--rect{flex-basis:420px}
  .light-table-nav{width:44px;height:44px;font-size:16px}
  .light-table-prev{left:4px}
  .light-table-next{right:4px}
  .sites-menu{right:-60px}
  .apercu-section{padding:20px 0 60px}
  .apercu-section .section-label{padding:0 20px}
  .press-media-card{grid-template-columns:100px 1fr;padding:24px;gap:24px}
  .press-media-card .cover{padding:8px}
}
@media (max-width:600px){
  .brand-title{display:none}
  .header-controls{gap:10px}
  .sites-toggle{font-size:9px;letter-spacing:.14em}
  .sites-toggle .caret{display:none}
  .sites-menu{min-width:200px}
  .manifesto-text{margin-left:0}
  .footer-logos{gap:32px}
  .footer-logos img{max-height:48px}
  .lightbox{padding:20px}
  .lightbox-nav{font-size:28px}
  .expo-grid{columns:1}
  .contact-block{padding:32px}
  .error-block{padding:32px 24px}
  .light-slot{flex-basis:320px}
  .light-slot--portrait{flex-basis:320px}
  .light-slot--rect{flex-basis:340px}
  .press-media-card{grid-template-columns:1fr;padding:20px;gap:16px}
  .press-media-card .cover{max-width:100px;margin:0 auto}
}
@media print{body{background:#fff;color:#000}.site-header,.overture,.scroll-hint,.to-top,.lightbox{display:none}}