:root{
  --paper:#e9e6de;
  --ink:#0a0a0a;
  --dim:#8f8b83;

  /* --- reglages composition (ajustables a la volee) --- */
  --globe-bright:.82;   /* luminosite du globe derriere le titre (0.3 - 1.2) */
  --title-h:52vh;       /* hauteur du titre (part de la hauteur d'ecran) */
}

*{margin:0;padding:0;box-sizing:border-box}
html,body{height:100%;background:var(--ink);overflow:hidden}
body{font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;color:var(--paper);
  -webkit-font-smoothing:antialiased;position:relative}

/* titre lisible pour le SEO / lecteurs d'ecran, masque visuellement */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;
  clip:rect(0,0,0,0);white-space:nowrap;border:0}

/* --- Globe --- */
#scene{position:fixed;inset:0;z-index:1;touch-action:none;cursor:grab;
  filter:brightness(var(--globe-bright))}
#scene.grabbing{cursor:grabbing}
canvas{display:block}

/* --- Titre : deux calques superposes, fusion screen ---
   #fumees derriere (anime), #lettrage devant (stable). */
#title{position:fixed;inset:0;z-index:3;pointer-events:none;display:grid;place-items:center}
.tlayer{grid-area:1/1;height:var(--title-h);width:auto;max-width:92vw;object-fit:contain;
  mix-blend-mode:screen}
#fumees{opacity:var(--fumees-op,.7);transform-origin:center center;
  transform:scale(var(--fumees-sx,1),var(--fumees-sy,1));
  -webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 var(--fumees-fade,12%),#000 calc(100% - var(--fumees-fade,12%)),transparent 100%);
  mask-image:linear-gradient(to bottom,transparent 0,#000 var(--fumees-fade,12%),#000 calc(100% - var(--fumees-fade,12%)),transparent 100%)}
#lettrage{opacity:var(--lettrage-op,1)}

/* --- Intro : cascade titre → bandeau + ville → tagline + menu (déclenchée à INTRO.revealAt) --- */
#title{transition:opacity 1.2s ease, transform 1.4s cubic-bezier(.16,1,.3,1)}
html.intro #title{opacity:0;transform:translateY(30px) scale(1.1)}
/* le bandeau descend du haut, synchro avec l'illumination de la ville (~revealAt + 1s) */
#band{transition:opacity .9s ease 1s, transform 1s cubic-bezier(.16,1,.3,1) 1s}
html.intro #band{opacity:0;transform:translateY(-100%)}
.bl{transition:opacity 1s ease 2s}                                   /* tagline en dernier */
html.intro .bl{opacity:0}
.band-right{transition:opacity 1s ease 2s}                           /* menu en dernier */
html.intro .band-right{opacity:0}

/* --- Bandeau haut : contraste inversé (fond clair, texte sombre) --- */
#band{position:fixed;top:0;left:0;right:0;z-index:8;
  display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:13px 24px;background:var(--paper);color:var(--ink);
  font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:600}
.band-left{flex:1 1 auto;min-width:0;display:flex;flex-wrap:wrap;align-items:baseline;column-gap:14px;row-gap:2px}
.band-left .teaser,.band-left .soir{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
#clock{font-variant-numeric:tabular-nums}
.band-right{flex:0 0 auto;display:flex;align-items:center}
.band-right .nav-links{display:flex;gap:24px}
.band-right a{color:var(--ink);text-decoration:none;opacity:.72;transition:opacity .3s}
.band-right a:hover{opacity:1}
.burger{display:none}

/* --- Bas gauche : ce qu'on fait (blanc sur noir, fusion screen) --- */
.chrome{position:fixed;z-index:5;font-size:11px;letter-spacing:.22em;text-transform:uppercase;
  color:var(--paper);font-weight:600;mix-blend-mode:screen}
.bl{left:30px;bottom:26px;line-height:1.9}
.bl .lo{color:var(--dim);letter-spacing:.28em;font-size:10px}

/* --- Responsive --- */
@media (max-width:640px){
  #band{padding:9px 16px;font-size:9px;letter-spacing:.1em;align-items:center}
  /* teaser en haut, heure du soir + ville plus petit en dessous (retour à la ligne auto) */
  .band-left{flex-direction:column;column-gap:0;row-gap:1px}
  .band-left .teaser{font-size:9px;letter-spacing:.14em}
  .band-left .soir{font-size:8px;opacity:.72;letter-spacing:.06em}
  .bl{font-size:8px;bottom:22px;letter-spacing:.1em}
  .bl .lo{font-size:8px;letter-spacing:.18em}
  /* burger sombre sur le bandeau clair */
  .burger{display:flex;flex-direction:column;justify-content:center;gap:5px;
    width:30px;height:30px;padding:5px;background:none;border:0;cursor:pointer;
    pointer-events:auto;position:relative;z-index:10}
  .burger span{display:block;width:20px;height:2px;background:var(--ink);
    transition:transform .3s ease,opacity .2s ease,background .3s ease}
  #nav.open .burger span{background:var(--paper)}                       /* croix claire sur le menu sombre */
  #nav.open .burger span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  #nav.open .burger span:nth-child(2){opacity:0}
  #nav.open .burger span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .band-right .nav-links{position:fixed;inset:0;z-index:9;
    background:rgba(8,8,8,.96);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    flex-direction:column;align-items:center;justify-content:center;gap:38px;
    opacity:0;visibility:hidden;transition:opacity .3s ease,visibility .3s ease}
  .band-right .nav-links a{color:var(--paper);font-size:16px;letter-spacing:.24em;opacity:.9}
  #nav.open .nav-links{opacity:1;visibility:visible}
}

/* ============ Page contact ============ */
html.page-contact, html.page-contact body{height:auto;min-height:100%;overflow-x:hidden;overflow-y:auto}
.contact-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:120px 24px 60px}
.contact{width:100%;max-width:560px}
.contact .h{font-size:clamp(2.6rem,8vw,4.4rem);font-weight:700;letter-spacing:-.02em;line-height:.92;
  margin-bottom:14px;color:var(--paper)}
.contact .lead{color:var(--dim);font-size:13px;letter-spacing:.03em;line-height:1.7;margin-bottom:40px;max-width:46ch}
.contact form{display:flex;flex-direction:column;gap:24px}
.field{display:flex;flex-direction:column;gap:9px}
.field label{font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--dim)}
.field input,.field textarea{background:transparent;border:0;border-bottom:1px solid rgba(233,230,222,.22);
  color:var(--paper);font:inherit;font-size:15px;padding:9px 0;outline:none;transition:border-color .3s}
.field input:focus,.field textarea:focus{border-color:var(--paper)}
.field textarea{resize:vertical;min-height:100px;line-height:1.5}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.send{align-self:flex-start;margin-top:8px;background:var(--paper);color:var(--ink);border:0;cursor:pointer;
  font:inherit;font-size:11px;letter-spacing:.2em;text-transform:uppercase;font-weight:600;padding:15px 30px;transition:opacity .3s}
.send:hover{opacity:.85}
.send:disabled{opacity:.5;cursor:default}
.form-msg{margin-top:20px;font-size:12px;letter-spacing:.03em;line-height:1.5;min-height:1em}
.form-msg.ok{color:var(--paper)}
.form-msg.err{color:#e0a3a3}
.direct{margin-top:38px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--dim)}
.direct a{color:var(--paper);text-decoration:none;border-bottom:1px solid rgba(233,230,222,.3)}
.direct a:hover{border-color:var(--paper)}
.direct .loc{display:block;margin-top:8px;letter-spacing:.24em;font-size:10px}
.band-left a.home{color:var(--ink);text-decoration:none}
#getintouch{margin-bottom: 5rem;}
@media (max-width:640px){ .contact-wrap{align-items:flex-start;padding-top:104px} }
/* ============ Écran d'entrée + son ============ */
#enter{position:fixed;inset:0;z-index:100;background:var(--paper);color:var(--ink);
  display:flex;align-items:center;justify-content:center;text-align:center;cursor:pointer;
  transition:opacity .6s ease, visibility 0s .6s}
#enter.gone{opacity:0;visibility:hidden;pointer-events:none}
.enter-inner{padding:24px}
.enter-teaser{font-size:clamp(1.6rem,5.2vw,2.7rem);font-weight:700;letter-spacing:.02em;
  text-transform:uppercase;line-height:1.12}
.enter-cta{margin-top:22px;font-size:11px;letter-spacing:.28em;text-transform:uppercase;font-weight:600;
  opacity:.5;animation:enterpulse 2s ease-in-out infinite}
.enter-cta .tri{display:inline-block;width:0;height:0;border-left:7px solid currentColor;
  border-top:5px solid transparent;border-bottom:5px solid transparent;margin-right:9px;vertical-align:baseline}
@keyframes enterpulse{0%,100%{opacity:.38}50%{opacity:.9}}
#enter:hover .enter-cta{opacity:1;animation:none}
@media (prefers-reduced-motion:reduce){.enter-cta{animation:none;opacity:.7}}

/* haut-parleur (dans le bandeau clair) */
.sound{background:none;border:0;cursor:pointer;color:var(--ink);padding:4px;margin-right:16px;
  display:inline-flex;align-items:center;line-height:0;opacity:.72;transition:opacity .3s}
.sound:hover{opacity:1}
.sound .wv,.sound .sl{transition:opacity .2s}
.sound .sl{opacity:0}
.sound.muted .wv{opacity:0}
.sound.muted .sl{opacity:1}

/* ============ Overlay contact (par-dessus la page, sans navigation) ============ */
#contact-overlay{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
  padding:80px 24px 48px;overflow-y:auto;
  background:rgba(9,9,9,.94);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  opacity:0;visibility:hidden;transition:opacity .45s ease, visibility 0s .45s}
#contact-overlay.open{opacity:1;visibility:visible;transition:opacity .45s ease}
.contact-panel{position:relative;width:100%;max-width:560px;
  transform:translateY(18px);transition:transform .55s cubic-bezier(.16,1,.3,1)}
#contact-overlay.open .contact-panel{transform:none}
.contact-close{position:fixed;top:18px;right:26px;z-index:2;background:none;border:0;color:var(--paper);
  font-size:32px;line-height:1;cursor:pointer;opacity:.6;transition:opacity .3s}
.contact-close:hover{opacity:1}
@media (max-width:640px){ #contact-overlay{align-items:flex-start} .contact-close{top:12px;right:16px} }