/* ═══════════════════════════════════════════════════════════════
   GRAND CANYON — "The night lights up here"
   One idea runs through the whole site: light. The hall's neon sign,
   its colour-LED lotus pillars and its light-up dance floor.
   --glow is the pillar colour the visitor picks; everything neon follows it.
   ═══════════════════════════════════════════════════════════════ */

:root {
  --night: #05061a;
  --night-2: #0a0c26;
  --night-3: #121538;
  --ivory: #f6f0e6;
  --dim: rgba(246, 240, 230, .68);
  --faint: rgba(246, 240, 230, .14);
  --hair: rgba(246, 240, 230, .09);
  --gold: #e9c47f;
  --glow: #4f62ff;
  --on-glow: #ffffff;
  --glow-soft: color-mix(in srgb, var(--glow) 38%, transparent);
  --glow-ink: color-mix(in srgb, var(--glow) 52%, #ffffff);
  --tint: #05061a;

  --serif: 'Instrument Serif', 'Times New Roman', serif;
  --sans: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --script: 'Yellowtail', 'Brush Script MT', cursive;

  --pad: clamp(16px, 4.2vw, 64px);
  --ease: cubic-bezier(.22, 1, .36, 1);
  --ease-io: cubic-bezier(.76, 0, .24, 1);
  color-scheme: dark;
}

*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: auto; }
body {
  margin: 0;
  background: var(--night);
  color: var(--ivory);
  font: 400 17px/1.6 var(--sans);
  -webkit-font-smoothing: antialiased;
  overflow-x: clip;
}
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
button { font: inherit; color: inherit; cursor: pointer; }
:focus-visible { outline: 2px solid var(--glow-ink); outline-offset: 4px; border-radius: 6px; }
::selection { background: var(--glow); color: var(--on-glow); }
h1, h2, h3, p, figure, blockquote, ol, ul, dl, dd { margin: 0; }
ol, ul { padding: 0; list-style: none; }

/* film grain over everything: static, so it costs nothing while scrolling */
body::after {
  content: ''; position: fixed; inset: 0; z-index: 90; pointer-events: none; opacity: .07;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}

.skip { position: absolute; left: 12px; top: -80px; z-index: 200; background: var(--ivory); color: var(--night); padding: 10px 16px; border-radius: 8px; font-weight: 600; text-decoration: none; }
.skip:focus { top: 12px; }
.sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* ─────────── type ─────────── */
.eyebrow {
  display: inline-flex; align-items: center; gap: 10px;
  font: 700 11.5px/1.2 var(--sans); letter-spacing: .24em; text-transform: uppercase; color: var(--dim);
}
.eyebrow::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: var(--glow); box-shadow: 0 0 10px 2px var(--glow); flex: none; }
.h2 {
  font: 400 clamp(44px, 6.6vw, 112px)/.94 var(--serif);
  letter-spacing: -.012em; text-wrap: balance;
}
.h2 em, .h1 em, .lit { font-style: italic; color: var(--glow-ink); text-shadow: 0 0 18px var(--glow-soft); }
.lede { font-size: clamp(17px, 1.35vw, 20px); color: var(--dim); max-width: 46ch; text-wrap: pretty; }

/* split words (built by JS) */
.w { display: inline-block; overflow: hidden; vertical-align: top; padding-bottom: .08em; margin-bottom: -.08em; }
.wi { display: inline-block; will-change: transform; }

/* neon tube text */
.neon { color: #fff; text-shadow: 0 0 4px #fff, 0 0 12px var(--glow), 0 0 28px var(--glow), 0 0 64px var(--glow-soft); }

/* ─────────── buttons ─────────── */
.btn {
  position: relative; display: inline-flex; align-items: center; gap: 14px;
  min-height: 54px; padding: 0 10px 0 26px; border-radius: 999px; border: 0;
  font: 700 13px/1 var(--sans); letter-spacing: .08em; text-transform: uppercase; text-decoration: none; white-space: nowrap;
  transition: background .4s var(--ease), color .4s var(--ease), box-shadow .5s var(--ease), border-color .4s;
}
.btn i { display: grid; place-items: center; width: 36px; height: 36px; border-radius: 50%; font-style: normal; font-size: 15px; transition: transform .5s var(--ease); }
.btn:hover i { transform: rotate(45deg); }
.btn-glow { background: var(--glow); color: var(--on-glow); box-shadow: 0 0 0 1px rgba(255,255,255,.18) inset, 0 14px 44px -10px var(--glow); }
.btn-glow i { background: rgba(0, 0, 0, .18); }
.btn-glow:hover { box-shadow: 0 0 0 1px rgba(255,255,255,.35) inset, 0 18px 60px -6px var(--glow); }
.btn-line { color: var(--ivory); box-shadow: 0 0 0 1px var(--faint) inset; background: rgba(5, 6, 26, .25); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.btn-line i { background: var(--hair); }
.btn-line:hover { box-shadow: 0 0 0 1px var(--glow) inset, 0 0 30px -6px var(--glow); }
.link { color: var(--ivory); text-decoration: none; background: linear-gradient(var(--glow), var(--glow)) 0 100% / 100% 1px no-repeat; padding-bottom: 3px; transition: background-size .5s var(--ease); }
.link:hover { background-size: 0 1px; background-position: 100% 100%; }

/* ─────────── header ─────────── */
.hdr {
  position: fixed; inset: 0 0 auto; z-index: 60;
  display: flex; align-items: center; justify-content: space-between; gap: 20px;
  padding: 16px var(--pad);
  transition: transform .6s var(--ease), background .5s, box-shadow .5s;
}
.hdr.solid { background: rgba(5, 6, 26, .62); backdrop-filter: blur(16px) saturate(1.4); -webkit-backdrop-filter: blur(16px) saturate(1.4); box-shadow: 0 1px 0 var(--hair); }
.hdr.away { transform: translateY(-110%); }
.logo { display: inline-flex; align-items: center; gap: 12px; text-decoration: none; }
.logo-gc {
  display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%;
  font: 400 21px/1 var(--script); color: #fff; box-shadow: 0 0 0 1px var(--faint) inset;
  text-shadow: 0 0 8px var(--glow), 0 0 20px var(--glow);
}
.logo-word { font: 400 25px/1 var(--script); letter-spacing: .01em; }
.hdr-nav { display: flex; gap: 4px; padding: 5px; border-radius: 999px; background: rgba(5, 6, 26, .35); box-shadow: 0 0 0 1px var(--hair) inset; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }
.hdr-nav a { padding: 10px 16px; border-radius: 999px; font: 600 13.5px/1 var(--sans); text-decoration: none; color: var(--dim); transition: color .3s, background .3s; }
.hdr-nav a:hover, .hdr-nav a[aria-current] { color: var(--ivory); background: var(--hair); }
.hdr-end { display: flex; align-items: center; gap: 10px; }
.hdr-tel { font: 600 14px/1 var(--sans); text-decoration: none; color: var(--dim); padding: 8px; }
.hdr-tel:hover { color: var(--ivory); }
.hdr .btn { min-height: 44px; padding-left: 20px; font-size: 12px; }
.hdr .btn i { width: 30px; height: 30px; }
.burger { display: none; width: 48px; height: 48px; border-radius: 50%; border: 0; background: rgba(5, 6, 26, .4); box-shadow: 0 0 0 1px var(--faint) inset; place-items: center; }
.burger span { display: block; width: 18px; height: 1.5px; background: currentColor; margin: 3px auto; transition: transform .4s var(--ease); }

.menu {
  position: fixed; inset: 0; z-index: 70; display: flex; flex-direction: column; justify-content: center; gap: 4px;
  padding: 90px var(--pad) 40px; background: radial-gradient(120% 70% at 80% 0%, var(--glow-soft), transparent 60%), var(--night);
  clip-path: circle(0% at calc(100% - 40px) 40px); visibility: hidden;
  transition: clip-path .8s var(--ease-io), visibility 0s .8s;
}
.menu.open { clip-path: circle(150% at calc(100% - 40px) 40px); visibility: visible; transition: clip-path .9s var(--ease-io), visibility 0s; }
.menu > a { font: 400 clamp(46px, 13vw, 84px)/1.02 var(--serif); text-decoration: none; opacity: 0; transform: translateY(30px); transition: opacity .6s var(--ease), transform .8s var(--ease); }
.menu > a em { color: var(--glow-ink); }
.menu.open > a { opacity: 1; transform: none; transition-delay: calc(.25s + var(--i, 0) * .06s); }
.menu-close { position: absolute; top: 16px; right: var(--pad); width: 48px; height: 48px; border-radius: 50%; border: 0; background: var(--hair); font-size: 22px; }
.menu-foot { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 34px; }

/* chapter rail */
.rail { position: fixed; right: 22px; top: 50%; z-index: 55; transform: translateY(-50%); display: flex; flex-direction: column; gap: 14px; }
.rail a { position: relative; display: block; width: 10px; height: 10px; border-radius: 50%; box-shadow: 0 0 0 1px var(--faint) inset; transition: background .4s, box-shadow .4s, transform .4s var(--ease); }
.rail a span { position: absolute; right: 22px; top: 50%; transform: translate(6px, -50%); white-space: nowrap; font: 700 10.5px/1 var(--sans); letter-spacing: .2em; text-transform: uppercase; opacity: 0; pointer-events: none; transition: opacity .3s, transform .4s var(--ease); }
.rail a:hover span, .rail a:focus-visible span { opacity: 1; transform: translate(0, -50%); }
.rail a span { padding: 6px 10px; border-radius: 999px; background: rgba(5,6,26,.7); }
.rail a.on { background: var(--glow); box-shadow: 0 0 12px 2px var(--glow); transform: scale(1.15); }
.rail.hide { opacity: 0; pointer-events: none; }
.rail { transition: opacity .4s; }

/* ─────────── cursor spotlight ─────────── */
.cur, .cur-light { position: fixed; left: 0; top: 0; z-index: 95; pointer-events: none; }
.cur { width: 10px; height: 10px; margin: -5px 0 0 -5px; border-radius: 50%; background: #fff; box-shadow: 0 0 12px 3px var(--glow); display: grid; place-items: center; transition: width .45s var(--ease), height .45s var(--ease), margin .45s var(--ease), background .3s; }
.cur b { font: 700 10px/1 var(--sans); letter-spacing: .18em; text-transform: uppercase; color: var(--on-glow); opacity: 0; transition: opacity .3s; }
.cur.big { width: 84px; height: 84px; margin: -42px 0 0 -42px; background: var(--glow); }
.cur.big b { opacity: 1; }
.cur.link { width: 44px; height: 44px; margin: -22px 0 0 -22px; background: transparent; box-shadow: 0 0 0 1px var(--glow) inset, 0 0 18px var(--glow-soft); }
.cur-light { width: 520px; height: 520px; margin: -260px 0 0 -260px; border-radius: 50%; z-index: 4; background: radial-gradient(closest-side, color-mix(in srgb, var(--glow) 16%, transparent), transparent); }
@media (hover: none), (pointer: coarse) { .cur, .cur-light { display: none; } }

/* ─────────── intro (first visit) + page veil ─────────── */
.intro { display: none; }
.is-intro .intro {
  position: fixed; inset: 0; z-index: 150; display: grid; place-items: center; align-content: center; gap: 18px;
  background: #020310; transition: clip-path 1.1s var(--ease-io);
  clip-path: inset(0 0 0 0);
}
.intro-sign { font: 400 clamp(64px, 13vw, 190px)/1 var(--script); color: #1a1c3a; text-shadow: none; padding: 0 .1em; }
.intro-sign span { display: inline-block; }
.intro.on .intro-sign span { animation: tube 1.4s steps(1) both; animation-delay: calc(var(--d) * 1s); }
.intro-sub { font: 700 11px/1 var(--sans); letter-spacing: .4em; text-transform: uppercase; color: var(--dim); opacity: 0; transition: opacity .8s .9s; }
.intro.on .intro-sub { opacity: 1; }
.intro-bar { width: min(240px, 50vw); height: 1px; background: var(--hair); overflow: hidden; }
.intro-bar i { display: block; height: 100%; background: var(--glow); box-shadow: 0 0 8px var(--glow); transform-origin: left; transform: scaleX(0); transition: transform 1.6s var(--ease); }
.intro.on .intro-bar i { transform: scaleX(1); }
.intro.out { clip-path: inset(0 0 100% 0); }
@keyframes tube {
  0% { color: #1a1c3a; text-shadow: none; }
  10% { color: #fff; text-shadow: 0 0 6px #fff, 0 0 18px var(--glow), 0 0 44px var(--glow); }
  18% { color: #1a1c3a; text-shadow: none; }
  30% { color: #fff; text-shadow: 0 0 6px #fff, 0 0 18px var(--glow), 0 0 44px var(--glow); }
  38% { color: #8b8fb8; text-shadow: 0 0 6px var(--glow); }
  46%, 100% { color: #fff; text-shadow: 0 0 6px #fff, 0 0 18px var(--glow), 0 0 44px var(--glow), 0 0 90px var(--glow-soft); }
}

.veil { position: fixed; inset: 0; z-index: 140; pointer-events: none; background: var(--glow); clip-path: inset(100% 0 0 0); }
.veil::after { content: ''; position: absolute; inset: 0; background: var(--night); clip-path: inset(100% 0 0 0); transition: clip-path .7s var(--ease-io) .08s; }
.pt-out .veil { clip-path: inset(0 0 0 0); transition: clip-path .7s var(--ease-io); }
.pt-out .veil::after { clip-path: inset(0 0 0 0); }
.pt-in .veil, .pt-in .veil::after { clip-path: inset(0 0 0 0); transition: none; }
.pt-lift .veil { clip-path: inset(0 0 100% 0); transition: clip-path .9s var(--ease-io); }
.pt-lift .veil::after { clip-path: inset(0 0 100% 0); transition: clip-path .75s var(--ease-io); }

/* ─────────── 1. HERO ─────────── */
.hero {
  position: relative; min-height: 100svh; overflow: hidden; isolation: isolate;
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(300px, 31vw); align-items: end; column-gap: 3vw;
  padding: 120px var(--pad) 44px;
}
.hero-bg { position: absolute; inset: -12%; z-index: -2; }
.hero-bg img { width: 100%; height: 100%; object-fit: cover; filter: blur(70px) saturate(1.7) brightness(.42); transform: scale(1.15); }
.hero::before { /* spotlight that follows the mouse */
  content: ''; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: radial-gradient(600px circle at var(--mx, 70%) var(--my, 40%), color-mix(in srgb, var(--glow) 22%, transparent), transparent 70%),
              linear-gradient(180deg, rgba(5,6,26,.5), transparent 30%, transparent 60%, var(--night));
}
.hero-copy { position: relative; z-index: 2; padding-bottom: 8px; }
.h1 {
  font: 400 clamp(70px, 11.6vw, 228px)/.84 var(--serif); letter-spacing: -.02em;
  margin: 22px 0 30px; margin-right: -14vw; /* the headline runs over the arch */
}
.h1 .row { display: block; }
.h1 .lit { color: #fff; text-shadow: 0 0 6px rgba(255,255,255,.7), 0 0 22px var(--glow), 0 0 60px var(--glow); }
.hero-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 14px; }
.rating { display: inline-flex; align-items: center; gap: 12px; padding: 8px 18px 8px 8px; border-radius: 999px; background: rgba(5,6,26,.35); box-shadow: 0 0 0 1px var(--hair) inset; backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); text-decoration: none; }
.rating b { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 50%; background: var(--ivory); color: var(--night); font: 700 14px/1 var(--sans); }
.rating span { font-size: 13.5px; line-height: 1.3; color: var(--dim); }
.rating span strong { color: var(--gold); letter-spacing: .1em; font-weight: 400; }

.hero-arch { position: relative; z-index: 1; align-self: center; perspective: 1200px; }
.arch {
  position: relative; aspect-ratio: 3 / 4.1; max-height: 80svh; margin-left: auto;
  border-radius: 999px 999px 26px 26px; overflow: hidden; transform-style: preserve-3d;
  box-shadow: 0 50px 120px -30px var(--glow-soft), 0 0 0 1px rgba(255,255,255,.08);
}
.arch img { width: 100%; height: 100%; object-fit: cover; object-position: 55% 30%; transform: scale(1.08); }
.hero-arch::before { /* gilt line around the arch */
  content: ''; position: absolute; inset: -14px; z-index: -1; border-radius: 999px 999px 34px 34px;
  border: 1px solid color-mix(in srgb, var(--gold) 45%, transparent);
}
.arch-tag { position: absolute; left: 50%; bottom: 22px; transform: translateX(-50%); white-space: nowrap; padding: 9px 16px; border-radius: 999px; background: rgba(5,6,26,.55); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); font: 600 12px/1 var(--sans); letter-spacing: .06em; }
.cue { position: absolute; left: 50%; bottom: 22px; z-index: 3; display: flex; flex-direction: column; align-items: center; gap: 12px; transform: translateX(-50%); font: 700 10.5px/1 var(--sans); letter-spacing: .26em; text-transform: uppercase; color: var(--dim); text-decoration: none; }
.cue::after { content: ''; width: 1px; height: 44px; background: linear-gradient(var(--glow), transparent); animation: cue 2.2s var(--ease) infinite; transform-origin: top; }
@keyframes cue { 0% { transform: scaleY(0); } 50% { transform: scaleY(1); transform-origin: top; } 51% { transform-origin: bottom; } 100% { transform: scaleY(0); transform-origin: bottom; } }

/* light strip: real facts, moving */
.strip { position: relative; z-index: 3; overflow: hidden; border-block: 1px solid var(--hair); background: var(--night); padding: 18px 0; }
.strip-track { display: flex; width: max-content; gap: 0; animation: strip 38s linear infinite; }
.strip:hover .strip-track { animation-play-state: paused; }
.strip-track span { display: inline-flex; align-items: center; gap: 28px; padding-right: 28px; font: 400 clamp(22px, 2.4vw, 34px)/1 var(--serif); white-space: nowrap; }
.strip-track span::after { content: '✦'; font-size: .5em; color: var(--glow); text-shadow: 0 0 10px var(--glow); }
.strip-track span:nth-child(even) { font-style: italic; color: var(--dim); }
@keyframes strip { to { transform: translateX(-50%); } }

/* ─────────── 2. DOORS ─────────── */
.doors { position: relative; }
.doors-stage { position: relative; height: 100svh; min-height: 620px; overflow: hidden; perspective: 1800px; perspective-origin: 50% 45%; }
.doors-photo { position: absolute; inset: 0; }
.doors-photo img { width: 100%; height: 100%; object-fit: cover; }
.doors-shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(5,6,26,.94) 0%, rgba(5,6,26,.72) 34%, rgba(5,6,26,.05) 70%), linear-gradient(0deg, rgba(5,6,26,.85), transparent 45%); }
.door { display: none; }
.motion .door {
  display: flex; align-items: center; position: absolute; top: 0; bottom: 0; width: 50.2%; z-index: 3;
  background:
    url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='160' viewBox='0 0 120 160'><g fill='none' stroke='%23e9c47f' stroke-opacity='.13' stroke-width='1'><path d='M60 10c18 22 18 46 0 70c-18-24-18-48 0-70zM60 80c18 22 18 46 0 70c-18-24-18-48 0-70z'/><path d='M0 80c22-14 38-14 60 0c22 14 38 14 60 0'/><circle cx='60' cy='80' r='5'/></g></svg>") center / 120px 160px,
    linear-gradient(180deg, #0d1035, #070822);
  box-shadow: inset 0 0 0 1px rgba(233,196,127,.18), inset 0 0 0 14px #070822, inset 0 0 0 15px rgba(233,196,127,.22);
  backface-visibility: hidden;
}
.door span { font: 400 clamp(80px, 13vw, 250px)/.8 var(--serif); width: 100%; padding: 0 3vw; color: var(--ivory); }
.door-l { left: 0; transform-origin: 0 50%; }
.door-l span { text-align: right; font-style: italic; color: var(--glow-ink); text-shadow: 0 0 30px var(--glow-soft); }
.door-r { right: 0; transform-origin: 100% 50%; }
.door::after { content: ''; position: absolute; top: 50%; width: 3px; height: 90px; margin-top: -45px; border-radius: 3px; background: linear-gradient(var(--gold), #8a6a32); box-shadow: 0 0 14px rgba(233,196,127,.5); }
.door-l::after { right: 26px; }
.door-r::after { left: 26px; }
.doors-copy { position: absolute; left: var(--pad); bottom: clamp(32px, 7vh, 80px); z-index: 2; max-width: min(640px, 88vw); }
.doors-copy .h2 { margin: 18px 0 20px; }
.facts { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }
.facts li { padding: 14px 20px; border-radius: 18px; background: rgba(5,6,26,.5); box-shadow: 0 0 0 1px var(--hair) inset; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.facts b { display: block; font: 400 38px/1 var(--serif); }
.facts li > span { font-size: 12.5px; color: var(--dim); }

/* ─────────── 3. COLOURS ─────────── */
.colours {
  position: relative; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, .95fr); gap: clamp(32px, 6vw, 100px); align-items: center;
  padding: clamp(80px, 11vw, 150px) var(--pad);
  background: radial-gradient(60% 70% at 78% 50%, color-mix(in srgb, var(--glow) 20%, transparent), transparent 70%), var(--night);
  transition: background .8s;
}
.colours .h2 { margin: 20px 0 22px; }
.swatches { display: flex; flex-wrap: wrap; gap: 10px; margin: 34px 0 18px; }
.sw {
  position: relative; display: inline-flex; align-items: center; gap: 10px; padding: 7px 16px 7px 7px; border-radius: 999px; border: 0;
  background: rgba(255,255,255,.04); box-shadow: 0 0 0 1px var(--hair) inset; font: 600 13.5px/1 var(--sans); color: var(--dim);
  transition: box-shadow .4s, color .3s, background .3s, transform .4s var(--ease);
}
.sw i { width: 28px; height: 28px; border-radius: 50%; background: var(--c); box-shadow: 0 0 12px -2px var(--c); transition: box-shadow .4s; }
.sw:hover { color: var(--ivory); transform: translateY(-2px); }
.sw[aria-checked="true"] { color: var(--ivory); background: rgba(255,255,255,.07); box-shadow: 0 0 0 1px var(--c) inset, 0 0 26px -6px var(--c); }
.sw[aria-checked="true"] i { box-shadow: 0 0 0 3px var(--night), 0 0 0 4px var(--c), 0 0 20px 2px var(--c); }
.sw-own { cursor: pointer; }
.sw-own input { position: absolute; inset: 0; opacity: 0; cursor: pointer; width: 100%; height: 100%; border: 0; padding: 0; }
.sw-own i { background: conic-gradient(#ff3b5c, #ffcf4d, #3be08a, #19d3e6, #4f62ff, #b05cff, #ff3b5c); }
.sw-own:focus-within { outline: 2px solid var(--glow-ink); outline-offset: 3px; }
.now { font-size: 15px; color: var(--dim); }
.now b { color: var(--ivory); font-weight: 600; }
.note { margin-top: 6px; font-size: 13px; color: rgba(246,240,230,.45); }

.pillar { position: relative; aspect-ratio: 3 / 4; max-height: 86svh; margin-inline: auto; width: 100%; border-radius: 28px; overflow: hidden; isolation: isolate; box-shadow: 0 60px 140px -40px var(--glow-soft); transition: box-shadow .8s; }
.pillar img { width: 100%; height: 100%; object-fit: cover; filter: grayscale(1) contrast(1.2) brightness(1.3); }
.pillar .tint { position: absolute; inset: 0; background: var(--glow); mix-blend-mode: color; transition: background .9s var(--ease); }
.pillar .bloom { position: absolute; inset: 0; background: radial-gradient(40% 28% at var(--px, 62%) var(--py, 62%), var(--glow), transparent 70%); mix-blend-mode: screen; opacity: .55; transition: background .9s var(--ease); }
.pillar .ripple { position: absolute; left: var(--rx, 50%); top: var(--ry, 50%); width: 10px; height: 10px; margin: -5px; border-radius: 50%; background: var(--glow); mix-blend-mode: screen; pointer-events: none; opacity: 0; }
.pillar .ripple.go { animation: ripple 1.1s var(--ease) forwards; }
@keyframes ripple { 0% { opacity: .8; transform: scale(1); } 100% { opacity: 0; transform: scale(240); } }
.pillar figcaption { position: absolute; left: 18px; right: 18px; bottom: 18px; display: flex; justify-content: space-between; gap: 12px; font: 600 12px/1.3 var(--sans); letter-spacing: .06em; }
.pillar figcaption span { padding: 9px 14px; border-radius: 999px; background: rgba(5,6,26,.55); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }

/* ─────────── 4. EVENING (horizontal) ─────────── */
.evening { position: relative; background: var(--tint); transition: background-color .9s; overflow: hidden; }
.evening-pin { position: relative; min-height: 100svh; display: flex; flex-direction: column; justify-content: center; padding: 100px 0 40px; }
.evening-pin::before { content: ''; position: absolute; inset: 0; pointer-events: none; background: radial-gradient(50% 60% at 50% 100%, var(--act-glow, var(--glow-soft)), transparent 70%); opacity: .55; transition: background .9s; }
.evening-head { position: relative; z-index: 2; display: flex; justify-content: space-between; align-items: end; gap: 24px; padding: 0 var(--pad); margin-bottom: clamp(24px, 4vh, 44px); }
.evening-head .h2 { font-size: clamp(42px, 5.2vw, 88px); margin-top: 14px; }
.evening-head p:last-child { max-width: 30ch; color: var(--dim); font-size: 15px; }
.evening-track { position: relative; display: flex; align-items: center; gap: clamp(36px, 6vw, 120px); padding: 0 calc(var(--pad) + 40px) 0 var(--pad); width: max-content; }
.act { position: relative; display: grid; grid-template-columns: auto minmax(220px, 300px); align-items: end; gap: 30px; flex: none; }
.act-num { position: absolute; top: -6vh; right: -2vw; z-index: 0; font: 400 clamp(160px, 26vh, 300px)/.8 var(--serif); font-style: italic; color: transparent; -webkit-text-stroke: 1px rgba(246,240,230,.22); pointer-events: none; }
.act figure { position: relative; z-index: 1; height: clamp(300px, 56vh, 620px); border-radius: 22px; overflow: hidden; box-shadow: 0 40px 100px -30px rgba(0,0,0,.7); }
.act figure img { height: 100%; width: auto; max-width: none; object-fit: cover; transform: scale(1.14); }
.act-copy { position: relative; z-index: 1; padding-bottom: 6px; }
.act-copy h3 { font: 400 clamp(40px, 4vw, 64px)/.95 var(--serif); margin: 14px 0 14px; }
.act-copy h3 em { color: var(--glow-ink); }
.act-copy p { color: var(--dim); font-size: 15.5px; }
.act-end { flex: none; width: min(460px, 80vw); }
.act-end .h2 { font-size: clamp(40px, 4.4vw, 72px); margin: 16px 0 26px; }
.evening-bar { position: relative; display: flex; align-items: center; gap: 16px; margin: clamp(26px, 5vh, 50px) var(--pad) 0; font: 700 11px/1 var(--sans); letter-spacing: .2em; color: var(--dim); }
.evening-bar .bar { flex: 1; height: 1px; background: var(--faint); }
.evening-bar .bar i { display: block; height: 100%; background: var(--glow); box-shadow: 0 0 10px var(--glow); transform-origin: left; transform: scaleX(var(--p, 0)); }

/* ─────────── 5. MOMENT (iris) ─────────── */
.moment { position: relative; background: #020310; }
.moment-stage { position: relative; height: 100svh; min-height: 560px; overflow: hidden; display: grid; place-items: center; }
.moment-photo { position: absolute; inset: 0; }
.moment-photo img { width: 100%; height: 100%; object-fit: cover; object-position: 42% 50%; }
.moment-photo::after { content: ''; position: absolute; inset: 0; background: radial-gradient(70% 70% at 45% 55%, transparent 30%, rgba(2,3,16,.85)); }
.moment-pre { position: relative; z-index: 2; text-align: center; font: 400 clamp(48px, 8vw, 150px)/.92 var(--serif); padding: 0 var(--pad); text-shadow: 0 4px 40px rgba(0,0,0,.6); }
.moment-post { position: absolute; z-index: 2; left: var(--pad); right: var(--pad); bottom: clamp(28px, 6vh, 70px); display: flex; justify-content: space-between; align-items: end; gap: 24px; }
.moment-post p:last-child { max-width: 36ch; font: 400 clamp(22px, 2.2vw, 34px)/1.15 var(--serif); }
.moment-post em { color: var(--glow-ink); }

/* ─────────── 6. REVIEWS ─────────── */
.reviews { position: relative; overflow: hidden; padding: clamp(80px, 10vw, 140px) var(--pad) clamp(60px, 8vw, 110px); }
.reviews-big { position: absolute; right: -2vw; top: 50%; transform: translateY(-50%); font: 400 clamp(260px, 42vw, 720px)/.8 var(--serif); font-style: italic; color: transparent; -webkit-text-stroke: 1px rgba(246,240,230,.08); pointer-events: none; user-select: none; }
.reviews-head { position: relative; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 20px; margin-bottom: clamp(30px, 5vw, 60px); }
.score { display: flex; align-items: center; gap: 16px; }
.score b { font: 400 64px/1 var(--serif); }
.score span { display: block; color: var(--gold); letter-spacing: .14em; }
.score small { color: var(--dim); font-size: 13.5px; }
.quotes { position: relative; display: grid; min-height: clamp(260px, 30vw, 400px); }
.q { grid-area: 1 / 1; align-self: center; visibility: hidden; }
.q.on { visibility: visible; }
.q blockquote { font: 400 clamp(32px, 4.6vw, 76px)/1.04 var(--serif); letter-spacing: -.01em; max-width: 22ch; text-wrap: balance; }
.q blockquote::before { content: '“'; color: var(--glow-ink); }
.q blockquote::after { content: '”'; color: var(--glow-ink); }
.q .w .wi { transform: translateY(105%); transition: transform .9s var(--ease); transition-delay: calc(var(--i) * 22ms); }
.q.on .w .wi { transform: none; transition-delay: calc(.15s + var(--i) * 22ms); }
.q figcaption { margin-top: 28px; display: flex; gap: 14px; align-items: center; font-weight: 600; opacity: 0; transform: translateY(10px); transition: opacity .6s, transform .6s var(--ease); }
.q.on figcaption { opacity: 1; transform: none; transition-delay: .5s; }
.q figcaption span { color: var(--gold); letter-spacing: .12em; font-weight: 400; }
.q-ui { position: relative; display: flex; align-items: center; gap: 14px; margin-top: 40px; }
.round { width: 54px; height: 54px; border-radius: 50%; border: 0; background: transparent; box-shadow: 0 0 0 1px var(--faint) inset; font-size: 18px; transition: box-shadow .3s, background .3s; }
.round:hover { box-shadow: 0 0 0 1px var(--glow) inset, 0 0 22px -4px var(--glow); }
.q-count { font: 700 12px/1 var(--sans); letter-spacing: .18em; color: var(--dim); min-width: 64px; text-align: center; }
.q-bar { flex: 1; max-width: 260px; height: 1px; background: var(--faint); }
.q-bar i { display: block; height: 100%; background: var(--glow); transform-origin: left; transform: scaleX(var(--p, 0)); }
.q-ui .link { margin-left: auto; font-size: 14px; }

/* ─────────── 7. HALL (facilities) ─────────── */
.hall { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(32px, 6vw, 96px); align-items: start; padding: clamp(70px, 9vw, 130px) var(--pad); border-top: 1px solid var(--hair); }
.bar-photo { position: sticky; top: 110px; border-radius: 24px; overflow: hidden; aspect-ratio: 4 / 3.4; }
.bar-photo img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.4s var(--ease); }
.bar-photo:hover img { transform: scale(1.05); }
.bar-photo figcaption { position: absolute; left: 16px; bottom: 16px; padding: 9px 14px; border-radius: 999px; background: rgba(5,6,26,.6); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); font: 600 12px/1 var(--sans); letter-spacing: .06em; }
.hall .h2 { margin: 18px 0 34px; font-size: clamp(40px, 5vw, 84px); }
.fac li { position: relative; display: grid; grid-template-columns: 54px minmax(0, 1fr) auto; gap: 18px; align-items: baseline; padding: 22px 0; border-top: 1px solid var(--hair); }
.fac li:last-child { border-bottom: 1px solid var(--hair); }
.fac li::before { content: ''; position: absolute; left: 0; right: 0; top: -1px; height: 1px; background: var(--glow); box-shadow: 0 0 10px var(--glow); transform: scaleX(0); transform-origin: left; transition: transform .7s var(--ease); }
.fac li:hover::before { transform: scaleX(1); }
.fac .n { font: 700 12px/1 var(--sans); letter-spacing: .14em; color: var(--glow-ink); }
.fac b { font: 400 clamp(24px, 2.3vw, 36px)/1.1 var(--serif); transition: transform .6s var(--ease); }
.fac li:hover b { transform: translateX(10px); }
.fac small { color: var(--dim); font-size: 14px; text-align: right; max-width: 24ch; }

/* ─────────── 8. BOOK ─────────── */
.book { position: relative; overflow: hidden; padding: clamp(80px, 10vw, 150px) 0 clamp(60px, 8vw, 110px); border-top: 1px solid var(--hair); background: radial-gradient(60% 60% at 50% 40%, color-mix(in srgb, var(--glow) 18%, transparent), transparent 70%); }
.book-rows { position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: center; gap: 2vw; pointer-events: none; opacity: .9; }
.book-row { display: flex; width: max-content; white-space: nowrap; font: 400 clamp(90px, 14vw, 240px)/.9 var(--serif); }
.book-row span { padding-right: .35em; }
.book-row.a { color: transparent; -webkit-text-stroke: 1px rgba(246,240,230,.16); }
.book-row.b { font-style: italic; color: rgba(246,240,230,.05); }
.book-in { position: relative; display: grid; justify-items: center; text-align: center; gap: 26px; padding: 0 var(--pad); }
.book-in .h2 { max-width: 14ch; }
.orb {
  position: relative; display: grid; place-items: center; width: clamp(190px, 18vw, 250px); aspect-ratio: 1; border-radius: 50%; margin-top: 10px;
  background: var(--glow); color: var(--on-glow); text-decoration: none; font: 700 14px/1.2 var(--sans); letter-spacing: .1em; text-transform: uppercase;
  box-shadow: 0 0 0 1px rgba(255,255,255,.25) inset, 0 0 80px -10px var(--glow), 0 0 0 16px color-mix(in srgb, var(--glow) 14%, transparent);
  transition: box-shadow .5s;
}
.orb:hover { box-shadow: 0 0 0 1px rgba(255,255,255,.4) inset, 0 0 120px 0 var(--glow), 0 0 0 26px color-mix(in srgb, var(--glow) 16%, transparent); }
.orb svg { position: absolute; inset: -38px; width: calc(100% + 76px); height: calc(100% + 76px); animation: spin 22s linear infinite; }
.orb svg text { fill: var(--ivory); font: 700 11px var(--sans); letter-spacing: .36em; text-transform: uppercase; }
@keyframes spin { to { transform: rotate(360deg); } }
.steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; width: min(1200px, 100%); margin: clamp(50px, 7vw, 90px) auto 0; text-align: left; counter-reset: s; }
.steps li { padding: 22px; border-radius: 20px; background: rgba(5,6,26,.55); box-shadow: 0 0 0 1px var(--hair) inset; backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); }
.steps li::before { counter-increment: s; content: '0' counter(s); display: block; font: 700 11.5px/1 var(--sans); letter-spacing: .16em; color: var(--glow-ink); margin-bottom: 30px; }
.steps b { display: block; font: 400 26px/1.1 var(--serif); margin-bottom: 8px; }
.steps p { color: var(--dim); font-size: 14.5px; line-height: 1.5; }

/* ─────────── footer ─────────── */
.foot { position: relative; padding: clamp(60px, 8vw, 110px) var(--pad) 28px; border-top: 1px solid var(--hair); overflow: hidden; }
.sign { display: block; text-align: center; font: 400 clamp(76px, 17vw, 300px)/1 var(--script); margin: 0 0 clamp(30px, 5vw, 60px); white-space: nowrap; user-select: none; color: #fff; text-shadow: 0 0 6px #fff, 0 0 18px var(--glow), 0 0 44px var(--glow); }
.js .sign:not(.lit) { color: #15173a; text-shadow: none; }
.sign span { display: inline-block; }
.sign.lit span { animation: tube 1.6s steps(1) both; animation-delay: calc(var(--d) * 1s); }
.foot-cols { display: grid; grid-template-columns: 1.3fr 1fr 1fr 1fr; gap: 30px; padding-top: 34px; border-top: 1px solid var(--hair); }
.foot h3 { font: 700 11px/1 var(--sans); letter-spacing: .22em; text-transform: uppercase; color: var(--dim); margin-bottom: 16px; }
.foot li { margin-bottom: 8px; }
.foot li a { text-decoration: none; color: var(--ivory); }
.foot li a:hover { color: var(--glow-ink); }
.foot-lede { font: 400 26px/1.15 var(--serif); max-width: 18ch; }
.legal { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 10px; margin-top: 44px; font-size: 13px; color: rgba(246,240,230,.45); }

/* ─────────── CONTACT page ─────────── */
.page-top { position: relative; padding: clamp(130px, 16vw, 200px) var(--pad) clamp(40px, 5vw, 70px); overflow: hidden; }
.aurora { position: absolute; inset: 0; z-index: -1; pointer-events: none; overflow: hidden; -webkit-mask-image: linear-gradient(#000 55%, transparent); mask-image: linear-gradient(#000 55%, transparent); }
.aurora i { position: absolute; width: 60vw; height: 60vw; border-radius: 50%; filter: blur(90px); opacity: .35; background: var(--glow); animation: drift 18s ease-in-out infinite alternate; }
.aurora i:nth-child(1) { left: -20vw; top: -30vw; }
.aurora i:nth-child(2) { right: -25vw; top: -10vw; background: #ff3b8d; opacity: .18; animation-duration: 24s; }
@keyframes drift { to { transform: translate(12vw, 8vw) scale(1.15); } }
.page-top .h1 { margin: 22px 0 22px; margin-right: 0; font-size: clamp(64px, 10vw, 180px); }
.contact { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr); gap: clamp(20px, 3vw, 40px); padding: 0 var(--pad) clamp(70px, 9vw, 120px); align-items: start; }
.card { border-radius: 28px; padding: clamp(22px, 3.2vw, 44px); background: linear-gradient(160deg, rgba(255,255,255,.06), rgba(255,255,255,.015)); box-shadow: 0 0 0 1px var(--hair) inset; backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); }
.form { display: grid; gap: 18px; }
.form h2 { font: 400 clamp(32px, 3vw, 46px)/1 var(--serif); }
.row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.field { display: grid; gap: 8px; }
.field > label, .field > .lab { font: 700 11px/1 var(--sans); letter-spacing: .18em; text-transform: uppercase; color: var(--dim); }
.field input, .field select, .field textarea {
  width: 100%; min-height: 54px; padding: 14px 16px; border-radius: 14px; border: 0; outline: 0;
  background: rgba(5,6,26,.55); color: var(--ivory); font: 500 16px/1.4 var(--sans);
  box-shadow: 0 0 0 1px var(--faint) inset; transition: box-shadow .3s;
}
.field textarea { resize: vertical; min-height: 120px; }
.field input:focus, .field select:focus, .field textarea:focus { box-shadow: 0 0 0 1px var(--glow) inset, 0 0 24px -8px var(--glow); }
.field input[aria-invalid="true"], .field textarea[aria-invalid="true"] { box-shadow: 0 0 0 1px #ff5a7a inset; }
.field select option { background: var(--night-2); }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { position: relative; }
.chip input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.chip span { display: inline-block; padding: 11px 16px; border-radius: 999px; box-shadow: 0 0 0 1px var(--faint) inset; font: 600 14px/1 var(--sans); color: var(--dim); transition: all .3s; }
.chip input:checked + span { background: var(--glow); color: var(--on-glow); box-shadow: 0 0 20px -6px var(--glow); }
.chip input:focus-visible + span { outline: 2px solid var(--glow-ink); outline-offset: 3px; }
.mini-sw { display: flex; flex-wrap: wrap; gap: 8px; }
.mini-sw button { width: 34px; height: 34px; border-radius: 50%; border: 0; background: var(--c); box-shadow: 0 0 0 1px var(--hair); transition: box-shadow .3s, transform .3s var(--ease); }
.mini-sw button:hover { transform: scale(1.1); }
.mini-sw button[aria-checked="true"] { box-shadow: 0 0 0 3px var(--night), 0 0 0 4px var(--c), 0 0 18px var(--c); }
.mini-sw + small { color: var(--dim); font-size: 13.5px; }
.form-error { color: #ff8aa0; min-height: 1.2em; font-size: 14.5px; }
.form-sent { padding: 14px 16px; border-radius: 14px; background: color-mix(in srgb, var(--glow) 18%, transparent); font-size: 15px; }
.info { display: grid; gap: 22px; }
.info dt { font: 700 11px/1 var(--sans); letter-spacing: .2em; text-transform: uppercase; color: var(--dim); margin-bottom: 8px; }
.info dd { font: 400 24px/1.2 var(--serif); }
.info dd a { text-decoration: none; }
.info dd a:hover { color: var(--glow-ink); }
.info dd small { display: block; font: 400 14px/1.5 var(--sans); color: var(--dim); margin-top: 4px; }
.map { margin-top: 16px; border-radius: 22px; overflow: hidden; aspect-ratio: 4 / 3.2; box-shadow: 0 0 0 1px var(--hair); }
.map iframe { width: 100%; height: 100%; border: 0; filter: invert(.92) hue-rotate(185deg) saturate(.7) brightness(.95); }
.faq { padding: 0 var(--pad) clamp(70px, 9vw, 120px); display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: clamp(24px, 5vw, 80px); }
.faq .h2 { font-size: clamp(40px, 5vw, 80px); margin-top: 16px; }
.faq details { border-top: 1px solid var(--hair); }
.faq details:last-child { border-bottom: 1px solid var(--hair); }
.faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 24px 0; font: 400 clamp(22px, 2vw, 30px)/1.2 var(--serif); }
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: '+'; flex: none; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; box-shadow: 0 0 0 1px var(--faint) inset; font: 400 20px/1 var(--sans); transition: transform .5s var(--ease), background .3s; }
.faq details[open] summary::after { transform: rotate(45deg); background: var(--glow); color: var(--on-glow); box-shadow: none; }
.faq .ans { overflow: hidden; }
.faq .ans p { padding: 0 0 24px; color: var(--dim); max-width: 60ch; }

/* ─────────── 404 ─────────── */
.lost { min-height: 100svh; display: grid; place-items: center; text-align: center; padding: 40px var(--pad); }
.lost .sign { margin: 0 0 10px; font-size: clamp(110px, 24vw, 320px); }
.lost .sign span { animation: dying 4s steps(1) infinite; }
@keyframes dying {
  0%, 18%, 22%, 60%, 64%, 100% { color: #fff; text-shadow: 0 0 6px #fff, 0 0 18px var(--glow), 0 0 44px var(--glow); }
  20%, 62% { color: #15173a; text-shadow: none; }
}

/* ─────────── responsive ─────────── */
@media (max-width: 1100px) {
  .rail { display: none; }
  .hdr-nav { display: none; }
  .burger { display: grid; }
  .fac small { display: none; }
  .steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 860px) {
  body { font-size: 16px; }
  .hdr-tel, .hdr .btn { display: none; }
  .logo-word { font-size: 23px; }
  .hero { grid-template-columns: 1fr; padding-top: 104px; gap: 30px; align-items: start; }
  .h1 { margin-right: 0; font-size: clamp(64px, 19vw, 120px); margin: 18px 0 24px; }
  .hero-arch { order: 2; max-width: 440px; width: 86%; justify-self: center; }
  .arch { max-height: 64svh; }
  .cue { display: none; }
  .doors-shade { background: linear-gradient(0deg, rgba(5,6,26,.95) 10%, rgba(5,6,26,.55) 55%, rgba(5,6,26,.2)); }
  .doors-copy .h2 { font-size: clamp(38px, 10vw, 60px); }
  .facts b { font-size: 26px; }
  .facts { gap: 8px; }
  .facts li { padding: 10px 14px; border-radius: 14px; }
  .door span { font-size: clamp(52px, 15vw, 90px); padding: 0 5vw; }
  .colours { grid-template-columns: 1fr; }
  .pillar { max-height: 70svh; aspect-ratio: 3 / 3.6; }
  .evening-pin { padding: 80px 0 30px; }
  .evening-head { flex-direction: column; align-items: start; }
  .evening-track { overflow-x: auto; width: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--pad); padding-bottom: 14px; scrollbar-width: none; -webkit-overflow-scrolling: touch; }
  .evening-track::-webkit-scrollbar { display: none; }
  .act { grid-template-columns: 1fr; scroll-snap-align: start; width: 82vw; gap: 18px; }
  .act figure { height: auto; aspect-ratio: 4 / 3.4; }
  .act figure img { width: 100%; height: 100%; transform: none; }
  .act-num { font-size: 150px; top: -40px; right: 0; }
  .act-end { width: 78vw; scroll-snap-align: start; }
  .moment-post { flex-direction: column; align-items: start; }
  .hall { grid-template-columns: 1fr; }
  .bar-photo { position: relative; top: 0; }
  .fac li { grid-template-columns: 40px 1fr; }
  .contact, .faq { grid-template-columns: 1fr; }
  .foot-cols { grid-template-columns: 1fr 1fr; }
  .q-ui .link { margin-left: 0; width: 100%; }
  .q-ui { flex-wrap: wrap; }
}
@media (max-width: 560px) {
  .row2 { grid-template-columns: 1fr; }
  .steps { gap: 8px; }
  .steps li { padding: 16px; }
  .steps li::before { margin-bottom: 16px; }
  .steps b { font-size: 21px; }
  .steps p { font-size: 13.5px; }
  .facts li { padding: 12px 16px; }
  .foot-cols { grid-template-columns: 1fr; }
  .hero-meta .btn { flex: 1 1 100%; justify-content: space-between; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }
  .sign span, .intro-sign span { color: #fff; text-shadow: 0 0 6px #fff, 0 0 18px var(--glow), 0 0 44px var(--glow); }
}

/* touch screens say "swipe" */
.hint-touch { display: none; }
@media (hover: none), (max-width: 860px) { .hint-touch { display: inline; } .hint-desk { display: none; } }

/* ─────────── motion states ─────────── */
/* hero parts wait for the entrance (shown at once if motion can't run) */
.js .hero .row, .js .hero [data-hero], .js .hero-arch { opacity: 0; }
.js .page-top [data-rise] { opacity: 0; }
.static .hero .row, .static .hero [data-hero], .static .hero-arch, .static .page-top [data-rise] { opacity: 1 !important; }
.split-done .w { overflow: visible; }
[data-flicker].flick { animation: tube 1.8s steps(1) both; }
.doors-dark { position: absolute; inset: 0; background: #03040f; opacity: 0; pointer-events: none; }
.seam { display: none; }
.motion .seam { display: block; position: absolute; left: 50%; top: 0; bottom: 0; z-index: 4; width: 2px; margin-left: -1px; background: linear-gradient(transparent, #fff 25%, #fff 75%, transparent); box-shadow: 0 0 24px 4px var(--glow), 0 0 80px 10px var(--glow-soft); pointer-events: none; }
