/* ═══════════════════════════════════════════════════════════════
   GRAND GALA DES FIGNOS — site public
   Direction : invitation de gala Art déco égyptien (égyptomanie 1920)
   Encre lapis · or mat en filets · ivoire · Bodoni Moda + Jost
   ═══════════════════════════════════════════════════════════════ */
:root {
  --encre: #070a14;
  --lapis: #0d1530;
  --lapis-2: #15204a;
  --or: #c8a45d;
  --or-clair: #e6d09c;
  --ivoire: #f1eadb;
  --texte: #d9d2c2;
  --muet: #8f8a7e;
  --faience: #5aa59c;
  --alerte: #c96a5a;
  --filet: rgba(200, 164, 93, .32);
  --filet-doux: rgba(200, 164, 93, .14);
  --display: "Bodoni Moda", "Didot", "Bodoni 72", Georgia, serif;
  --sans: "Jost", "Futura", "Avenir Next", system-ui, sans-serif;
  --mesure: 1180px;
}
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }
html { overflow-x: clip; scroll-behavior: smooth; scroll-padding-top: 84px; -webkit-text-size-adjust: 100%; }
body {
  font: 300 1.0625rem/1.65 var(--sans); color: var(--texte); background: var(--encre);
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
img, svg { display: block; max-width: 100%; }
a { color: inherit; }
::selection { background: var(--or); color: var(--encre); }
:focus-visible { outline: 1px solid var(--or-clair); outline-offset: 4px; }
.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ── typographie ────────────────────────────────────────────── */
h1, h2, h3 { font-family: var(--display); font-weight: 400; color: var(--ivoire); letter-spacing: -.01em; }
h2 { font-size: clamp(2.2rem, 4.6vw, 3.6rem); line-height: 1.04; }
h2 em, h1 em { font-style: italic; color: var(--or-clair); }
h3 { font-size: 1.45rem; line-height: 1.2; }
p { max-width: 62ch; }
.lead { font-size: 1.15rem; color: var(--texte); margin-top: 1.2rem; }
.note { font-size: .92rem; color: var(--muet); }

/* ── structure ──────────────────────────────────────────────── */
.wrap { width: 100%; max-width: var(--mesure); margin: 0 auto; padding: 0 28px; }
.band { padding: clamp(5rem, 11vw, 9rem) 0; border-top: 1px solid var(--filet-doux); position: relative; }
.split { display: grid; gap: 2.5rem 4rem; grid-template-columns: 1fr; }
@media (min-width: 900px) {
  .split { grid-template-columns: minmax(0, 4fr) minmax(0, 7fr); }
  .split > .side { position: sticky; top: 110px; align-self: start; }
}

/* ── boutons ────────────────────────────────────────────────── */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .7rem; min-height: 52px; padding: 0 1.9rem;
  font: 400 .98rem/1 var(--sans); letter-spacing: .04em; text-decoration: none; cursor: pointer;
  color: var(--encre); background: var(--or); border: 1px solid var(--or); border-radius: 0;
  transition: background .25s, color .25s, border-color .25s;
}
.btn:hover { background: var(--or-clair); border-color: var(--or-clair); }
.btn-soon, .btn-soon:hover { background: rgba(5, 8, 22, .55); color: var(--or-clair); border-color: var(--filet); cursor: default; font-style: italic; }
.btn-line { background: transparent; color: var(--or-clair); border-color: var(--filet); }
.btn-line:hover { background: transparent; color: var(--ivoire); border-color: var(--or-clair); }
.link { color: var(--or-clair); text-decoration: none; border-bottom: 1px solid var(--filet); padding-bottom: 2px; transition: border-color .2s, color .2s; }
.link:hover { color: var(--ivoire); border-color: var(--or-clair); }

/* ── navigation ─────────────────────────────────────────────── */
.nav {
  position: fixed; inset: 0 0 auto; z-index: 50; transition: background .3s, border-color .3s;
  border-bottom: 1px solid transparent;
}
.nav.solid { background: rgba(7, 10, 20, .92); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); border-color: var(--filet-doux); }
.nav .wrap { display: flex; align-items: center; gap: 2rem; height: 76px; }
.wordmark { font: 400 1.35rem/1 var(--display); color: var(--ivoire); text-decoration: none; letter-spacing: -.01em; white-space: nowrap; }
.wordmark em { color: var(--or-clair); }
.nav ul { list-style: none; display: flex; gap: 1.9rem; margin-left: auto; }
.nav ul a { font-size: .95rem; text-decoration: none; color: var(--texte); transition: color .2s; }
.nav ul a:hover { color: var(--or-clair); }
.nav .btn { min-height: 42px; padding: 0 1.3rem; font-size: .9rem; }
.burger { display: none; margin-left: auto; width: 44px; height: 44px; background: none; border: 0; cursor: pointer; position: relative; }
.burger span, .burger::before, .burger::after { content: ""; position: absolute; left: 11px; right: 11px; height: 1px; background: var(--or-clair); transition: transform .3s, opacity .3s; }
.burger::before { top: 16px; } .burger span { top: 22px; } .burger::after { top: 28px; }
.nav.open .burger::before { transform: translateY(6px) rotate(45deg); }
.nav.open .burger span { opacity: 0; }
.nav.open .burger::after { transform: translateY(-6px) rotate(-45deg); }

/* ── réserver ───────────────────────────────────────────────── */
.steps { list-style: none; margin-top: 2.4rem; counter-reset: s; display: grid; gap: 1.5rem; }
.steps li { counter-increment: s; display: grid; grid-template-columns: 2.4rem 1fr; gap: 0 .8rem; }
.steps li::before { content: counter(s); font: italic 400 1.9rem/1 var(--display); color: var(--or); }
.steps strong { display: block; font-weight: 400; color: var(--ivoire); font-size: 1.05rem; margin-bottom: .2rem; }
.steps p { font-size: .97rem; color: var(--texte); }

.carte-tarifs { border-top: 1px solid var(--filet); }
.tarif {
  display: grid; grid-template-columns: 1fr auto; gap: .35rem 1.5rem; align-items: baseline; padding: 1.6rem 0;
  border-bottom: 1px solid var(--filet-doux); text-decoration: none; color: inherit; position: relative;
}
.tarif h3 { font-size: clamp(1.45rem, 2.6vw, 1.85rem); transition: color .2s; }
.tarif .prix { font: 400 clamp(1.45rem, 2.6vw, 1.85rem)/1 var(--display); color: var(--or-clair); font-variant-numeric: lining-nums; }
.tarif .prix sup { font-size: .5em; margin-left: .1em; }
.tarif p { grid-column: 1; font-size: .97rem; color: var(--texte); }
.tarif .cond { grid-column: 1 / -1; font-size: .85rem; color: var(--faience); }
.tarif .go { grid-column: 2; grid-row: 2 / span 2; align-self: center; justify-self: end; font-size: .9rem; color: var(--or-clair); border-bottom: 1px solid var(--filet); padding-bottom: 2px; white-space: nowrap; }
a.tarif:hover h3 { color: var(--or-clair); }
a.tarif:hover .go { border-color: var(--or-clair); }
.tarif.off { opacity: .45; }
.reserve-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 2rem; margin-top: 2.4rem; }
.reserve-foot .note { max-width: 40ch; }

/* ── programme ──────────────────────────────────────────────── */
.prog { list-style: none; border-top: 1px solid var(--filet); }
.prog li { display: grid; grid-template-columns: 6.5rem 1fr; gap: 1.5rem; padding: 1.35rem 0; border-bottom: 1px solid var(--filet-doux); }
.prog time { font: 400 1.6rem/1.1 var(--display); color: var(--or-clair); font-variant-numeric: lining-nums; }
.prog h3 { font-size: 1.3rem; margin-bottom: .2rem; }
.prog p { font-size: .97rem; }

/* ── stands : carte de menu ─────────────────────────────────── */
.menus { display: grid; gap: 2.8rem 3.5rem; grid-template-columns: 1fr; }
@media (min-width: 640px) { .menus { grid-template-columns: 1fr 1fr; } }
.menu h3 { font-size: 1.55rem; }
.menu .asso { font-size: .9rem; color: var(--or); margin: .15rem 0 .9rem; }
.menu ul { list-style: none; border-top: 1px solid var(--filet); }
.menu li { display: flex; align-items: baseline; gap: .6rem; padding: .7rem 0; border-bottom: 1px solid var(--filet-doux); font-size: 1rem; }
.menu li .lead-dots { flex: 1; border-bottom: 1px dotted rgba(200, 164, 93, .35); transform: translateY(-4px); }
.menu li .p { font-family: var(--display); color: var(--or-clair); font-size: 1.1rem; font-variant-numeric: lining-nums; white-space: nowrap; }
.menu li small { display: block; color: var(--muet); font-size: .85rem; }

/* ── plan ───────────────────────────────────────────────────── */
.plan-card { display: block; position: relative; text-decoration: none; border: 1px solid var(--filet); padding: 10px; background: var(--lapis); }
.plan-card img { width: 100%; height: auto; filter: grayscale(1) sepia(.55) hue-rotate(-8deg) brightness(.72) contrast(1.15); transition: filter .5s; }
.plan-card:hover img { filter: grayscale(.2) brightness(.9); }
.plan-card .cap { position: absolute; left: 10px; right: 10px; bottom: 10px; padding: 1.1rem 1.3rem; display: flex; justify-content: space-between; align-items: center; gap: 1rem; background: linear-gradient(0deg, rgba(7, 10, 20, .92), rgba(7, 10, 20, 0)); color: var(--ivoire); font-family: var(--display); font-size: 1.25rem; }
.plan-card .cap span { font: 400 .92rem var(--sans); color: var(--or-clair); border-bottom: 1px solid var(--filet); }

/* ── infos ──────────────────────────────────────────────────── */
.infos { display: grid; grid-template-columns: 1fr; border-top: 1px solid var(--filet); }
@media (min-width: 640px) { .infos { grid-template-columns: 1fr 1fr; column-gap: 3rem; } }
.infos div { padding: 1.3rem 0; border-bottom: 1px solid var(--filet-doux); }
.infos dt { font: 400 1.25rem/1.25 var(--display); color: var(--ivoire); margin-bottom: .35rem; }
.infos dd { font-size: .98rem; }

/* ── lieu ───────────────────────────────────────────────────── */
.lieu-addr { font: 400 1.25rem/1.4 var(--display); color: var(--ivoire); margin-top: 1.4rem; }
.lieu-map { border: 1px solid var(--filet); padding: 10px; background: var(--lapis); }
.lieu-map iframe { display: block; width: 100%; height: 380px; border: 0; filter: grayscale(1) invert(.92) sepia(.25) hue-rotate(180deg) brightness(.85) contrast(.95); }

/* ── FAQ ────────────────────────────────────────────────────── */
.faq { border-top: 1px solid var(--filet); }
.faq details { border-bottom: 1px solid var(--filet-doux); }
.faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; align-items: baseline; gap: 1.5rem; padding: 1.25rem 0; font: 400 1.22rem/1.35 var(--display); color: var(--ivoire); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font: 300 1.5rem/1 var(--sans); color: var(--or); transition: transform .3s; }
.faq details[open] summary::after { transform: rotate(45deg); }
.faq details > div { padding: 0 0 1.4rem; font-size: .98rem; }
.faq details > div p + p { margin-top: .6rem; }
.faq .link { border-bottom-color: var(--filet); }
.ask { margin-top: 2.2rem; }
.ask label { display: block; font: 400 1.2rem var(--display); color: var(--ivoire); margin-bottom: .7rem; }
.ask form { display: flex; gap: .6rem; flex-wrap: wrap; }
.ask input { flex: 1; min-width: 220px; height: 52px; padding: 0 1rem; font: 300 16px var(--sans); color: var(--ivoire); background: transparent; border: 1px solid var(--filet); border-radius: 0; }
.ask input:focus { outline: none; border-color: var(--or-clair); }
.ask .msg { font-size: .95rem; margin-bottom: .8rem; }
.ask .msg.ok { color: var(--faience); } .ask .msg.err { color: var(--alerte); }

/* ── contacts ───────────────────────────────────────────────── */
.people { display: grid; grid-template-columns: 1fr; border-top: 1px solid var(--filet); }
@media (min-width: 640px) { .people { grid-template-columns: 1fr 1fr; column-gap: 3rem; } }
.person { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: 1.05rem 0; border-bottom: 1px solid var(--filet-doux); }
.person strong { font: 400 1.15rem var(--display); color: var(--ivoire); }
.person small { display: block; color: var(--muet); font-size: .85rem; }
.person a { color: var(--or-clair); text-decoration: none; white-space: nowrap; font-variant-numeric: tabular-nums; }
.person a:hover { color: var(--ivoire); }
.vss { margin-top: 3rem; padding: 2rem 0 0; border-top: 1px solid rgba(201, 106, 90, .45); }
.vss h3 { font-size: 1.6rem; }
.vss > p { margin: .5rem 0 1.2rem; }
.vss .people { border-top-color: rgba(201, 106, 90, .3); }
.urg { display: flex; flex-wrap: wrap; gap: .5rem 1.6rem; margin-top: 1.5rem; font-size: .95rem; }
.urg a { color: var(--ivoire); text-decoration: none; border-bottom: 1px solid rgba(201, 106, 90, .5); }

/* ── partenaires ────────────────────────────────────────────── */
.partners { background: var(--ivoire); color: var(--encre); padding: 4.5rem 0; }
.partners h2 { color: var(--encre); font-size: clamp(1.8rem, 3.4vw, 2.4rem); }
.partners .row { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem 3rem; align-items: center; margin-top: 2.4rem; }
@media (min-width: 760px) { .partners .row { grid-template-columns: repeat(4, 1fr); } }
.partners img { height: 92px; width: auto; max-width: 100%; margin: 0 auto; object-fit: contain; filter: grayscale(1) contrast(1.1); opacity: .85; transition: filter .3s, opacity .3s; }
.partners img:hover { filter: none; opacity: 1; }

/* ── pied ───────────────────────────────────────────────────── */
footer { padding: 4.5rem 0 7rem; border-top: 1px solid var(--filet-doux); }
footer .wrap { display: grid; gap: 2rem; grid-template-columns: 1fr; }
@media (min-width: 760px) { footer .wrap { grid-template-columns: 1.4fr 1fr 1fr; } }
footer .wordmark { font-size: 1.8rem; }
footer p, footer li { font-size: .92rem; color: var(--muet); }
footer ul { list-style: none; display: grid; gap: .45rem; }
footer a { text-decoration: none; color: var(--texte); }
footer a:hover { color: var(--or-clair); }

/* ── urgences (bouton discret, toujours accessible) ─────────── */
.urg-pill { position: fixed; left: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 60; }
.urg-pill > button {
  height: 40px; padding: 0 1rem; font: 400 .88rem var(--sans); color: var(--ivoire); background: rgba(7, 10, 20, .92);
  border: 1px solid rgba(201, 106, 90, .7); border-radius: 20px; cursor: pointer; backdrop-filter: blur(8px);
}
.urg-pill > button::before { content: ""; display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--alerte); margin-right: .55rem; vertical-align: 1px; }
.urg-panel { position: absolute; left: 0; bottom: 52px; width: 270px; max-height: 70vh; overflow: auto; padding: 1rem 1.1rem; background: var(--encre); border: 1px solid rgba(201, 106, 90, .45); display: none; }
.urg-pill.open .urg-panel { display: block; }
.urg-panel p { font: 400 1.1rem var(--display); color: var(--ivoire); margin-bottom: .4rem; }
.urg-panel a { display: flex; justify-content: space-between; gap: 1rem; padding: .55rem 0; border-bottom: 1px solid var(--filet-doux); text-decoration: none; font-size: .95rem; }
.urg-panel a span:last-child { color: var(--or-clair); font-variant-numeric: tabular-nums; }
.urg-panel hr { border: 0; height: .9rem; }

/* barre de réservation mobile */
.mbar { display: none; }

/* ── responsive ─────────────────────────────────────────────── */
@media (max-width: 899px) {
  .nav ul, .nav .btn { display: none; }
  .burger { display: block; }
  .nav.open { background: var(--encre); }
  .nav.open ul { display: flex; position: fixed; top: 76px; left: 0; right: 0; bottom: 0; flex-direction: column; gap: 0; padding: 1.5rem 28px; background: var(--encre); }
  .nav.open ul a { display: block; padding: 1rem 0; font: 400 1.6rem var(--display); color: var(--ivoire); border-bottom: 1px solid var(--filet-doux); }
}
@media (max-width: 639px) {
  .wrap { padding: 0 20px; }
  .prog li { grid-template-columns: 4.6rem 1fr; gap: 1rem; }
  .prog time { font-size: 1.3rem; }
  .tarif { grid-template-columns: 1fr auto; }
  .tarif .go { grid-row: auto; grid-column: 1 / -1; justify-self: start; margin-top: .3rem; }
  .lieu-map iframe { height: 300px; }
  .mbar {
    display: block; position: fixed; right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); z-index: 55;
    transform: translateY(160%); transition: transform .35s ease;
  }
  .mbar.show { transform: none; }
  .mbar .btn { min-height: 44px; padding: 0 1.3rem; }
  footer { padding-bottom: 6rem; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }

}


.menu.flash { animation: flash 2.4s ease; }
@keyframes flash { 0%, 60% { box-shadow: 0 0 0 1px var(--or), 0 0 0 10px rgba(200, 164, 93, .08); } 100% { box-shadow: none; } }

/* ═══════════════ L'ENTRÉE DANS LE TEMPLE (héros scénarisé au défilement) ═══════════════ */
.temple { position: relative; height: 300vh; height: 300svh; }
.stage { position: sticky; top: 0; height: 100vh; height: 100svh; overflow: hidden; background: #050816; }
.stage > * { position: absolute; inset: 0; }
#sky { width: 100%; height: 100%; }
.scene { width: 100%; height: 100%; }
.vignette { pointer-events: none; background: radial-gradient(ellipse 80% 70% at 50% 55%, transparent 55%, rgba(3, 5, 12, .75) 100%); }
.flame { transform-box: fill-box; transform-origin: 50% 100%; animation: flame 1.1s ease-in-out infinite alternate; }
.halo { animation: halo 1.3s ease-in-out infinite alternate; }
@keyframes flame { 0% { transform: scale(1, 1) skewX(0); } 35% { transform: scale(.94, 1.08) skewX(3deg); } 70% { transform: scale(1.05, .95) skewX(-2deg); } 100% { transform: scale(.97, 1.04) skewX(1deg); } }
@keyframes halo { from { opacity: .75; } to { opacity: 1; } }
#motes circle { animation: mote 6s linear infinite; }
#motes circle:nth-child(2n) { animation-duration: 8s; animation-direction: reverse; }
@keyframes mote { 0% { transform: translate(0, 0); } 50% { transform: translate(6px, -18px); } 100% { transform: translate(0, 0); } }
.scene text { font-family: "Noto Sans Egyptian Hieroglyphs", serif; }
.glow { pointer-events: none; background: radial-gradient(ellipse 70% 70% at 50% 60%, #fff7df, #f3d38c 45%, #b98a44 100%); opacity: 0; mix-blend-mode: screen; }
.veil { pointer-events: none; background: var(--encre); opacity: 0; }
.stage-title { display: flex; flex-direction: column; align-items: center; text-align: center; padding: clamp(84px, 10vh, 108px) 20px 0; pointer-events: none; will-change: transform, opacity; }
.stage-title h1 { font-weight: 400; line-height: .9; letter-spacing: -.02em; text-shadow: 0 4px 40px rgba(5, 8, 22, .9); }
.stage-title .pre { display: block; font-style: italic; font-size: clamp(1.25rem, 2.4vw, 1.7rem); color: var(--or-clair); margin-bottom: .55rem; letter-spacing: .01em; }
.stage-title .main { display: block; font-size: clamp(3.2rem, min(9vw, 12.5vh), 7rem); white-space: nowrap;
  background: linear-gradient(180deg, #fffaf0 0%, #f1eadb 45%, #e6d09c 100%); -webkit-background-clip: text; background-clip: text; color: transparent; }
.stage-title .when { margin-top: 1rem; font-family: var(--display); font-size: clamp(1.05rem, 1.8vw, 1.3rem); color: var(--ivoire); max-width: none; }
.stage-title .when small { display: block; font-family: var(--sans); font-size: .88rem; color: var(--or); margin-top: .25rem; }
.stage-actions { top: auto; bottom: max(26px, env(safe-area-inset-bottom, 0px)); display: flex; gap: .8rem; justify-content: center; flex-wrap: wrap; padding: 0 20px; will-change: opacity; }
.stage-actions .btn { box-shadow: 0 10px 40px rgba(5, 8, 22, .6); }
.stage-actions .btn-line { background: rgba(5, 8, 22, .55); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.cue { top: auto; bottom: 104px; max-width: none; text-align: center; font-size: .85rem; color: var(--or-clair); letter-spacing: .04em; pointer-events: none; animation: cue 2.6s ease-in-out infinite; }
.cue::after { content: ""; display: block; width: 1px; height: 34px; margin: .6rem auto 0; background: linear-gradient(var(--or), transparent); }
@keyframes cue { 50% { transform: translateY(6px); opacity: .6; } }
.door-light { animation: flicker 4s ease-in-out infinite; }
@keyframes flicker { 0%, 100% { opacity: .92; } 40% { opacity: 1; } 60% { opacity: .85; } }
@media (max-width: 639px) {
  .temple { height: 260vh; height: 260svh; }
  .stage-title { padding-top: 88px; }
  .stage-actions { flex-direction: column; align-items: stretch; max-width: 360px; margin: 0 auto; left: 0; right: 0; bottom: calc(70px + env(safe-area-inset-bottom, 0px)); }
  .stage-actions .btn { min-height: 48px; }
  .cue { display: none; }
}

/* ═══════════════ LA CHAMBRE DES NOMS (mur éclairé à la torche) ═══════════════ */
.chamber { position: relative; overflow: hidden; padding: clamp(6rem, 13vw, 10rem) 0; border-top: 1px solid var(--filet-doux); background: #060914; cursor: none; touch-action: pan-y; }
.chamber .wall { position: absolute; inset: -20px; font: 34px/1.5 "Noto Sans Egyptian Hieroglyphs", serif; letter-spacing: .32em; white-space: nowrap; overflow: hidden; user-select: none; pointer-events: none; }
.wall-dim { color: rgba(60, 76, 130, .22); }
.wall-lit {
  color: #e8c779; text-shadow: 0 0 12px rgba(255, 196, 92, .55);
  -webkit-mask-image: radial-gradient(circle var(--r, 210px) at var(--x, 50%) var(--y, 50%), #000 0%, rgba(0,0,0,.55) 45%, transparent 100%);
          mask-image: radial-gradient(circle var(--r, 210px) at var(--x, 50%) var(--y, 50%), #000 0%, rgba(0,0,0,.55) 45%, transparent 100%);
}
.torch-halo { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle calc(var(--r, 210px) * 1.6) at var(--x, 50%) var(--y, 50%), rgba(255, 170, 70, .13), transparent 70%); }
.chamber-inner { position: relative; text-align: center; display: flex; flex-direction: column; align-items: center; }
.chamber-card { background: radial-gradient(ellipse at center, rgba(6, 9, 20, .94) 55%, rgba(6, 9, 20, 0) 72%); padding: 3rem clamp(1rem, 6vw, 5rem); cursor: auto; }
.chamber h2 { font-size: clamp(2.3rem, 5vw, 3.8rem); }
.chamber .lead { margin: 1rem auto 0; max-width: 46ch; }
.name-form { margin-top: 2rem; display: flex; justify-content: center; }
.name-form input {
  width: min(360px, 80vw); height: 54px; padding: 0 1.1rem; text-align: center; font: 400 1.25rem var(--display); color: var(--ivoire);
  background: rgba(7, 10, 20, .7); border: 1px solid var(--filet); border-radius: 0; cursor: text;
}
.name-form input:focus { outline: none; border-color: var(--or-clair); }
.cartouche {
  --c: var(--or);
  position: relative; display: inline-flex; align-items: center; justify-content: center; min-width: 160px; min-height: 92px; margin-top: 2rem;
  padding: 12px 52px 12px 34px; border: 2px solid var(--c); border-radius: 999px; outline: 1px solid rgba(200, 164, 93, .4); outline-offset: 5px;
  font: 48px/1 "Noto Sans Egyptian Hieroglyphs", serif; color: var(--or-clair); letter-spacing: .06em;
  text-shadow: 0 0 18px rgba(255, 196, 92, .35); transition: min-width .3s;
}
.cartouche::after { content: ""; position: absolute; right: 20px; top: 14%; bottom: 14%; width: 2px; background: var(--c); }
.cartouche:empty::before { content: "𓋹"; opacity: .35; }
.translit { margin-top: 1.2rem; font-size: .9rem; color: var(--muet); max-width: 52ch; }
.translit b { font-weight: 400; color: var(--or-clair); }
@media (hover: none) { .chamber { cursor: auto; } }
@media (max-width: 639px) { .cartouche { font-size: 36px; min-height: 76px; padding: 10px 44px 10px 26px; } .chamber .wall { font-size: 26px; } }

/* frise de lotus (filet d'or) entre deux chapitres */
.lotus { height: 34px; border-top: 1px solid var(--filet-doux); opacity: .75;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='34' viewBox='0 0 72 34'%3E%3Cg fill='none' stroke='%23c8a45d' stroke-width='1'%3E%3Cpath d='M18 30 C12 22 12 12 18 4 C24 12 24 22 18 30Z'/%3E%3Cpath d='M18 30 C8 26 4 18 6 10 C12 14 16 22 18 30Z'/%3E%3Cpath d='M18 30 C28 26 32 18 30 10 C24 14 20 22 18 30Z'/%3E%3Cpath d='M54 30 C50 24 50 18 54 12 C58 18 58 24 54 30Z'/%3E%3Cpath d='M0 31 H72' stroke-opacity='.6'/%3E%3C/g%3E%3C/svg%3E") repeat-x center / 72px 34px; }

@media (prefers-reduced-motion: reduce) {
  .temple { height: auto; } .stage { position: relative; }
  .cue, .door-light { animation: none; }
}

/* ═══════════════════════════════════════════════════════════════
   ÉGYPTE ANTIQUE — couche ajoutée le 2 octobre 2026
   Polychromie des tombes et des bijoux : bleu égyptien, cornaline,
   turquoise, ocre. Frises à blocs, plafond étoilé, colonnes de
   hiéroglyphes, cartouches, corniches à gorge.
   (Version précédente : _archive/2026-10-02_avant-egypte/)
   ═══════════════════════════════════════════════════════════════ */
:root {
  --bleu-eg: #2a5db0;
  --cornaline: #b5442b;
  --turquoise: #2f8f7f;
  --ocre: #d9a441;
  --calcaire: #e6d7ae;
  --nuit-peinte: #10245c;
  --glyphes: "Noto Sans Egyptian Hieroglyphs", serif;
  /* frise à blocs : bleu, rouge, vert, ocre, séparés par noir-blanc-noir */
  --frise: repeating-linear-gradient(90deg,
    var(--bleu-eg) 0 22px, #05070f 22px 23px, var(--calcaire) 23px 25px, #05070f 25px 26px,
    var(--cornaline) 26px 48px, #05070f 48px 49px, var(--calcaire) 49px 51px, #05070f 51px 52px,
    var(--turquoise) 52px 74px, #05070f 74px 75px, var(--calcaire) 75px 77px, #05070f 77px 78px,
    var(--ocre) 78px 100px, #05070f 100px 101px, var(--calcaire) 101px 103px, #05070f 103px 104px);
  /* plafond étoilé des tombes : étoiles à cinq branches sur bleu nuit */
  --etoiles: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='72' height='72' viewBox='0 0 72 72'%3E%3Cg stroke='%23d9a441' stroke-opacity='.2' stroke-width='1.4' stroke-linecap='round'%3E%3Cpath d='M18 18V8M18 18l9.5-3.1M18 18l5.9 8.1M18 18l-5.9 8.1M18 18l-9.5-3.1'/%3E%3Cpath d='M54 54V44M54 54l9.5-3.1M54 54l5.9 8.1M54 54l-5.9 8.1M54 54l-9.5-3.1'/%3E%3C/g%3E%3Cg fill='%23b5442b' fill-opacity='.4'%3E%3Ccircle cx='18' cy='18' r='1.7'/%3E%3Ccircle cx='54' cy='54' r='1.7'/%3E%3C/g%3E%3C/svg%3E");
}

/* frise à blocs en tête de chaque chapitre */
.band { border-top: 0; }
.band::before { content: ""; position: absolute; inset: 0 0 auto; height: 12px; background: var(--frise); border-top: 1px solid var(--or); border-bottom: 1px solid var(--or); opacity: .9; }
.lotus { height: 12px; background: var(--frise); border-top: 1px solid var(--or); border-bottom: 1px solid var(--or); opacity: .9; }
.lotus + .band::before { display: none; }

/* colonne de hiéroglyphes le long de chaque titre (texte décoratif) */
.side { position: relative; }
.side::before { font: 22px/1.25 var(--glyphes); color: var(--ocre); opacity: .8; display: block; letter-spacing: .3em; margin-bottom: 1rem; }
#soiree .side::before { content: "𓇼𓇳𓇹𓇯𓇼"; }
#stands .side::before { content: "𓏊𓏐𓏋𓎺𓏌"; }
#plan .side::before { content: "𓉐𓈐𓊖𓉗𓊝"; }
#infos .side::before { content: "𓁹𓏛𓏞𓋴𓆄"; }
#lieu .side::before { content: "𓈐𓊖𓊝𓈗𓉐"; }
#faq .side::before { content: "𓏞𓂋𓄿𓁷𓏛"; }
#contacts .side::before { content: "𓂝𓀀𓁐𓂧𓂋"; }
@media (min-width: 900px) {
  .split > .side { padding-left: 62px; }
  .side::before {
    position: absolute; left: 0; top: .35rem; margin: 0; writing-mode: vertical-rl; text-orientation: upright; letter-spacing: .28em;
    padding: .7rem .5rem; border-left: 1px solid var(--filet); border-right: 1px solid var(--filet);
    background: linear-gradient(180deg, rgba(42, 93, 176, .16), rgba(42, 93, 176, 0));
  }
}

/* La soirée : sous le plafond étoilé */
#soiree { background: var(--etoiles) 0 0 / 72px 72px, linear-gradient(180deg, #0e1f52, #0a1538 70%, var(--encre)); }
#soiree .prog, #soiree .prog li { border-color: rgba(217, 164, 65, .3); }

/* heures du programme dans des cartouches */
.prog li { grid-template-columns: 7.6rem 1fr; align-items: start; }
.prog time {
  position: relative; justify-self: start; font-size: 1.3rem; line-height: 1; color: var(--or-clair);
  padding: .5rem 1.25rem .5rem .8rem; border: 1.5px solid var(--ocre); border-radius: 999px; background: rgba(7, 10, 20, .45);
}
.prog time::after { content: ""; position: absolute; right: .55rem; top: 18%; bottom: 18%; width: 1.5px; background: var(--ocre); }

/* cadres en naos : corniche à gorge peinte au-dessus du plan et de la carte */
.plan-card, .lieu-map { position: relative; margin-top: 28px; border-color: var(--or); border-top-width: 3px; }
.plan-card::before, .lieu-map::before {
  content: ""; position: absolute; left: -11px; right: -11px; top: -29px; height: 26px;
  clip-path: polygon(0 0, 100% 0, calc(100% - 10px) 100%, 10px 100%);
  background:
    linear-gradient(180deg, var(--or) 0 2px, transparent 2px),
    repeating-linear-gradient(90deg, var(--bleu-eg) 0 9px, var(--or) 9px 10px, var(--cornaline) 10px 19px, var(--or) 19px 20px, var(--turquoise) 20px 29px, var(--or) 29px 30px);
}

/* stands : chaque carte coiffée d'un filet tricolore */
.menu ul { border-top: 0; position: relative; padding-top: 5px; }
.menu ul::before { content: ""; position: absolute; inset: 0 0 auto; height: 5px; background: linear-gradient(90deg, var(--bleu-eg) 0 33.3%, var(--cornaline) 33.3% 66.6%, var(--turquoise) 66.6%); border-top: 1px solid var(--or); }
.menu .asso { color: var(--ocre); }

/* boutons : plaque d'or à double filet */
.btn { box-shadow: inset 0 0 0 3px var(--or), inset 0 0 0 4px rgba(7, 10, 20, .5); }
.btn:hover { box-shadow: inset 0 0 0 3px var(--or-clair), inset 0 0 0 4px rgba(7, 10, 20, .5); }
.btn-line, .btn-line:hover, .btn-soon, .btn-soon:hover { box-shadow: inset 0 0 0 3px rgba(7, 10, 20, .0), inset 0 0 0 4px var(--filet-doux); }
.stage-actions .btn { box-shadow: inset 0 0 0 3px var(--or), inset 0 0 0 4px rgba(7, 10, 20, .5), 0 10px 40px rgba(5, 8, 22, .6); }
.stage-actions .btn-line, .stage-actions .btn-soon { box-shadow: inset 0 0 0 4px var(--filet-doux), 0 10px 40px rgba(5, 8, 22, .6); }

/* questions : la croix ankh remplace le « + » */
.faq summary::after { content: "𓋹"; font: 1.6rem/1 var(--glyphes); color: var(--ocre); opacity: .65; transition: opacity .3s, color .3s; }
.faq details[open] summary::after { transform: none; opacity: 1; color: var(--or-clair); }

/* partenaires : mur de calcaire entre deux frises */
.partners { background: radial-gradient(ellipse 90% 120% at 50% 0, #efe3c0, var(--calcaire) 60%, #d9c897); position: relative; padding: 5.5rem 0; }
.partners::before, .partners::after { content: ""; position: absolute; left: 0; right: 0; height: 12px; background: var(--frise); border-top: 1px solid #6b4c22; border-bottom: 1px solid #6b4c22; }
.partners::before { top: 0; } .partners::after { bottom: 0; }
.partners h2 { color: #5a2416; }

/* pied : disque solaire ailé sous le ciel étoilé */
footer { border-top: 0; position: relative; padding-top: 7.5rem; background: var(--etoiles) 0 0 / 72px 72px, linear-gradient(180deg, #0b1740, var(--encre) 85%); }
footer::before {
  content: ""; position: absolute; left: 0; right: 0; top: 2.2rem; height: 56px;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-150 -30 300 60'%3E%3Cg fill='%23d9a441'%3E%3Cpath id='w' d='M16 -9 C52 -24 104 -24 142 -14 C104 -6 58 -2 16 2 Z'/%3E%3Cpath d='M16 4 C54 0 96 2 126 8 C92 13 54 14 16 14 Z' opacity='.75'/%3E%3Cpath d='M16 16 C46 15 76 17 100 21 C74 24 44 25 16 24 Z' opacity='.5'/%3E%3Cpath d='M-16 -9 C-52 -24 -104 -24 -142 -14 C-104 -6 -58 -2 -16 2 Z'/%3E%3Cpath d='M-16 4 C-54 0 -96 2 -126 8 C-92 13 -54 14 -16 14 Z' opacity='.75'/%3E%3Cpath d='M-16 16 C-46 15 -76 17 -100 21 C-74 24 -44 25 -16 24 Z' opacity='.5'/%3E%3C/g%3E%3Ccircle r='15' fill='%23b5442b' stroke='%23d9a441' stroke-width='2.5'/%3E%3C/svg%3E") center / contain no-repeat;
}

@media (max-width: 639px) {
  .prog li { grid-template-columns: 5.9rem 1fr; }
  .prog time { font-size: 1.05rem; padding: .42rem 1rem .42rem .6rem; }
  .side::before { font-size: 19px; }
}

/* barre mobile : fond opaque pour rester lisible par-dessus le contenu */
.mbar .btn-soon, .mbar .btn-soon:hover { background: rgba(7, 10, 20, .95); }


/* ── programme du week-end : un bloc par jour ── */
.prog-jours { display: grid; gap: 3rem; }
.prog-date { font: italic 400 clamp(1.5rem, 2.6vw, 1.9rem)/1.2 var(--display); color: var(--or-clair); margin-bottom: .9rem; }
.prog li > div > h3 { margin-bottom: 0; }
.prog li > div > h3 + p { margin-top: .2rem; }
.prog li.gala time { background: var(--or); color: var(--encre); border-color: var(--or); }
.prog li.gala time::after { background: var(--encre); }
.prog li.gala h3 { color: var(--or-clair); }


/* édition (226) dans le titre et rappel « le reste s'achète sur place » */
.stage-title .main .ed { font-size: .62em; letter-spacing: .02em; vertical-align: .12em; margin-left: .08em; }
.wordmark { white-space: nowrap; }
.note-sur-place { margin-top: 1.2rem; padding: .85rem 1rem; border-left: 2px solid var(--or); background: rgba(200, 164, 93, .07); font-size: .95rem; line-height: 1.55; color: var(--ivoire); }
.note-sur-place strong { color: var(--or-clair); font-weight: 500; }
