:root{
  --fond:#1a0a0b; --fond2:#240f11; --fond3:#2e1517;
  --texte:#f4eced; --doux:#cdb8ba;
  --rouge:#e95360; --cuivre:#e0a97b; --ligne:#4a2528;
  --titre:'Anton','Impact','Arial Narrow',sans-serif;
  --corps:'Barlow','Segoe UI',system-ui,sans-serif;
  --coupe:polygon(0 0,calc(100% - 14px) 0,100% 14px,100% 100%,14px 100%,0 calc(100% - 14px));
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{overflow-x:clip;margin:0;background:var(--fond);color:var(--texte);font-family:var(--corps);font-size:18px;line-height:1.55}
img{max-width:100%;height:auto;display:block}
a{color:var(--cuivre)}
h1,h2,h3{font-family:var(--titre);font-weight:400;text-transform:uppercase;letter-spacing:.01em;line-height:1.02;margin:0}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:0;background:var(--rouge);color:var(--fond);padding:.6rem 1rem;z-index:100}
.skip:focus{left:0}
:focus-visible{outline:3px solid var(--cuivre);outline-offset:3px}

.demo-bar{background:var(--cuivre);color:var(--fond);text-align:center;font-weight:600;font-size:14px;padding:.45rem 1rem}

.entete{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem clamp(1rem,4vw,3rem);background:rgba(26,10,11,.94);border-bottom:1px solid var(--ligne);backdrop-filter:blur(6px)}
.logo{font-family:var(--titre);font-size:30px;letter-spacing:.04em;text-decoration:none;color:var(--texte);display:flex;line-height:1}
.logo-r{color:var(--rouge)}
.nav{display:flex;align-items:center;gap:clamp(1rem,2.4vw,2rem)}
.nav a{color:var(--texte);text-decoration:none;font-weight:500;padding:.5rem 0;min-height:44px;display:inline-flex;align-items:center;border-bottom:2px solid transparent}
.nav a:hover{border-color:var(--rouge)}
.burger{display:none;min-height:44px;padding:0 1rem;background:none;color:var(--texte);border:1px solid var(--ligne);font:inherit;cursor:pointer}

.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 1.6rem;font:600 17px var(--corps);text-decoration:none;cursor:pointer;border:0;clip-path:var(--coupe)}
.btn-plein{background:var(--rouge);color:var(--fond)}
.btn-plein:hover{background:#f06b76}
.btn-contour{background:var(--texte);color:var(--fond);position:relative}
.btn-contour:hover{background:var(--cuivre)}

/* Accueil : l'entrée du parc */
.hero{position:relative;min-height:min(86vh,780px);display:flex;align-items:center;overflow:hidden;padding:4rem clamp(1rem,5vw,4rem) 8rem;isolation:isolate}
.hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-3;filter:brightness(1.25) contrast(1.08) saturate(1.1)}
.hero-ombre{position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(26,10,11,.78) 0%,rgba(26,10,11,.3) 45%,rgba(26,10,11,0) 100%),linear-gradient(0deg,var(--fond) 0%,transparent 22%)}
.hero-lampe{display:none}
.hero-texte{max-width:900px;position:relative;z-index:1}
.kicker{font:600 14px var(--corps);letter-spacing:.18em;text-transform:uppercase;color:var(--cuivre);margin:0 0 1rem}
.hero h1{font-size:clamp(3.4rem,10vw,10rem);margin-bottom:1.2rem}
.chapeau{font-size:clamp(1.1rem,2vw,1.35rem);max-width:34em;margin:0 0 2rem;color:var(--texte)}
.hero-actions{display:flex;gap:1rem;flex-wrap:wrap}

/* Lampe torche sur tout le site : un voile sombre fixe avec un trou de lumière qui suit la souris */
.lampe-globale,.lampe-halo{position:fixed;inset:0;pointer-events:none;opacity:0;transition:opacity .5s}
.lampe-globale{z-index:60;
  background:radial-gradient(circle var(--r,360px) at var(--lx,50%) var(--ly,40%),rgba(10,4,5,var(--c,0)) 0%,rgba(10,4,5,var(--m,.06)) 45%,rgba(10,4,5,var(--o,.3)) 100%)}
.lampe-halo{z-index:61;mix-blend-mode:screen;
  background:radial-gradient(circle calc(var(--r,360px) * .75) at var(--lx,50%) var(--ly,40%),rgba(255,226,170,var(--h,.22)) 0%,rgba(255,200,130,calc(var(--h,.22) * .45)) 40%,rgba(255,200,130,0) 100%)}
.lampe-on .lampe-globale,.lampe-on .lampe-halo{opacity:1}
.btn-lampe{min-height:44px;padding:0 .2rem;background:none;border:0;color:var(--doux);font:500 15px var(--corps);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.btn-lampe:hover{color:var(--texte)}

/* Mouvement au défilement (activé seulement si le script tourne et sans « animation réduite ») */
.hero-img{transform:translate3d(0,var(--py,0px),0) scale(1.18)}
.evenement-img{transform:translate3d(0,var(--py,0px),0) scale(1.2)}
.hero-texte{transform:translate3d(0,var(--ty,0px),0)}
.js .rev{opacity:0;transform:translate3d(0,46px,0);transition:opacity .8s ease,transform .9s cubic-bezier(.2,.7,.2,1);transition-delay:var(--d,0s)}
.js .rev.vu{opacity:1;transform:none}
.js h2.rev{opacity:0;transform:translate3d(-36px,0,0);letter-spacing:.08em;transition:opacity .8s ease,transform .9s cubic-bezier(.2,.7,.2,1),letter-spacing 1s ease}
.js h2.rev.vu{opacity:1;transform:none;letter-spacing:.01em}
.js .chiffre .chiffre-n{display:inline-block;transition:transform .7s cubic-bezier(.2,.9,.2,1),opacity .5s,filter .6s;transition-delay:var(--d,0s)}
.js .chiffre:not(.vu) .chiffre-n{transform:scale(1.7);opacity:0;filter:blur(8px)}
.menace-barres i{transform-origin:left center;transition:transform .35s ease}
.js .carte:not(.vu) .menace-barres i.on{transform:skewX(-20deg) scaleX(0)}
.menace-barres i:nth-child(1){transition-delay:.45s}.menace-barres i:nth-child(2){transition-delay:.55s}.menace-barres i:nth-child(3){transition-delay:.65s}.menace-barres i:nth-child(4){transition-delay:.75s}.menace-barres i:nth-child(5){transition-delay:.85s}
.carte{transition:transform .35s ease,opacity .8s ease}
.carte.vu:hover{transform:translateY(-8px)}
.carte-img{transition:transform .8s ease}
.carte:hover .carte-img{transform:scale(1.05)}
.carte{overflow:hidden}
@media (prefers-reduced-motion:reduce){
  .hero-img,.evenement-img{transform:none}.hero-texte{transform:none}
  .js .rev,.js h2.rev{opacity:1;transform:none;letter-spacing:.01em;transition:none}
  .js .chiffre:not(.vu) .chiffre-n{transform:none;opacity:1;filter:none}
  .js .carte:not(.vu) .menace-barres i.on{transform:skewX(-20deg)}
  .carte.vu:hover,.carte:hover .carte-img{transform:none}
}

/* Boîte de réservation, dès l'arrivée */
.reserver{position:relative;z-index:5;margin:-5.2rem clamp(1rem,5vw,4rem) 0}
.boite{display:grid;grid-template-columns:1.2fr .8fr 1fr auto;gap:1rem 1.2rem;align-items:end;background:var(--fond2);border:1px solid var(--ligne);border-top:4px solid var(--rouge);padding:1.4rem 1.6rem 1.2rem}
.champ{display:flex;flex-direction:column;gap:.35rem}
label{font:600 13px var(--corps);letter-spacing:.12em;text-transform:uppercase;color:var(--doux)}
input,select{font:500 17px var(--corps);min-height:48px;padding:0 .8rem;background:var(--fond);color:var(--texte);border:1px solid #6b3a3e;border-radius:0}
input:focus,select:focus{border-color:var(--cuivre)}
input[type=date]{color-scheme:dark}
.boite-note{grid-column:1/-1;margin:0;font-size:15px;color:var(--doux)}

.bloc{padding:5rem clamp(1rem,5vw,4rem) 2rem;max-width:1680px;margin-inline:auto}
.bloc-tete{display:flex;justify-content:space-between;align-items:end;gap:1rem;flex-wrap:wrap;margin-bottom:2rem}
.bloc h2,.regle h2,.evenement h2{font-size:clamp(2.2rem,5vw,3.8rem)}
.lien-fleche{font-weight:600;color:var(--cuivre)}
.cartes{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem}
.chargement,.erreur-charge{grid-column:1/-1;color:var(--doux)}
.carte{position:relative;background:var(--fond2);border:1px solid var(--ligne);display:flex;flex-direction:column;clip-path:var(--coupe)}
.carte-img{aspect-ratio:16/10;object-fit:cover;width:100%;border-bottom:3px solid var(--rouge)}
.carte-corps{padding:1.2rem 1.4rem 1.5rem;display:flex;flex-direction:column;gap:.7rem;flex:1}
.carte-cat{font:600 13px var(--corps);letter-spacing:.14em;text-transform:uppercase;color:var(--cuivre)}
.carte h3{font-size:2rem}
.carte p{margin:0;color:var(--texte)}
.menace{display:flex;align-items:center;gap:.5rem;font-size:14px;color:var(--doux)}
.menace-barres{display:flex;gap:3px}
.menace-barres i{display:block;width:16px;height:10px;background:#4a2528;transform:skewX(-20deg)}
.menace-barres i.on{background:var(--rouge)}
.carte-lien{margin-top:auto;font-weight:600;color:var(--cuivre);text-decoration:none;display:inline-flex;min-height:44px;align-items:center}
.carte-lien::after{content:'';position:absolute;inset:0}
.carte-lien:hover{text-decoration:underline}

.regle{padding:5rem clamp(1rem,5vw,4rem) 2rem;max-width:1680px;margin-inline:auto;overflow:hidden}
.regle-grille{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;border-top:1px solid var(--ligne);border-bottom:1px solid var(--ligne);padding:2rem 0}
.chiffre{display:flex;flex-direction:column;gap:.4rem}
.chiffre-n{font:400 clamp(4rem,9vw,7rem)/1 var(--titre);color:var(--rouge)}
.chiffre-t{color:var(--texte);max-width:16em}
.regle-texte{max-width:46em;margin:2rem 0 0;color:var(--doux);font-size:1.1rem}

.evenement{position:relative;margin-top:5rem;min-height:440px;display:flex;align-items:center;padding:4rem clamp(1rem,5vw,4rem);overflow:hidden;isolation:isolate}
.evenement-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;filter:brightness(1.5) saturate(1.1)}
.evenement-voile{position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(26,10,11,.85) 0%,rgba(26,10,11,.45) 50%,rgba(26,10,11,0) 100%)}
.evenement-texte{max-width:560px;display:flex;flex-direction:column;gap:1.1rem;align-items:flex-start}
.evenement-texte p{margin:0}

.faq{display:grid;grid-template-columns:1fr 1fr;gap:1rem 4rem;align-items:start}
.faq>h2{grid-column:1/-1}
.faq-liste{grid-column:1}
.faq-image{grid-column:2;grid-row:2;position:sticky;top:6rem;border:1px solid var(--ligne);border-top:4px solid var(--rouge);margin:0;clip-path:var(--coupe)}
.faq-image img{width:100%;aspect-ratio:4/3;object-fit:cover;filter:brightness(.95) contrast(1.1)}
.faq-image figcaption{padding:.8rem 1rem;font-size:15px;color:var(--doux)}
.faq h2{margin-bottom:.5rem}
details{border-top:1px solid var(--ligne);padding:.2rem 0}
details:last-of-type{border-bottom:1px solid var(--ligne)}
summary{cursor:pointer;font-weight:600;font-size:1.15rem;padding:1rem 0;min-height:48px;display:flex;align-items:center}
summary::marker{color:var(--rouge)}
details p{margin:0 0 1.2rem;color:var(--doux)}

.pied{margin-top:5rem;background:#120708;border-top:1px solid var(--ligne);padding:3rem clamp(1rem,5vw,4rem)}
.pied-grille{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:2rem}
.pied-titre{font:400 28px var(--titre);margin:0 0 .6rem;text-transform:uppercase}
.pied nav{display:flex;flex-direction:column}
.pied nav a{display:inline-flex;align-items:center;min-height:44px}
.pied-demo{font-size:15px;color:var(--doux);margin:0}

/* Fenêtre de connexion */
dialog{background:var(--fond2);color:var(--texte);border:1px solid var(--ligne);border-top:4px solid var(--rouge);padding:1.6rem;width:min(480px,calc(100vw - 2rem))}
dialog::backdrop{background:rgba(0,0,0,.75)}
dialog h2{font-size:2.2rem;margin-bottom:.6rem}
.connexion-fermer{position:absolute;top:.5rem;right:.6rem;margin:0}
.fermer{width:44px;height:44px;background:none;border:0;color:var(--texte);font-size:28px;cursor:pointer}
.connexion-demo{margin:0 0 1rem;font-size:15px;color:var(--cuivre)}
.onglets{display:flex;gap:.5rem;margin-bottom:1rem}
.onglets button{flex:1;min-height:44px;background:var(--fond);color:var(--texte);border:1px solid var(--ligne);font:600 16px var(--corps);cursor:pointer}
.onglets button[aria-selected=true]{border-color:var(--rouge);background:var(--fond3)}
.panneau{display:flex;flex-direction:column;gap:1rem}
.panneau[hidden]{display:none}
.erreur{margin:0;color:#ff9aa2;font-weight:600}

@media (min-width:901px){
  .hero-img{left:auto;right:0;width:72%;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 40%);mask-image:linear-gradient(90deg,transparent 0,#000 40%)}
}
@media (max-width:1100px){
  .boite{grid-template-columns:1fr 1fr}
  .boite .btn{grid-column:1/-1}
}
@media (max-width:900px){
  .faq{grid-template-columns:1fr}
  .faq-liste,.faq-image{grid-column:1;grid-row:auto;position:static}
  .cartes{grid-template-columns:1fr 1fr}
  .regle-grille{grid-template-columns:1fr}
  .pied-grille{grid-template-columns:1fr}
}
@media (max-width:760px){
  body{font-size:17px}
  .burger{display:inline-flex;align-items:center}
  .nav{display:none;position:absolute;left:0;right:0;top:100%;flex-direction:column;align-items:stretch;gap:0;background:var(--fond);border-bottom:1px solid var(--ligne);padding:.5rem clamp(1rem,4vw,3rem) 1rem}
  .nav.ouvert{display:flex}
  .nav .btn{margin-top:.6rem}
  .hero{min-height:auto;padding:3rem 1rem 7rem}
  .reserver{margin:-4.4rem 1rem 0}
  .boite{grid-template-columns:1fr;padding:1.2rem}
  .cartes{grid-template-columns:1fr}
  .bloc,.regle{padding-top:3.5rem}
  .evenement{margin-top:3.5rem}
}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

/* ---------- Défilement renforcé ---------- */
.defil{position:fixed;top:0;left:0;right:0;height:4px;z-index:70;background:var(--accent,#e95360);transform:scaleX(var(--prog,0));transform-origin:left;pointer-events:none;box-shadow:0 0 12px rgba(233,83,96,.8)}
.js .rev-g{transform:translate3d(-120px,40px,0) rotate(-2deg)}
.js .rev-d{transform:translate3d(120px,40px,0) rotate(2deg)}
.js .rev-z{transform:scale(.82) translate3d(0,50px,0)}
.js .rev-g.vu,.js .rev-d.vu,.js .rev-z.vu{transform:none}
.hero-img{transform:translate3d(0,var(--py,0px),0) scale(var(--zm,1.18))}
.evenement-img{transform:translate3d(0,var(--py,0px),0) scale(var(--zm,1.2))}

/* La horde : une scène fixe pendant que la page défile, les zombies avancent vers l'écran */
.horde{position:relative;background:#000}
.horde-scene{position:relative;height:100vh;overflow:hidden;isolation:isolate;display:grid;place-items:center}
.h-couche{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;will-change:transform,opacity;filter:brightness(1.3) contrast(1.12) saturate(1.1)}
.h-1{opacity:1}
.horde-voile{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at center,rgba(0,0,0,0) 30%,rgba(0,0,0,.85) 100%);opacity:var(--vo,.5)}
.horde-voile::after{content:"";position:absolute;inset:0;background:#c4202f;mix-blend-mode:multiply;opacity:var(--rg,0)}
.horde-textes{position:relative;z-index:2;text-align:center;padding:0 clamp(1rem,6vw,5rem);max-width:1100px}
.horde-textes h2{font-size:clamp(3rem,9vw,8rem);text-shadow:0 4px 30px #000;margin-bottom:1.5rem}
.h-ligne{position:absolute;left:0;right:0;font:500 clamp(1.2rem,2.6vw,2rem)/1.4 var(--corps);text-shadow:0 2px 16px #000,0 0 40px #000;opacity:0;transform:translateY(24px);transition:opacity .4s,transform .4s;padding:0 1rem}
.h-ligne.on{opacity:1;transform:none}
.horde-textes{min-height:12rem}
.horde-textes h2{margin-bottom:9rem}
.h-ligne{top:calc(100% - 7rem)}
.horde-jauge{position:absolute;left:clamp(1rem,5vw,4rem);right:clamp(1rem,5vw,4rem);bottom:2.2rem;height:3px;background:rgba(255,255,255,.18)}
.horde-jauge i{display:block;height:100%;background:#e95360;transform:scaleX(var(--p,0));transform-origin:left}
@media (prefers-reduced-motion:no-preference){
  .js .horde-piste{height:190vh}
  .js .horde-scene{position:sticky;top:0}
}
@media (prefers-reduced-motion:reduce){
  .h-1,.h-3{display:none}.h-2{opacity:1}
  .horde-scene{height:70vh}
  .h-ligne{position:static;opacity:1;transform:none;margin:.6rem 0}
  .horde-textes h2{margin-bottom:1rem}
  .horde-jauge,.defil{display:none}
  .js .rev-g,.js .rev-d,.js .rev-z{transform:none}
}
