:root {
  --ink: #0d0709;
  --oxblood: #3a0a12;
  --wine: #6b1626;
  --seal: #8f1d2b;
  --ivory: #f3ead8;
  --champagne: #d9c3a0;
  --nav-active: #f4d35e;
  --muted: #c5b8ad;
  --rule: rgba(243, 234, 216, .28);
  --foil: linear-gradient(110deg, #8a6a2f 4%, #e9d49a 31%, #fff4c9 46%, #b88a3e 70%, #6e4f1e 96%);
  --display: 'Bodoni Moda', Didot, Georgia, serif;
  --body: 'Hanken Grotesk', 'Segoe UI', sans-serif;
  --script: 'Pinyon Script', cursive;
  --t: 0;
  --ambient-rgb: 126, 41, 38;
}
*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; scroll-padding-top: 90px; }
body { margin: 0; overflow-x: hidden; background: var(--ink); color: var(--ivory); font: 400 16px/1.65 var(--body); }
button, input { font: inherit; }
button { cursor: pointer; }
a { color: inherit; }
img { max-width: 100%; }
::selection { background: var(--champagne); color: var(--ink); }
:focus-visible { outline: 2px solid #fff4c9; outline-offset: 4px; }
[hidden] { display: none !important; }
.skip-link { position: fixed; z-index: 300; top: 10px; left: 10px; background: var(--ivory); color: var(--ink); padding: 10px 14px; transform: translateY(-150%); text-decoration: none; }
.skip-link:focus { transform: translateY(0); }
.velvet-grain { position: fixed; z-index: 100; inset: 0; pointer-events: none; opacity: .06; background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 160 160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.55' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E"); }
.ambient { position: fixed; inset: 0; pointer-events: none; z-index: 0; opacity: .11; background: radial-gradient(ellipse at 50% 32%, rgba(var(--ambient-rgb), .75), transparent 70%); transition: opacity .6s ease; }
.scene { position: relative; isolation: isolate; overflow: hidden; }
.scene-kicker { margin: 0; color: var(--champagne); font-size: 12px; font-weight: 700; letter-spacing: .22em; line-height: 1.45; text-transform: uppercase; }
.small-rule { width: 25px; height: 1px; background: currentColor; }
.text-button { border: 0; background: transparent; color: var(--ivory); }

.site-header { position: fixed; z-index: 150; inset: 0 0 auto; height: 76px; display: grid; grid-template-columns: 1fr auto 1fr auto; align-items: center; gap: 24px; padding: 0 clamp(20px, 3.8vw, 70px); background: linear-gradient(to bottom, rgba(13,7,9,.88), rgba(13,7,9,.08)); }
.site-brand { font-size: 17px; font-weight: 700; letter-spacing: .22em; text-decoration: none; white-space: nowrap; }
.site-brand span { color: var(--champagne); font-size: 12px; letter-spacing: .09em; }
.header-nav { display: flex; gap: 28px; align-items: center; }
.header-nav a { text-decoration: none; font-size: 13px; font-weight: 600; white-space: nowrap; }
.header-nav a:hover { color: var(--champagne); }
.header-nav a[aria-current="location"], .mobile-dock a[aria-current="location"] { color: var(--nav-active); text-decoration-line: underline; text-decoration-color: currentColor; text-decoration-thickness: 2px; text-underline-offset: 8px; }
.clock-group { display: flex; flex-direction: column; justify-self: end; text-align: right; }
.clock-caption { color: var(--muted); font-size: 10px; letter-spacing: .15em; }
.scene-clock { font: 500 25px/1 var(--display); font-variant-numeric: tabular-nums; color: var(--champagne); }
.icon-button { width: 44px; height: 44px; border: 1px solid var(--rule); background: transparent; color: var(--ivory); }
.audio-toggle[aria-expanded="true"] { background: var(--champagne); color: var(--ink); }
.audio-toggle.is-playing { background: var(--champagne); color: var(--ink); box-shadow: 0 0 14px rgba(217,195,160,.3); }
.music-panel { position: fixed; inset: 86px clamp(16px, 3.8vw, 70px) auto auto; z-index: 200; width: min(420px, calc(100vw - 32px)); max-height: calc(100dvh - 106px); margin: 0; padding: 24px; overflow-y: auto; overscroll-behavior: contain; color: var(--ivory); border: 1px solid rgba(217,195,160,.45); border-radius: 6px; background: radial-gradient(ellipse at 100% 0, rgba(143,29,43,.28), transparent 55%), #170c10; box-shadow: 0 24px 80px rgba(0,0,0,.6), inset 0 1px 0 rgba(255,244,201,.12); scrollbar-width: thin; scrollbar-color: var(--champagne) #170c10; }
.music-panel::backdrop { background: transparent; }
.music-panel__top { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.music-panel__eyebrow { display: flex; align-items: center; gap: 9px; color: var(--champagne); font-size: 9px; font-weight: 700; letter-spacing: .17em; }
.music-panel__eyebrow > span { font-size: 18px; }
.music-close { flex: 0 0 auto; width: 36px; height: 36px; padding: 0; color: var(--muted); background: transparent; border: 1px solid var(--rule); border-radius: 50%; font-size: 24px; line-height: 1; }
.music-close:hover { color: var(--ivory); border-color: var(--champagne); }
.music-intro { display: grid; grid-template-columns: 112px 1fr; align-items: center; gap: 20px; margin: 20px 0 26px; }
.music-turntable { position: relative; width: 112px; height: 112px; }
.music-record { position: relative; width: 100%; height: 100%; display: grid; place-items: center; overflow: hidden; border: 2px solid #302c2a; border-radius: 50%; background: radial-gradient(circle, transparent 0 28%, rgba(0,0,0,.7) 29% 32%, transparent 33% 66%, rgba(255,255,255,.1) 67%, transparent 69%), repeating-radial-gradient(circle, #080808 0 1px, #252424 1.5px 2px, #0c0c0c 2.5px 3.5px); box-shadow: 0 8px 25px rgba(0,0,0,.65), inset 0 0 0 3px #090909, inset 0 0 0 4px rgba(217,195,160,.16); transform: rotate(-12deg); animation: record-spin 6s linear infinite; animation-play-state: paused; }
.music-record::before { content: ''; position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(from 25deg, transparent 0 16%, rgba(255,255,255,.14) 22%, transparent 29% 64%, rgba(255,255,255,.12) 72%, transparent 79%); pointer-events: none; }
.music-record::after { content: ''; position: absolute; z-index: 2; width: 7px; height: 7px; background: #0c0809; border: 1px solid #b9a176; border-radius: 50%; box-shadow: 0 0 0 2px rgba(0,0,0,.3); }
.music-record img { position: relative; width: 43%; height: 43%; border: 4px solid var(--champagne); border-radius: 50%; object-fit: cover; object-position: 50% 25%; filter: sepia(.7); }
.music-record__label { position: absolute; top: 69%; color: var(--champagne); font-size: 4px; font-weight: 700; letter-spacing: .14em; }
.music-record.is-spinning { animation-play-state: running; }
.music-tonearm { position: absolute; z-index: 3; top: 0; right: 12px; width: 5px; height: 67%; border-radius: 3px; background: linear-gradient(90deg, #655746, #e0cfb0 48%, #786952); box-shadow: 2px 2px 5px rgba(0,0,0,.6); transform: rotate(-6deg); transform-origin: 50% 6px; transition: transform .5s ease; }
.music-tonearm::before { content: ''; position: absolute; top: -3px; left: -4px; width: 13px; height: 13px; border: 3px solid #9c8763; border-radius: 50%; background: #25201b; }
.music-tonearm::after { content: ''; position: absolute; bottom: -4px; left: -2px; width: 9px; height: 16px; border: 1px solid #b49c75; border-radius: 2px; background: #24201a; }
.music-turntable:has(.is-spinning) .music-tonearm { transform: rotate(22deg); }
@keyframes record-spin { from { transform: rotate(-12deg); } to { transform: rotate(348deg); } }
.music-artist { margin: 0 0 8px; color: var(--champagne); font-size: 10px; font-weight: 700; letter-spacing: .19em; }
.music-intro h2 { margin: 0; font: 500 35px/.97 var(--display); letter-spacing: -.04em; }
.music-intro h2 em { color: var(--champagne); }
.music-intro__note { margin: 12px 0 0; color: var(--muted); font-size: 11px; }
.music-list-heading { display: flex; justify-content: space-between; gap: 12px; padding-bottom: 10px; color: var(--muted); border-bottom: 1px solid var(--rule); font-size: 9px; font-weight: 600; letter-spacing: .15em; }
.music-tracks { display: grid; gap: 5px; margin: 10px 0 18px; }
.music-track { display: grid; grid-template-columns: 22px 1fr 32px; align-items: center; gap: 10px; width: 100%; min-height: 58px; padding: 10px; text-align: left; color: var(--ivory); border: 1px solid transparent; border-radius: 3px; background: transparent; transition: background .2s ease, border-color .2s ease; }
.music-track:hover { background: rgba(217,195,160,.06); border-color: rgba(217,195,160,.2); }
.music-track[aria-disabled="true"] { opacity: .55; }
.music-track[aria-disabled="true"] .music-track__play::before { content: '–'; padding-left: 0; }
.music-track[aria-pressed="true"] { background: rgba(217,195,160,.12); border-color: rgba(217,195,160,.5); }
.music-track__number { color: var(--champagne); font-size: 10px; font-variant-numeric: tabular-nums; }
.music-track__copy { min-width: 0; }
.music-track__copy strong { display: block; font-size: 14px; font-weight: 600; }
.music-track__copy small { display: block; margin-top: 2px; color: var(--muted); font-size: 10px; }
.music-track__play { display: grid; place-items: center; width: 30px; height: 30px; color: var(--champagne); border: 1px solid rgba(217,195,160,.4); border-radius: 50%; }
.music-track__play::before { content: '▶'; padding-left: 2px; font-size: 10px; }
.music-track[aria-pressed="true"] .music-track__play { color: var(--ink); background: var(--champagne); border-color: var(--champagne); }
.music-track[aria-pressed="true"] .music-track__play::before { content: '✓'; padding-left: 0; font-size: 15px; }
.music-player { overflow: hidden; border: 1px solid rgba(217,195,160,.25); border-radius: 3px; background: #0c0709; }
.music-player audio { display: none; }
.music-console { padding: 16px; background: radial-gradient(ellipse at 100% 0, rgba(217,195,160,.08), transparent 65%), linear-gradient(145deg, #211317, #0e090b); box-shadow: inset 0 1px 0 rgba(255,244,201,.05); }
.music-console__heading { display: flex; justify-content: space-between; align-items: center; gap: 16px; margin-bottom: 12px; }
.music-console__kicker { display: block; color: var(--champagne); font-size: 8px; letter-spacing: .18em; font-weight: 700; }
.music-console__title { display: block; margin-top: 4px; color: var(--ivory); font: 500 23px/1.15 var(--display); }
.music-console__heading small { display: block; margin-top: 3px; color: var(--muted); font-size: 10px; }
.music-equalizer { display: flex; align-items: center; gap: 3px; height: 26px; }
.music-equalizer i { display: block; width: 3px; height: 18px; border-radius: 2px; background: linear-gradient(var(--ivory), #9c743e); transform: scaleY(.25); transform-origin: center; animation: music-level .7s ease-in-out infinite alternate; animation-play-state: paused; opacity: .45; }
.music-equalizer i:nth-child(2) { animation-delay: -.35s; height: 26px; }
.music-equalizer i:nth-child(3) { animation-delay: -.1s; height: 21px; }
.music-equalizer i:nth-child(4) { animation-delay: -.5s; height: 26px; }
.music-equalizer i:nth-child(5) { animation-delay: -.2s; height: 15px; }
.music-console.is-playing .music-equalizer i { animation-play-state: running; opacity: 1; }
@keyframes music-level { from { transform: scaleY(.25); } to { transform: scaleY(1); } }
.music-slider { display: block; appearance: none; -webkit-appearance: none; width: 100%; height: 24px; margin: 0; padding: 0; cursor: pointer; background: transparent; color: var(--champagne); }
.music-slider::-webkit-slider-runnable-track { height: 3px; border-radius: 2px; background: linear-gradient(to right, #e9d49a 0 var(--fill, 0%), #453138 var(--fill, 0%) 100%); }
.music-slider::-moz-range-track { height: 3px; border-radius: 2px; background: linear-gradient(to right, #e9d49a 0 var(--fill, 0%), #453138 var(--fill, 0%) 100%); }
.music-slider::-webkit-slider-thumb { appearance: none; -webkit-appearance: none; width: 11px; height: 11px; margin-top: -4px; border: 1px solid #f4e3b6; border-radius: 50%; background: var(--champagne); box-shadow: 0 0 8px rgba(217,195,160,.3); }
.music-slider::-moz-range-thumb { width: 11px; height: 11px; border: 1px solid #f4e3b6; border-radius: 50%; background: var(--champagne); box-shadow: 0 0 8px rgba(217,195,160,.3); }
.music-slider:disabled { cursor: default; opacity: .4; }
.music-console__time { display: flex; justify-content: space-between; color: var(--muted); font-size: 9px; font-variant-numeric: tabular-nums; line-height: 1; }
.music-console__bottom { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 12px; }
.music-transport { display: flex; align-items: center; gap: 3px; }
.music-control, .music-play { display: grid; place-items: center; flex: 0 0 auto; padding: 0; cursor: pointer; }
.music-control { width: 40px; height: 40px; border: 0; border-radius: 50%; color: var(--champagne); background: transparent; transition: background .2s ease, color .2s ease; }
.music-control:hover { color: var(--ivory); background: rgba(217,195,160,.1); }
.music-control svg { width: 19px; height: 19px; }
.music-play { width: 48px; height: 48px; margin-inline: 2px; border: 1px solid #e4d2a8; border-radius: 50%; color: #21160d; background: linear-gradient(135deg, #fcf0c8, #d3b67b 65%, #96703e); box-shadow: 0 4px 15px rgba(0,0,0,.35), inset 0 1px 0 #fff6da; transition: filter .2s ease; }
.music-play:hover { filter: brightness(1.12); }
.music-play svg { width: 22px; height: 22px; }
.music-volume { display: flex; align-items: center; gap: 4px; padding-left: 10px; border-left: 1px solid rgba(217,195,160,.2); }
.music-volume .music-control { width: 32px; height: 40px; }
.music-volume__slider { width: 63px; }
.music-panel:has(.music-console) .music-intro { margin-block: 14px 18px; }
.music-panel:has(.music-console) .music-tracks { gap: 2px; margin-block: 6px 12px; }
.music-panel:has(.music-console) .music-track { min-height: 50px; padding-block: 7px; }
.music-player__empty { min-height: 96px; display: grid; place-content: center; justify-items: center; padding: 16px 10px; text-align: center; background: radial-gradient(ellipse at 50% 120%, rgba(217,195,160,.12), transparent 80%); }
.music-player__empty > span { color: var(--champagne); font-size: 22px; line-height: 1; }
.music-player__empty p { margin: 10px 0 3px; color: var(--ivory); font-size: 11px; }
.music-player__empty small { color: var(--muted); font-size: 10px; }
.music-playing { display: flex; align-items: center; justify-content: space-between; gap: 12px; min-height: 38px; }
.music-status { margin: 10px 0; color: var(--champagne); font-size: 11px; }
.music-stop { min-height: 36px; padding: 0 8px; color: var(--ivory); border: 0; background: transparent; text-decoration: underline; text-underline-offset: 3px; font-size: 11px; }
.music-tracks, .music-panel:has(.music-console) .music-tracks { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.music-track, .music-panel:has(.music-console) .music-track { grid-template-columns: 1fr 30px; align-content: space-between; gap: 10px; min-height: 108px; padding: 12px; border-color: rgba(217,195,160,.22); border-radius: 5px; background: rgba(217,195,160,.045); }
.music-track__number { grid-column: 1 / -1; }
.music-track__copy small { line-height: 1.4; }
.music-track:focus-visible { outline: 2px solid var(--champagne); outline-offset: 2px; }
.music-panel__foot { margin: 4px 0 0; color: var(--muted); font-size: 10px; }
@media (max-width: 767px) {
  .music-panel { inset: 78px 16px auto auto; max-height: calc(100dvh - 96px); padding: 18px; }
  .music-intro { grid-template-columns: 92px 1fr; gap: 18px; margin-block: 16px 22px; }
  .music-turntable { width: 92px; height: 92px; }
  .music-intro h2 { font-size: 32px; }
}
.scene-rail { position: fixed; z-index: 145; right: clamp(16px, 3vw, 50px); top: 50%; transform: translateY(-50%); display: grid; gap: 7px; }
.scene-dot { width: 44px; height: 30px; display: grid; place-items: center; text-decoration: none; color: rgba(243,234,216,.7); font-size: 10px; font-variant-numeric: tabular-nums; }
.scene-dot::before { content: ''; width: 17px; height: 1px; position: absolute; right: 0; background: var(--champagne); opacity: .4; transition: width .25s ease, opacity .25s ease; }
.scene-dot span { opacity: 0; justify-self: start; }
.scene-dot:hover span, .scene-dot:focus-visible span, .scene-dot.is-active span { opacity: 1; }
.scene-dot:hover::before, .scene-dot:focus-visible::before, .scene-dot.is-active::before { width: 25px; opacity: 1; }
.mobile-dock { display: none; }

/* The ballroom is a single theatrical composition made from CSS and original SVG. */
.hero { min-height: 900px; min-height: 100dvh; background: radial-gradient(ellipse at 50% 55%, rgba(115,27,33,.32), transparent 55%), #0a0507; }
.ballroom, .ballroom > * { position: absolute; pointer-events: none; }
.ballroom { inset: 0; z-index: -1; overflow: hidden; }
.room-glow { inset: -14% -5% 14%; background: radial-gradient(ellipse at 50% 20%, rgba(243,223,174,.21), transparent 26%), radial-gradient(ellipse at 50% 48%, rgba(101,20,33,.47), transparent 56%); transform: translate3d(var(--parallax-x,0px),var(--parallax-y,0px),0); }
.room-pillar { top: 0; bottom: 13%; width: clamp(55px, 10vw, 150px); border-inline: 1px solid rgba(217,195,160,.2); background: linear-gradient(90deg, #10080c 0%, #271217 16%, #080506 50%, #211116 83%, #0c0607 100%); transform: translate3d(var(--parallax-x,0px),var(--parallax-y,0px),0); }
.room-pillar::after { content: ''; position: absolute; inset: 20% 35% 0; border-inline: 1px solid rgba(217,195,160,.12); }
.pillar-left { left: 8%; }.pillar-right { right: 8%; }
.curtain { top: -2%; bottom: -1%; width: clamp(220px, 26vw, 460px); background: repeating-linear-gradient(91deg,#120508 0%,#4a0f1d 11%,#21070e 21%,#631627 31%,#23070e 41%,#4b0d1a 52%,#140509 62%); box-shadow: 10px 0 45px rgba(0,0,0,.55), inset -28px 0 60px rgba(0,0,0,.5); transform: translate3d(var(--parallax-x,0px),var(--parallax-y,0px),0); }
.curtain::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to bottom,rgba(0,0,0,.45),transparent 23%,transparent 66%,rgba(0,0,0,.3)); }
.curtain-left { left: -11%; border-radius: 0 0 44% 0; }.curtain-right { right: -11%; transform: scaleX(-1) translate3d(var(--parallax-x,0px),var(--parallax-y,0px),0); border-radius: 0 0 0 44%; }
.chandelier { top: -7%; left: 50%; width: min(38vw, 520px); aspect-ratio: 1.2; transform: translateX(-50%) translate3d(var(--parallax-x,0px),var(--parallax-y,0px),0) rotate(var(--swing,0deg)); transform-origin: 50% -25%; pointer-events: auto; touch-action: pan-y; }
.chandelier img { width: 100%; height: 100%; object-fit: contain; pointer-events: none; filter: drop-shadow(0 0 24px rgba(231,211,157,.35)); }
.chandelier [data-crystal] { position: absolute; bottom: 4%; width: 40px; height: 44px; border: 0; background: transparent; border-radius: 50%; }
.chandelier [data-crystal="1"] { left: 14%; bottom: 24%; }.chandelier [data-crystal="2"] { left: 30%; bottom: 10%; }.chandelier [data-crystal="3"] { left: 46%; bottom: 1%; }.chandelier [data-crystal="4"] { left: 62%; bottom: 10%; }.chandelier [data-crystal="5"] { left: 79%; bottom: 24%; }
.chandelier [data-crystal].is-lit::after { content: ''; position: absolute; width: 15px; height: 15px; left: 50%; top: 50%; transform: translate(-50%,-50%); border-radius: 50%; background: #fff3c6; box-shadow: 0 0 18px 7px rgba(255,230,159,.85); }
.marble-floor { inset: auto -5% 0; height: 26%; background: repeating-linear-gradient(163deg, transparent 0 90px, rgba(243,234,216,.04) 91px, transparent 93px),linear-gradient(to bottom, rgba(15,8,10,.25),#030203), radial-gradient(ellipse at 50% 0,rgba(214,180,107,.17),transparent 58%); transform: perspective(250px) rotateX(29deg); transform-origin: bottom; border-top: 1px solid rgba(218,199,169,.25); }
.hero-spotlight { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(circle 340px at var(--shine-x,50%) var(--shine-y,35%), rgba(247,227,169,.10), transparent 70%); mix-blend-mode: screen; }
.hero-content { position: relative; z-index: 2; min-height: 100dvh; padding: clamp(130px,16vh,185px) 8vw 65px; display: flex; flex-direction: column; align-items: center; text-align: center; }
.hero-intro { color: var(--champagne); display: flex; align-items: center; gap: 16px; letter-spacing: .3em; font-size: 12px; font-weight: 700; }
.hero-presents { margin: 35px 0 11px; color: var(--ivory); font-size: 15px; }
.wordmark-wrap { position: relative; max-width: 100%; }
.foil-wordmark, .wordmark-reflection { font: 600 clamp(4.1rem,10vw,11rem)/1 var(--display); letter-spacing: -.065em; white-space: nowrap; margin: 0; }
.foil-wordmark { position: relative; z-index: 1; background: var(--foil); background-size: 170% 140%; background-position: var(--shine-x,50%) var(--shine-y,50%); color: #e9d49a; -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent; filter: drop-shadow(0 10px 18px rgba(0,0,0,.4)); }
.wordmark-reflection { position: absolute; z-index: 0; left: 0; top: 88%; width: 100%; transform: scaleY(-.63); transform-origin: top; color: rgba(214,187,127,.38); filter: blur(3px); -webkit-mask-image: linear-gradient(to bottom,rgba(0,0,0,.55),transparent 65%); mask-image: linear-gradient(to bottom,rgba(0,0,0,.55),transparent 65%); pointer-events: none; }
.hero-line { position: relative; margin: clamp(45px,8vh,85px) 0 25px; font: 500 clamp(1.2rem,2.2vw,2rem)/1.2 var(--display); }
.hero-tickets { display: flex; justify-content: center; gap: 12px; width: min(640px,100%); margin-top: 28px; }
.event-ticket { flex: 1; min-height: 110px; display: flex; flex-direction: column; justify-content: center; gap: 4px; padding: 16px 21px; border: 1px solid rgba(218,195,160,.6); background: rgba(20,9,12,.84); text-align: left; transform: rotate(-2deg); box-shadow: 0 20px 35px rgba(0,0,0,.23); }
.event-ticket.ticket-place { transform: rotate(2deg); }
.event-ticket .ticket-label { color: var(--champagne); font-size: 12px; letter-spacing: .15em; font-weight: 700; }
.event-ticket strong { font: 500 19px/1.2 var(--display); }
.event-ticket strong em { font-style: normal; }
.event-ticket > span:last-child { color: var(--muted); font-size: 13px; }
.hero-scroll { margin-top: auto; padding-top: 38px; font-size: 13px; font-weight: 700; letter-spacing: .08em; text-decoration: none; }
.hero-scroll span { margin-left: 8px; color: var(--champagne); }
.hero-bottom { position: absolute; z-index: 5; left: 3.8vw; right: 3.8vw; bottom: 20px; display: flex; justify-content: space-between; align-items: center; gap: 14px; color: var(--champagne); font-size: 12px; letter-spacing: .06em; }
.hero-bottom p { margin: 0; font-variant-numeric: tabular-nums; }

/* The battalion emblem opens a quiet, interactive reading room. */
.heritage-discover { display: inline-flex; gap: 18px; align-items: center; min-height: 44px; margin-top: 12px; color: var(--champagne); font-size: 12px; text-decoration: none; border-bottom: 1px solid rgba(217,195,160,.45); }
.heritage-discover:hover { color: var(--ivory); }
.heritage { padding: 110px clamp(28px,8vw,130px) 72px; background: radial-gradient(ellipse at 24% 52%,rgba(120,27,37,.19),transparent 46%),linear-gradient(155deg,#160c0f,#0b0709 72%); }
.heritage-heading { text-align: center; max-width: 800px; margin: 0 auto 52px; }
.heritage-heading h2 { margin: 20px 0 18px; font: 500 clamp(2.8rem,5.5vw,5rem)/1.08 var(--display); letter-spacing: -.045em; }
.heritage-heading h2 em { color: var(--champagne); font-weight: 400; }
.heritage-heading > p:last-child { color: var(--muted); font-size: 14px; max-width: 400px; margin: 0 auto; }
.heritage-layout { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); align-items: center; gap: clamp(35px,6vw,95px); max-width: 1120px; margin: 0 auto; }
.heritage-emblem { position: relative; margin: 0; display: grid; place-items: center; isolation: isolate; }
.heritage-halo { position: absolute; z-index: -1; top: 50%; left: 50%; width: 90%; aspect-ratio: 1; transform: translate(-50%,-55%); border: 1px solid rgba(217,195,160,.16); border-radius: 50%; background: radial-gradient(circle,rgba(216,162,65,.09),transparent 68%); box-shadow: 0 0 0 19px rgba(217,195,160,.025),0 0 0 20px rgba(217,195,160,.065); }
.heritage-halo::after { content: ''; position: absolute; inset: 14px; border: 1px dashed rgba(217,195,160,.12); border-radius: 50%; }
.heritage-logo { position: relative; display: block; padding: 0; width: min(100%,430px); aspect-ratio: 1; border: 0; background: transparent; transition: transform .4s ease; }
.heritage-logo:hover { transform: translateY(-3px); }
.heritage-logo img { display: block; width: 100%; height: 100%; object-fit: contain; filter: drop-shadow(0 20px 25px rgba(0,0,0,.38)); }
.heritage-spotlight { position: absolute; inset: 0; pointer-events: none; opacity: 0; background: rgba(255,216,91,.48); -webkit-mask: var(--symbol-mask) center/contain no-repeat; mask: var(--symbol-mask) center/contain no-repeat; mix-blend-mode: screen; transition: opacity .3s ease; }
.heritage.is-exploring .heritage-spotlight { opacity: 1; }
.heritage-emblem figcaption { position: relative; margin-top: 18px; text-align: center; color: var(--champagne); font-size: 10px; letter-spacing: .22em; font-weight: 600; }
.heritage-emblem figcaption span { display: block; margin-top: 8px; color: var(--muted); font-size: 11px; letter-spacing: .02em; font-weight: 400; }
.heritage-overline { margin: 0 0 26px; color: var(--champagne); font-size: 10px; font-weight: 700; letter-spacing: .2em; }
.heritage-name { display: grid; grid-template-columns: .85fr .8fr 1.35fr; gap: 15px; margin: 0; padding-bottom: 24px; border-bottom: 1px solid var(--rule); }
.heritage-name div + div { border-left: 1px solid rgba(217,195,160,.18); padding-left: 15px; }
.heritage-name dt { color: var(--ivory); font: 500 clamp(24px,2.5vw,34px)/1.2 var(--display); letter-spacing: -.035em; }
.heritage-name dd { margin: 9px 0 0; color: var(--muted); font-size: 11px; line-height: 1.5; }
.heritage-intro { color: var(--muted); font-size: 14px; line-height: 1.8; margin: 23px 0 28px; max-width: 430px; }
.heritage-explorer > summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 52px; padding: 10px 18px; border: 1px solid rgba(217,195,160,.45); color: var(--champagne); background: rgba(217,195,160,.045); cursor: pointer; font-size: 13px; font-weight: 600; transition: background .2s ease; }
.heritage-explorer > summary::-webkit-details-marker { display: none; }
.heritage-explorer > summary:hover { background: rgba(217,195,160,.1); }
.heritage-expand { font-size: 24px; font-weight: 300; line-height: 1; transition: transform .25s ease; }
.heritage-explorer[open] .heritage-expand { transform: rotate(45deg); }
.heritage-explorer-body { padding-top: 20px; }
.heritage-symbols { display: flex; flex-wrap: wrap; gap: 7px; margin-bottom: 22px; }
.heritage-symbols button { min-height: 38px; padding: 8px 12px; border: 1px solid rgba(217,195,160,.22); background: transparent; color: var(--muted); font-size: 11px; line-height: 1.25; transition: color .2s ease,border-color .2s ease,background .2s ease; }
.heritage-symbols button:hover { color: var(--ivory); border-color: var(--champagne); }
.heritage-symbols button[aria-pressed="true"] { color: #20120c; border-color: var(--champagne); background: linear-gradient(120deg,#f0dfb5,#c3a16e); }
.heritage-panels { position: relative; padding: 24px; border-left: 2px solid #c4a16b; background: linear-gradient(125deg,rgba(217,195,160,.075),rgba(217,195,160,.015)); }
.heritage-panel + .heritage-panel { margin-top: 22px; }
.heritage.is-ready .heritage-panel { margin: 0; }
.heritage-value { margin: 0 0 13px; color: var(--champagne); font-size: 9px; font-weight: 700; letter-spacing: .14em; line-height: 1.7; }
.heritage-panel h3 { margin: 0 0 16px; color: var(--ivory); font: 500 clamp(24px,2.8vw,33px)/1.1 var(--display); letter-spacing: -.03em; }
.heritage-panel > p:not(.heritage-value) { color: var(--muted); font-size: 13px; line-height: 1.8; margin: 0; }
.heritage-panel > .heritage-color { margin-top: 18px !important; padding-top: 16px; border-top: 1px solid rgba(217,195,160,.15); color: var(--champagne) !important; font-size: 12px !important; }
.heritage-close { display: flex; justify-content: space-between; align-items: center; width: 100%; min-height: 44px; padding: 10px 1px; margin-top: 8px; color: var(--muted); background: transparent; border: 0; font-size: 11px; text-align: left; }
.heritage-close:hover { color: var(--champagne); }
.heritage-footnote { max-width: 1120px; margin: 58px auto 0; padding-top: 26px; border-top: 1px solid rgba(217,195,160,.18); display: flex; justify-content: space-between; gap: 30px; align-items: start; }
.heritage-footnote > span { flex-shrink: 0; color: var(--champagne); font-size: 9px; letter-spacing: .14em; padding-top: 3px; }
.heritage-footnote p { max-width: 420px; margin: 0; color: var(--muted); font-size: 12px; line-height: 1.7; }
@media (max-width: 767px) {
  .heritage { padding: 82px 22px 56px; }
  .heritage-heading { margin-bottom: 24px; }
  .heritage-heading h2 { max-width: 320px; margin: 17px auto 18px; font-size: clamp(2.5rem,11vw,4rem); }
  .heritage-heading > p:last-child { max-width: 275px; font-size: 12px; }
  .heritage-layout { display: flex; flex-direction: column; gap: 38px; }
  .heritage-emblem { width: 100%; max-width: 320px; }
  .heritage-logo { width: min(100%,290px); }
  .heritage-emblem figcaption { margin-top: 8px; font-size: 9px; }
  .heritage-emblem figcaption span { font-size: 10px; }
  .heritage-story { width: 100%; max-width: 480px; }
  .heritage-overline { text-align: center; font-size: 9px; margin-bottom: 22px; }
  .heritage-name { gap: 10px; padding-bottom: 20px; }
  .heritage-name div + div { padding-left: 10px; }
  .heritage-name dt { font-size: clamp(22px,6vw,30px); }
  .heritage-name dd { font-size: 10px; }
  .heritage-intro { font-size: 12px; margin: 20px 0 23px; }
  .heritage-explorer { scroll-margin-top: 76px; }
  .heritage-symbols { gap: 6px; }
  .heritage-symbols button { min-height: 44px; padding: 10px 12px; }
  .heritage-panels { padding: 22px 18px; }
  .heritage-panel > p:not(.heritage-value) { font-size: 13px; }
  .heritage-footnote { flex-direction: column; gap: 16px; margin-top: 36px; }
  .heritage-footnote p { font-size: 11px; }
}
@media (prefers-reduced-motion: reduce) {
  .heritage-logo, .heritage-expand, .heritage-spotlight { transition: none; }
}

/* A single oversized statement creates a pause after the opening. */
.about { min-height: 92dvh; display: flex; align-items: center; background: radial-gradient(ellipse at 78% 18%,rgba(115,33,36,.22),transparent 42%),#12090d; }
.about-number { position: absolute; top: 3%; right: 7%; font: 500 clamp(18rem,45vw,48rem)/1 var(--display); background: var(--foil); -webkit-background-clip: text; background-clip: text; color: transparent; opacity: .095; pointer-events: none; }
.about-content { position: relative; width: min(1100px,calc(100% - 14vw)); margin: 0 auto; padding: 130px 0; }
.about h2 { font: 500 clamp(4rem,8.6vw,10rem)/1.02 var(--display); letter-spacing: -.055em; margin: 42px 0 65px; }
.about h2 span { color: var(--champagne); margin-left: .15em; }
.about-copy { display: grid; grid-template-columns: 2px minmax(0,590px); gap: 30px; margin-left: min(23vw,270px); }
.vertical-rule { background: linear-gradient(to bottom,transparent,#e9d49a,transparent); }
.about-copy p { margin: 0; font-size: 18px; line-height: 1.85; color: var(--ivory); }

/* The performer portrait overlaps its typography like a theatre bill. */
.performer { min-height: 100dvh; padding: 130px 8vw 100px; background: linear-gradient(110deg,#200b11 0%,#0c0608 60%,#1b0b10 100%); }
.performer-beam { position: absolute; top: -15%; left: 43%; width: 46%; height: 100%; background: linear-gradient(to bottom, rgba(255,224,168,.2),rgba(255,215,148,.04) 63%,transparent); clip-path: polygon(43% 0,55% 0,100% 100%,0 100%); filter: blur(30px); pointer-events: none; }
.performer-layout { position: relative; width: min(1250px,100%); margin: 0 auto; display: grid; grid-template-columns: .88fr 1.12fr; align-items: center; gap: 15px; }
.performer-head { position: relative; z-index: 2; padding: 8vh 0 8vh; }
.performer-small { margin: 60px 0 18px; color: var(--ivory); letter-spacing: .2em; font-size: 12px; font-weight: 700; }
.performer h2 { font: 500 clamp(6rem,12vw,13rem)/.82 var(--display); letter-spacing: -.08em; margin: 0 0 35px; white-space: nowrap; }
.performer h2 span { background: var(--foil); -webkit-background-clip: text; background-clip: text; color: transparent; }
.performer-summary { max-width: 440px; color: var(--muted); font-size: 17px; line-height: 1.75; margin: 0 0 34px; }
.mini-envelope { width: min(380px,100%); min-height: 82px; display: flex; align-items: center; gap: 20px; padding: 18px 22px; border: 1px solid rgba(217,195,160,.5); background: linear-gradient(135deg,#2d1619,#140b0d); color: var(--muted); font-size: 14px; }
.mini-envelope strong { display: block; font-weight: 600; color: var(--ivory); }
.wax-mini { display: inline-block; flex: none; width: 38px; height: 38px; border-radius: 50%; background: radial-gradient(circle at 33% 25%,#bc4a52,#7e1827 60%,#4a0d19); border: 2px solid rgba(255,213,181,.25); box-shadow: inset 2px 3px 4px rgba(255,255,255,.13),4px 6px 14px rgba(0,0,0,.3); }
.performer-portrait { margin: 0; position: relative; }
.portrait-mat { aspect-ratio: .88; padding: 17px; border: 1px solid rgba(221,192,137,.7); background: linear-gradient(130deg,#6e4f1e,#e9d49a 20%,#8a6a2f 35%,#fff4c9 53%,#6e4f1e); box-shadow: 0 35px 65px rgba(0,0,0,.45); transform: rotate(3deg); }
.portrait-mat img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: 41% center; filter: grayscale(1) sepia(.28) contrast(1.18); background: #c9beb7; }
.performer-portrait figcaption { font-size: 12px; line-height: 1.5; max-width: 500px; margin: 22px 0 0; color: var(--muted); }
.performer-portrait figcaption a { color: var(--champagne); }
.performer-portrait__name { display: block; color: var(--ivory); font-size: 20px; }
.performer-portrait__credit { margin-top: 8px; }
.performer-portrait__credit summary { cursor: pointer; color: var(--champagne); }

/* Programme uses utilitarian rows for fast scanning. */
.programme { padding: 120px 8vw 140px; background: #0b0809; }
.programme-heading { max-width: 1200px; margin: auto; display: flex; align-items: end; justify-content: space-between; gap: 70px; }
.programme h2 { font: 500 clamp(4.3rem,7.4vw,8.2rem)/.95 var(--display); letter-spacing: -.06em; margin: 30px 0 55px; }
.programme h2 em { color: var(--champagne); font-weight: 500; }
.programme-intro { max-width: 320px; color: var(--muted); font-size: 16px; margin: 0 0 60px; }
.programme-layout { width: min(1200px,100%); margin: 0 auto; display: grid; grid-template-columns: 270px minmax(0,1fr); gap: 75px; }
.day-tabs { position: sticky; top: 100px; align-self: start; display: grid; align-content: start; border-top: 1px solid var(--rule); }
.day-tab { min-height: 130px; display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto 1fr auto; text-align: left; padding: 18px 15px; color: var(--muted); border: 0; border-bottom: 1px solid var(--rule); background: transparent; transition: color .25s ease,background .25s ease; }
.day-tab:hover, .day-tab.is-active { color: var(--ivory); background: rgba(217,195,160,.06); }
.day-tab.is-active { border-left: 3px solid var(--champagne); }
.day-tab span { grid-column: 1; font-size: 12px; font-weight: 700; letter-spacing: .13em; }
.day-tab strong { grid-column: 1; font: 500 50px/1 var(--display); color: var(--champagne); }
.day-tab small { grid-column: 2; grid-row: 3; font-size: 12px; }
.programme-date { display: flex; justify-content: space-between; padding: 18px 0; border-bottom: 1px solid var(--rule); color: var(--champagne); font-size: 13px; }
.programme-date strong { font-weight: 600; color: var(--ivory); }
.day-panels, .day-panel { min-width: 0; }
.day-panel { min-height: 260px; }
.day-one-intro { padding: 23px 0 25px; }
.day-one-hours { margin: 0 0 15px; font-size: 14px; color: var(--champagne); }
.day-one-hours span { margin-left: 8px; font-size: 10px; letter-spacing: .16em; color: var(--muted); }
.day-one-intro h3 { margin: 0 0 10px; font-size: 21px; font-weight: 600; }
.day-one-intro > p:last-child { margin: 0; color: var(--muted); font-size: 14px; }
.speaker-spotlight { position: relative; isolation: isolate; display: grid; grid-template-columns: 1fr 1.05fr; align-items: center; min-height: 300px; padding: 26px 0 0 28px; overflow: hidden; border-top: 1px solid rgba(217,195,160,.23); border-bottom: 1px solid rgba(217,195,160,.23); background: radial-gradient(ellipse at 78% 65%,rgba(165,124,63,.11),transparent 65%); }
.speaker-spotlight::before { content: ''; position: absolute; top: -1px; left: 0; width: 100px; height: 1px; background: var(--foil); }
.speaker-spotlight__copy { position: relative; z-index: 2; padding-bottom: 28px; }
.speaker-spotlight__eyebrow { display: flex; align-items: center; gap: 9px; margin: 0 0 26px; font-size: 9px; letter-spacing: .16em; color: var(--champagne); }
.speaker-spotlight__eyebrow > span { width: 5px; height: 5px; border-radius: 50%; background: var(--champagne); box-shadow: 0 0 12px rgba(233,212,154,.5); }
.speaker-spotlight__name { margin: 0; font: 500 clamp(2.3rem,3.5vw,3.8rem)/1.06 var(--display); letter-spacing: -.045em; }
.speaker-spotlight__name em { color: var(--champagne); font-weight: 500; }
.speaker-spotlight__session { margin: 14px 0 8px; font-size: 13px; color: var(--muted); }
.speaker-spotlight__time { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 15px; color: var(--champagne); }
.speaker-spotlight__time > span { font-size: 22px; }
.speaker-spotlight__time small { font-size: 9px; letter-spacing: .15em; color: var(--muted); }
.speaker-spotlight__note { margin: 24px 0 0; font-size: 12px; line-height: 1.8; color: var(--muted); }
.speaker-spotlight__portrait { position: relative; align-self: stretch; display: grid; align-items: end; margin: 0; min-width: 0; opacity: 1; transform: none; filter: none; transition: opacity 1.1s ease, transform 1.1s cubic-bezier(.2,.7,.2,1), filter 1.1s ease; }
.speaker-spotlight.is-reveal-ready:not(.is-in-view) .speaker-spotlight__portrait { opacity: 0; transform: translateY(28px) scale(.97); filter: blur(8px); }
.speaker-spotlight__portrait img { position: relative; z-index: 1; display: block; width: 125%; max-width: none; height: auto; margin-left: -14%; filter: saturate(.65) contrast(1.04); mask-image: linear-gradient(to bottom,#000 72%,transparent 99%); transform: translate(var(--speaker-x,0px),var(--speaker-y,0px)); transition: transform .6s cubic-bezier(.2,.7,.2,1),filter .6s; }
.speaker-spotlight__halo { position: absolute; inset: 6% -12% 0 -14%; background: radial-gradient(ellipse,rgba(213,175,104,.21),transparent 66%); filter: blur(15px); }
.speaker-spotlight__orbit { position: absolute; width: 86%; aspect-ratio: 1; top: 9%; left: 4%; border: 1px solid rgba(217,195,160,.15); border-radius: 50%; box-shadow: 0 0 45px rgba(213,175,104,.035); }
.speaker-spotlight__orbit::after { content: ''; position: absolute; inset: 12px; border: 1px solid rgba(217,195,160,.06); border-radius: inherit; }
.speaker-spotlight__portrait figcaption { position: absolute; bottom: 9px; right: 12px; z-index: 3; color: var(--muted); font-size: 9px; }
.speaker-spotlight__portrait figcaption a { text-underline-offset: 3px; }
@keyframes speaker-glow { from { opacity: .55; transform: scale(.96); } to { opacity: 1; transform: scale(1.04); } }
@media (prefers-reduced-motion: no-preference) {
  .day-panel.is-active .speaker-spotlight.is-in-view .speaker-spotlight__halo { animation: speaker-glow 6s ease-in-out infinite alternate; }
}
@media (hover: hover) and (pointer: fine) {
  .speaker-spotlight:hover .speaker-spotlight__portrait img { filter: saturate(.9) contrast(1.04); }
}
@media (max-width: 1000px) and (min-width: 768px) {
  .programme-layout { grid-template-columns: 200px minmax(0,1fr); gap: 35px; }
  .speaker-spotlight { padding-left: 18px; }
  .speaker-spotlight__name { font-size: 2.5rem; }
}
@media (max-width: 767px) {
  .day-panels { align-items: flex-start; }
  .day-one-intro { padding: 22px 0; }
  .speaker-spotlight { grid-template-columns: 1fr; padding: 24px 18px 0; min-height: 0; }
  .speaker-spotlight__copy { padding-bottom: 0; }
  .speaker-spotlight__eyebrow { margin-bottom: 18px; }
  .speaker-spotlight__name { font-size: clamp(2.8rem,11vw,4rem); }
  .speaker-spotlight__name br { display: none; }
  .speaker-spotlight__name em::before { content: ' '; }
  .speaker-spotlight__note { margin-top: 14px; }
  .speaker-spotlight__note br { display: none; }
  .speaker-spotlight__portrait { justify-self: center; width: min(100%,350px); margin-top: -10px; }
  .speaker-spotlight__portrait img { width: 114%; margin-left: -7%; }
}
@media (prefers-reduced-motion: reduce) {
  .speaker-spotlight *, .speaker-spotlight *::after { animation: none !important; transition: none !important; }
  .speaker-spotlight.is-reveal-ready .speaker-spotlight__portrait { opacity: 1; transform: none; filter: none; }
  .speaker-spotlight__portrait img { transform: none; }
}
.low-end .speaker-spotlight__halo { animation: none !important; }
.programme-details { margin-top: 25px; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.programme-details__heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin: 0; padding: 18px 0; color: var(--champagne); font-size: 10px; letter-spacing: .12em; }
.programme-details__heading small { color: var(--muted); font-size: 10px; letter-spacing: .07em; }
.programme-session-tabs { display: none; flex-wrap: wrap; gap: 8px; padding: 0 0 18px; }
.is-interactive > .programme-session-tabs { display: flex; }
.programme-session-tabs button { display: flex; align-items: center; gap: 10px; min-height: 40px; padding: 8px 15px; border: 1px solid var(--rule); border-radius: 2px; background: transparent; color: var(--muted); font-size: 12px; transition: color .2s, border-color .2s, background .2s; }
.programme-session-tabs button[aria-selected="true"] { color: var(--ivory); border-color: var(--champagne); background: rgba(217,195,160,.09); }
.programme-session-tabs button:hover { color: var(--ivory); border-color: var(--champagne); }
.programme-session-tabs small { color: var(--champagne); font-size: 10px; }
.programme-columns { display: grid; grid-template-columns: 108px minmax(0,1fr) minmax(0,1.2fr); gap: 16px; padding: 12px 22px 12px 0; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); color: var(--muted); font-size: 9px; letter-spacing: .1em; }
.programme-columns__mobile { display: none; }
.programme-scroll { height: clamp(340px,52vh,480px); overflow-y: auto; overflow-x: hidden; overscroll-behavior-y: contain; scrollbar-gutter: stable; scrollbar-width: thin; scrollbar-color: #8f7959 #171210; padding-right: 14px; }
.programme-scroll:focus-visible { outline-offset: -2px; }
.programme-session > h4 { margin: 0; padding: 16px 0 12px; color: var(--champagne); font-size: 11px; font-weight: 600; letter-spacing: .03em; }
.programme-scroll-hint { display: flex; justify-content: space-between; margin: 0; padding: 12px 0; border-top: 1px solid var(--rule); color: var(--champagne); font-size: 10px; letter-spacing: .03em; }
.programme-scroll-hint.is-at-end { color: var(--muted); }
.programme-agenda { margin: 0; padding: 0; list-style: none; }
.programme-agenda > li { display: grid; grid-template-columns: 108px minmax(0,1fr) minmax(0,1.2fr); gap: 16px; padding: 16px 0; border-top: 1px solid rgba(217,195,160,.12); }
.programme-agenda > li > div { display: contents; }
.programme-agenda__featured > .speaker-spotlight { grid-column: 1 / -1; margin-top: 8px; }
.programme-agenda__time { color: var(--champagne); font-size: 12px; font-variant-numeric: tabular-nums; padding-top: 2px; }
.programme-agenda h5 { grid-column: 2; margin: 0; font-size: 13px; line-height: 1.6; font-weight: 600; }
.programme-agenda > li > div > p { grid-column: 3; margin: 0; font-size: 12px; line-height: 1.65; color: var(--muted); }
@media (max-width: 767px) {
  .programme-details { margin: 22px 0 0; }
  .programme-scroll { height: clamp(300px,52svh,420px); padding-right: 10px; }
  .programme-columns { grid-template-columns: 90px minmax(0,1fr); gap: 12px; padding-right: 18px; }
  .programme-columns__desktop { display: none; }
  .programme-columns__mobile { display: block; }
  .programme-session-tabs button { min-height: 42px; padding: 8px 13px; }
  .programme-agenda > li { grid-template-columns: 90px minmax(0,1fr); gap: 5px 12px; padding: 14px 0; }
  .programme-agenda__time { grid-column: 1; grid-row: 1 / span 2; }
  .programme-agenda h5 { grid-row: 1; }
  .programme-agenda > li > div > p { grid-column: 2; grid-row: 2; }
  .programme-agenda__time { font-size: 11px; }
  .programme-agenda h5 { font-size: 13px; }
}
.schedule-locked { display: flex; align-items: center; gap: 35px; min-height: 230px; border-bottom: 1px solid var(--rule); }
.schedule-locked > span { font: 500 90px/1 var(--display); color: rgba(217,195,160,.22); min-width: 100px; }
.schedule-locked h3 { font: 500 clamp(1.7rem,2.5vw,2.5rem)/1.15 var(--display); margin: 0 0 9px; }
.schedule-locked p { font-size: 15px; color: var(--muted); max-width: 430px; margin: 0; }
.live-strip { width: min(1200px,100%); margin: 45px auto 0; display: flex; align-items: center; gap: 12px; color: var(--muted); font-size: 14px; }
.live-lamp { width: 8px; height: 8px; border-radius: 50%; background: var(--champagne); box-shadow: 0 0 13px var(--champagne); }

/* Guest information resembles a collection of sealed letters. */
.information { padding: 130px 8vw 140px; background: radial-gradient(circle at 20% 55%,rgba(143,29,43,.22),transparent 35%),#170d10; }
.information-heading { text-align: center; max-width: 640px; margin: 0 auto 75px; }
.information h2 { font: 500 clamp(3.6rem,6vw,6.2rem)/1.03 var(--display); letter-spacing: -.055em; margin: 25px 0; }
.information-heading > p:last-child { color: var(--muted); font-size: 16px; }
.envelope-grid { width: min(1220px,100%); margin: auto; display: grid; grid-template-columns: repeat(4,1fr); gap: 16px; }
.envelope { position: relative; min-height: 318px; padding: 22px; display: flex; flex-direction: column; justify-content: space-between; background: linear-gradient(145deg,#291719,#1a1012 55%,#30171c); border: 1px solid rgba(217,195,160,.5); box-shadow: 0 15px 30px rgba(0,0,0,.17); clip-path: polygon(0 0,100% 0,100% 97%,96% 100%,0 100%); }
.envelope::before { content: ''; position: absolute; inset: 0; background: linear-gradient(145deg,transparent 44%,rgba(233,212,154,.15) 45%,transparent 46%),linear-gradient(215deg,transparent 44%,rgba(233,212,154,.15) 45%,transparent 46%); pointer-events: none; }
.envelope-top { display: flex; justify-content: space-between; color: var(--champagne); font-size: 12px; font-weight: 700; letter-spacing: .1em; }
.envelope-fold { width: 15px; height: 15px; border-top: 1px solid var(--champagne); border-right: 1px solid var(--champagne); transform: rotate(45deg); }
.envelope-body h3 { font: 500 28px/1.13 var(--display); margin: 0 0 10px; }
.envelope-body p { color: var(--muted); font-size: 15px; margin: 0; }
.envelope-bottom { display: flex; align-items: center; justify-content: space-between; color: var(--muted); font-size: 12px; letter-spacing: .08em; }
.envelope.is-jolted { animation: jolt .35s ease; }
@keyframes jolt { 25%{transform:translateX(-3px) rotate(-1deg)} 55%{transform:translateX(4px) rotate(1deg)} 85%{transform:translateX(-2px)} }

/* The invitation is printed locally, on demand. */
.invitation { padding: 130px 8vw 145px; background: linear-gradient(105deg,#0c0709 0%,#210f14 55%,#0d0709 100%); display: grid; grid-template-columns: minmax(0,1fr) minmax(360px,.84fr); gap: min(9vw,120px); align-items: center; }
.invitation-copy { max-width: 520px; justify-self: end; }
.invitation h2 { font: 500 clamp(3.8rem,6.3vw,6.5rem)/1.03 var(--display); letter-spacing: -.06em; margin: 30px 0; }
.invitation-copy > p:not(.scene-kicker):not(.invite-status) { color: var(--muted); max-width: 400px; }
.invite-form { margin-top: 45px; }
.invite-form label { display: block; margin-bottom: 10px; font-size: 13px; font-weight: 700; }
.input-row { display: flex; border: 1px solid rgba(217,195,160,.65); }
.input-row input { min-width: 0; width: 100%; padding: 15px; color: var(--ivory); border: 0; outline: 0; background: rgba(0,0,0,.2); font-size: 16px; }
.input-row:focus-within { outline: 2px solid var(--champagne); outline-offset: 3px; }
.input-row button { flex: none; min-height: 52px; padding: 0 20px; color: var(--ink); border: 0; background: var(--champagne); font-weight: 700; }
.invite-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 16px; }
.invite-actions button { min-height: 44px; border: 1px solid rgba(217,195,160,.55); padding: 9px 16px; color: var(--ivory); background: transparent; font-size: 13px; }
.invite-actions button:hover { background: var(--champagne); color: var(--ink); }
.invite-status { color: var(--champagne); min-height: 24px; font-size: 13px; }
.invite-card-wrap { justify-self: start; width: min(100%,400px); perspective: 1000px; }
.invite-card { --tilt-x: 0deg; --tilt-y: 0deg; width: 100%; aspect-ratio: 9/16; position: relative; overflow: hidden; padding: 34px 28px; display: flex; flex-direction: column; align-items: center; text-align: center; background: radial-gradient(circle at 50% 26%,rgba(134,38,51,.35),transparent 55%),#170a0f; border: 8px solid transparent; border-image: var(--foil) 1; outline: 1px solid rgba(217,195,160,.4); outline-offset: -18px; box-shadow: 25px 40px 60px rgba(0,0,0,.42); transform: rotateX(var(--tilt-x)) rotateY(var(--tilt-y)); transform-style: preserve-3d; }
.invite-card::before { content: ''; position: absolute; inset: 20px; border: 1px solid rgba(217,195,160,.6); pointer-events: none; }
.card-top { margin-top: 34px; font-size: 12px; letter-spacing: .28em; color: var(--champagne); }
.card-ornament { width: 45px; height: 45px; margin-top: 55px; border: 1px solid var(--champagne); border-radius: 50%; transform: rotate(45deg); }
.card-greeting,.card-signature { font: 2.2rem/1 var(--script); color: var(--champagne); }
.card-greeting { margin-top: 40px; }
.invite-card strong { max-width: 100%; overflow-wrap: anywhere; font: 500 clamp(2rem,3.4vw,3.5rem)/1.05 var(--display); margin: 18px 0; }
.card-message { max-width: 240px; font: 500 20px/1.25 var(--display); }
.card-date { color: var(--champagne); font-size: 13px; font-weight: 700; letter-spacing: .11em; margin-top: auto; }
.card-signature { margin: 25px 0 14px; }
.invite-card small { font-size: 11px; line-height: 1.5; letter-spacing: .08em; margin-bottom: 20px; }

/* An empty exhibition still has an authored physical space. */
.gallery { padding: 125px 0 145px; background: linear-gradient(to bottom,#120c0d,#070505); }
.gallery-top { width: min(1180px,calc(100% - 16vw)); margin: 0 auto 65px; display: flex; align-items: end; justify-content: space-between; gap: 50px; }
.gallery h2 { font: 500 clamp(4.5rem,8vw,8.6rem)/.95 var(--display); letter-spacing: -.06em; margin: 23px 0 0; }
.gallery-top > p { width: min(330px,40%); color: var(--muted); margin: 0 0 10px; }
.gallery-track { display: flex; gap: 40px; overflow-x: auto; overscroll-behavior-inline: contain; scroll-snap-type: x mandatory; scrollbar-color: var(--champagne) transparent; padding: 40px max(8vw,calc((100vw - 1180px)/2)) 40px; touch-action: pan-x pan-y; }
.gallery-frame { flex: 0 0 min(34vw,430px); margin: 0; scroll-snap-align: center; }
.gallery-frame:nth-child(2) { transform: translateY(26px); }
.gallery-mat { position: relative; aspect-ratio: .84; border: 16px solid transparent; border-image: var(--foil) 1; background: radial-gradient(circle at 50% 30%,#2e2220,#100a0b 65%); box-shadow: 18px 25px 40px rgba(0,0,0,.4), inset 0 0 0 12px #1c1110; display: grid; place-items: center; }
.gallery-mat::before { content: ''; position: absolute; width: 70%; height: 65%; top: -65%; left: 15%; background: linear-gradient(to bottom, rgba(255,231,179,.18), transparent); clip-path: polygon(48% 0,52% 0,100% 100%,0 100%); pointer-events: none; }
.frame-monogram { font: 500 140px/1 var(--display); color: rgba(217,195,160,.22); }
.gallery-frame figcaption { margin-top: 20px; color: var(--champagne); font-size: 12px; letter-spacing: .13em; text-align: center; }
.gallery-dialog { max-width: min(96vw,1050px); max-height: 94dvh; background: #100b0d; color: var(--ivory); border: 1px solid var(--champagne); padding: 45px; }
.gallery-dialog::backdrop { background: rgba(0,0,0,.87); }
.gallery-dialog img { display: block; max-height: 70dvh; margin: 0 auto; }
.dialog-close { position: absolute; top: 5px; right: 8px; min-width: 44px; min-height: 44px; color: var(--ivory); background: transparent; border: 0; font-size: 30px; }
.dialog-controls { display: flex; justify-content: space-between; }
.dialog-controls button { min-width: 44px; min-height: 44px; color: var(--ivory); background: transparent; border: 1px solid var(--rule); }

/* The message wall is a moderated guestbook, styled like a stack of ballroom cards. */
.message-wall { min-height: 80vh; padding: 125px 8vw 145px; background: radial-gradient(circle at 82% 30%, rgba(143,29,43,.28), transparent 34%), linear-gradient(118deg,#160b0f 0%,#0d0709 58%,#211016 100%); }
.message-wall-heading { width: min(1180px,100%); margin: 0 auto 62px; display: grid; grid-template-columns: minmax(0,1fr) minmax(250px,330px); align-items: end; gap: 60px; }
.message-wall-heading h2 { font: 500 clamp(4.4rem,7.5vw,8.2rem)/.93 var(--display); letter-spacing: -.065em; margin: 25px 0 0; }
.message-wall-heading h2 em { color: var(--champagne); font-style: normal; }
.message-wall-heading > p:last-child { color: var(--muted); margin: 0 0 8px; }
.message-wall-layout { width: min(1180px,100%); margin: auto; display: grid; grid-template-columns: minmax(280px,.7fr) minmax(0,1fr); gap: clamp(45px,8vw,110px); align-items: start; }
.message-form { position: relative; padding: 28px; border: 1px solid rgba(217,195,160,.52); background: linear-gradient(150deg,rgba(68,25,33,.82),rgba(21,10,14,.92)); box-shadow: 16px 24px 45px rgba(0,0,0,.24); }
.message-form::before { content: ''; position: absolute; inset: 10px; border: 1px solid rgba(217,195,160,.17); pointer-events: none; }
.message-field { position: relative; margin-bottom: 21px; }
.message-field label { display: block; margin-bottom: 8px; color: var(--champagne); font-size: 12px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }
.message-field input, .message-field textarea { width: 100%; color: var(--ivory); border: 1px solid rgba(217,195,160,.34); border-radius: 0; outline: 0; background: rgba(4,2,3,.38); padding: 13px 14px; font: 400 16px/1.5 var(--body); }
.message-field input:focus, .message-field textarea:focus { border-color: var(--champagne); box-shadow: 0 0 0 2px rgba(217,195,160,.2); }
.message-field textarea { min-height: 142px; resize: vertical; }
.message-field input::placeholder, .message-field textarea::placeholder { color: rgba(243,234,216,.48); }
.message-counter { display: block; margin-top: 6px; color: var(--muted); font-size: 11px; text-align: right; }
.message-trap { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }
.message-submit { width: 100%; min-height: 50px; padding: 11px 16px; color: var(--ink); border: 1px solid var(--champagne); background: var(--champagne); font-size: 13px; font-weight: 700; letter-spacing: .03em; }
.message-submit:hover, .message-submit:focus-visible { background: #fff1c4; }
.message-submit:disabled { cursor: wait; opacity: .62; }
.message-status { min-height: 24px; margin: 12px 0 0; color: var(--champagne); font-size: 13px; }
.message-list-wrap { min-width: 0; }
.message-list-heading { display: flex; justify-content: space-between; gap: 18px; padding-bottom: 14px; border-bottom: 1px solid var(--rule); color: var(--champagne); font-size: 11px; font-weight: 700; letter-spacing: .14em; }
.message-list-state { color: var(--muted); font-weight: 500; }
.message-list { display: grid; gap: 12px; padding-top: 18px; }
.message-empty { margin: 0; padding: 32px 0; color: var(--muted); font: 500 clamp(1.55rem,2.3vw,2.15rem)/1.2 var(--display); }
.message-card { position: relative; padding: 19px 22px 20px; border-left: 2px solid var(--champagne); background: rgba(243,234,216,.055); }
.message-card::after { content: '“'; position: absolute; top: 7px; right: 15px; color: rgba(217,195,160,.24); font: 500 54px/1 var(--display); }
.message-card p { max-width: 600px; margin: 0 24px 12px 0; color: var(--ivory); font: 500 19px/1.35 var(--display); white-space: pre-line; }
.message-card footer { color: var(--muted); font-size: 12px; letter-spacing: .06em; }
.message-card footer strong { color: var(--champagne); font-weight: 700; }
.message-wall .is-pending { opacity: .6; }

.finale { min-height: 100dvh; padding: 130px 24px 105px; display: grid; place-items: center; background: radial-gradient(ellipse at 50% 48%,#38151b,#13090d 62%,#080506); text-align: center; }
.gold-rain { position: absolute; inset: 0; width: 100%; height: 100%; pointer-events: none; }
.finale-content { position: relative; z-index: 2; }
.midnight-clock { display: block; margin: 35px auto 22px; width: 180px; height: 180px; border: 1px solid rgba(217,195,160,.5); border-radius: 50%; font: 500 74px/180px var(--display); color: var(--champagne); box-shadow: 0 0 0 10px rgba(217,195,160,.045),0 0 0 19px rgba(217,195,160,.025); }
.finale h2 { margin: 0; font: 500 clamp(4rem,8vw,8.5rem)/1 var(--display); letter-spacing: -.06em; }
.finale-message { color: var(--champagne); margin: 27px 0 70px; }
.contact-note { max-width: 430px; margin: 0 auto 24px; color: var(--muted); }
.return-link { display: inline-block; padding: 12px 18px; border: 1px solid var(--champagne); text-decoration: none; font-size: 13px; font-weight: 700; }
.return-link:hover { background: var(--champagne); color: var(--ink); }
.site-footer { position: relative; display: flex; justify-content: space-between; gap: 20px; padding: 26px 5vw; background: #070405; border-top: 1px solid var(--rule); color: var(--muted); font-size: 12px; }
.site-footer a { color: var(--champagne); text-decoration: none; }

.countdown-caption { display: block; color: var(--champagne); font-size: 12px; font-weight: 700; letter-spacing: .16em; }
.countdown-units { display: flex; gap: 10px; margin-top: 7px; }
.countdown-unit { display: flex; align-items: baseline; gap: 3px; }
.countdown-unit strong { font: 500 20px/1 var(--display); color: var(--ivory); font-variant-numeric: tabular-nums; }
.countdown-unit small { font-size: 10px; letter-spacing: .08em; }
.countdown-unit strong.is-ticking { animation: digit-tick .35s ease; }
@keyframes digit-tick { from { opacity: .45; transform: translateY(5px); } to { opacity: 1; transform: none; } }
.phase-minggu-h .chandelier { filter: drop-shadow(0 0 12px rgba(233,212,154,.24)); }
.phase-live .chandelier { filter: drop-shadow(0 0 22px rgba(233,212,154,.38)); }
.phase-live .live-lamp { background: #f7deb0; box-shadow: 0 0 18px 5px rgba(247,222,176,.4); }
.live-progress { display: block; flex: 1; max-width: 170px; height: 2px; background: var(--rule); }
.live-progress > span { display: block; width: 100%; height: 100%; background: var(--champagne); transform-origin: left; }
.low-end .room-glow, .low-end .performer-beam { filter: none; }

/* The gate is created only after JavaScript starts. */
.seal-gate { position: fixed; z-index: 250; inset: 0; display: grid; place-items: center; background: radial-gradient(circle at 50% 43%,#32151b,#0d0709 72%); color: var(--ivory); }
.seal-gate.is-opening { animation: gate-out .8s ease forwards; pointer-events: none; }
.seal-gate.is-gone { display: none; }
@keyframes gate-out { to { opacity: 0; transform: scale(1.04); visibility: hidden; } }
.seal-gate button { min-width: 44px; min-height: 44px; }
.seal-gate :focus-visible { outline-color: var(--ivory); }
.seal-gate .gate-card, .seal-gate .seal-card { position: relative; width: min(430px,calc(100vw - 44px)); min-height: 530px; padding: 55px 35px 35px; background: linear-gradient(145deg,#2e1a1d,#1a0b10 55%,#3a151e); border: 1px solid var(--champagne); box-shadow: 0 35px 70px rgba(0,0,0,.5); text-align: center; display: flex; flex-direction: column; align-items: center; }
.seal-gate .gate-card::before { content: ''; position: absolute; inset: 12px; border: 1px solid rgba(217,195,160,.2); pointer-events: none; }
.seal-gate h2 { font: 500 clamp(3rem,7vw,5rem)/1 var(--display); margin: 30px 0 20px; }
.seal-gate p { color: var(--muted); }
.seal-gate .gate-seal, .seal-gate .seal-hold { width: 110px; height: 110px; margin: auto 0 24px; background: url('assets/ballroom/wax-seal.svg') center / contain no-repeat; border: 0; border-radius: 50%; position: relative; color: var(--champagne); display: grid; place-items: center; }
.seal-gate .seal-hold { touch-action: none; }
.seal-gate .seal-ring { position: absolute; inset: -12px; width: calc(100% + 24px); height: calc(100% + 24px); transform: rotate(-90deg); }
.seal-gate .seal-wax { display: grid; place-items: center; width: 72px; height: 72px; border-radius: 50%; color: #f2d8a3; background: radial-gradient(circle at 34% 26%, #c45658, #781722 58%, #3e0b12); box-shadow: inset -8px -10px 13px rgba(27,1,4,.34), 0 10px 20px rgba(0,0,0,.24); font: 600 32px/1 var(--display); }
.seal-gate .seal-hold__label { position: absolute; top: calc(100% + 18px); width: 220px; color: var(--ivory); font-size: 12px; letter-spacing: .12em; text-transform: uppercase; }
.seal-gate .seal-card__eyebrow { color: var(--champagne); font-size: 11px; font-weight: 700; letter-spacing: .2em; }
.seal-gate .seal-actions { display: flex; gap: 20px; align-items: center; margin-top: 45px; }
.seal-gate .seal-direct { min-height: 44px; padding: 10px 16px; color: var(--ink); border: 1px solid var(--champagne); background: var(--champagne); font-weight: 700; }
.seal-gate.is-holding .seal-wax { box-shadow: inset -8px -10px 13px rgba(27,1,4,.34), 0 0 35px rgba(233,212,154,.38); }
.seal-gate .seal-card { max-height: calc(100dvh - 24px); min-height: min(530px, calc(100dvh - 24px)); overflow-y: auto; }
.seal-gate .seal-card h2 { font-size: clamp(2.8rem, 6vw, 4.1rem); }
@media (max-width: 480px) {
  .seal-gate .seal-card { width: calc(100vw - 40px); padding: 38px 22px 28px; }
  .seal-gate .seal-card h2 { font-size: clamp(2.5rem, 12vw, 3.5rem); overflow-wrap: anywhere; }
  .seal-gate .seal-actions { flex-wrap: wrap; justify-content: center; }
}
.seal-gate .gate-seal::after { content: ''; position: absolute; inset: -10px; border: 3px solid var(--champagne); border-radius: 50%; clip-path: inset(0 calc(100% - var(--gate-progress, 0%)) 0 0); }
.seal-gate.is-opening .seal-card { animation: seal-card-open .58s var(--ease-out, cubic-bezier(.16,1,.3,1)) both; }
.seal-gate .gate-skip { background: transparent; color: var(--ivory); border: 0; text-decoration: underline; }
@keyframes seal-card-open { from { transform: perspective(900px) rotateX(0) translateY(0); opacity: 1; } to { transform: perspective(900px) rotateX(8deg) translateY(-18px); opacity: 0; } }

@media (max-width: 1150px) {
  .hero-content { padding-inline: 6vw; }
  .foil-wordmark, .wordmark-reflection { font-size: clamp(4.3rem,9.3vw,9rem); }
  .curtain-left { left: -17%; }.curtain-right { right: -17%; }
  .performer { padding-inline: 6vw; }.performer h2 { font-size: clamp(5.7rem,11.5vw,10rem); }
  .programme-layout { gap: 40px; grid-template-columns: 215px minmax(0,1fr); }
  .envelope-grid { grid-template-columns: repeat(2,1fr); max-width: 760px; }
  .invitation { gap: 50px; grid-template-columns: 1fr 390px; padding-inline: 6vw; }
}

@media (max-width: 767px) {
  html { scroll-padding-top: 64px; }
  body { font-size: 16px; padding-bottom: calc(56px + env(safe-area-inset-bottom, 0px)); }
  .site-header { height: 56px; padding-inline: 16px; grid-template-columns: 1fr auto auto; gap: 10px; background: rgba(13,7,9,.86); backdrop-filter: blur(8px); }
  .site-brand { font-size: 12px; letter-spacing: .11em; }.site-brand span { font-size: 10px; }
  .header-nav, .clock-caption, .scene-rail { display: none; }
  .scene-clock { font-size: 16px; }.audio-toggle { width: 44px; height: 44px; }
  .mobile-dock { position: fixed; z-index: 160; inset: auto 0 0; display: grid; grid-template-columns: repeat(5,minmax(0,1fr)); padding: 0 6px env(safe-area-inset-bottom, 0px); background: rgba(21,10,13,.96); border-top: 1px solid rgba(217,195,160,.42); backdrop-filter: blur(12px); }
  .mobile-dock a { min-width: 0; min-height: 55px; display: grid; place-items: center; text-decoration: none; color: var(--ivory); font-size: clamp(10px,2.9vw,12px); line-height: 1.2; font-weight: 700; white-space: nowrap; }
  .mobile-dock a[aria-current="location"] { color: var(--nav-active); }
  .hero { min-height: calc(100svh - 56px - env(safe-area-inset-bottom, 0px)); }
  .hero-content { min-height: calc(100svh - 56px - env(safe-area-inset-bottom, 0px)); padding: 164px 20px 76px; }
  .hero-intro { font-size: 9px; letter-spacing: .16em; gap: 8px; }
  .small-rule { width: 13px; }
  .hero-presents { font-size: 11px; line-height: 1.6; margin: 18px 0 14px; max-width: 220px; }
  .foil-wordmark, .wordmark-reflection { font-size: clamp(1.8rem,9.5vw,4rem); letter-spacing: -.065em; }
  .wordmark-reflection { top: 88%; }
  .hero-line { font-size: 18px; margin: 36px 0 14px; }
  .hero-tickets { flex-direction: column; align-items: center; gap: 8px; margin-top: 12px; }
  .event-ticket { flex: none; width: min(280px,85vw); min-height: 68px; padding: 8px 12px; gap: 3px; }
  .event-ticket .ticket-label { font-size: 10px; }
  .event-ticket strong { font-size: 15px; }
  .event-ticket > span:last-child { font-size: 11px; }
  .hero-scroll { padding-top: 18px; font-size: 11px; }
  .hero-bottom { bottom: 12px; left: 20px; right: 20px; font-size: 10px; }
  .hero-bottom > span:last-child { display: none; }
  .countdown-unit strong { font-size: 14px; }.countdown-unit small { font-size: 8px; }
  .room-pillar { width: 80px; }.pillar-left { left: 5%; }.pillar-right { right: 5%; }
  .curtain { width: 36vw; }.curtain-left { left: -18%; }.curtain-right { right: -18%; }
  .chandelier { top: 40px; width: min(38vw,140px); }
  .marble-floor { height: 18%; }
  .about { min-height: auto; }.about-content { width: calc(100% - 44px); padding: 120px 0; }
  .about h2 { font-size: clamp(3.45rem,14vw,6.5rem); margin: 35px 0 45px; }.about h2 span { margin-left: 0; }
  .about-number { top: 6%; right: 5%; font-size: 20rem; }
  .about-copy { margin-left: 0; grid-template-columns: 2px 1fr; gap: 18px; }.about-copy p { font-size: 16px; }
  .performer { padding: 105px 22px 100px; }
  .performer-layout { grid-template-columns: 1fr; gap: 45px; }
  .performer-head { padding: 0; }.performer-small { margin: 34px 0 20px; }
  .performer h2 { font-size: clamp(5rem,20vw,9rem); margin-bottom: 32px; }
  .performer-summary { font-size: 16px; }.performer-beam { width: 80%; left: 30%; }
  .performer-portrait { width: min(100%,520px); margin-inline: auto; }.portrait-mat { padding: 12px; }
  .programme { padding: 100px 22px 110px; }
  .programme-heading { display: block; }.programme h2 { font-size: clamp(3.6rem,14vw,6.5rem); margin: 30px 0; }
  .programme-intro { max-width: 560px; margin: 0 0 36px; }
  .programme-layout { display: block; }
  .day-tabs { position: static; display: grid; grid-template-columns: repeat(3,1fr); border-bottom: 1px solid var(--rule); border-top: 1px solid var(--rule); }
  .day-tab { min-height: 96px; border-right: 1px solid var(--rule); border-bottom: 0; padding: 12px 11px; }
  .day-tab:last-child { border-right: 0; }.day-tab.is-active { border-left: 0; border-bottom: 3px solid var(--champagne); }
  .day-tab strong { font-size: 34px; }.day-tab span,.day-tab small { font-size: 11px; }
  .day-panels { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-inline: contain; scrollbar-width: none; }
  .day-panel { flex: 0 0 100%; scroll-snap-align: start; min-height: 230px; }
  .schedule-locked { min-height: 185px; gap: 18px; }.schedule-locked > span { font-size: 60px; min-width: 55px; }
  .schedule-locked h3 { font-size: 26px; }.schedule-locked p { font-size: 14px; }
  .information { padding: 100px 22px 110px; }.information-heading { margin-bottom: 50px; }
  .information h2 { font-size: clamp(3.1rem,12vw,5rem); }.information-heading > p:last-child { font-size: 16px; }
  .envelope-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 10px; }.envelope { min-height: 280px; padding: 16px; }
  .envelope-body h3 { font-size: 23px; }.envelope-body p { font-size: 14px; }.envelope-top,.envelope-bottom { font-size: 11px; }
  .wax-mini { width: 32px; height: 32px; }
  .invitation { display: block; padding: 100px 22px 120px; }.invitation h2 { font-size: clamp(3.4rem,13vw,5.5rem); }
  .invitation-copy { max-width: 560px; margin-inline: auto; }.invite-form { margin-top: 35px; }
  .invite-card-wrap { margin: 55px auto 0; width: min(100%,360px); }.invite-card { padding: 20px; }
  .gallery { padding: 100px 0 110px; }.gallery-top { width: calc(100% - 44px); display: block; margin-bottom: 30px; }
  .gallery h2 { font-size: clamp(3.8rem,15vw,6.5rem); }.gallery-top > p { width: 100%; max-width: 520px; margin-top: 25px; }
  .gallery-track { gap: 16px; padding: 25px 22px 40px; }.gallery-frame { flex-basis: 76vw; }.gallery-frame:nth-child(2) { transform: translateY(15px); }
  .gallery-mat { border-width: 11px; }.frame-monogram { font-size: 100px; }
  .message-wall { padding: 100px 22px 110px; }.message-wall-heading { display: block; margin-bottom: 44px; }.message-wall-heading h2 { font-size: clamp(3.8rem,14vw,6.5rem); margin: 28px 0; }.message-wall-heading > p:last-child { max-width: 520px; }.message-wall-layout { display: block; }.message-form { padding: 22px 18px; }.message-list-wrap { margin-top: 52px; }.message-list-heading { font-size: 10px; }.message-card p { font-size: 18px; }
  .finale { min-height: 100dvh; padding: 110px 22px 100px; }.midnight-clock { width: 145px; height: 145px; font-size: 58px; line-height: 145px; }
  .finale h2 { font-size: clamp(3.5rem,13vw,6rem); }.finale-message { margin-bottom: 55px; }
  .site-footer { padding: 24px 22px; flex-wrap: wrap; }
}

@media (max-width: 390px) {
  .site-brand { font-size: 12px; }.site-brand span { font-size: 10px; }.scene-clock { font-size: 16px; }
  .hero-content { padding-top: 156px; }
  .envelope-grid { grid-template-columns: 1fr; }.envelope { min-height: 210px; }
  .envelope-body h3 { font-size: 25px; }
  .input-row button { padding-inline: 12px; }
}

@media (prefers-reduced-motion: reduce) {
  .music-record { animation: none; }
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
  .room-glow,.room-pillar,.curtain,.chandelier,.invite-card { transform: none !important; }
  .chandelier { left: 50%; transform: translateX(-50%) !important; }
}

/* Sponsorship proposal room */
.proposal { min-height: 100svh; padding: 150px clamp(22px, 8vw, 130px) 155px; background: radial-gradient(circle at 78% 18%, rgba(143,29,43,.24), transparent 31%), linear-gradient(145deg, #14090c 0%, #090607 55%, #1c0b10 100%); }
.proposal::before { content: ''; position: absolute; inset: 0; opacity: .25; pointer-events: none; background: linear-gradient(115deg, transparent 0 45%, rgba(217,195,160,.08) 45.1% 45.2%, transparent 45.3%), repeating-linear-gradient(90deg, transparent 0 80px, rgba(243,234,216,.025) 81px 82px); }
.proposal-heading { position: relative; z-index: 1; width: min(1160px,100%); margin: 0 auto 72px; display: flex; align-items: end; justify-content: space-between; gap: 60px; }
.proposal h2 { margin: 25px 0 0; font: 500 clamp(4.6rem, 8vw, 8.6rem)/.87 var(--display); letter-spacing: -.07em; }
.proposal h2 em { color: var(--champagne); font-style: italic; }
.proposal-intro { max-width: 310px; margin: 0 0 10px; color: var(--muted); }
.proposal-stage { position: relative; z-index: 1; width: min(1160px,100%); margin: auto; padding: 52px clamp(18px, 5vw, 74px) 66px; border: 1px solid rgba(217,195,160,.3); background: linear-gradient(115deg, rgba(20,9,12,.9), rgba(65,19,25,.32)); box-shadow: 0 30px 80px rgba(0,0,0,.36), inset 0 0 70px rgba(143,29,43,.1); }
.proposal-stage::before { content: 'CONFIDENTIAL · OFFICIAL DOCUMENTS'; position: absolute; top: 20px; right: 28px; color: rgba(217,195,160,.48); font-size: 10px; letter-spacing: .18em; }
.proposal-card-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: clamp(18px, 4vw, 48px); }
.proposal-card { position: relative; min-width: 0; border: 1px solid rgba(217,195,160,.38); background: #10090b; box-shadow: 0 18px 42px rgba(0,0,0,.32); transition: transform .5s cubic-bezier(.2,.7,.2,1), box-shadow .5s ease; }
.proposal-card:hover { transform: translateY(-10px) rotate(-.4deg); box-shadow: 0 28px 55px rgba(0,0,0,.48), 0 0 0 1px rgba(217,195,160,.18); }
.proposal-card:nth-child(2):hover { transform: translateY(-10px) rotate(.4deg); }
.proposal-card-top { display: flex; justify-content: space-between; padding: 17px 19px; color: var(--champagne); font-size: 10px; font-weight: 700; letter-spacing: .16em; }
.proposal-cover { position: relative; min-height: 320px; margin: 0 16px; padding: 34px 28px 25px; display: flex; flex-direction: column; justify-content: space-between; overflow: hidden; color: var(--ivory); background: radial-gradient(circle at 75% 25%, rgba(255,244,201,.18), transparent 18%), linear-gradient(145deg, #3d121b, #17090d 64%, #080607); }
.proposal-cover::before { content: ''; position: absolute; width: 270px; height: 270px; right: -110px; bottom: -100px; border: 1px solid rgba(217,195,160,.3); border-radius: 50%; box-shadow: 0 0 0 24px rgba(217,195,160,.04), 0 0 0 48px rgba(217,195,160,.035); }
.proposal-cover::after { content: ''; position: absolute; inset: 12px; border: 1px solid rgba(217,195,160,.23); pointer-events: none; }
.proposal-cover > * { position: relative; z-index: 1; }
.proposal-cover-kicker { font-size: 10px; letter-spacing: .28em; }
.proposal-cover strong { font: 500 clamp(2.9rem, 5vw, 5.2rem)/.84 var(--display); letter-spacing: -.07em; }
.proposal-cover strong em { color: var(--champagne); font-style: italic; }
.proposal-cover-mark { align-self: flex-end; font: 500 5.5rem/.8 var(--display); color: rgba(243,234,216,.15); letter-spacing: .12em; }
.proposal-cover-line { width: 80px; height: 1px; background: var(--champagne); }
.proposal-cover small { font-size: 9px; letter-spacing: .16em; color: var(--muted); }
.proposal-cover-red { background: radial-gradient(circle at 20% 25%, rgba(255,244,201,.14), transparent 21%), linear-gradient(145deg, #741c2d, #2b0c13 62%, #10080a); }
.proposal-card-body { padding: 24px 21px 23px; }
.proposal-card-body p { min-height: 53px; margin: 0 0 22px; color: var(--muted); font-size: 14px; line-height: 1.55; }
.proposal-actions { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.proposal-primary, .proposal-download { text-decoration: none; font-size: 12px; font-weight: 700; letter-spacing: .08em; }
.proposal-primary { padding: 12px 15px; color: var(--ink); background: var(--champagne); }
.proposal-primary span { margin-left: 9px; font-size: 16px; }
.proposal-download { color: var(--champagne); border-bottom: 1px solid rgba(217,195,160,.5); padding-bottom: 3px; }
.proposal-note { position: relative; z-index: 1; display: flex; align-items: center; gap: 12px; width: min(1160px,100%); margin: 24px auto 0; color: rgba(197,184,173,.8); font-size: 12px; }
.proposal-note .wax-mini { flex: 0 0 auto; width: 28px; height: 28px; }
.proposal-stamp { position: absolute; z-index: 2; top: -28px; right: clamp(18px, 5vw, 85px); width: 92px; height: 92px; display: grid; place-content: center; gap: 2px; border: 1px solid rgba(217,195,160,.7); border-radius: 50%; transform: rotate(12deg); color: var(--champagne); text-align: center; font-size: 8px; letter-spacing: .16em; background: rgba(34,10,15,.92); box-shadow: 0 8px 24px rgba(0,0,0,.35); }
.proposal-stamp strong { font: 500 26px/1 var(--display); color: var(--ivory); }
.proposal-stack { position: absolute; bottom: -11px; left: clamp(30px, 8vw, 120px); right: clamp(30px, 8vw, 120px); height: 18px; pointer-events: none; }
.proposal-stack span { position: absolute; inset: 0; border: 1px solid rgba(217,195,160,.22); background: #241015; transform: rotate(-1.2deg); }
.proposal-stack span:nth-child(2) { transform: translateY(5px) rotate(.8deg); background: #32151c; }
.proposal-stack span:nth-child(3) { transform: translateY(10px) rotate(-.3deg); background: #12090d; }
.proposal-orbit { position: absolute; border: 1px solid rgba(217,195,160,.1); border-radius: 50%; pointer-events: none; }
.proposal-orbit-one { width: 45vw; height: 45vw; top: 5%; right: -22vw; }
.proposal-orbit-two { width: 26vw; height: 26vw; bottom: -9vw; left: -13vw; }

@media (max-width: 900px) {
  .header-nav { gap: 14px; }
  .proposal { padding: 120px 22px 125px; }
  .proposal-heading { display: block; margin-bottom: 45px; }
  .proposal h2 { font-size: clamp(4.3rem, 14vw, 7rem); }
  .proposal-intro { margin-top: 27px; max-width: 510px; }
  .proposal-stage { padding: 44px 16px 45px; }
  .proposal-card-grid { gap: 16px; }
}

@media (max-width: 620px) {
  .proposal { padding: 100px 18px 115px; }
  .proposal-stage { margin-inline: -2px; padding: 39px 12px 35px; }
  .proposal-stage::before { top: 15px; right: 15px; font-size: 8px; }
  .proposal-card-grid { grid-template-columns: 1fr; gap: 24px; }
  .proposal-card:nth-child(2) { margin-left: 7vw; }
  .proposal-cover { min-height: 285px; }
  .proposal-cover strong { font-size: clamp(3.4rem, 16vw, 5.4rem); }
  .proposal-note { align-items: flex-start; }
  .proposal-stamp { width: 76px; height: 76px; right: 24px; top: -24px; font-size: 7px; }
  .proposal-stamp strong { font-size: 21px; }
}
/* Editorial jersey catalogue */
.busana-open { overflow: hidden; }
.busana-dialog { width: min(1040px, calc(100% - 28px)); max-height: 90svh; padding: 0; border: 1px solid #a5834f70; background: #171110; color: var(--ivory); overflow: auto; }
.busana-dialog::backdrop { background: #090607dc; backdrop-filter: blur(9px); }
.busana-close { position: absolute; top: 16px; right: 16px; z-index: 3; width: 36px; height: 36px; border: 1px solid #c6aa7a50; border-radius: 50%; background: #171110; color: var(--champagne); font-size: 22px; }
.busana-layout { display: grid; grid-template-columns: 1fr 1fr; }
.busana-layout[hidden], .busana-summary[hidden] { display: none; }
.busana-design-link { margin-top: 20px; width: 100%; display: flex; justify-content: space-between; gap: 18px; padding: 15px 18px; background: #3b2420; color: #f2deb5; border: 1px solid #6a4430; font-size: 12px; text-align: left; }
.busana-back { align-self: flex-start; margin-bottom: 28px; padding: 0; color: #c6ad87; background: transparent; border: 0; font-size: 10px; }
.busana-showcase { position: relative; min-width: 0; padding: 28px 28px 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: radial-gradient(ellipse at 50% 45%, #8b6550 0, #5b3935 40%, #301d20 78%); overflow: hidden; }
.busana-showcase-top { width: 100%; display: flex; justify-content: space-between; font-size: 9px; letter-spacing: 2px; color: #e5cda4; }
.busana-watermark { position: absolute; font: 400 390px/1 var(--display); color: #f5dcaa0e; pointer-events: none; }
#jersey-main { position: relative; width: 100%; height: 420px; object-fit: contain; margin: 20px 0 10px; filter: drop-shadow(0 22px 18px #10050766); }
.busana-view-picker { display: flex; padding: 4px; gap: 4px; border: 1px solid #d9c3a04a; border-radius: 30px; background: #140b0d50; position: relative; }
.busana-view-picker button { border: 0; border-radius: 24px; padding: 8px 20px; background: transparent; color: #d8c6af; font-size: 11px; }
.busana-view-picker button[aria-pressed="true"] { background: #dfc59b; color: #2a1916; }
.busana-showcase-note { font-size: 8px; letter-spacing: 3px; color: #d2b99c; margin: 22px 0 0; }
.busana-editorial { padding: 45px 36px 24px; min-width: 0; display: flex; flex-direction: column; justify-content: center; }
.busana-editorial .scene-kicker { font-size: 9px; letter-spacing: 2px; padding-right: 20px; }
.busana-dialog h2 { font: 400 45px/1.08 var(--display); letter-spacing: -1px; margin: 20px 0 16px; }
.busana-dialog h2 em { color: var(--champagne); font-weight: 400; }
.busana-deck { font-size: 12px; line-height: 1.8; color: #bdafa3; }
.busana-sleeve-picker { display: flex; gap: 8px; margin: 22px 0 30px; }
.busana-sleeve-picker button { flex: 1; padding: 11px 8px; border: 1px solid #d9c3a038; background: transparent; color: #c4b7a5; font-size: 11px; }
.busana-sleeve-picker button[aria-pressed="true"] { border-color: #cbaa73; color: #f2dfbd; background: #d9c3a00d; }
.busana-guide h3 { font-size: 9px; font-weight: 500; letter-spacing: 2px; text-transform: uppercase; margin: 0 0 8px; color: #bca786; }
.busana-guide-row { display: flex; gap: 18px; border-top: 1px solid #d9c3a020; padding: 14px 0; }
.busana-guide-row > span { flex: 0 0 29px; font: 27px/1 var(--display); color: #d5bb91; text-align: center; }
.busana-guide-row small { display: block; font: 8px var(--body); letter-spacing: 2px; margin-top: 5px; }
.busana-guide-row h4 { margin: 0 0 5px; font-size: 12px; font-weight: 500; }
.busana-guide-row p { margin: 0; font-size: 11px; line-height: 1.7; color: #b3a598; }
.busana-source { font-size: 9px; color: #998979; margin-top: 20px; }
@media (max-width: 680px) { .busana-layout { grid-template-columns: 1fr; } .busana-showcase { padding: 24px 22px 20px; } #jersey-main { height: 310px; margin: 16px 0 6px; } .busana-editorial { padding: 26px 24px; } .busana-dialog h2 { font-size: 39px; } .busana-showcase-top { padding-right: 26px; } }

/* Shared letter design used by the published venue and admission letters. */
.letter-dialog { width: min(96vw, 1180px); height: min(92dvh, 820px); max-width: none; max-height: none; margin: auto; padding: 0; border: 0; overflow: visible; color: #3b2118; background: transparent; }
.letter-dialog::backdrop { background: rgba(7,3,5,.88); backdrop-filter: blur(8px) saturate(.82); }
.letter-dialog-stage { position: relative; width: 100%; height: 100%; display: grid; place-items: center; isolation: isolate; }
.letter-bottle { position: absolute; width: min(36vw, 330px); height: min(64vh, 520px); border: 2px solid rgba(189,211,195,.16); border-radius: 43% 43% 22% 22% / 18% 18% 12% 12%; transform: translate(28%, 2%) rotate(8deg); opacity: .62; background: linear-gradient(90deg, rgba(111,154,139,.05), rgba(229,244,215,.12) 48%, rgba(54,91,80,.05)); box-shadow: inset 18px 0 30px rgba(229,244,215,.08), inset -24px 0 34px rgba(8,25,24,.25), 0 30px 70px rgba(0,0,0,.3); z-index: -1; }
.letter-bottle::before { content: ''; position: absolute; left: 22%; top: -17%; width: 56%; height: 22%; border: 2px solid rgba(189,211,195,.2); border-bottom: 0; border-radius: 50% 50% 0 0; background: rgba(161,193,169,.06); }
.letter-bottle::after { content: ''; position: absolute; inset: 11% 10% 8%; border-radius: 45%; border: 1px solid rgba(255,245,213,.1); transform: rotate(-5deg); }
.letter-bottle-cork { position: absolute; left: 33%; top: -20%; width: 34%; height: 11%; border-radius: 5px 5px 2px 2px; background: linear-gradient(90deg,#5e321c,#c08b4b 48%,#5a2b19); box-shadow: 0 5px 5px rgba(0,0,0,.3); }
.letter-scroll { width: min(720px, calc(100% - 44px)); max-height: calc(100% - 34px); position: relative; filter: drop-shadow(0 28px 32px rgba(0,0,0,.4)); transform: rotate(-1deg); animation: letter-unroll .65s cubic-bezier(.16,1,.3,1) both; }
.letter-paper { position: relative; max-height: calc(92dvh - 92px); overflow-y: auto; overscroll-behavior: contain; padding: clamp(42px, 7vw, 78px) clamp(28px, 7vw, 84px) clamp(38px, 6vw, 64px); border: 1px solid rgba(112,65,35,.65); background: radial-gradient(circle at 20% 12%, rgba(255,255,255,.48), transparent 25%), radial-gradient(circle at 80% 85%, rgba(124,64,29,.14), transparent 34%), repeating-linear-gradient(0deg, rgba(102,58,28,.035) 0 1px, transparent 1px 4px), #d9b878; box-shadow: inset 0 0 0 7px rgba(103,56,30,.08), inset 0 0 70px rgba(79,39,18,.2); scrollbar-color: #8e552e rgba(80,43,20,.1); }
.letter-paper::before { content: ''; position: absolute; inset: 16px; border: 1px solid rgba(91,48,23,.28); pointer-events: none; }
.letter-roll { height: 25px; position: relative; z-index: 2; border: 1px solid rgba(96,51,25,.7); background: linear-gradient(180deg,#f0d89e 0%,#b6793e 45%,#e0b66f 72%,#89502c 100%); box-shadow: 0 5px 8px rgba(57,28,14,.25); }
.letter-roll::before, .letter-roll::after { content: ''; position: absolute; top: 3px; bottom: 3px; width: 18px; border-radius: 50%; background: linear-gradient(90deg,#704023,#d49b51 48%,#6d3a20); }
.letter-roll::before { left: -9px; }.letter-roll::after { right: -9px; }
.letter-roll-top { margin: 0 -12px -9px; border-radius: 50% 50% 7px 7px; }.letter-roll-bottom { margin: -9px -12px 0; border-radius: 7px 7px 50% 50%; }
.letter-dialog-close { position: absolute; z-index: 3; top: 13px; right: 15px; width: 42px; height: 42px; display: grid; place-items: center; border: 1px solid rgba(76,39,19,.48); border-radius: 50%; color: #4a291a; background: rgba(244,213,151,.65); font: 400 27px/1 var(--body); cursor: pointer; transition: transform .25s ease, background .25s ease; }
.letter-dialog-close:hover { transform: rotate(8deg) scale(1.06); background: #f1d294; }
.letter-dialog-close:focus-visible, .letter-map-link:focus-visible { outline: 2px solid #4d291b; outline-offset: 3px; }
.letter-kicker { margin: 0 0 18px; color: #744426; font-size: 11px; font-weight: 800; letter-spacing: .2em; }
.letter-paper h2 { max-width: 540px; margin: 0; color: #3c2118; font: 500 clamp(2.8rem, 6vw, 5.5rem)/.96 var(--display); letter-spacing: -.055em; }
.letter-divider { display: block; margin: 30px 0 25px; color: #8d542d; font-size: 20px; letter-spacing: .55em; }
.letter-body { max-width: 570px; color: #553020; font: 400 clamp(1rem, 1.5vw, 1.2rem)/1.75 var(--body); white-space: pre-wrap; }
.letter-map-link { display: inline-block; margin-top: 22px; color: #5b2b1b; font-size: 13px; font-weight: 800; text-underline-offset: 5px; }
.letter-signoff { margin: 44px 0 0; color: #704426; font: 1.2rem/1.5 var(--script); }.letter-signoff strong { font: 600 13px/1.5 var(--body); letter-spacing: .1em; }
@keyframes letter-unroll { from { opacity: 0; transform: translateY(25px) rotate(-4deg) scaleY(.72); transform-origin: 50% 0; } to { opacity: 1; transform: translateY(0) rotate(-1deg) scaleY(1); } }

.busana-dialog:not(.is-catalogue) { width: min(96vw, 1180px); height: min(92dvh, 820px); max-width: none; max-height: none; margin: auto; padding: 0; border: 0; overflow: visible; color: #3b2118; background: transparent; }
.busana-dialog::backdrop { background: rgba(7,3,5,.88); backdrop-filter: blur(8px) saturate(.82); }
.busana-summary { width: 100%; height: 100%; }
.busana-dialog:not(.is-catalogue) > .busana-close { display: none; }
.busana-summary .letter-dialog-close { position: absolute; top: 13px; right: 15px; width: 42px; height: 42px; background: rgba(244,213,151,.65); border: 1px solid rgba(76,39,19,.48); color: #4a291a; }
@media (max-width: 680px) {
  .busana-dialog:not(.is-catalogue) { width: 100vw; height: 100dvh; }
  .letter-scroll { width: calc(100% - 22px); max-height: calc(100% - 18px); }
  .letter-paper { max-height: calc(100dvh - 75px); padding: 48px 26px 40px; }
  .letter-paper h2 { font-size: clamp(2.8rem, 14vw, 5rem); }
  .letter-body { font-size: 16px; line-height: 1.7; }
  .busana-summary .letter-dialog-close { top: 12px; right: 12px; }
}
@media (prefers-reduced-motion: reduce) { .letter-scroll { animation: none !important; transform: none !important; } }

/* Personal invitation: printed cream card and patterned burgundy envelope. */
.invite-card-wrap { position: relative; width: min(100%, 440px); padding: 0 12px 22px; container-type: inline-size; }
.invite-envelope { position: absolute; inset: 32% -8px 0; transform: rotate(-5deg); border: 1px solid #9d7453; background-color: #4c1d26; background-image: repeating-linear-gradient(45deg, transparent 0 20px, #cfac7014 21px, transparent 22px 42px), repeating-linear-gradient(-45deg, transparent 0 20px, #cfac7014 21px, transparent 22px 42px); box-shadow: 0 25px 60px #0006; }
.invite-card { aspect-ratio: 3/4; padding: 8cqw 7cqw 7cqw; border: 0; outline: 0; color: #392b23; background: radial-gradient(#a8864520 .7px, transparent .7px), #eee4ce; background-size: 5px 5px; box-shadow: 0 15px 40px #0006; }
.invite-card::before { inset: 12px; border: 1px solid #ac8a4f; }
.invite-card::after { content: ''; position: absolute; inset: 17px; border: 1px solid #ac8a4f60; pointer-events: none; }
.invite-corner { position: absolute; width: 15cqw; height: 15cqw; background: url('assets/invitation-corner.svg') center/contain no-repeat; pointer-events: none; }
.corner-tl { top: 21px; left: 21px; }.corner-tr { top: 21px; right: 21px; transform: rotate(90deg); }.corner-bl { bottom: 21px; left: 21px; transform: rotate(-90deg); }.corner-br { bottom: 21px; right: 21px; transform: rotate(180deg); }
.card-crest { width: 20cqw; height: 20cqw; object-fit: contain; }
.card-top { margin-top: 3cqw; font: 500 5.2cqw/1 var(--display); letter-spacing: .18em; color: #392b23; }
.card-battalion { margin-top: 2cqw; font-size: 1.8cqw; letter-spacing: .2em; }
.card-ornament { display: flex; align-items: center; gap: 12px; width: 65%; height: auto; margin: 5cqw 0; border: 0; border-radius: 0; transform: none; color: #a5864e; font-size: 3cqw; }
.card-ornament::before, .card-ornament::after { content: ''; height: 1px; background: #b9996060; flex: 1; }
.card-greeting { font: 400 2.4cqw/1.5 var(--body); margin: 0; color: #76624b; }
.invite-card strong { width: 100%; min-height: 12cqw; display: flex; align-items: center; justify-content: center; font: italic 500 7.3cqw/1.15 var(--display); margin: 2cqw 0 3cqw; color: #392b23; }
.card-message { max-width: 100%; font: 400 3cqw/1.7 Georgia, serif; color: #76624b; }
.card-date { width: 80%; border-top: 1px solid #b9996050; border-bottom: 1px solid #b9996050; padding: 3.5cqw 0; margin: 5cqw 0 4cqw; font-size: 2.6cqw; letter-spacing: .15em; color: #392b23; font-weight: 400; }
.card-signature { margin: 0 0 2cqw; font: italic 3.5cqw/1.5 Georgia, serif; color: #392b23; }
.invite-card small { margin: 0; font-size: 1.9cqw; line-height: 1.9; letter-spacing: .12em; }
.invite-wax { position: absolute; right: -14px; bottom: 0; width: 58px; height: 58px; display: grid; place-items: center; border: 3px double #b58a53; border-radius: 50%; background: #6a2832; color: #d8b579; font: 18px Georgia, serif; transform: rotate(10deg); box-shadow: 0 5px 15px #0005; }
@media (max-width: 620px) { .invite-card-wrap { width: min(100%, 390px); } .invite-wax { right: -4px; width: 48px; height: 48px; } }


.music-panel { inset: 0; margin: auto; width: min(400px, calc(100vw - 48px)); max-height: min(680px, 82dvh); }
.music-panel::backdrop { background: rgba(10, 4, 7, .5); }

/* Shared performer treatment for the Saturday Colour Festival. */
.speaker-spotlight--dj .speaker-spotlight__portrait { align-self: stretch; align-items: end; }
.speaker-spotlight--dj .speaker-spotlight__portrait img { width: 100%; height: 320px; margin-left: 0; object-fit: cover; object-position: 50% 25%; mask-image: linear-gradient(to right, transparent, #000 16%, #000 90%, transparent), linear-gradient(to bottom, #000 70%, transparent 100%); mask-composite: intersect; }
.speaker-spotlight--dj .speaker-spotlight__halo { background: radial-gradient(ellipse, rgba(165,56,76,.26), transparent 68%); }
@media (max-width: 767px) {
  .speaker-spotlight--dj .speaker-spotlight__portrait { width: min(100%, 310px); margin-top: 14px; }
  .speaker-spotlight--dj .speaker-spotlight__portrait img { height: 300px; }
}

/* A theatre bill under a warm, dust-filled spotlight. */
.performer { padding: 120px 7vw 100px; background: radial-gradient(ellipse at 76% 30%, #39241f66, transparent 58%), linear-gradient(110deg,#200b11,#0c0608 65%,#1b0b10); }
.performer-layout { max-width: 1180px; grid-template-columns: 1fr 1fr; gap: clamp(40px, 7vw, 100px); }
.performer-head { padding-block: 30px; }
.performer .scene-kicker { font-size: 10px; letter-spacing: .24em; color: var(--champagne); }
.performer-small { display: flex; align-items: center; gap: 12px; margin: 48px 0 24px; font-size: 10px; letter-spacing: .24em; color: var(--champagne); }
.performer-small > span { width: 28px; height: 1px; background: var(--champagne); }
.performer h2 { font-size: clamp(78px, 10vw, 140px); line-height: .9; letter-spacing: -.065em; margin-bottom: 28px; }
.performer-summary { font-size: 16px; line-height: 1.85; margin-bottom: 26px; }
.performer-listen { display: inline-flex; align-items: center; gap: 14px; min-height: 48px; padding: 10px 19px; border: 1px solid #d9c3a070; background: #d9c3a00a; color: var(--ivory); font-size: 12px; transition: background .2s, border-color .2s; }
.performer-listen:hover { background: #d9c3a01a; border-color: var(--champagne); }
.performer-listen:focus-visible { outline: 2px solid var(--champagne); outline-offset: 5px; }
.performer-listen > span:first-child { color: var(--champagne); font-size: 20px; }
.performer .mini-envelope { min-height: 0; width: 100%; max-width: 360px; margin-top: 30px; padding: 20px 0 0; border: 0; border-top: 1px solid #d9c3a030; background: none; font-size: 11px; gap: 14px; }
.performer .mini-envelope .wax-mini { width: 26px; height: 26px; flex-shrink: 0; }
.performer .mini-envelope strong { font-size: 12px; margin-top: 4px; }
.performer-portrait { width: 100%; max-width: 470px; justify-self: center; }
.performer-photo-label { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 16px; color: var(--champagne); font-size: 8px; letter-spacing: .17em; }
.performer-photo-label > span { color: var(--muted); }
.portrait-mat { position: relative; aspect-ratio: .86; padding: 8px; transform: rotate(1.5deg); box-shadow: 0 28px 75px #0009, 0 0 70px #e2b46a0b; }
.portrait-mat::after { content: ''; position: absolute; inset: 13px; border: 1px solid #88633035; pointer-events: none; }
.portrait-mat img { object-position: 41% center; filter: grayscale(1) sepia(.22) contrast(1.05); }
.performer-portrait figcaption { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; margin-top: 20px; }
.performer-portrait__name { font: italic 23px var(--display); color: var(--champagne); }
.performer-portrait__credit { margin: 0; font-size: 10px; max-width: 230px; }
.performer-beam { top: -10%; left: 44%; width: 51%; height: 115%; opacity: .8; background: linear-gradient(to bottom,#ffe4b22b,#e4bf7f0d 65%,transparent); clip-path: polygon(39% 0,52% 0,100% 100%,0 100%); filter: blur(12px); }
.performer-dust { position: absolute; inset: 0 0 0 35%; overflow: hidden; pointer-events: none; clip-path: polygon(46% 0,60% 0,100% 100%,0 100%); }
.performer-dust i { position: absolute; width: 2px; height: 2px; border-radius: 50%; background: #ffebc4; box-shadow: 0 0 5px #ffe1a970; opacity: .3; animation: stage-dust 18s ease-in-out infinite alternate; animation-play-state: paused; }
.performer.is-on-stage .performer-dust i { animation-play-state: running; }
@keyframes stage-dust { 0% { transform: translate3d(-8px,18px,0); opacity: .08; } 45% { opacity: .4; } 100% { transform: translate3d(18px,-44px,0); opacity: .12; } }
.performer-dust i:nth-child(1) { left: 37%; top: 26%; animation-duration: 13s; animation-delay: -1s;  }
.performer-dust i:nth-child(2) { left: 74%; top: 49%; animation-duration: 14s; animation-delay: -2s;  }
.performer-dust i:nth-child(3) { left: 14%; top: 72%; animation-duration: 15s; animation-delay: -3s;  }
.performer-dust i:nth-child(4) { left: 51%; top: 95%; animation-duration: 16s; animation-delay: -4s; width: 3px; height: 3px; filter: blur(.5px); }
.performer-dust i:nth-child(5) { left: 88%; top: 25%; animation-duration: 17s; animation-delay: -5s;  }
.performer-dust i:nth-child(6) { left: 28%; top: 48%; animation-duration: 18s; animation-delay: -6s;  }
.performer-dust i:nth-child(7) { left: 65%; top: 71%; animation-duration: 19s; animation-delay: -7s;  }
.performer-dust i:nth-child(8) { left: 5%; top: 94%; animation-duration: 20s; animation-delay: -8s; width: 3px; height: 3px; filter: blur(.5px); }
.performer-dust i:nth-child(9) { left: 42%; top: 24%; animation-duration: 21s; animation-delay: -9s;  }
.performer-dust i:nth-child(10) { left: 79%; top: 47%; animation-duration: 22s; animation-delay: -10s;  }
.performer-dust i:nth-child(11) { left: 19%; top: 70%; animation-duration: 23s; animation-delay: -11s;  }
.performer-dust i:nth-child(12) { left: 56%; top: 93%; animation-duration: 12s; animation-delay: -12s; width: 3px; height: 3px; filter: blur(.5px); }
.performer-dust i:nth-child(13) { left: 93%; top: 23%; animation-duration: 13s; animation-delay: -13s;  }
.performer-dust i:nth-child(14) { left: 33%; top: 46%; animation-duration: 14s; animation-delay: -14s;  }
.performer-dust i:nth-child(15) { left: 70%; top: 69%; animation-duration: 15s; animation-delay: -15s;  }
.performer-dust i:nth-child(16) { left: 10%; top: 92%; animation-duration: 16s; animation-delay: -16s; width: 3px; height: 3px; filter: blur(.5px); }
.performer-dust i:nth-child(17) { left: 47%; top: 22%; animation-duration: 17s; animation-delay: -0s;  }
.performer-dust i:nth-child(18) { left: 84%; top: 45%; animation-duration: 18s; animation-delay: -1s;  }
.performer-dust i:nth-child(19) { left: 24%; top: 68%; animation-duration: 19s; animation-delay: -2s;  }
.performer-dust i:nth-child(20) { left: 61%; top: 91%; animation-duration: 20s; animation-delay: -3s; width: 3px; height: 3px; filter: blur(.5px); }
.performer-dust i:nth-child(21) { left: 1%; top: 21%; animation-duration: 21s; animation-delay: -4s;  }
.performer-dust i:nth-child(22) { left: 38%; top: 44%; animation-duration: 22s; animation-delay: -5s;  }
.performer-dust i:nth-child(23) { left: 75%; top: 67%; animation-duration: 23s; animation-delay: -6s;  }
.performer-dust i:nth-child(24) { left: 15%; top: 90%; animation-duration: 12s; animation-delay: -7s; width: 3px; height: 3px; filter: blur(.5px); }
.performer-dust i:nth-child(25) { left: 52%; top: 20%; animation-duration: 13s; animation-delay: -8s;  }
.performer-dust i:nth-child(26) { left: 89%; top: 43%; animation-duration: 14s; animation-delay: -9s;  }
.performer-dust i:nth-child(27) { left: 29%; top: 66%; animation-duration: 15s; animation-delay: -10s;  }
.performer-dust i:nth-child(28) { left: 66%; top: 89%; animation-duration: 16s; animation-delay: -11s; width: 3px; height: 3px; filter: blur(.5px); }
@media (max-width: 767px) {
  .performer { padding: 95px 26px 80px; }
  .performer-layout { grid-template-columns: 1fr; gap: 44px; }
  .performer-head { padding: 0; }
  .performer-small { margin-top: 32px; }
  .performer h2 { font-size: clamp(76px, 21vw, 116px); }
  .performer-summary { font-size: 15px; }
  .performer-portrait { width: calc(100% - 12px); max-width: 420px; }
  .performer-beam { left: 5%; width: 100%; }
  .performer-dust { left: 0; }
  .performer-photo-label { font-size: 7px; letter-spacing: .08em; }
}
@media (prefers-reduced-motion: reduce) { .performer-dust i { animation: none; opacity: .2; } }
.low-end .performer-dust i:nth-child(even) { display: none; }

/* Lightweight depth layers keep the long page feeling physical without moving layout. */
.scene-shape { position: absolute; z-index: 0; pointer-events: none; transform: translate3d(0, var(--parallax-offset, 0px), 0); will-change: transform; }
.about-content, .heritage-heading, .heritage-layout, .performer-layout, .programme-heading, .programme-layout,
.information-heading, .envelope-grid, .invitation-copy, .invite-card-wrap, .gallery-top, .gallery-track,
.message-wall-heading, .message-wall-layout, .proposal-heading, .proposal-stage, .proposal-note, .finale-content { position: relative; z-index: 1; }
.about-orbit { top: 7%; right: -15%; width: min(52vw, 620px); aspect-ratio: 1; border: 1px solid rgba(217,195,160,.14); border-radius: 50%; background: radial-gradient(circle, rgba(143,29,43,.16), transparent 64%); box-shadow: 0 0 0 26px rgba(217,195,160,.025), 0 0 0 27px rgba(217,195,160,.06); }
.about-orbit::after { content: ''; position: absolute; inset: 13%; border: 1px dashed rgba(217,195,160,.13); border-radius: inherit; }
.heritage-halo { transform: translate3d(-50%, calc(-55% + var(--parallax-offset, 0px)), 0); will-change: transform; }
.performer-beam { transform: translate3d(0, var(--parallax-offset, 0px), 0); will-change: transform; }
.programme-disc { top: 18%; right: -12%; width: min(42vw, 540px); aspect-ratio: 1; border: 1px solid rgba(217,195,160,.1); border-radius: 50%; background: radial-gradient(circle at 35% 35%, rgba(143,29,43,.16), transparent 63%); box-shadow: inset 0 0 0 18px rgba(217,195,160,.025), inset 0 0 0 19px rgba(217,195,160,.06); }
.programme-disc::after { content: ''; position: absolute; inset: 22%; border: 1px solid rgba(217,195,160,.11); border-radius: 50%; }
.information-seal { left: -12%; bottom: 4%; width: min(36vw, 430px); aspect-ratio: 1; border: 1px solid rgba(217,195,160,.12); border-radius: 50%; background: radial-gradient(circle, rgba(143,29,43,.18), transparent 67%); box-shadow: 0 0 0 18px rgba(217,195,160,.025), 0 0 0 19px rgba(217,195,160,.055); }
.information-seal::after { content: 'BH'; position: absolute; inset: 18%; display: grid; place-items: center; border: 1px dashed rgba(217,195,160,.11); border-radius: 50%; color: rgba(217,195,160,.16); font: 500 clamp(3rem, 8vw, 7rem)/1 var(--display); letter-spacing: .08em; }
.invitation-sheen { top: 12%; right: 8%; width: min(34vw, 430px); aspect-ratio: .8; border: 1px solid rgba(217,195,160,.1); background: linear-gradient(145deg, rgba(255,244,201,.09), transparent 36%); clip-path: polygon(0 0, 100% 10%, 88% 100%, 12% 92%); opacity: .75; }
.invitation-sheen::after { content: ''; position: absolute; inset: 12%; border: 1px solid rgba(217,195,160,.12); }
.proposal-orbit { transform: translate3d(0, var(--parallax-offset, 0px), 0); will-change: transform; }
.gallery-light { top: -12%; left: 50%; width: min(50vw, 650px); aspect-ratio: 1; transform: translate3d(-50%, var(--parallax-offset, 0px), 0); border-radius: 50%; background: radial-gradient(circle, rgba(217,195,160,.13), transparent 65%); filter: blur(3px); }
.gallery-frame { --gallery-base-y: 0px; transform: translate3d(0, calc(var(--gallery-base-y) + var(--parallax-offset, 0px)), 0); will-change: transform; }
.gallery-frame:nth-child(2) { --gallery-base-y: 26px; transform: translate3d(0, calc(var(--gallery-base-y) + var(--parallax-offset, 0px)), 0); }
.message-orbit { right: -13%; top: 7%; width: min(46vw, 590px); aspect-ratio: 1; border: 1px solid rgba(217,195,160,.1); border-radius: 50%; background: radial-gradient(circle, rgba(143,29,43,.12), transparent 67%); box-shadow: 0 0 0 21px rgba(217,195,160,.025); }
.message-orbit::after { content: ''; position: absolute; inset: 16%; border: 1px dashed rgba(217,195,160,.1); border-radius: inherit; }
.finale-aura { top: 18%; left: 50%; width: min(62vw, 780px); aspect-ratio: 1; transform: translate3d(-50%, var(--parallax-offset, 0px), 0); border: 1px solid rgba(217,195,160,.1); border-radius: 50%; background: radial-gradient(circle, rgba(217,195,160,.12), transparent 62%); box-shadow: 0 0 0 26px rgba(217,195,160,.025), 0 0 0 27px rgba(217,195,160,.05); }
html.reduce-motion .scene-shape, html.reduce-motion [data-parallax-depth] { --parallax-offset: 0px !important; transition: none !important; }
html.reduce-motion [data-depth] { --parallax-x: 0px; --parallax-y: 0px; --parallax-scroll: 0px; }
.low-end .scene-shape { will-change: auto; }
.room-glow, .room-pillar, .curtain { transform: translate3d(var(--parallax-x,0px), calc(var(--parallax-y,0px) + var(--parallax-scroll,0px)), 0); }
.curtain-right { transform: scaleX(-1) translate3d(var(--parallax-x,0px), calc(var(--parallax-y,0px) + var(--parallax-scroll,0px)), 0); }
.chandelier { transform: translateX(-50%) translate3d(var(--parallax-x,0px), calc(var(--parallax-y,0px) + var(--parallax-scroll,0px)), 0) rotate(var(--swing,0deg)); }
@media (max-width: 767px) {
  .gallery-frame:nth-child(2) { --gallery-base-y: 15px; }
  .about-orbit, .programme-disc, .message-orbit { width: 78vw; }
  .information-seal { width: 62vw; left: -24%; }
  .invitation-sheen { right: -8%; width: 56vw; }
}
