/* Confidentiel, « Velours nocturne »
   Nuit aubergine, velours bordeaux, laiton, ivoire. Un seul geste fort : la serrure qui s'ouvre sur l'accueil. */

/* Polices hébergées sur le site (fichiers de Google Fonts, licence OFL) : aucune requête vers Google.
   Fichiers variables : un fichier couvre toutes les graisses utilisées. Sous-ensembles latin et latin étendu. */
@font-face { font-family: 'Cormorant Garamond'; font-style: normal; font-weight: 500 600; font-display: swap;
  src: url(/polices/cormorant-garamond-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Cormorant Garamond'; font-style: normal; font-weight: 500 600; font-display: swap;
  src: url(/polices/cormorant-garamond-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Cormorant Garamond'; font-style: italic; font-weight: 500; font-display: swap;
  src: url(/polices/cormorant-garamond-italique-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Cormorant Garamond'; font-style: italic; font-weight: 500; font-display: swap;
  src: url(/polices/cormorant-garamond-italique-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Figtree'; font-style: normal; font-weight: 400 600; font-display: swap;
  src: url(/polices/figtree-latin.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Figtree'; font-style: normal; font-weight: 400 600; font-display: swap;
  src: url(/polices/figtree-latin-ext.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }

:root {
  --nuit: #1c0b11;
  --nuit-2: #26101a;
  --velours: #4a1424;
  --braise: #8e2a3c;
  --laiton: #cda873;
  --laiton-pale: #e4cfa6;
  --ivoire: #f2e8d9;
  --fumee: #b9a6a0;
  --trait: rgba(205, 168, 115, .28);

  --f-titre: 'Cormorant Garamond', 'Garamond', 'Times New Roman', serif;
  --f-texte: 'Figtree', system-ui, sans-serif;

  --t-0: .875rem;
  --t-1: 1.0625rem;
  --t-2: 1.375rem;
  --t-3: clamp(1.75rem, 1.2rem + 1.8vw, 2.5rem);
  --t-4: clamp(2.25rem, 1.4rem + 3.4vw, 4rem);

  --marge: clamp(1rem, 4vw, 3.5rem);
  --large: 74rem;
  --rayon: 2px;
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
body {
  margin: 0; background: var(--nuit); color: var(--ivoire);
  font: 400 var(--t-1)/1.65 var(--f-texte);
  -webkit-font-smoothing: antialiased;
}
img { max-width: 100%; height: auto; display: block; }
a { color: var(--laiton-pale); text-underline-offset: .2em; text-decoration-thickness: 1px; }
a:hover { color: var(--ivoire); }
:focus-visible { outline: 2px solid var(--laiton); outline-offset: 3px; }
h1, h2, h3 { font-family: var(--f-titre); font-weight: 500; line-height: 1.12; margin: 0 0 .5em; letter-spacing: .005em; }
h1 { font-size: var(--t-4); }
h2 { font-size: var(--t-3); }
h3 { font-size: var(--t-2); font-weight: 600; }
p { margin: 0 0 1em; max-width: 38em; }
ul[role="list"] { list-style: none; margin: 0; padding: 0; }

.evitement { position: absolute; left: -999px; top: 0; background: var(--laiton); color: var(--nuit); padding: .5rem 1rem; z-index: 50; }
.evitement:focus { left: 1rem; }

/* ---------- boutons et liens ---------- */
.bouton {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  min-height: 48px; padding: .7em 1.6em; border: 1px solid var(--laiton); border-radius: var(--rayon);
  font: 600 var(--t-0)/1 var(--f-texte); letter-spacing: .04em; text-decoration: none; color: var(--laiton-pale);
  background: transparent; cursor: pointer; transition: background-color .2s, color .2s;
}
.bouton-plein { background: var(--laiton); color: var(--nuit); }
.bouton-plein:hover { background: var(--laiton-pale); color: var(--nuit); }
.lien { font-weight: 500; }

/* ---------- en-tête ---------- */
.entete {
  position: sticky; top: 0; z-index: 20;
  display: flex; align-items: center; justify-content: space-between; gap: 1rem;
  padding: .45rem var(--marge);
  background: rgba(28, 11, 17, .92); backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--trait);
}
.logo { display: block; line-height: 0; }
.logo img { width: clamp(158px, 11.2vw + 56px, 214px); height: auto; }
.menu { display: flex; align-items: center; gap: 2rem; }
.menu ul { display: flex; gap: clamp(1.25rem, 2.2vw, 2.25rem); }
.menu ul a { color: var(--ivoire); text-decoration: none; font-size: clamp(1.05rem, .55rem + .7vw, 1.2rem); font-weight: 500; padding: .4em 0; border-bottom: 1px solid transparent; }
.menu ul a:hover, .menu ul a[aria-current="page"] { border-bottom-color: var(--laiton); color: var(--laiton-pale); }
.menu-bouton { display: none; }

@media (max-width: 860px) {
  .menu-bouton {
    display: inline-flex; align-items: center; min-height: 44px; padding: 0 1rem; background: none; color: var(--ivoire);
    border: 1px solid var(--trait); border-radius: var(--rayon); font: 500 var(--t-0) var(--f-texte); cursor: pointer;
  }
  .menu {
    position: absolute; inset: 100% 0 auto 0; flex-direction: column; align-items: stretch; gap: 1rem;
    padding: 1.25rem var(--marge) 1.75rem; background: var(--nuit); border-bottom: 1px solid var(--trait);
    display: none;
  }
  .menu.ouvert { display: flex; }
  .menu ul { flex-direction: column; gap: 0; }
  .menu ul a { display: block; padding: .8em 0; font-size: 1.1rem; border-bottom: 1px solid var(--trait); }
  .logo img { width: 147px; }
}

main { overflow-x: clip; }
main > section { padding-inline: var(--marge); }
main > section > * { max-width: var(--large); margin-inline: auto; }

/* ---------- accueil : la serrure ---------- */
.hero { position: relative; min-height: calc(100svh - 70px); display: grid; align-items: end; padding: 0 var(--marge) clamp(2rem, 6vh, 4rem); isolation: isolate; }
.hero > .hero-texte { margin-inline: 0; }
.hero-media { position: absolute; inset: 0; z-index: -1; }
.hero-media::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(28,11,17,.15) 0%, rgba(28,11,17,.35) 45%, rgba(28,11,17,.94) 100%); }
.hero-img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 50%; }
.hero-texte { max-width: 44rem; }
.accroche { font: italic 500 var(--t-2)/1.3 var(--f-titre); color: var(--laiton); margin-bottom: .6rem; }
/* Accueil : accroche ivoire, un peu plus grande, ombrée pour rester lisible sur la photo claire (choix A d'Occikat, 2026-10-21). */
.accueil .hero-texte .accroche { color: var(--ivoire); font-size: 1.6rem; text-shadow: 0 1px 2px rgba(0, 0, 0, .85), 0 0 18px rgba(0, 0, 0, .6); }
.hero h1 { font-size: clamp(2.4rem, 1.4rem + 4vw, 4.6rem); line-height: 1.04; }
.hero-intro { font-size: 1.125rem; color: #eadfd1; }
.actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: 1.5rem; }
.prix-rappel { margin: 0; color: var(--fumee); font-size: var(--t-0); }

@media (prefers-reduced-motion: no-preference) {
  .accueil .hero-media {
    -webkit-mask: url('/img/serrure.svg') 50% 42% / 9rem 14.4rem no-repeat;
            mask: url('/img/serrure.svg') 50% 42% / 9rem 14.4rem no-repeat;
    animation: serrure 4.5s cubic-bezier(.3, .05, .25, 1) forwards;
  }
  /* Serrure : s'ouvre dès l'arrivée, sans temps d'arrêt, sur 4,5 s (Occikat, 2026-10-21) ; le texte arrive pendant l'ouverture. */
  .accueil .hero-texte > * { animation: apparaitre .8s both; }
  .accueil .hero-texte > :nth-child(1) { animation-delay: 1.4s; }
  .accueil .hero-texte > :nth-child(2) { animation-delay: 1.55s; }
  .accueil .hero-texte > :nth-child(3) { animation-delay: 1.7s; }
  .accueil .hero-texte > :nth-child(4) { animation-delay: 1.85s; }
}
.accueil .hero-media.ouverte { -webkit-mask: none; mask: none; animation: none; }
@keyframes serrure {
  0% { -webkit-mask-size: 9rem 14.4rem; mask-size: 9rem 14.4rem; }
  100% { -webkit-mask-size: 250vmax 400vmax; mask-size: 250vmax 400vmax; -webkit-mask-position: 50% 30%; mask-position: 50% 30%; }
}
@keyframes apparaitre { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }

/* ---------- accueil : piliers ---------- */
.piliers { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(1.5rem, 3vw, 3rem); padding-block: clamp(4rem, 9vw, 7rem); max-width: calc(var(--large) + 2 * var(--marge)); margin-inline: auto; }
.pilier h2 { font-size: var(--t-2); font-weight: 600; margin-top: 1.1rem; }
.pilier p { color: #ddd0c2; }
.pilier-photo { display: block; overflow: hidden; aspect-ratio: 4 / 5; }
.pilier-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.pilier:hover .pilier-photo img { transform: scale(1.03); }
.pilier:nth-child(2) { margin-top: 3rem; }
@media (max-width: 860px) { .piliers { grid-template-columns: 1fr; } .pilier:nth-child(2) { margin-top: 0; } .pilier-photo { aspect-ratio: 3 / 2; } }

/* ---------- avis ---------- */
.bloc-avis { padding-block: clamp(3rem, 7vw, 6rem); background: var(--nuit-2); border-block: 1px solid var(--trait); }
.avis-liste { display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(2rem, 5vw, 5rem); }
.avis { margin: 0; }
.avis blockquote { margin: 0; }
.avis p { font: italic 500 clamp(1.3rem, 1rem + 1vw, 1.75rem)/1.35 var(--f-titre); color: var(--ivoire); }
.avis figcaption { color: var(--laiton); font-size: var(--t-0); }
.avis figcaption::before { content: '— '; }
@media (max-width: 760px) { .avis-liste { grid-template-columns: 1fr; } }

.titre-section { font-size: var(--t-3); margin-bottom: 1.5rem; }

/* ---------- appel final ---------- */
.appel { padding-block: clamp(4rem, 9vw, 7rem); text-align: center; }
.appel > * { margin-inline: auto; }
.appel p { color: var(--fumee); }

/* ---------- tête de page intérieure ---------- */
.tete-page { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(2rem, 5vw, 5rem); align-items: center; padding-block: clamp(2.5rem, 6vw, 5rem); max-width: calc(var(--large) + 2 * var(--marge)); margin-inline: auto; }
.tete-page > * { margin: 0; }
.tete-texte > p { font-size: 1.125rem; color: #e6dacb; }
.tete-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; }
.tete-simple { grid-template-columns: 1fr; padding-bottom: 1rem; }
@media (max-width: 860px) { .tete-page { grid-template-columns: 1fr; } .tete-photo { order: -1; } .tete-photo img { aspect-ratio: 3 / 2; } }

.equipements { columns: 2; column-gap: 2rem; margin-top: 1.5rem !important; }
.equipements li { break-inside: avoid; padding: .45rem 0; border-bottom: 1px solid var(--trait); }

/* ---------- déroulé escape game (vraie séquence) ---------- */
.deroule { padding-block: clamp(2.5rem, 6vw, 5rem); border-top: 1px solid var(--trait); }
.etapes { list-style: none; margin: 0 auto; padding: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; counter-reset: etape; }
.etapes li { counter-increment: etape; position: relative; padding-top: 3.5rem; }
.etapes li::before { content: counter(etape); position: absolute; top: 0; left: 0; font: 500 3rem/1 var(--f-titre); color: var(--laiton); }
.etapes p { color: #ddd0c2; }
@media (max-width: 760px) { .etapes { grid-template-columns: 1fr; } }

.reassurance { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; padding-block: 2.5rem; background: var(--velours); max-width: none; }
.reassurance > div { max-width: none; margin: 0; }
.reassurance p { color: #ecdccb; margin: 0; }
.reassurance { padding-inline: max(var(--marge), calc((100% - var(--large)) / 2)); }
@media (max-width: 760px) { .reassurance { grid-template-columns: 1fr; } }

/* ---------- galeries ---------- */
.galerie { padding-block: clamp(2.5rem, 6vw, 4.5rem); }
.mur { columns: 2; column-gap: .6rem; }
@media (min-width: 700px) { .mur { columns: 3; column-gap: .75rem; } }
@media (min-width: 1100px) { .mur { columns: 4; } }
.mur li { break-inside: avoid; margin-bottom: .75rem; }
.vignette { display: block; width: 100%; padding: 0; border: 0; background: none; cursor: zoom-in; overflow: hidden; }
.vignette img { width: 100%; transition: transform .6s ease, filter .3s; filter: saturate(.92); }
.vignette:hover img { transform: scale(1.03); filter: none; }

.visionneuse { width: 100vw; height: 100vh; max-width: none; max-height: none; margin: 0; padding: 0; border: 0; background: rgba(15, 5, 9, .96); color: var(--ivoire); }
.visionneuse[open] { display: grid; place-items: center; }
.visionneuse::backdrop { background: rgba(0,0,0,.6); }
.visionneuse img { max-width: 92vw; max-height: 82vh; width: auto; height: auto; }
.visionneuse-legende { position: absolute; bottom: 1.25rem; left: 0; right: 0; text-align: center; margin: 0 auto; color: var(--fumee); font-size: var(--t-0); }
.visionneuse button { position: absolute; width: 52px; height: 52px; border: 1px solid var(--trait); border-radius: 50%; background: rgba(28,11,17,.7); color: var(--ivoire); font-size: 1.8rem; line-height: 1; cursor: pointer; }
.visionneuse-fermer { top: 1rem; right: 1rem; }
.visionneuse-prec { left: 1rem; top: 50%; translate: 0 -50%; }
.visionneuse-suiv { right: 1rem; top: 50%; translate: 0 -50%; }

/* ---------- tarifs / infos ---------- */
.colonnes { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 5rem); padding-block: clamp(2rem, 5vw, 4rem); max-width: calc(var(--large) + 2 * var(--marge)); margin-inline: auto; }
.colonnes > * { margin: 0; }
.colonnes .titre-section { font-size: var(--t-2); font-weight: 600; margin-top: 2rem; }
.colonnes > div > .titre-section:first-child { margin-top: 0; }
@media (max-width: 760px) { .colonnes { grid-template-columns: 1fr; } }
.coches li { padding: .55rem 0 .55rem 1.6rem; border-bottom: 1px solid var(--trait); position: relative; }
.coches li::before { content: ''; position: absolute; left: .1rem; top: 1.05rem; width: .55rem; height: .55rem; border: 1px solid var(--laiton); transform: rotate(45deg); }
.encart { padding-block: 2.5rem 4rem; }
.encart > * { max-width: 46rem; margin-left: max(0px, calc((100% - var(--large)) / 2)); }
.encart h2 { font-size: var(--t-2); font-weight: 600; }
.adresse { font-style: normal; font-size: 1.25rem; font-family: var(--f-titre); }

.faq details { border-bottom: 1px solid var(--trait); }
.faq summary { cursor: pointer; padding: 1rem 2rem 1rem 0; font-weight: 500; list-style: none; position: relative; }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; position: absolute; right: .25rem; top: .8rem; font: 400 1.5rem var(--f-titre); color: var(--laiton); }
.faq details[open] summary::after { content: '−'; }
.faq details p { color: #ddd0c2; padding-bottom: .5rem; }

/* ---------- réservation ---------- */
.reservation, .offrir { display: grid; grid-template-columns: 1.15fr 1fr; gap: clamp(2rem, 4vw, 4rem); align-items: start; padding-block: 1rem 5rem; max-width: calc(var(--large) + 2 * var(--marge)); margin-inline: auto; }
.reservation > *, .offrir > * { margin: 0; }
@media (max-width: 900px) { .reservation, .offrir { grid-template-columns: 1fr; } }
.offrir-infos .carte-prix { margin-top: 0; }
.offrir-infos .titre-section { font-size: var(--t-2); font-weight: 600; }

.calendrier { background: var(--nuit-2); border: 1px solid var(--trait); padding: clamp(1rem, 2.5vw, 1.75rem); }
.cal-tete { display: flex; align-items: center; justify-content: space-between; margin-bottom: 1rem; }
.cal-mois { margin: 0; font-size: var(--t-2); text-transform: capitalize; }
.cal-tete button { width: 44px; height: 44px; border: 1px solid var(--trait); background: none; color: var(--ivoire); font-size: 1.5rem; cursor: pointer; border-radius: 50%; }
.cal-tete button:disabled { opacity: .3; cursor: default; }
.cal-grille { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
/* Petits écrans : 360 px - 2 x 16 (marges) - 2 (bord) - 2 x 8 (marge intérieure) = 294 px, moins 6 x 3 (écarts) = 276, soit 39 px de large par case (44 px de haut). */
@media (max-width: 400px) {
  .calendrier { padding: .5rem; }
  .cal-grille { gap: 3px; }
  .cal-case { aspect-ratio: auto; height: 44px; }
}
.cal-jour-sem { text-align: center; font-size: .75rem; color: var(--fumee); padding-bottom: .4rem; }
.cal-case {
  aspect-ratio: 1; min-height: 44px; min-width: 0; display: grid; place-items: center; border: 1px solid transparent; border-radius: var(--rayon);
  background: rgba(205,168,115,.16); border-color: rgba(205,168,115,.55); color: var(--ivoire); font: 600 .95rem var(--f-texte); cursor: pointer; padding: 0; position: relative;
}
.cal-case:hover:not(:disabled) { border-color: var(--laiton); }
.cal-case:disabled { cursor: default; }
.cal-case.passe { background: none; border-color: transparent; color: rgba(185,166,160,.35); }
.cal-case.pris { border-color: transparent; background: repeating-linear-gradient(135deg, rgba(142,42,60,.35) 0 4px, rgba(142,42,60,.15) 4px 8px); color: rgba(242,232,217,.45); text-decoration: line-through; }
.cal-case.special { box-shadow: inset 0 -3px 0 var(--laiton); }
/* Astérisque hors du flux : le chiffre de la date reste centré dans la case. */
.cal-case .cal-ast { position: absolute; top: 3px; right: 5px; color: var(--laiton); font-size: .85em; line-height: 1; }
.cal-case.choisi .cal-ast, .cal-case.depart .cal-ast, .cal-case.sejour .cal-ast { color: inherit; }
.cal-legende .cal-ast { font-size: 1.1em; vertical-align: baseline; margin: 0 .35rem 0 0; }
.cal-case.choisi { background: var(--laiton); color: var(--nuit); }
.cal-case.sejour { background: rgba(205,168,115,.4); color: var(--nuit); }
/* Choix du départ : jours valables (liseré laiton, y compris une nuit prise : départ à 12 h), autres jours estompés mais lisibles. */
.cal-case.depart-possible { border-color: var(--laiton); color: var(--ivoire); text-decoration: none; }
.cal-case.hors-depart { background: none; border-color: transparent; color: var(--fumee); }
.cal-case.depart { background: var(--laiton); color: var(--nuit); text-decoration: none; }
.cal-case.apercu { background: rgba(205,168,115,.25); color: var(--ivoire); }
.sr-only { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.cal-vide { visibility: hidden; }
.cal-prochaine { margin: 0 0 .9rem; color: var(--ivoire); font-size: .95rem; }
.cal-prochaine button { background: none; border: 0; padding: .35rem 0; min-height: 44px; color: var(--laiton); font: 600 1em var(--f-texte); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.cal-legende { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; margin-top: 1rem !important; font-size: .8rem; color: var(--fumee); }
.pastille { display: inline-block; width: .8rem; height: .8rem; margin-right: .4rem; vertical-align: -1px; border-radius: 2px; }
.pastille.libre { background: rgba(205,168,115,.16); box-shadow: inset 0 0 0 1px rgba(205,168,115,.55); }
.pastille.pris { background: var(--braise); }
.pastille.special { background: rgba(205,168,115,.25); box-shadow: inset 0 -3px 0 var(--laiton); }

.demande fieldset { border: 0; padding: 0; margin: 0 0 1.75rem; }
.demande legend { font: 600 var(--t-2) var(--f-titre); margin-bottom: .75rem; padding: 0; }
.demande label { display: block; font-size: var(--t-0); color: var(--fumee); margin: .9rem 0 .3rem; }
.demande input:not([type=checkbox]), .demande select, .demande textarea {
  width: 100%; min-height: 48px; padding: .7rem .85rem; background: var(--nuit-2); color: var(--ivoire);
  border: 1px solid rgba(205,168,115,.4); border-radius: var(--rayon); font: 400 1rem var(--f-texte);
}
.demande select:disabled { opacity: .5; }
.demande input:focus, .demande select:focus, .demande textarea:focus { border-color: var(--laiton); outline: none; box-shadow: 0 0 0 2px rgba(205,168,115,.35); }
.demande .case { display: flex; gap: .6rem; align-items: flex-start; color: var(--ivoire); font-size: .95rem; margin-top: 1.25rem; }
.demande .case input { width: 1.2rem; height: 1.2rem; margin-top: .2rem; accent-color: var(--laiton); }
.facultatif { color: rgba(185,166,160,.7); }
.choix-arrivee { color: var(--fumee); margin-bottom: .25rem; }
.choix-formule { display: grid; gap: .6rem; margin-top: 1rem; }
.demande .formule-option { display: flex; gap: .75rem; align-items: flex-start; margin: 0; padding: .85rem 1rem; border: 1px solid var(--trait); border-radius: var(--rayon); background: var(--nuit-2); color: var(--ivoire); font-size: .95rem; cursor: pointer; }
.demande .formule-option:hover { border-color: rgba(205,168,115,.6); }
.demande .formule-option:has(input:checked) { border-color: var(--laiton); box-shadow: 0 0 0 1px var(--laiton); background: rgba(205,168,115,.07); }
.demande .formule-option:has(input:focus-visible) { outline: 2px solid var(--laiton); outline-offset: 3px; }
.demande .formule-option input { width: 1.2rem; height: 1.2rem; min-height: 0; padding: 0; margin-top: .15rem; flex: none; accent-color: var(--laiton); }
.formule-option strong { color: var(--laiton-pale); font-weight: 600; }
.recap { margin: 1rem 0 0; padding: 1rem; border-left: 2px solid var(--laiton); background: rgba(205,168,115,.07); }
.recap:empty { display: none; }
.recap strong { color: var(--laiton-pale); font-weight: 600; }
.bon-cadeau { margin-top: 1rem; }
.bon-cadeau summary { display: inline-block; list-style: none; cursor: pointer; color: var(--laiton-pale); font-size: var(--t-0); text-decoration: underline; text-underline-offset: .2em; text-decoration-thickness: 1px; }
.bon-cadeau summary::-webkit-details-marker { display: none; }
.bon-cadeau summary:hover { color: var(--ivoire); }
.etat-bon.ok { color: var(--laiton-pale); }
.appel-offrir { margin-top: 1.75rem; }
.erreur { color: #ffb3b3; background: rgba(142,42,60,.3); padding: .75rem 1rem; }
.mention { font-size: .8rem; color: var(--fumee); margin-top: 1rem; }
.confirmation { grid-column: 1 / -1; padding: 2rem; border: 1px solid var(--laiton); background: var(--nuit-2); }
/* Une question ? : une colonne, alignée sur le titre de la page. */
.contact-question { padding-block: 1rem 5rem; }
.contact-question > * { max-width: 40rem; margin-left: max(0px, calc((100% - var(--large)) / 2)); }

/* ---------- textes légaux ---------- */
.texte-legal { padding-block: clamp(2.5rem, 6vw, 5rem); }
.texte-legal > * { max-width: 44rem; margin-left: max(0px, calc((100% - var(--large)) / 2)); }
.texte-legal h2 { font-size: var(--t-2); font-weight: 600; margin-top: 2rem; }
.texte-legal li { margin-bottom: .4rem; max-width: 40em; }
mark { background: #e8c25a; color: #1c0b11; padding: 0 .25em; }

/* ---------- pied ---------- */
.pied { border-top: 1px solid var(--trait); padding: 3rem var(--marge) 5rem; color: var(--fumee); font-size: var(--t-0); }
.pied-grille { max-width: var(--large); margin: 0 auto; display: grid; grid-template-columns: 1.3fr 1fr 1.3fr 1fr; gap: 2rem; }
.pied-nom { font: 500 1.5rem var(--f-titre); color: var(--ivoire); margin-bottom: .5rem; }
.pied .pied-serrure { color: var(--ivoire); display: inline-block; vertical-align: -.08em; }
.pied .pied-serrure svg { width: .8em; height: .8em; display: block; }
.pied-nom span { display: block; font-size: 1rem; font-style: italic; color: var(--laiton); }
.pied address { font-style: normal; }
.pied-liens li { margin-bottom: .45rem; }
.pied a { color: var(--fumee); }
.pied a:hover { color: var(--ivoire); }
@media (max-width: 860px) { .pied-grille { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .pied-grille { grid-template-columns: 1fr; } }

/* mesure d'audience : bouton « Gérer les cookies » du pied (aspect des liens voisins) et bandeau de consentement,
   créés ou affichés par site.js. Bandeau non modal ; Refuser et Accepter de même taille et de même aspect. */
.pied-cookies { padding: 0; border: 0; background: none; font: inherit; color: var(--fumee); cursor: pointer; text-align: left;
  text-decoration: underline; text-underline-offset: .2em; text-decoration-thickness: 1px; }
.pied-cookies:hover { color: var(--ivoire); }
.consentement { position: fixed; z-index: 40; left: var(--marge); right: var(--marge); bottom: 1rem; max-width: 34rem; margin-left: auto;
  padding: 1.25rem 1.5rem; border: 1px solid var(--trait); border-radius: 6px; background: var(--nuit-2); color: var(--ivoire);
  font-size: var(--t-0); line-height: 1.55; box-shadow: 0 24px 60px -20px rgba(0,0,0,.85); }
.consentement[hidden] { display: none; }
.consentement p { margin: 0 0 1rem; }
.consentement-boutons { display: flex; gap: .75rem; }
.consentement-choix { flex: 1 1 0; min-width: 7.5rem; }
.consentement-choix:hover { background: var(--laiton); color: var(--nuit); }
.bandeau-test ~ .consentement { bottom: 4.5rem; }

.bandeau-test { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30; margin: 0; max-width: none; padding: .5rem 1rem; text-align: center; font-size: .8rem; background: #e8c25a; color: #1c0b11; }

/* champs obligatoires */
.obligatoire { color: var(--laiton); font-weight: 600; }
.aide-obligatoire { font-size: var(--t-0); color: var(--fumee); margin: 0 0 .25rem; }
.err-champ { color: #ffb3b3; font-size: var(--t-0); margin: .35rem 0 0; }
.demande [aria-invalid="true"] { border-color: #e06a7d; box-shadow: 0 0 0 1px #e06a7d; }

/* carte du prix (page Tarifs) */
.carte-prix { display: inline-block; min-width: min(100%, 22rem); margin: .5rem 0 2rem; padding: 2rem 2.25rem 1.75rem; border-radius: 22px; border: 1px solid rgba(205,168,115,.18); background: radial-gradient(120% 140% at 0% 0%, rgba(142,42,60,.38) 0%, rgba(74,20,36,.28) 45%, rgba(38,16,26,.15) 100%); box-shadow: 0 24px 60px -28px rgba(0,0,0,.75), inset 0 1px 0 rgba(228,207,166,.08); }
.carte-prix p { margin: 0; }
.montant { display: flex; align-items: flex-start; gap: .15em; font-family: var(--f-titre); font-weight: 600; color: var(--laiton); line-height: 1; font-variant-numeric: lining-nums; font-feature-settings: "lnum" 1; }
.montant .chiffre { font-size: clamp(4rem, 3rem + 4vw, 5.75rem); letter-spacing: -.01em; }
.montant .devise { font-size: clamp(1.75rem, 1.3rem + 1.5vw, 2.5rem); margin-top: .35em; }
.unite { font: italic 500 1.35rem/1.3 var(--f-titre); color: var(--ivoire); margin-top: .35rem !important; }
.carte-prix-inclus { position: relative; margin-top: 1.25rem !important; padding-top: 1.1rem; color: #e6dacb; }
.carte-prix-inclus::before { content: ""; position: absolute; top: 0; left: 0; width: 70%; height: 1px; background: linear-gradient(90deg, rgba(205,168,115,.55), rgba(205,168,115,0)); }
.carte-prix-horaires { margin-top: .35rem !important; color: var(--fumee); font-size: var(--t-0); }

/* bouton Réserver de l'en-tête, à l'échelle du menu */
.entete .menu > .bouton { font-size: 1rem; padding: .8em 1.8em; }
@media (min-width: 861px) and (max-width: 1100px) { .menu { gap: 1.25rem; } .menu ul a { font-size: 1rem; } }

/* photos adoucies : coins légèrement arrondis et ombre douce, sur toutes les pages */
:root { --rayon-photo: 6px; --rayon-vignette: 4px; --ombre-photo: 0 22px 50px -26px rgba(0,0,0,.8); }
.tete-photo img { border-radius: var(--rayon-photo); box-shadow: var(--ombre-photo); }
.pilier-photo { border-radius: var(--rayon-photo); box-shadow: var(--ombre-photo); }
.vignette { border-radius: var(--rayon-vignette); box-shadow: 0 12px 28px -18px rgba(0,0,0,.8); }
.vignette img { border-radius: var(--rayon-vignette); }
.visionneuse img { border-radius: 4px; }

/* ---------- barre « Voir les dates » fixée en bas, téléphone seulement (pages Escape game, Love room, Tarifs) ---------- */
.barre-reserver { display: none; }
@media (max-width: 860px) {
  .barre-reserver {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    position: fixed; z-index: 30; left: 0; right: 0; bottom: 0;
    padding: .7rem var(--marge) calc(.7rem + env(safe-area-inset-bottom));
    background: #1c0b11; border-top: 1px solid var(--trait); box-shadow: 0 -.5rem 1rem rgba(0, 0, 0, .35);
    color: var(--ivoire); text-decoration: none; font-size: .95rem;
  }
  .barre-reserver strong { background: var(--laiton); color: var(--nuit); padding: .6rem 1.1rem; border-radius: var(--rayon); font-weight: 600; min-height: 44px; display: inline-flex; align-items: center; }
  .barre-reserver:focus-visible { outline: 2px solid var(--laiton); outline-offset: -4px; }
  body:has(.barre-reserver) .pied { padding-bottom: 9rem; }
}
