/* ============ tokens ============ */
:root{
  --navy:#071C27; --navy-2:#0B2A38; --navy-3:#113B4D; --teal:#1C607A; --teal-glow:#2E8BA6;
  --saffron:#E2561F; --saffron-2:#F07A3A; --vermilion:#B93A15;
  --gold:#E4B24A; --gold-bright:#F6D68A; --gold-deep:#8F6516;
  --ivory:#F4EAD5; --plate:#EFE4CC; --mist:#A8BAC2; --text-2:#D3DDE1;
  --display:'Eczar', 'Georgia', serif;
  --cond:'Teko', 'Arial Narrow', sans-serif;
  --body:'Hanken Grotesk', 'Helvetica Neue', Arial, sans-serif;
  --wrap:min(1240px, 92vw);
  --ease-out:cubic-bezier(.19,1,.22,1);
  --ease-curtain:cubic-bezier(.77,0,.18,1);
  --fan:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%27160%27%20height%3D%27160%27%20viewBox%3D%270%200%20160%20160%27%3E%3Cg%20fill%3D%27none%27%20stroke%3D%27%23E4B24A%27%20stroke-width%3D%271%27%3E%3Cpath%20d%3D%27M2%2080%20A38%2038%200%200%201%2078%2080%27/%3E%3Cpath%20d%3D%27M14.2%2080%20A25.8%2025.8%200%200%201%2065.8%2080%27/%3E%3Cpath%20d%3D%27M26.3%2080%20A13.7%2013.7%200%200%201%2053.7%2080%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%273.3%27%20y2%3D%2770.2%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%277.1%27%20y2%3D%2761.0%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2713.1%27%20y2%3D%2753.1%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2721.0%27%20y2%3D%2747.1%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2730.2%27%20y2%3D%2743.3%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2740.0%27%20y2%3D%2742.0%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2749.8%27%20y2%3D%2743.3%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2759.0%27%20y2%3D%2747.1%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2766.9%27%20y2%3D%2753.1%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2772.9%27%20y2%3D%2761.0%27/%3E%3Cline%20x1%3D%2740%27%20y1%3D%2780%27%20x2%3D%2776.7%27%20y2%3D%2770.2%27/%3E%3Cpath%20d%3D%27M82%20160%20A38%2038%200%200%201%20158%20160%27/%3E%3Cpath%20d%3D%27M94.2%20160%20A25.8%2025.8%200%200%201%20145.8%20160%27/%3E%3Cpath%20d%3D%27M106.3%20160%20A13.7%2013.7%200%200%201%20133.7%20160%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%2783.3%27%20y2%3D%27150.2%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%2787.1%27%20y2%3D%27141.0%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%2793.1%27%20y2%3D%27133.1%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%27101.0%27%20y2%3D%27127.1%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%27110.2%27%20y2%3D%27123.3%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%27120.0%27%20y2%3D%27122.0%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%27129.8%27%20y2%3D%27123.3%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%27139.0%27%20y2%3D%27127.1%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%27146.9%27%20y2%3D%27133.1%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%27152.9%27%20y2%3D%27141.0%27/%3E%3Cline%20x1%3D%27120%27%20y1%3D%27160%27%20x2%3D%27156.7%27%20y2%3D%27150.2%27/%3E%3C/g%3E%3C/svg%3E");
  --tassel:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A//www.w3.org/2000/svg%27%20width%3D%2772%27%20height%3D%2758%27%20viewBox%3D%270%200%2072%2058%27%3E%3Crect%20x%3D%270%27%20y%3D%270%27%20width%3D%2772%27%20height%3D%273%27%20fill%3D%27%23E4B24A%27/%3E%3Cline%20x1%3D%2736%27%20y1%3D%273%27%20x2%3D%2736%27%20y2%3D%2719%27%20stroke%3D%27%23E4B24A%27%20stroke-width%3D%271.3%27/%3E%3Ccircle%20cx%3D%2736%27%20cy%3D%2722%27%20r%3D%273.4%27%20fill%3D%27%23F6D68A%27/%3E%3Cpath%20d%3D%27M29.5%2026%20H42.5%20L39.5%2040%20H32.5%20Z%27%20fill%3D%27%23E4B24A%27/%3E%3Cline%20x1%3D%2731%27%20y1%3D%2740%27%20x2%3D%2729.5%27%20y2%3D%2754%27%20stroke%3D%27%23C9932E%27%20stroke-width%3D%271%27/%3E%3Cline%20x1%3D%2733%27%20y1%3D%2740%27%20x2%3D%2732.1%27%20y2%3D%2754%27%20stroke%3D%27%23C9932E%27%20stroke-width%3D%271%27/%3E%3Cline%20x1%3D%2735%27%20y1%3D%2740%27%20x2%3D%2734.7%27%20y2%3D%2754%27%20stroke%3D%27%23C9932E%27%20stroke-width%3D%271%27/%3E%3Cline%20x1%3D%2737%27%20y1%3D%2740%27%20x2%3D%2737.3%27%20y2%3D%2754%27%20stroke%3D%27%23C9932E%27%20stroke-width%3D%271%27/%3E%3Cline%20x1%3D%2739%27%20y1%3D%2740%27%20x2%3D%2739.9%27%20y2%3D%2754%27%20stroke%3D%27%23C9932E%27%20stroke-width%3D%271%27/%3E%3Cline%20x1%3D%2741%27%20y1%3D%2740%27%20x2%3D%2742.5%27%20y2%3D%2754%27%20stroke%3D%27%23C9932E%27%20stroke-width%3D%271%27/%3E%3Cline%20x1%3D%2710%27%20y1%3D%273%27%20x2%3D%2710%27%20y2%3D%2711%27%20stroke%3D%27%23E4B24A%27%20stroke-width%3D%271%27/%3E%3Ccircle%20cx%3D%2710%27%20cy%3D%2713.5%27%20r%3D%272.4%27%20fill%3D%27%23E4B24A%27/%3E%3Cpath%20d%3D%27M7%2017%20L10%2024%20L13%2017%20Z%27%20fill%3D%27%23C9932E%27/%3E%3Cline%20x1%3D%2762%27%20y1%3D%273%27%20x2%3D%2762%27%20y2%3D%2711%27%20stroke%3D%27%23E4B24A%27%20stroke-width%3D%271%27/%3E%3Ccircle%20cx%3D%2762%27%20cy%3D%2713.5%27%20r%3D%272.4%27%20fill%3D%27%23E4B24A%27/%3E%3Cpath%20d%3D%27M59%2017%20L62%2024%20L65%2017%20Z%27%20fill%3D%27%23C9932E%27/%3E%3C/svg%3E");
  --rope:repeating-linear-gradient(135deg, #E4B24A 0 4px, #8F6516 4px 8px);
  --goldtext:linear-gradient(180deg, #FBE9A6 0%, #E9BE52 32%, #C68C1F 52%, #F5D680 70%, #B07417 100%);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth; -webkit-text-size-adjust:100%}
body{margin:0; background:var(--navy); color:var(--ivory); font:400 17px/1.6 var(--body); overflow-x:hidden}
img{max-width:100%; display:block}
a{color:inherit}
::selection{background:var(--gold); color:var(--navy)}
:focus-visible{outline:2px solid var(--gold-bright); outline-offset:3px; border-radius:2px}
.skip{position:absolute; left:-999px; top:8px; background:var(--gold); color:var(--navy); padding:.6rem 1rem; z-index:10001; font-weight:600}
.skip:focus{left:8px}
h1,h2,h3,h4{font-family:var(--display); font-weight:800; margin:0; line-height:1.05; letter-spacing:-.005em}
h2{font-size:clamp(2.4rem, 5.2vw, 4.2rem)}
.gold{filter:drop-shadow(0 2px 0 rgba(90,60,10,.9)) drop-shadow(0 8px 18px rgba(0,0,0,.45))}
.gold > span{background:var(--goldtext); -webkit-background-clip:text; background-clip:text; color:transparent}
p{margin:0}
.wrap{width:var(--wrap); margin:0 auto; position:relative}
.section{position:relative; padding:clamp(88px, 10vw, 150px) 0}
.lede{max-width:62ch; font-size:clamp(1.05rem,1.35vw,1.25rem); line-height:1.65; color:var(--text-2); margin-top:1.4rem}
.lede + .lede{margin-top:1rem}
.lede a{color:var(--gold)}
.cond{font-family:var(--cond); font-weight:500; text-transform:uppercase; letter-spacing:.06em; line-height:1}
.fanbg{background-image:var(--fan); background-size:160px 160px}
.texture::before{content:""; position:absolute; inset:0; background-image:var(--fan); background-size:160px 160px; opacity:.07; pointer-events:none; mask-image:linear-gradient(180deg, transparent, #000 15%, #000 85%, transparent); -webkit-mask-image:linear-gradient(180deg, transparent, #000 15%, #000 85%, transparent)}
.rope{height:6px; background:var(--rope)}
.tassels{height:58px; background-image:var(--tassel); background-repeat:repeat-x; background-position:center top}

/* film grain */
body::after{content:""; position:fixed; inset:-60%; width:220%; height:220%; pointer-events:none; z-index:9000; opacity:.05; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain .9s steps(5) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-4%)}60%{transform:translate(-4%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}

/* ============ buttons ============ */
.btn{position:relative; display:inline-flex; align-items:center; justify-content:center; gap:.5rem; padding:.95rem 1.7rem; border-radius:4px; background:transparent; color:inherit; font:600 .95rem/1 var(--body); letter-spacing:.01em; text-decoration:none; overflow:hidden; transition:transform .3s var(--ease-out), box-shadow .3s, background .3s, color .3s; white-space:nowrap; border:0; cursor:pointer}
.btn-lg{padding:1.15rem 2.1rem; font-size:1.05rem}
.btn-gold{background:linear-gradient(135deg, var(--gold-bright) 0%, var(--gold) 48%, #C08A2C 100%); color:var(--navy); box-shadow:0 0 0 1px rgba(246,214,138,.35), 0 14px 34px -14px rgba(228,178,74,.75)}
.btn-gold::after{content:""; position:absolute; top:-40%; bottom:-40%; left:-30%; width:35%; background:linear-gradient(100deg, transparent, rgba(255,255,255,.55), transparent); transform:skewX(-20deg) translateX(-160%); transition:transform .8s var(--ease-out)}
.btn-gold:hover{transform:translateY(-2px); box-shadow:0 0 0 1px rgba(246,214,138,.7), 0 22px 44px -14px rgba(228,178,74,.9)}
.btn-gold:hover::after{transform:skewX(-20deg) translateX(460%)}
.btn-ghost{color:var(--ivory); background:rgba(7,28,39,.35); box-shadow:inset 0 0 0 1px rgba(244,234,213,.45); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px)}
.btn-ghost:hover{background:rgba(244,234,213,.12); box-shadow:inset 0 0 0 1px rgba(244,234,213,.85)}
.btn-saffron{background:linear-gradient(135deg, var(--saffron-2), var(--saffron) 60%, var(--vermilion)); color:var(--ivory); box-shadow:0 10px 24px -12px rgba(226,86,31,.8)}
.btn-saffron:hover{transform:translateY(-2px); box-shadow:0 16px 30px -12px rgba(226,86,31,.9)}
.btn-navy{background:var(--navy); color:var(--gold-bright)}
.btn-navy:hover{background:var(--navy-3); transform:translateY(-2px)}
.btn-line{color:var(--ivory); box-shadow:inset 0 0 0 1px rgba(244,234,213,.35)}
.btn-line:hover{box-shadow:inset 0 0 0 1px var(--gold); color:var(--gold-bright)}

/* ============ progress + nav ============ */
.progress{position:fixed; top:0; left:0; height:3px; width:0; background:linear-gradient(90deg, var(--saffron), var(--gold-bright)); z-index:10000; pointer-events:none}
.nav{position:fixed; top:0; left:0; right:0; z-index:900; display:flex; align-items:center; gap:2rem; padding:0 max(24px, 4vw); height:80px; transition:background .5s, box-shadow .5s, height .4s}
.nav::before{content:""; position:absolute; inset:0; background:linear-gradient(180deg, rgba(7,28,39,.55), rgba(7,28,39,0)); pointer-events:none; transition:opacity .5s}
.nav.solid{background:rgba(7,28,39,.86); backdrop-filter:blur(14px) saturate(1.2); -webkit-backdrop-filter:blur(14px) saturate(1.2); box-shadow:0 1px 0 rgba(228,178,74,.25); height:68px}
.nav.solid::before{opacity:0}
.brand{position:relative; display:block; height:46px; flex:none; filter:drop-shadow(0 2px 6px rgba(0,0,0,.5))}
.brand img{height:100%; width:auto}
.nav-links{position:relative; display:flex; gap:1.9rem; margin-left:auto}
.nav-links a{font:500 1.25rem var(--cond); text-transform:uppercase; letter-spacing:.08em; color:rgba(244,234,213,.9); text-decoration:none; padding:.4rem 0; position:relative; text-shadow:0 1px 4px rgba(0,0,0,.5)}
.nav-links a::after{content:""; position:absolute; left:0; bottom:0; height:2px; width:100%; background:var(--gold); transform:scaleX(0); transform-origin:right; transition:transform .45s var(--ease-out)}
.nav-links a:hover{color:var(--gold-bright)}
.nav-links a:hover::after{transform:scaleX(1); transform-origin:left}
.nav-cta{position:relative; animation:pulse 2.8s ease-in-out infinite}
@keyframes pulse{0%,100%{box-shadow:0 0 0 1px rgba(246,214,138,.35), 0 0 0 0 rgba(228,178,74,0)}50%{box-shadow:0 0 0 1px rgba(246,214,138,.6), 0 0 26px 2px rgba(228,178,74,.4)}}
.burger{position:relative; display:none; margin-left:auto; background:none; border:0; color:var(--ivory); font:500 1.3rem var(--cond); text-transform:uppercase; letter-spacing:.08em; padding:.5rem 0; cursor:pointer; text-shadow:0 1px 4px rgba(0,0,0,.6)}
.menu{position:fixed; inset:0; z-index:850; background:linear-gradient(180deg, #071C27 0%, #0E3344 100%); display:flex; flex-direction:column; justify-content:center; padding:0 8vw; gap:.4rem; opacity:0; visibility:hidden; transition:opacity .35s, visibility .35s}
.menu.open{opacity:1; visibility:visible}
.menu a{font:800 clamp(2rem, 9vw, 3rem)/1.25 var(--display); color:var(--ivory); text-decoration:none}
.menu a:hover{color:var(--gold-bright)}
.menu .btn{margin-top:1.5rem; font-family:var(--body); font-size:1.05rem; align-self:flex-start; font-weight:600}

/* ============ curtain ============ */
.curtain{position:fixed; inset:0; z-index:9500; display:grid; place-items:center; pointer-events:none}
.curtain-panel{position:absolute; top:0; bottom:0; width:51%; background:
  repeating-linear-gradient(90deg, rgba(0,0,0,.38) 0 14px, rgba(255,255,255,.06) 14px 30px, rgba(0,0,0,.16) 30px 58px),
  linear-gradient(180deg, #164F64 0%, #0F3B4D 40%, #082433 100%);
  box-shadow:inset 0 -120px 160px -80px rgba(0,0,0,.6); transition:transform 1.25s var(--ease-curtain)}
.curtain-panel::after{content:""; position:absolute; left:0; right:0; bottom:0; height:18px; background:repeating-linear-gradient(90deg, var(--gold) 0 5px, var(--gold-deep) 5px 8px); box-shadow:0 -2px 0 var(--gold-bright)}
.curtain-panel.left{left:0; box-shadow:inset -40px 0 60px -30px rgba(0,0,0,.7)}
.curtain-panel.right{right:0}
.curtain.open .left{transform:translateX(-104%)}
.curtain.open .right{transform:translateX(104%)}
.curtain-brand{position:relative; text-align:center; transition:opacity .5s, transform .5s}
.curtain-brand img{width:min(260px, 46vw); margin:0 auto 1rem; filter:drop-shadow(0 8px 30px rgba(0,0,0,.5))}
.curtain-brand p{font:500 1.15rem var(--cond); text-transform:uppercase; letter-spacing:.14em; color:var(--gold-bright)}
.curtain.open .curtain-brand{opacity:0; transform:scale(.96)}
.curtain.gone{display:none}

/* ============ hero ============ */
.hero{position:relative; min-height:100svh; display:grid; grid-template-rows:1fr auto; overflow:hidden; isolation:isolate; background:var(--navy)}
.hero-video{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:-4; transform:scale(1.08); transition:transform 2.4s var(--ease-out); filter:saturate(.75) contrast(1.05)}
.hero.on .hero-video{transform:scale(1)}
.hero-tint{position:absolute; inset:0; z-index:-3; background:var(--navy-2); mix-blend-mode:multiply; opacity:.82}
.hero-shade{position:absolute; inset:0; z-index:-2; background:
  radial-gradient(55% 55% at 50% 22%, rgba(46,139,166,.42) 0%, rgba(46,139,166,0) 70%),
  linear-gradient(180deg, rgba(7,28,39,.35) 0%, rgba(7,28,39,.15) 35%, rgba(7,28,39,.6) 70%, var(--navy) 100%),
  linear-gradient(90deg, rgba(7,28,39,.55), transparent 25%, transparent 75%, rgba(7,28,39,.55))}
.proscenium{position:absolute; top:0; left:0; width:100%; z-index:-1; pointer-events:none;
  mask-image:linear-gradient(180deg, #000 55%, transparent 100%); -webkit-mask-image:linear-gradient(180deg, #000 55%, transparent 100%)}
.proscenium img{width:100%; height:auto; display:block; filter:saturate(1.05)}
.crest{position:absolute; left:50%; top:calc(100vw * 0.2 - 10px); transform:translateX(-50%); width:min(430px, 40vw); z-index:-1; opacity:0; transition:opacity 1.4s .6s; pointer-events:none;
  mask-image:radial-gradient(60% 70% at 50% 40%, #000 45%, transparent 100%); -webkit-mask-image:radial-gradient(60% 70% at 50% 40%, #000 45%, transparent 100%)}
.hero.on .crest{opacity:.9}
.beam{position:absolute; top:-8%; left:50%; width:min(70vw, 900px); height:115%; transform:translateX(-50%); z-index:-1; mix-blend-mode:screen; opacity:0; transition:opacity 2.2s ease; animation:flicker 7s ease-in-out infinite; pointer-events:none}
.hero.on .beam{opacity:.7}
@keyframes flicker{0%,100%{filter:brightness(1)}12%{filter:brightness(.86)}19%{filter:brightness(1.05)}31%{filter:brightness(.92)}48%{filter:brightness(1.08)}63%{filter:brightness(.9)}77%{filter:brightness(1.03)}}
.dust{position:absolute; inset:0; z-index:-1; pointer-events:none; overflow:hidden}
.dust i{position:absolute; width:3px; height:3px; border-radius:50%; background:var(--gold-bright); opacity:0; filter:blur(.4px); animation:mote var(--t) linear var(--dl) infinite}
@keyframes mote{0%{transform:translate3d(0,0,0); opacity:0}10%{opacity:var(--o)}90%{opacity:var(--o)}100%{transform:translate3d(var(--x), var(--y), 0); opacity:0}}
.hero-content{position:relative; align-self:center; text-align:center; padding:calc(100vw * .16 + 20px) 4vw 16px; z-index:1}
.hero-kicker{font:500 clamp(1.05rem, 1.5vw, 1.35rem) var(--cond); text-transform:uppercase; letter-spacing:.16em; color:var(--gold-bright); opacity:0; transform:translateY(10px); transition:opacity 1s .9s, transform 1s .9s var(--ease-out)}
.hero.on .hero-kicker{opacity:1; transform:none}
.hero-title{font-size:clamp(3rem, 8.6vw, 7.6rem); line-height:.98; margin:.18em 0 .22em; font-weight:800; letter-spacing:.005em}
.hero-title .w{display:inline-block; overflow:hidden; vertical-align:bottom; padding:.08em .08em .1em; margin:-.08em -.08em -.1em}
.hero-title .w > span{display:inline-block; transform:translateY(112%) rotate(2deg); transform-origin:left bottom; transition:transform 1.3s var(--ease-out);
  background:var(--goldtext); -webkit-background-clip:text; background-clip:text; color:transparent;
  filter:drop-shadow(0 2px 0 #7A5210) drop-shadow(0 4px 0 #5C3C0B) drop-shadow(0 12px 22px rgba(0,0,0,.6))}
.hero.on .hero-title .w > span{transform:none}
.hero.on .hero-title .w:nth-child(2) > span{transition-delay:.12s}
.hero.on .hero-title .w:nth-child(4) > span{transition-delay:.24s}
.hero.on .hero-title .w:nth-child(5) > span{transition-delay:.36s}
.hero-tag{font:300 clamp(1.05rem, 1.8vw, 1.45rem) var(--body); color:rgba(244,234,213,.88); letter-spacing:.01em; opacity:0; transition:opacity 1.2s 1.1s}
.hero.on .hero-tag{opacity:1}
.hero-facts{margin:1rem auto 0; opacity:0; transition:opacity 1s 1.35s; text-shadow:0 2px 10px rgba(0,0,0,.6)}
.hero.on .hero-facts{opacity:1}
.hero-facts .date{font:500 clamp(1.9rem, 3.4vw, 2.9rem) var(--cond); text-transform:uppercase; letter-spacing:.08em; color:var(--gold)}
.hero-facts .date b{font-weight:500; color:var(--ivory); padding:0 .35em}
.hero-facts .where{font:500 clamp(1rem, 1.6vw, 1.35rem) var(--cond); text-transform:uppercase; letter-spacing:.1em; color:var(--ivory); margin-top:.1rem}
.hero-facts .where b{font-weight:500; color:var(--gold); padding:0 .4em}
.hero-cta{display:flex; flex-wrap:wrap; justify-content:center; gap:.9rem; margin-top:1.5rem; opacity:0; transform:translateY(14px); transition:opacity 1s 1.6s, transform 1s 1.6s var(--ease-out)}
.hero.on .hero-cta{opacity:1; transform:none}
.countdown{position:relative; z-index:1; display:flex; flex-wrap:wrap; justify-content:center; align-items:flex-end; gap:0 clamp(1.4rem, 4vw, 3.2rem); padding:0 4vw 26px; opacity:0; transition:opacity 1.2s 2s}
.hero.on .countdown{opacity:1}
.countdown div{text-align:center; min-width:64px}
.countdown b{display:block; font:800 clamp(2.1rem, 4vw, 3rem)/1 var(--display); color:var(--gold-bright); font-variant-numeric:tabular-nums; text-shadow:0 2px 0 #6b4a0c, 0 8px 20px rgba(0,0,0,.5)}
.countdown span{font:500 .95rem var(--cond); text-transform:uppercase; color:var(--mist); letter-spacing:.14em}
.countdown p{flex-basis:100%; text-align:center; margin-top:.6rem; font:300 .95rem var(--body); color:rgba(244,234,213,.75)}
.countdown p.live{color:var(--gold-bright)}

/* ============ marquee ============ */
.marquee{position:relative; overflow:hidden; background:linear-gradient(180deg, var(--saffron-2), var(--saffron) 55%, var(--vermilion)); padding:.7rem 0; box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}
.marquee::before, .marquee::after{content:""; position:absolute; left:0; right:0; height:6px; background:var(--rope)}
.marquee::before{top:0}
.marquee::after{bottom:0}
.marquee-track{display:flex; width:max-content; animation:marquee 52s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-track span{display:inline-flex; align-items:center; gap:1.6rem; padding:0 .8rem; font:500 1.4rem var(--cond); text-transform:uppercase; color:var(--navy); letter-spacing:.1em; white-space:nowrap}
.marquee-track svg{color:var(--gold-bright); flex:none; filter:drop-shadow(0 1px 1px rgba(0,0,0,.3))}
@keyframes marquee{to{transform:translateX(-50%)}}

/* ============ reveals ============ */
.reveal{--d:0s}
.reveal-wipe > span{display:inline-block; clip-path:inset(-.25em 100% -.25em 0); transition:clip-path 1.2s var(--d) var(--ease-out)}
.reveal-wipe.in > span{clip-path:inset(-.25em -.25em -.25em 0)}
.reveal-rise{opacity:0; transform:translateY(22px); transition:opacity .9s var(--d), transform 1s var(--d) var(--ease-out)}
.reveal-rise.in{opacity:1; transform:none}
.reveal-develop{opacity:0; filter:grayscale(1) contrast(1.7) brightness(.3); transform:scale(.97); transition:opacity 1.1s var(--d), filter 1.4s var(--d), transform 1.1s var(--d) var(--ease-out)}
.reveal-develop.in{opacity:1; filter:none; transform:none}
.reveal-deal{opacity:0; transform:translateX(34px) rotate(1.2deg); transition:opacity .8s var(--d), transform 1s var(--d) var(--ease-out)}
.reveal-deal.in{opacity:1; transform:none}

/* side fan panels lifted from the poster */
.fans{position:absolute; top:0; bottom:0; width:clamp(90px, 9vw, 150px); z-index:0; pointer-events:none; opacity:.55}
.fans img{width:100%; height:100%; object-fit:cover}
.fans.l{left:0; mask-image:linear-gradient(90deg, #000 30%, transparent); -webkit-mask-image:linear-gradient(90deg, #000 30%, transparent)}
.fans.r{right:0; mask-image:linear-gradient(270deg, #000 30%, transparent); -webkit-mask-image:linear-gradient(270deg, #000 30%, transparent)}

/* ============ tickets ============ */
.tickets{background:radial-gradient(60% 50% at 50% 0%, rgba(46,139,166,.28), transparent 70%), var(--navy-2); overflow:hidden}
.ticket-grid{display:grid; grid-template-columns:1.45fr 1fr; gap:22px; margin-top:3.2rem}
.ticket-row{display:grid; grid-template-columns:repeat(4, 1fr); gap:22px; margin-top:22px}
.stub{position:relative; display:grid; grid-template-columns:1fr 84px; background:var(--ivory); color:var(--navy); border-radius:10px; text-decoration:none; min-height:190px;
  -webkit-mask:radial-gradient(circle at calc(100% - 84px) 0, transparent 13px, #000 13.6px), radial-gradient(circle at calc(100% - 84px) 100%, transparent 13px, #000 13.6px);
  mask:radial-gradient(circle at calc(100% - 84px) 0, transparent 13px, #000 13.6px), radial-gradient(circle at calc(100% - 84px) 100%, transparent 13px, #000 13.6px);
  -webkit-mask-composite:source-in; mask-composite:intersect; transition:transform .5s var(--ease-out)}
.stub:hover{transform:translateY(-6px) rotate(-.4deg)}
.stub-main{padding:26px 26px 24px; display:flex; flex-direction:column; gap:.55rem}
.stub-name{font:800 clamp(1.5rem, 2vw, 1.95rem)/1.05 var(--display); color:var(--navy)}
.stub-when{font:500 1.05rem var(--cond); text-transform:uppercase; letter-spacing:.1em; color:var(--saffron)}
.stub-desc{font:400 .95rem/1.5 var(--body); color:#2E4652; max-width:46ch}
.stub-foot{display:flex; align-items:flex-end; justify-content:space-between; gap:1rem; margin-top:auto; padding-top:.8rem}
.stub-price{font:800 clamp(2rem, 2.6vw, 2.6rem)/1 var(--display); color:var(--saffron)}
.stub-price small{font:500 .8rem var(--body); color:#5C7480; margin-left:.35rem; letter-spacing:.02em; white-space:nowrap}
.stub .btn{padding:.75rem 1.15rem; font-size:.85rem}
.stub-tear{position:relative; border-left:2px dashed rgba(7,28,39,.35); display:grid; place-items:center}
.stub-tear span{writing-mode:vertical-rl; transform:rotate(180deg); font:500 1rem var(--cond); letter-spacing:.32em; color:var(--saffron)}
.stub.hero-stub{grid-row:1 / span 2; min-height:100%; background:linear-gradient(120deg, #F8DE8E 0%, #E8B953 30%, #C8922F 55%, #F3CF74 78%, #D9A63E 100%); color:var(--navy); overflow:hidden}
.stub.hero-stub::before{content:""; position:absolute; inset:0; background:linear-gradient(105deg, transparent 20%, rgba(255,255,255,.28) 45%, rgba(255,255,255,.05) 55%, transparent 80%); transform:translateX(-120%); animation:foil 7s ease-in-out infinite; pointer-events:none}
@keyframes foil{0%,55%{transform:translateX(-120%)}75%,100%{transform:translateX(120%)}}
.stub.hero-stub .stub-name{font-size:clamp(2.2rem, 3.3vw, 3.4rem); color:var(--navy)}
.stub.hero-stub .stub-when{color:#7A3A0E}
.stub.hero-stub .stub-desc{color:#3B2708; font-size:1.02rem; max-width:52ch}
.stub.hero-stub .stub-price{font-size:clamp(3.2rem, 4.6vw, 4.6rem); color:var(--navy)}
.stub.hero-stub .stub-price small{color:#5A3A0A}
.stub.hero-stub .stub-tear{border-left-color:rgba(7,28,39,.4); background:rgba(7,28,39,.06)}
.stub.hero-stub .stub-tear span{color:#3B2708}
.stub.hero-stub .stub-main{padding:34px 34px 30px; gap:.8rem}
.stub.hero-stub .btn{padding:.95rem 1.5rem; font-size:.95rem}
.ticket-note{margin-top:2.2rem; max-width:70ch; color:var(--mist); font-size:.95rem}
.ticket-note a{color:var(--gold)}

/* ============ reel ============ */
.reel{position:relative; padding:34px 0; background:#040F16; overflow:hidden}
.reel::before, .reel::after{content:""; position:absolute; left:0; right:0; height:6px; background:var(--rope); z-index:3}
.reel::before{top:0}
.reel::after{bottom:0}
.reel-holes{height:22px; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='34' height='22' viewBox='0 0 34 22'%3E%3Crect x='8' y='4' width='18' height='14' rx='3' fill='%23F4EAD5' fill-opacity='.85'/%3E%3C/svg%3E"); background-repeat:repeat-x; will-change:background-position}
.reel-track{display:flex; gap:14px; padding:14px 0; width:max-content; will-change:transform}
.reel-track img{height:clamp(150px, 20vw, 230px); width:auto; border-radius:3px; opacity:.92; filter:saturate(1.05)}
.reel-label{position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); pointer-events:none; font:800 clamp(4rem, 14vw, 12rem) var(--display); color:rgba(244,234,213,.06); white-space:nowrap; z-index:2}

/* ============ gala ============ */
.gala{background:radial-gradient(70% 60% at 50% 0%, rgba(46,139,166,.32), transparent 70%), var(--navy); overflow:hidden}
.gala-grid{display:grid; grid-template-columns:1.05fr .95fr; gap:clamp(2rem, 6vw, 6rem); align-items:center}
.when{display:flex; flex-direction:column; gap:.2rem; margin-top:2rem; padding-left:1.1rem; border-left:3px solid var(--saffron)}
.when b{font:500 1.9rem var(--cond); text-transform:uppercase; letter-spacing:.08em; color:var(--gold-bright)}
.when span{color:var(--text-2)}
.when a{color:var(--gold); text-decoration:none}
.when a:hover{text-decoration:underline}
.gala-cta{display:flex; flex-wrap:wrap; gap:.9rem; margin-top:2.2rem}
.guests{display:grid; grid-template-columns:repeat(3, 1fr); gap:clamp(.8rem, 2vw, 1.4rem); margin-top:2.6rem; max-width:560px}
.guest{text-align:center}
.guest-frame{position:relative; aspect-ratio:1; border-radius:50%; overflow:hidden; background:var(--navy-3); box-shadow:0 0 0 3px var(--gold), 0 0 0 7px var(--navy), 0 0 0 8px rgba(228,178,74,.5), 0 24px 40px -20px rgba(0,0,0,.9)}
.guest-frame img{width:100%; height:100%; object-fit:cover; object-position:50% 18%; transition:transform 1.4s var(--ease-out)}
.guest:hover .guest-frame img{transform:scale(1.06)}
.guest h3{font:800 clamp(1rem, 1.5vw, 1.25rem) var(--display); margin-top:1rem; color:var(--ivory)}
.guest p{color:var(--mist); font:500 .95rem var(--cond); text-transform:uppercase; letter-spacing:.1em; margin-top:.15rem}
.guests-title{font:500 1.25rem var(--cond); text-transform:uppercase; letter-spacing:.14em; color:var(--gold); margin-bottom:-1.4rem; margin-top:2.6rem}
.poster-arch{position:relative; width:min(100%, 440px); margin:0 auto; animation:floaty 9s ease-in-out infinite}
@keyframes floaty{0%,100%{transform:translateY(0) rotate(-.6deg)}50%{transform:translateY(-14px) rotate(.4deg)}}
.arch{clip-path:url(#arch); overflow:hidden}
.poster-arch .arch-gold{padding:6px; background:linear-gradient(180deg, var(--gold-bright), var(--gold) 40%, var(--gold-deep)); filter:drop-shadow(0 30px 50px rgba(0,0,0,.6))}
.poster-arch img{width:100%; height:100%; object-fit:cover; aspect-ratio:1131/1600}
.poster-glow{position:absolute; inset:-10%; z-index:-1; background:radial-gradient(50% 50% at 50% 50%, rgba(228,178,74,.35), transparent 70%); filter:blur(30px)}
.poster-dl{display:block; text-align:center; margin-top:1.4rem; font:600 .9rem var(--body); color:var(--gold-bright); text-decoration:none}
.poster-dl:hover{text-decoration:underline}

/* ============ films ============ */
.films{background:var(--navy-2)}
.film-grid{display:grid; grid-template-columns:repeat(4, 1fr); gap:clamp(1.4rem, 3vw, 2.8rem) clamp(1rem, 2.2vw, 2rem); margin-top:3.4rem; position:relative}
.film{scroll-margin-top:100px}
.film-poster{position:relative; aspect-ratio:2/3; border-radius:6px; overflow:hidden; background:var(--navy-3); transform-style:preserve-3d; transition:transform .35s ease, box-shadow .5s; box-shadow:0 20px 40px -24px rgba(0,0,0,.9)}
.film-poster img{width:100%; height:100%; object-fit:cover; object-position:50% 25%}
.film-sheen{position:absolute; inset:0; background:radial-gradient(60% 60% at var(--mx, 50%) var(--my, 50%), rgba(246,214,138,.28), transparent 70%); opacity:0; transition:opacity .4s; pointer-events:none; mix-blend-mode:screen}
.film-poster:hover .film-sheen{opacity:1}
.film-poster:hover{box-shadow:0 30px 60px -20px rgba(0,0,0,.95), 0 0 0 2px var(--gold)}
.film-day{position:absolute; left:10px; top:10px; padding:.25rem .55rem .15rem; border-radius:3px; background:var(--saffron); color:var(--ivory); font:500 .95rem var(--cond); letter-spacing:.14em; text-transform:uppercase; box-shadow:0 2px 8px rgba(0,0,0,.4)}
.film-title{font:800 clamp(1.3rem, 1.7vw, 1.55rem)/1.1 var(--display); margin-top:1.1rem; color:var(--ivory)}
.film-sub{display:block; font:300 italic 1rem var(--body); color:var(--mist); margin-top:.2rem}
.film-meta{font:500 1.05rem var(--cond); text-transform:uppercase; letter-spacing:.08em; color:var(--gold); margin-top:.45rem}
.film-note{display:inline-block; margin-left:.6rem; padding:.15rem .5rem .05rem; border-radius:3px; background:rgba(226,86,31,.25); color:#FFB394; font-size:.9rem; letter-spacing:.08em; vertical-align:middle}
.film-syn{font-size:.95rem; line-height:1.55; color:var(--text-2); margin-top:.6rem}
.film-trailer{display:inline-block; margin-top:.7rem; font:600 .85rem var(--body); color:var(--gold-bright); text-decoration:none; border-bottom:1px solid rgba(246,214,138,.35); padding-bottom:2px; transition:border-color .3s, color .3s}
.film-trailer:hover{border-color:var(--gold-bright)}
.film-trailer.muted{color:var(--mist); border-color:transparent}

/* ============ interval ============ */
.interval{position:relative; overflow:hidden; text-align:center; padding:clamp(80px, 10vw, 130px) 4vw 90px; color:var(--ivory); background:
  repeating-linear-gradient(90deg, rgba(0,0,0,.26) 0 14px, rgba(255,255,255,.06) 14px 30px, rgba(0,0,0,.12) 30px 58px),
  linear-gradient(180deg, #C9481A 0%, #E2561F 45%, #A9330F 100%); box-shadow:inset 0 30px 60px -30px rgba(0,0,0,.5), inset 0 -30px 60px -30px rgba(0,0,0,.5)}
.interval .tassels{position:absolute; top:0; left:0; right:0}
.interval::after{content:""; position:absolute; left:0; right:0; bottom:0; height:8px; background:var(--rope)}
.interval .interval-title{font:800 clamp(4rem, 13vw, 11rem)/1 var(--display); letter-spacing:.01em}
.interval p{margin:.8rem auto 1.8rem; max-width:44ch; font-size:1.1rem; color:rgba(244,234,213,.9)}

/* ============ schedule ============ */
.schedule{background:var(--navy)}
.sched-head{display:flex; justify-content:space-between; align-items:flex-end; gap:2rem; flex-wrap:wrap}
.sched-venue{text-align:right; padding-bottom:.4rem}
.sched-venue span{display:block; font:500 1.1rem var(--cond); text-transform:uppercase; letter-spacing:.14em; color:var(--saffron-2)}
.sched-venue a{color:var(--text-2); text-decoration:none; font-size:.95rem; border-bottom:1px solid rgba(244,234,213,.25)}
.sched-venue a:hover{color:var(--gold-bright); border-color:var(--gold-bright)}
.programme{margin-top:2.6rem; background:var(--plate); color:var(--navy); border-radius:8px; box-shadow:0 30px 60px -30px rgba(0,0,0,.8), inset 0 0 0 1px rgba(143,101,22,.3); overflow:clip}
.daybar{position:sticky; top:68px; z-index:5; display:grid; grid-template-columns:1fr 1fr; background:var(--plate); box-shadow:0 1px 0 rgba(7,28,39,.15)}
.daytab{display:flex; align-items:baseline; gap:.9rem; padding:1.15rem 1.6rem; color:var(--navy); text-decoration:none; transition:background .4s, color .4s}
.daytab .day-name{font:500 1rem var(--cond); text-transform:uppercase; letter-spacing:.16em; color:var(--saffron)}
.daytab b{font:800 1.5rem var(--display); color:inherit}
.daytab .day-meta{margin-left:auto; font:500 .95rem var(--cond); text-transform:uppercase; letter-spacing:.08em; color:#5C7480; text-align:right}
.daytab.active{background:var(--navy); color:var(--ivory); box-shadow:inset 0 -3px 0 var(--saffron)}
.daytab.active .day-meta{color:var(--mist)}
.daytab.active .day-name{color:var(--gold)}
.dayblock{scroll-margin-top:150px}
.dayblock::before{content:attr(data-label); display:block; padding:1rem 1.6rem .2rem; font:500 .95rem var(--cond); text-transform:uppercase; letter-spacing:.14em; color:var(--saffron)}
.dayblock + .dayblock{border-top:6px solid var(--navy)}
.timeline{list-style:none; margin:0; padding:.4rem 1.6rem 1rem; position:relative}
.timeline::before{content:""; position:absolute; top:0; bottom:0; left:calc(1.6rem + 96px + 13px); width:1px; background:rgba(7,28,39,.16)}
.row{position:relative; display:grid; grid-template-columns:96px 28px 56px 1fr auto; align-items:center; gap:0 1rem; padding:.95rem 0; border-bottom:1px solid rgba(7,28,39,.1)}
.timeline .row:last-child{border-bottom:0}
.row-time{font:500 1.05rem var(--cond); text-transform:uppercase; letter-spacing:.06em; color:var(--navy)}
.row-dot{width:12px; height:12px; border-radius:50%; background:var(--saffron); box-shadow:0 0 0 3px var(--plate), 0 0 0 4px rgba(226,86,31,.35); justify-self:center}
.row-thumb{display:block; width:52px; aspect-ratio:2/3; border-radius:3px; overflow:hidden; background:transparent}
.row-thumb img{width:100%; height:100%; object-fit:cover; box-shadow:0 6px 14px -6px rgba(0,0,0,.6); transition:transform .5s var(--ease-out)}
.row-film:hover .row-thumb img{transform:scale(1.06)}
.row-body{display:flex; flex-direction:column; gap:.15rem; min-width:0}
.row-meta{display:flex; align-items:center; flex-wrap:wrap; gap:.55rem; font:500 .9rem var(--cond); text-transform:uppercase; letter-spacing:.1em; color:#5C7480}
.row-meta i{width:3px; height:3px; border-radius:50%; background:var(--saffron)}
.row-meta em{font-style:normal; padding:.1rem .45rem 0; border-radius:3px; background:rgba(226,86,31,.14); color:var(--vermilion)}
.row-title{font:800 clamp(1.25rem, 1.7vw, 1.6rem)/1.1 var(--display); color:var(--navy); text-decoration:none; transition:color .3s}
.row-title small{font:300 italic .95rem var(--body); color:#5C7480; margin-left:.4rem}
.row-title:hover{color:var(--saffron)}
.row-label{font:600 1.05rem var(--body); color:var(--navy)}
.row-go{width:42px; height:42px; border-radius:50%; display:grid; place-items:center; color:var(--navy); box-shadow:inset 0 0 0 1px rgba(7,28,39,.3); text-decoration:none; transition:background .3s, color .3s, transform .3s var(--ease-out)}
.row-go:hover{background:var(--navy); color:var(--gold-bright); transform:translate(2px,-2px)}
.pill{justify-self:end; padding:.35rem .7rem .25rem; border-radius:999px; font:500 .85rem var(--cond); text-transform:uppercase; letter-spacing:.12em; background:rgba(228,178,74,.28); color:#6B4A0C; white-space:nowrap}
.pill-muted{background:rgba(7,28,39,.08); color:#5C7480}
.pill-gold{background:linear-gradient(135deg, var(--gold-bright), var(--gold)); color:var(--navy)}
.row-talk .row-dot{background:var(--gold); box-shadow:0 0 0 3px var(--plate), 0 0 0 4px rgba(228,178,74,.4)}
.row-break{opacity:.7}
.row-break .row-dot{width:8px; height:8px; background:#9FB3BC; box-shadow:0 0 0 3px var(--plate)}
.row-break .row-time{color:#5C7480}
.row-awards{background:linear-gradient(90deg, rgba(228,178,74,.22), rgba(228,178,74,.02)); margin:0 -1.6rem; padding:1.1rem 1.6rem}
.row-awards .row-dot{background:var(--gold-bright); box-shadow:0 0 0 3px var(--plate), 0 0 0 5px rgba(228,178,74,.5)}
.row-awards .row-label{font:800 1.5rem var(--display); color:var(--navy)}
.sched-foot{display:flex; justify-content:space-between; align-items:center; gap:1.5rem; flex-wrap:wrap; margin-top:1.6rem}
.sched-actions{display:flex; gap:.8rem; flex-wrap:wrap}
.sched-note{color:var(--mist); font-size:.88rem; max-width:44ch; text-align:right}
.sched-cta{margin-top:2.6rem; display:flex; flex-wrap:wrap; gap:.9rem; align-items:center}

/* ============ story ============ */
.story{background:var(--navy-2)}
.story-grid{display:grid; grid-template-columns:1.1fr 1fr; gap:clamp(2rem, 6vw, 6rem); align-items:center}
.story-years{display:flex; flex-wrap:wrap; gap:.5rem; margin-top:2rem}
.story-years span{padding:.45rem .75rem .3rem; border:1px solid rgba(228,178,74,.5); border-radius:3px; font:500 1.2rem var(--cond); letter-spacing:.06em; color:var(--gold-bright)}
.story-years span.now{background:var(--saffron); color:var(--ivory); border-color:var(--saffron)}
.story-arch{width:min(100%, 420px); margin:0 auto}
.story-arch .arch-gold{padding:5px; background:linear-gradient(180deg, var(--gold-bright), var(--gold) 40%, var(--gold-deep)); filter:drop-shadow(0 30px 50px rgba(0,0,0,.55))}
.story-arch img{width:100%; height:100%; object-fit:cover; aspect-ratio:3/4; object-position:50% 30%}
.story-arch figcaption{text-align:center; margin-top:1rem; font:300 italic .9rem var(--body); color:var(--mist)}

/* ============ sponsors ============ */
.sponsors{background:var(--navy)}
.tier{margin-top:3.2rem}
.tier-name{font:500 clamp(1.7rem, 2.6vw, 2.3rem) var(--cond); text-transform:uppercase; letter-spacing:.14em; color:var(--gold-bright); display:flex; align-items:center; gap:1rem}
.tier-name::after{content:""; flex:1; height:2px; background:linear-gradient(90deg, rgba(228,178,74,.7), transparent)}
.tier-grid{display:grid; gap:1.2rem; margin-top:1.2rem}
.tier-diamond .tier-grid{grid-template-columns:repeat(auto-fit, minmax(280px, 520px))}
.tier-platinum .tier-grid{grid-template-columns:repeat(auto-fit, minmax(260px, 400px))}
.tier-gold .tier-grid{grid-template-columns:repeat(auto-fill, minmax(210px, 1fr))}
.tier-silver .tier-grid{grid-template-columns:repeat(auto-fill, minmax(170px, 1fr))}
.sponsor{margin:0}
.plate{position:relative; display:block; aspect-ratio:5/3; background:var(--plate); border-radius:6px; box-shadow:inset 0 0 0 1px rgba(143,101,22,.3), 0 12px 30px -20px rgba(0,0,0,.9); transition:transform .45s var(--ease-out), box-shadow .45s; overflow:hidden}
.tier-diamond .plate{aspect-ratio:3/1}
.tier-platinum .plate{aspect-ratio:2/1}
a.plate:hover{transform:translateY(-4px); box-shadow:inset 0 0 0 2px var(--gold), 0 22px 40px -20px rgba(228,178,74,.5)}
.plate img{position:absolute; left:10%; top:12%; width:80%; height:76%; object-fit:contain; mix-blend-mode:multiply}
.sponsor figcaption{margin-top:.6rem; font:500 .85rem var(--body); color:var(--text-2); line-height:1.35}
.plate-cap{display:block; font-weight:300; color:var(--mist); font-size:.8rem}
.sponsor-cta{margin-top:4rem; padding:2.2rem; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1.4rem; border:1px solid rgba(228,178,74,.4); background:linear-gradient(90deg, rgba(228,178,74,.1), transparent)}
.sponsor-cta h3{font:800 clamp(1.6rem, 2.5vw, 2.2rem) var(--display); color:var(--ivory)}
.sponsor-cta p{color:var(--text-2); max-width:52ch; margin-top:.4rem}

/* ============ venues ============ */
.venues{background:var(--navy-2)}
.venue-grid{display:grid; grid-template-columns:1fr 1fr; gap:clamp(1.5rem, 4vw, 4rem); margin-top:3rem}
.venue{padding-top:1.4rem; border-top:2px solid var(--gold)}
.venue .night{font:500 1.15rem var(--cond); text-transform:uppercase; letter-spacing:.12em; color:var(--saffron-2)}
.venue h3{font:800 clamp(1.7rem, 2.6vw, 2.3rem) var(--display); margin-top:.3rem; color:var(--ivory)}
.venue p{margin-top:.6rem; color:var(--text-2); max-width:48ch}
.venue a{display:inline-block; margin-top:1rem; color:var(--gold-bright); font-weight:600; text-decoration:none; border-bottom:1px solid rgba(246,214,138,.35); padding-bottom:2px}
.venue a:hover{border-color:var(--gold-bright)}

/* ============ finale ============ */
.finale{position:relative; isolation:isolate; overflow:hidden; text-align:center; padding:clamp(110px, 14vw, 190px) 4vw; background:radial-gradient(70% 90% at 50% 110%, rgba(226,86,31,.45), transparent 70%), var(--navy)}
.finale .beam{top:-1%; height:125%; opacity:.6; animation:flicker 9s ease-in-out infinite}
.finale .fans{opacity:.45}
.finale .finale-title{max-width:14ch; margin:0 auto; font:800 clamp(2.6rem, 7vw, 6rem)/1.05 var(--display); text-wrap:balance}
.finale .celebrate{font:500 clamp(2rem, 5vw, 4rem) var(--cond); text-transform:uppercase; letter-spacing:.1em; color:var(--ivory); margin-top:.6rem}
.finale p.sub{margin:1.2rem auto 2.4rem; max-width:48ch; color:var(--text-2); font-size:1.15rem}
.finale .btns{display:flex; flex-wrap:wrap; justify-content:center; gap:.9rem; position:relative}

/* ============ footer ============ */
.footer{background:#040F16; padding:0 0 120px}
.footer .tassels{margin-bottom:40px}
.foot-grid{display:grid; grid-template-columns:1.3fr 1fr 1fr; gap:3rem}
.foot-grid img.logo{width:200px}
.foot-grid p{color:var(--mist); font-size:.95rem; margin-top:1rem; max-width:40ch}
.foot-grid h4{font:500 1.2rem var(--cond); letter-spacing:.16em; text-transform:uppercase; color:var(--gold); margin-bottom:1rem}
.foot-grid ul{list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:.55rem}
.foot-grid li a{color:var(--text-2); text-decoration:none; font-size:.98rem}
.foot-grid li a:hover{color:var(--gold-bright)}
.foot-grid a.social{display:inline-flex; align-items:center; gap:.5rem}
.foot-grid a.social svg{color:var(--gold); flex:none}
.presented{display:flex; align-items:center; gap:1rem; margin-top:1.6rem}
.presented img{width:180px; background:var(--plate); padding:8px 12px; border-radius:4px}
.foot-bottom{margin-top:3.5rem; padding-top:1.4rem; border-top:1px solid rgba(244,234,213,.1); display:flex; flex-wrap:wrap; justify-content:space-between; gap:.6rem; color:var(--mist); font-size:.85rem}

/* sticky mobile bar */
.mobile-bar{position:fixed; left:0; right:0; bottom:0; z-index:800; padding:10px 14px calc(10px + env(safe-area-inset-bottom)); background:rgba(7,28,39,.92); backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px); border-top:2px solid var(--gold); display:none; transform:translateY(110%); transition:transform .5s var(--ease-out)}
.mobile-bar.show{transform:none}
.mobile-bar .btn{width:100%}

/* ============ responsive ============ */
@media (max-width:1100px){
  .film-grid{grid-template-columns:repeat(3, 1fr)}
  .ticket-row{grid-template-columns:repeat(2, 1fr)}
  .fans{display:none}
}
@media (max-width:900px){
  .nav-links, .nav-cta{display:none}
  .burger{display:block}
  .ticket-grid{grid-template-columns:1fr}
  .stub.hero-stub{grid-row:auto}
  .gala-grid, .story-grid, .sched-grid, .venue-grid{grid-template-columns:1fr}
  .poster-arch{margin-top:2.5rem}
  .foot-grid{grid-template-columns:1fr 1fr}
  .mobile-bar{display:block}
  .hero-content{padding-top:calc(100vw * .26 + 30px)}
  .crest{top:calc(100vw * .24)}
}
@media (max-width:640px){
  body{font-size:16px}
  .daybar{top:68px}
  .daytab{flex-wrap:wrap; gap:.3rem .6rem; padding:.9rem 1rem}
  .daytab .day-meta{display:none}
  .daytab b{font-size:1.25rem}
  .timeline{padding:.2rem .9rem .6rem}
  .dayblock::before{padding:.9rem .9rem .1rem}
  .timeline::before{left:calc(.9rem + 66px + 9px)}
  .row{grid-template-columns:66px 20px 40px 1fr; gap:0 .6rem; padding:.8rem 0}
  .row-thumb{width:38px}
  .row-go{display:none}
  .pill{grid-column:4; justify-self:start; margin-top:.4rem}
  .row-awards{margin:0 -.9rem; padding:.9rem .9rem}
  .sched-note{text-align:left}
  .sched-venue{text-align:left}
  .film-grid{grid-template-columns:repeat(2, 1fr); gap:1.6rem .9rem}
  .film-syn{font-size:.88rem}
  .ticket-row{grid-template-columns:1fr}
  .stub{grid-template-columns:1fr 60px; -webkit-mask:radial-gradient(circle at calc(100% - 60px) 0, transparent 11px, #000 11.6px), radial-gradient(circle at calc(100% - 60px) 100%, transparent 11px, #000 11.6px); mask:radial-gradient(circle at calc(100% - 60px) 0, transparent 11px, #000 11.6px), radial-gradient(circle at calc(100% - 60px) 100%, transparent 11px, #000 11.6px); -webkit-mask-composite:source-in; mask-composite:intersect}
  .stub-main{padding:20px}
  .stub.hero-stub .stub-main{padding:24px 22px}
  .foot-grid{grid-template-columns:1fr}
  .guests{gap:.6rem}
  .guest h3{font-size:1rem}
  .guest p{font-size:.8rem}
  .sponsor-cta{padding:1.6rem}
  .tier-silver .tier-grid{grid-template-columns:repeat(2, 1fr)}
  .tier-gold .tier-grid{grid-template-columns:repeat(2, 1fr)}
  .hero-content{padding-top:calc(100vw * .28 + 44px)}
  .hero-facts .where b{display:block; padding:0; height:.2em; overflow:hidden}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001s !important; animation-iteration-count:1 !important; transition-duration:.001s !important}
  .curtain{display:none}
  .reveal-wipe > span,.reveal-rise,.reveal-develop,.reveal-deal{clip-path:none; opacity:1; transform:none; filter:none}
  .hero .w > span, .hero-kicker, .hero-tag, .hero-facts, .hero-cta, .countdown, .beam, .crest{opacity:1; transform:none}
  .hero-title .w > span{filter:drop-shadow(0 2px 0 #7A5210) drop-shadow(0 4px 0 #5C3C0B)}
  body::after{display:none}
}

/* ============ sub pages ============ */
.nav-links a.active{color:var(--gold-bright)}
.nav-links a.active::after{transform:scaleX(1); transform-origin:left}
.subhero{position:relative; overflow:hidden; isolation:isolate; padding:calc(100vw * .17 + 40px) 0 clamp(50px, 6vw, 80px); background:radial-gradient(55% 60% at 50% 20%, rgba(46,139,166,.45), transparent 70%), var(--navy); text-align:center}
.subhero .proscenium{z-index:-1}
.subhero .beam{opacity:.65; animation:flicker 9s ease-in-out infinite}
.subhero h1{font-size:clamp(2.8rem, 7vw, 6rem); line-height:1}
.subhero .sub{font:500 clamp(1.1rem, 1.8vw, 1.5rem) var(--cond); text-transform:uppercase; letter-spacing:.12em; color:var(--ivory); margin-top:.9rem; text-shadow:0 2px 8px rgba(0,0,0,.6)}
.subhero .sub b{font-weight:500; color:var(--gold); padding:0 .4em}
.jury{background:var(--navy-2)}
.jury-grid{display:grid; grid-template-columns:repeat(4, 1fr); gap:2.6rem 1.6rem; margin-top:3.4rem}
.juror{text-align:center}
.juror .arch-gold{padding:5px; background:linear-gradient(180deg, var(--gold-bright), var(--gold) 40%, var(--gold-deep)); filter:drop-shadow(0 26px 40px rgba(0,0,0,.55)); transition:transform .6s var(--ease-out)}
.juror:hover .arch-gold{transform:translateY(-6px)}
.juror img{width:100%; aspect-ratio:4/5; object-fit:cover; object-position:50% 18%; transition:transform 1.4s var(--ease-out)}
.juror:hover img{transform:scale(1.05)}
.juror .mono{aspect-ratio:4/5; display:grid; place-items:center; background:radial-gradient(70% 60% at 50% 30%, rgba(46,139,166,.55), transparent 70%), linear-gradient(180deg, var(--navy-3), var(--navy)); font:800 clamp(2.4rem, 4vw, 3.6rem) var(--display); color:var(--gold); letter-spacing:.04em}
.juror h3{font:800 clamp(1.15rem, 1.6vw, 1.45rem) var(--display); color:var(--ivory); margin-top:1.1rem}
.juror p{font:500 .95rem var(--cond); text-transform:uppercase; letter-spacing:.12em; color:var(--mist); margin-top:.2rem}
.jury-cta{margin-top:4.5rem; padding:2.2rem; display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:1.4rem; border:1px solid rgba(228,178,74,.4); background:linear-gradient(90deg, rgba(228,178,74,.1), transparent)}
.jury-cta .jury-cta-title{font:800 clamp(1.6rem, 2.5vw, 2.2rem)/1.1 var(--display)}
.jury-cta p{color:var(--text-2); max-width:56ch; margin-top:.4rem}
.jury-cta .btns{display:flex; flex-wrap:wrap; gap:.8rem}
@media (max-width:900px){ .jury-grid{grid-template-columns:repeat(3, 1fr)} .subhero{padding-top:calc(100vw * .26 + 30px)} }
@media (max-width:640px){ .jury-grid{grid-template-columns:repeat(2, 1fr); gap:1.8rem .9rem} .subhero{padding-top:calc(100vw * .28 + 44px)} .jury-cta{padding:1.6rem} }
