/* Pages intérieures de ZombieLand (en plus de site.css) */
.page-tete{padding:4rem clamp(1rem,5vw,4rem) 2rem;max-width:1680px;margin-inline:auto}
.page-tete h1{font-size:clamp(2.4rem,9vw,6.5rem);margin-bottom:1rem;overflow-wrap:anywhere}
.page-tete .chapeau{margin-bottom:0}
.page-bloc{padding:2.5rem clamp(1rem,5vw,4rem);max-width:1680px;margin-inline:auto}
.page-bloc>h2{font-size:clamp(2rem,4vw,3rem);margin-bottom:1.4rem}
.prose{max-width:46em}
.prose h2{font-size:clamp(1.8rem,3.4vw,2.6rem);margin:2.6rem 0 1rem}
.prose h3{font-size:1.5rem;margin:1.8rem 0 .6rem;color:var(--cuivre)}
.prose p,.prose li{color:var(--texte)}
.prose ul{padding-left:1.2rem}
.prose li{margin:.4rem 0}
.prose .doux{color:var(--doux)}
.mention-fictive{display:inline-block;border:2px solid var(--cuivre);color:var(--cuivre);font:600 13px var(--corps);letter-spacing:.14em;text-transform:uppercase;padding:.2rem .6rem;margin-bottom:1rem}

/* Avis */
.avis{border-left:4px solid var(--cuivre);background:var(--fond2);padding:1rem 1.2rem;margin:0 0 1.2rem}
.avis-ok{border-color:#7bd28f}
.avis-err{border-color:#ff9aa2;color:#ffd5d9}

/* Filtres */
.filtres{display:grid;grid-template-columns:2fr 1fr 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.2rem 1.4rem;margin:1rem clamp(1rem,5vw,4rem) 0;max-width:1680px}
.resultats{grid-column:1/-1;margin:0;font-size:15px;color:var(--doux)}
@media (min-width:1760px){.filtres{margin-inline:auto}}
#vide{color:var(--doux);font-size:1.15rem}

/* Fiche d'une attraction */
.fiche{display:grid;grid-template-columns:1.25fr .75fr;gap:2.5rem;align-items:start}
.fiche-img{margin:0;border:1px solid var(--ligne);border-top:4px solid var(--rouge);clip-path:var(--coupe)}
.fiche-img img{width:100%;aspect-ratio:16/10;object-fit:cover}
.dossier{display:flex;flex-direction:column;gap:1.2rem}
.tampon{align-self:flex-start;border:3px solid var(--rouge);color:var(--rouge);font:400 1.3rem var(--titre);padding:.2rem .8rem;transform:rotate(-3deg);letter-spacing:.12em;text-transform:uppercase}
.dossier h1{font-size:clamp(2.6rem,5vw,4.4rem)}
.faits{display:grid;grid-template-columns:1fr 1fr;gap:1rem 1.4rem;margin:0;padding:1.2rem 0;border-top:1px solid var(--ligne);border-bottom:1px solid var(--ligne)}
.faits dt{font:600 13px var(--corps);letter-spacing:.12em;text-transform:uppercase;color:var(--doux)}
.faits dd{margin:.2rem 0 0;font-size:1.15rem}
.dossier-texte{margin:0;font-size:1.1rem}
.fiche-actions{display:flex;gap:1rem;flex-wrap:wrap}
.liees{margin-top:4rem}
.liees h2{font-size:clamp(1.8rem,3.4vw,2.6rem);margin-bottom:1.4rem}

/* Laissez-passer et réservation */
.boite-billet{display:flex;flex-direction:column;gap:1.4rem;align-items:stretch;margin:0}
.rangee{display:grid;grid-template-columns:1fr 1fr;gap:1rem 1.2rem}
fieldset.billets{border:0;margin:0;padding:0;min-width:0}
.billets legend{font:600 13px var(--corps);letter-spacing:.12em;text-transform:uppercase;color:var(--doux);margin-bottom:.6rem;padding:0}
#liste-billets{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem}
.billet{position:relative;display:block;cursor:pointer}
.billet input{position:absolute;opacity:0;inset:0;width:100%;height:100%;cursor:pointer;margin:0}
.billet-corps{display:flex;flex-direction:column;gap:.4rem;height:100%;background:var(--fond);border:1px solid #6b3a3e;padding:1rem 1.1rem}
.billet input:checked ~ .billet-corps{border-color:var(--rouge);background:var(--fond3);box-shadow:inset 0 4px 0 var(--rouge)}
.billet input:focus-visible ~ .billet-corps{outline:3px solid var(--cuivre);outline-offset:3px}
.billet input:disabled{cursor:not-allowed}
.billet input:disabled ~ .billet-corps{opacity:.45}
.billet-nom{font:400 1.5rem var(--titre);text-transform:uppercase}
.billet-prix{font:400 2.4rem/1 var(--titre);color:var(--rouge)}
.billet-unite{font-size:14px;color:var(--doux)}
.billet-detail{font-size:15px}
.billet-regle{font-size:14px;color:var(--cuivre)}
.total{font-size:1.2rem}
.total strong{font:400 2.4rem/1 var(--titre);color:var(--rouge);margin-left:.4rem}
.recap{display:grid;grid-template-columns:auto 1fr;gap:.6rem 1.6rem;margin:0 0 1.4rem}
.recap dt{font:600 13px var(--corps);letter-spacing:.12em;text-transform:uppercase;color:var(--doux);align-self:center}
.recap dd{margin:0;font-size:1.15rem}
.code-resa{font:400 2.6rem/1 var(--titre);color:var(--rouge);letter-spacing:.06em}
.actions{display:flex;gap:1rem;flex-wrap:wrap}

/* Carnet de survie */
.resa{display:grid;grid-template-columns:1fr auto;gap:1rem 2rem;align-items:center;background:var(--fond2);border:1px solid var(--ligne);border-left:4px solid var(--rouge);padding:1.2rem 1.4rem;margin-bottom:1rem}
.resa.annulee{border-left-color:#6b3a3e;opacity:.7}
.resa h3{font-size:1.7rem;margin-bottom:.3rem}
.resa p{margin:.2rem 0;color:var(--doux)}
.statut{display:inline-block;font:600 13px var(--corps);letter-spacing:.12em;text-transform:uppercase;padding:.15rem .6rem;border:2px solid var(--cuivre);color:var(--cuivre);margin-left:.6rem;vertical-align:middle}
.resa.annulee .statut{border-color:#6b3a3e;color:var(--doux)}
.resa-actions{display:flex;gap:.8rem;flex-wrap:wrap;justify-content:flex-end}

/* Programme (événement) */
.programme{list-style:none;margin:0;padding:0 0 0 1.6rem;border-left:3px solid var(--rouge);max-width:46em}
.programme li{position:relative;padding:0 0 1.8rem 1rem}
.programme li::before{content:'';position:absolute;left:calc(-1.6rem - 9px);top:.45rem;width:15px;height:15px;background:var(--fond);border:3px solid var(--rouge);transform:rotate(45deg)}
.programme .heure{display:block;font:400 1.7rem var(--titre);color:var(--rouge);letter-spacing:.04em}
.programme strong{display:block;font-size:1.2rem}
.programme p{margin:.2rem 0 0;color:var(--doux)}

/* Informations pratiques */
.infos-grille{display:grid;grid-template-columns:repeat(2,1fr);gap:1.6rem}
.info-carte{background:var(--fond2);border:1px solid var(--ligne);border-top:4px solid var(--rouge);padding:1.4rem 1.6rem}
.info-carte h2,.info-carte h3{font-size:1.9rem;margin-bottom:.8rem}
.info-carte p,.info-carte li{color:var(--texte)}
.info-carte ul{margin:0;padding-left:1.2rem}
.table{width:100%;border-collapse:collapse}
.table th,.table td{text-align:left;padding:.7rem .8rem;border-bottom:1px solid var(--ligne);vertical-align:middle}
.table th{font:600 13px var(--corps);letter-spacing:.12em;text-transform:uppercase;color:var(--doux)}

/* Administration */
.admin-grille{display:grid;grid-template-columns:1fr 1.1fr;gap:2.4rem;align-items:start}
.admin-form{display:grid;grid-template-columns:1fr 1fr;gap:1rem 1.2rem;background:var(--fond2);border:1px solid var(--ligne);border-top:4px solid var(--rouge);padding:1.4rem}
.admin-form .large{grid-column:1/-1}
.admin-form textarea{font:500 17px var(--corps);min-height:110px;padding:.7rem .8rem;background:var(--fond);color:var(--texte);border:1px solid #6b3a3e;border-radius:0;resize:vertical}
.coche{display:flex;align-items:center;gap:.6rem;font-size:1rem;color:var(--texte);letter-spacing:0;text-transform:none;font-weight:500}
.coche input{width:22px;height:22px;min-height:0}
.apercu-image{max-width:260px;border:1px solid var(--ligne);margin-top:.6rem}
.apercu-image img{width:100%;aspect-ratio:16/10;object-fit:cover}
.mini-btn{min-height:40px;padding:0 1rem;font:600 15px var(--corps);background:var(--fond);color:var(--texte);border:1px solid #6b3a3e;cursor:pointer}
.mini-btn:hover{border-color:var(--cuivre)}
.mini-btn.danger{border-color:#ff9aa2;color:#ffd5d9}
.vignette{width:72px;aspect-ratio:16/10;object-fit:cover;border:1px solid var(--ligne);display:block}
.inactive-tag{color:var(--doux);font-style:italic}

@media (max-width:1100px){
  #liste-billets{grid-template-columns:1fr 1fr}
  .filtres{grid-template-columns:1fr 1fr}
  .admin-grille{grid-template-columns:1fr}
}
@media (max-width:900px){
  .fiche{grid-template-columns:1fr}
  .infos-grille{grid-template-columns:1fr}
}
@media (max-width:640px){
  .filtres,.rangee,.faits,.admin-form{grid-template-columns:1fr}
  #liste-billets{grid-template-columns:1fr}
  .resa{grid-template-columns:1fr}
  .resa-actions{justify-content:flex-start}
  .recap{grid-template-columns:1fr;gap:.2rem}
  .recap dd{margin-bottom:.8rem}
  .table thead{display:none}
  .table tr{display:block;border-bottom:1px solid var(--ligne);padding:.6rem 0}
  .table td{display:block;border:0;padding:.2rem .8rem}
}

.champ{min-width:0}
.champ input:not([type=checkbox]):not([type=radio]),.champ select,.champ textarea{width:100%;min-width:0}
.admin-grille>*{min-width:0}

/* Les cartes de laissez-passer sont des <label> : on annule le style des étiquettes de formulaire */
.billet{font:400 18px/1.5 var(--corps);letter-spacing:0;text-transform:none;color:var(--texte)}

/* ---------- Survol et appui sur tous les boutons ---------- */
.btn,.mini-btn,.burger,.onglets button,.btn-lampe,.billet-corps,.lien-fleche,.nav a,.bouton-compte,.faq-liste summary{transition:transform .2s ease,background-color .2s,color .2s,border-color .2s,box-shadow .25s,filter .2s}
.btn:hover{transform:translateY(-3px);box-shadow:0 8px 22px rgba(233,83,96,.45);filter:brightness(1.06)}
.btn-contour:hover{box-shadow:0 8px 22px rgba(224,169,123,.4)}
.btn:active,.mini-btn:active,.onglets button:active{transform:translateY(1px) scale(.98);box-shadow:none}
.mini-btn:hover{background:var(--fond3);border-color:var(--cuivre);color:#fff;transform:translateY(-2px)}
.mini-btn.danger:hover{background:#4a1519;border-color:#ff6b78}
.burger:hover{background:var(--fond3);border-color:var(--cuivre)}
.onglets button:hover{background:var(--fond3);border-color:var(--cuivre)}
.btn-lampe:hover{color:var(--rouge)}
.billet:hover .billet-corps{border-color:var(--cuivre);background:var(--fond3);transform:translateY(-4px);box-shadow:0 10px 24px rgba(0,0,0,.5)}
.billet input:disabled ~ .billet-corps{transform:none;box-shadow:none}
.lien-fleche:hover{color:var(--rouge);text-decoration:underline;text-underline-offset:4px}
.faq-liste summary{cursor:pointer}
.faq-liste summary:hover{color:var(--rouge)}
.filtres select:hover,.filtres input:hover,.admin-form input:hover,.admin-form select:hover,.admin-form textarea:hover,.boite select:hover,.boite input:hover{border-color:var(--cuivre)}
.nav a:hover{color:var(--rouge)}
.btn:focus-visible,.mini-btn:focus-visible{outline:3px solid var(--cuivre);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.btn:hover,.mini-btn:hover,.billet:hover .billet-corps{transform:none}}

/* ---------- Page attractions : grille équilibrée (8 = 4 + 4, ou 2 x 4) ---------- */
#liste-attractions{grid-template-columns:repeat(var(--cols,4),1fr)}
#liste-attractions[style*="--cols: 1"]{max-width:520px}
@media (max-width:1280px){#liste-attractions{grid-template-columns:repeat(2,1fr)}}
@media (min-width:1000px) and (max-width:1280px){#liste-attractions{grid-template-columns:repeat(var(--cols-m,2),1fr)}}
@media (max-width:700px){#liste-attractions{grid-template-columns:1fr}}

/* ---------- Survol de tous les liens ---------- */
a{transition:color .2s,border-color .2s,background-color .2s,box-shadow .25s,transform .2s,text-shadow .2s}
a:not(.btn):not(.logo):not(.skip):hover{color:var(--rouge);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:2px}
.nav a:hover,.nav a:not(.btn):hover{text-decoration:none;border-color:var(--rouge)}
.logo{transition:transform .2s,text-shadow .25s}
.logo:hover{transform:scale(1.05);text-shadow:0 0 18px rgba(233,83,96,.7)}
.pied nav a:hover{padding-left:.6rem;color:var(--rouge)}
.pied nav a{transition:padding-left .2s,color .2s}
.carte-lien:hover{color:var(--rouge)}
.carte:has(.carte-lien:hover){border-color:var(--rouge);box-shadow:0 14px 34px rgba(233,83,96,.28);transform:translateY(-8px)}
.carte:has(.carte-lien:hover) .carte-img{transform:scale(1.07)}
.carte{transition:transform .35s ease,opacity .8s ease,border-color .25s,box-shadow .3s}
a:focus-visible{outline:3px solid var(--cuivre);outline-offset:3px}
@media (prefers-reduced-motion:reduce){.logo:hover,.carte:has(.carte-lien:hover){transform:none}.pied nav a:hover{padding-left:0}}
