:root{--bg:#14070b;--bg2:#240a12;--ink:#f6e9d7;--muted:#c9a98f;--gold:#e6b95c;--gold2:#f6d98b;--rouge:#c4143f;--display:"Playfair Display", Georgia, serif;--label:"Unbounded", "Manrope", sans-serif;--sans:"Manrope", -apple-system, system-ui, sans-serif;--safe-t:env(safe-area-inset-top,0px);--safe-b:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;text-size-adjust:100%;scroll-behavior:smooth;background:var(--bg)}body{font-family:var(--sans);color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased;overflow-x:hidden}body.locked{touch-action:none;overflow:hidden}img{max-width:100%;display:block}button{font:inherit}.stage{z-index:0;pointer-events:none;background:radial-gradient(120% 60% at 50% -10%, #5a0f26 0%, transparent 60%), radial-gradient(90% 50% at 100% 100%, #3a0b1b 0%, transparent 60%), var(--bg);position:fixed;inset:0}.sky{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.sky>div{will-change:transform;position:absolute}main{z-index:1;position:relative}.curtain{z-index:50;place-items:center;display:grid;position:fixed;inset:0;overflow:hidden}.curtain .panel{will-change:transform;background:linear-gradient(#0000008c,#0000 22% 70%,#00000080),repeating-linear-gradient(90deg,#4a0817 0 14px,#7a0f27 14px 30px,#5a0a1d 30px 44px,#8f1230 44px 52px);width:51%;position:absolute;top:0;bottom:0}.curtain .left{border-right:3px solid var(--gold);left:0}.curtain .right{border-left:3px solid var(--gold);right:0}.curtain{padding:calc(var(--safe-t) + 20px) 18px calc(var(--safe-b) + 28px);flex-direction:column;justify-content:center;align-items:center;gap:28px;display:flex}.curtain .panel{z-index:0}.curtain .door{z-index:3;text-align:center;position:relative}.curtain-title{z-index:3;font-family:var(--display);text-align:center;color:var(--ink);text-shadow:0 2px 18px #000000b3;font-size:clamp(30px,9vw,46px);font-style:italic;font-weight:700;line-height:1.05;position:relative}.enter{appearance:none;border:2px solid var(--gold);color:var(--gold2);font-family:var(--label);letter-spacing:.18em;text-transform:uppercase;cursor:pointer;background:#14070bb3;border-radius:999px;min-height:58px;padding:18px 28px;font-size:12.5px;font-weight:500}.curtain .hint{color:var(--ink);opacity:.75;margin-top:14px;font-size:13px}.ticket{z-index:3;filter:drop-shadow(0 24px 40px #0009);width:min(92vw,400px);display:flex;position:relative}.ticket-main{color:#2a0d16;border:2px solid var(--gold);background:linear-gradient(135deg,#fff6e4,#f6dfb4);border-right:2px dashed #b9822f;border-radius:14px 0 0 14px;flex:1;padding:22px 18px 20px 26px}.t-kicker{font-family:var(--label);letter-spacing:.26em;text-transform:uppercase;color:#9b2340;font-size:9.5px}.ticket h2{font-family:var(--display);margin:8px 0 14px;font-size:clamp(28px,8.4vw,38px);font-style:italic;font-weight:800;line-height:1.02}.ticket h2 em{color:var(--rouge)}.ticket dl{flex-wrap:wrap;gap:14px;display:flex}.ticket dt{font-family:var(--label);letter-spacing:.2em;text-transform:uppercase;color:#9b6b4a;font-size:8.5px}.ticket dd{font-family:var(--display);font-size:16px;font-weight:600}.ticket-stub{border:2px solid var(--gold);background:linear-gradient(135deg,#c4143f,#8e0e30);border-left:0;border-radius:0 14px 14px 0;place-items:center;width:64px;display:grid}.ticket-stub span{writing-mode:vertical-rl;font-family:var(--label);letter-spacing:.3em;color:var(--gold2);font-size:12px;transform:rotate(180deg)}.player{z-index:40;right:14px;top:calc(var(--safe-t) + 12px);border:1.5px solid var(--gold);cursor:pointer;background:#14070bb8;border-radius:50%;place-items:center;width:46px;height:46px;display:grid;position:fixed}.eq{align-items:flex-end;gap:3px;height:18px;display:flex}.eq i{background:var(--gold2);border-radius:2px;width:3px;height:5px}.playing .eq i{animation:.9s ease-in-out infinite eq}.playing .eq i:nth-child(2){animation-delay:.2s}.playing .eq i:nth-child(3){animation-delay:.4s}.playing .eq i:nth-child(4){animation-delay:.1s}@keyframes eq{0%,to{height:5px}50%{height:18px}}.hero{min-height:100svh;padding:calc(var(--safe-t) + 52px) 20px 56px;text-align:center;flex-direction:column;align-items:center;display:flex;position:relative;overflow:hidden}.valance{background:radial-gradient(circle at 50% 100%, var(--bg) 0 17px, transparent 18px) 0 0 / 34px 34px repeat-x, linear-gradient(#7a0f27, #5a0a1d);border-bottom:2px solid var(--gold);height:34px;position:absolute;top:0;left:0;right:0}.beam-wrap{transform-origin:50% 0;pointer-events:none;will-change:transform;width:0;height:100%;position:absolute;top:0;left:50%}.beam{transform-origin:50% 0;will-change:transform;background:conic-gradient(from 180deg at 50% 0,#0000 160deg,#f6d98b38 175deg,#f6d98b4d 180deg,#f6d98b38 185deg,#0000 200deg);width:140vw;height:120%;animation:9s ease-in-out infinite alternate sway;position:absolute;top:0;left:-70vw}@keyframes sway{0%{transform:rotate(-9deg)}to{transform:rotate(9deg)}}.over{z-index:1;font-family:var(--label);letter-spacing:.34em;text-transform:uppercase;color:var(--gold2);font-size:11px;position:relative}.marquee{z-index:1;border:3px solid var(--gold);background:#14070b99;border-radius:18px;margin:20px 0 8px;padding:18px 26px 14px;position:relative;box-shadow:0 0 40px #e6b95c40,inset 0 0 30px #c4143f40}.marquee:before,.marquee:after{content:"";background:radial-gradient(circle, var(--gold2) 0 2.5px, transparent 3px) 0 0 / 18px 6px repeat-x;height:6px;animation:1.1s steps(2,jump-none) infinite bulbs;position:absolute;left:10px;right:10px}.marquee:before{top:4px}.marquee:after{animation-delay:.55s;bottom:4px}@keyframes bulbs{0%{opacity:1}50%{opacity:.25}to{opacity:1}}.name{font-family:var(--label);letter-spacing:.02em;justify-content:center;font-size:clamp(44px,15.5vw,120px);font-weight:800;line-height:1.05;display:flex}.name span{background:linear-gradient(#fff1c4 0%,#e6b95c 55%,#b9822f 100%);color:#0000;filter:drop-shadow(0 0 10px #e6b95c66);animation:2.6s ease-in-out infinite chase;animation-delay:calc(var(--i) * .22s + 3s);-webkit-background-clip:text;background-clip:text;display:inline-block}@keyframes chase{0%,70%,to{filter:drop-shadow(0 0 10px #e6b95c66)}80%{filter:drop-shadow(0 0 22px #fff1c4f2)}}.script{z-index:1;font-family:var(--display);color:var(--ink);font-size:clamp(30px,9vw,54px);font-style:italic;font-weight:700;line-height:1.1;position:relative}.script b{color:#ff5c80;font-weight:700}.portrait{z-index:1;width:min(76vw,340px);margin:26px 0 6px;position:relative}.arch{aspect-ratio:4/5;border:3px solid var(--gold);box-shadow:0 0 0 7px #14070be6, 0 0 0 9px var(--gold), 0 30px 60px -10px #000c;border-radius:999px 999px 18px 18px;overflow:hidden}.arch img{object-fit:cover;object-position:52% 28%;width:100%;height:100%}.tag{background:var(--rouge);color:var(--ink);border:2px solid var(--gold);font-family:var(--label);letter-spacing:.24em;text-transform:uppercase;white-space:nowrap;border-radius:999px;padding:9px 16px;font-size:10px;position:absolute;bottom:-16px;left:50%;transform:translate(-50%)}.hint-scroll{z-index:1;color:var(--muted);margin-top:44px;font-size:14px;position:relative}.hint-scroll b{color:var(--gold);margin-top:4px;font-size:22px;display:block}.block{max-width:760px;margin:0 auto;padding:72px 20px 40px}.kicker{font-family:var(--label);letter-spacing:.3em;color:var(--gold2);text-transform:uppercase;text-align:center;font-size:11px}.h2{font-family:var(--display);text-align:center;margin:10px 0 36px;font-size:clamp(36px,10vw,60px);font-style:italic;font-weight:800;line-height:1.05}.h2 em{color:#ff5c80}.rule{background:linear-gradient(90deg, transparent, var(--gold), transparent);width:120px;height:2px;margin:0 auto 34px}.acts{list-style:none}.act{border-top:1px solid #e6b95c47;grid-template-columns:64px 1fr;gap:14px;padding:22px 0;display:grid}.act:last-child{border-bottom:1px solid #e6b95c47}.num{font-family:var(--label);color:#0000;-webkit-text-stroke:1.4px var(--gold);font-size:34px;font-weight:800;line-height:1}.act h3{font-family:var(--display);color:var(--gold2);margin-bottom:6px;font-size:26px;font-style:italic}.act p{color:#ecdcc6;font-size:16.5px;line-height:1.55}.reel{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain;scrollbar-width:none;gap:16px;padding:8px 20px 26px;scroll-padding:0 20px;display:flex;overflow-x:auto}.reel::-webkit-scrollbar{display:none}.frame{scroll-snap-align:center;flex:0 0 min(74vw,300px)}.photo{aspect-ratio:4/5;border:2px solid var(--gold);box-shadow:0 0 0 5px var(--bg), 0 0 0 6.5px #e6b95c99, 0 24px 40px -14px #000c;background:#2a1016;border-radius:14px;position:relative;overflow:hidden}.photo img{object-fit:cover;width:100%;height:100%}.photo .no{font-family:var(--label);letter-spacing:.2em;color:var(--gold2);background:#14070bc7;border-radius:999px;padding:6px 10px;font-size:10px;position:absolute;top:10px;left:10px}.ticker{z-index:2;border-block:2px solid var(--gold);margin:26px -10px;position:relative;overflow:hidden;transform:rotate(-3deg)}.ticker.gold{color:#2a0d16;background:linear-gradient(90deg,#b9822f,#f6d98b,#b9822f)}.ticker.rouge{color:var(--gold2);background:#a5112f;transform:rotate(2.5deg)}.ticker-track{will-change:transform;width:max-content;animation:22s linear infinite tick;display:flex}.ticker.rev .ticker-track{animation-direction:reverse}.ticker span{font-family:var(--label);letter-spacing:.14em;white-space:nowrap;padding:12px 0;font-size:15px;font-weight:800}@keyframes tick{0%{transform:translate(0,0)}to{transform:translate(-50%)}}.gallery{padding-bottom:24px}.stack{aspect-ratio:4/5;width:min(76vw,320px);margin:8px auto 0;position:relative}.cap-wrap{min-height:34px;margin-top:44px}.gallery .cap{margin-top:0}.stack-card{will-change:transform;position:absolute;inset:0}.stack-inner{touch-action:pan-y;cursor:grab;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%}.stack-inner:active{cursor:grabbing}.stack .photo img{pointer-events:none}.cake-block{text-align:center}.lead{color:var(--muted);margin:-18px 0 84px;font-size:15px}.cake{width:min(84vw,340px);margin:0 auto;position:relative}.cake-svg{width:100%;height:auto;display:block}.candles{z-index:2;justify-content:center;gap:22px;height:92px;display:flex;position:absolute;top:-66px;left:0;right:0}.candle{cursor:pointer;background:0 0;border:0;justify-content:center;width:52px;height:92px;display:flex;position:relative}.candle .stick{background:repeating-linear-gradient(-45deg,#fff6e4 0 6px,#ff5c80 6px 12px);border-radius:3px;width:12px;height:52px;position:absolute;bottom:0}.flame{transform-origin:50% 100%;background:radial-gradient(circle at 50% 70%,#fff 0 18%,#ffd36b 40%,#ff8a3d 75%,#0000 76%);border-radius:50%/60% 60% 40% 40%;width:16px;height:28px;animation:.14s ease-in-out infinite alternate flicker;position:absolute;bottom:52px;box-shadow:0 0 22px 6px #ffbe5a8c}@keyframes flicker{0%{transform:scale(1)rotate(-2deg)}to{transform:scale(.92,1.08)rotate(2deg)}}.smoke{background:#dcdcdc8c;border-radius:50%;width:14px;height:14px;position:absolute;bottom:56px}.wish{margin-top:22px}.wish p{font-family:var(--display);color:var(--gold2);font-size:clamp(24px,6.5vw,32px);font-style:italic;line-height:1.3}.relight{color:var(--muted);cursor:pointer;background:0 0;border:1px solid #e6b95c80;border-radius:999px;margin-top:12px;padding:10px 18px;font-size:13px}.stats{max-width:520px;margin:0 auto calc(var(--safe-b) + 40px);color:var(--muted);background:#14070bd9;border:1px dashed #e6b95c80;border-radius:16px;width:calc(100% - 32px);padding:18px 16px;font-size:13px}.stats-title{font-family:var(--label);letter-spacing:.22em;text-transform:uppercase;color:var(--gold2);margin-bottom:12px;font-size:10px}.stats-grid{grid-template-columns:repeat(3,1fr);gap:12px 8px;display:grid}.stats-grid div{flex-direction:column;display:flex}.stats-grid b{font-family:var(--label);color:var(--ink);font-size:22px}.stats-grid span{font-size:11.5px}.stats-last{border-top:1px solid #e6b95c33;margin-top:14px;list-style:none}.stats-last li{border-bottom:1px solid #e6b95c1f;grid-template-columns:90px 1fr auto;gap:8px;padding:7px 0;display:grid}.stats-upd{opacity:.7;margin-top:10px;font-size:11px}.cap{font-family:var(--display);text-align:center;color:var(--ink);margin-top:18px;font-size:20px;font-style:italic}.swipe{text-align:center;color:var(--muted);margin-top:2px;font-size:13px}.letter{text-align:center;font-family:var(--display);font-size:clamp(22px,6vw,30px);line-height:1.5}.letter p{margin-bottom:22px}.letter .sign{color:var(--gold2);font-size:clamp(28px,8vw,40px);font-style:italic}.finale{text-align:center;padding:56px 20px calc(var(--safe-b) + 90px)}.bravo{font-family:var(--label);background:linear-gradient(#fff1c4,#e6b95c 60%,#b9822f);color:#0000;-webkit-background-clip:text;background-clip:text;margin-bottom:24px;font-size:clamp(38px,13vw,90px);font-weight:800}.btn{appearance:none;border:2px solid var(--gold);cursor:pointer;min-height:58px;font-family:var(--label);letter-spacing:.2em;text-transform:uppercase;color:#fff;background:linear-gradient(110deg,#a5112f,#e0245e);border-radius:999px;padding:18px 30px;font-size:13px;font-weight:500;box-shadow:0 14px 40px -10px #e0245ecc}.finale small{color:var(--muted);margin-top:14px;font-size:13px;display:block}.clap-zone{padding-top:44px;display:inline-block;position:relative}.tier-pop{white-space:nowrap;font-family:var(--label);letter-spacing:.06em;color:var(--gold2);text-shadow:0 2px 14px #c4143fcc;font-size:18px;font-weight:800;position:absolute;top:0;left:50%;translate:-50%}.tier-pop span{color:#ff5c80;margin-left:4px}.tier-pop.lvl4,.tier-pop.lvl5{font-size:22px}.tier-pop.lvl6{color:#fff1c4;font-size:24px}.btn{transition:background .4s,box-shadow .4s,color .4s}.btn.heat2,.btn.heat3{box-shadow:0 14px 50px -6px #e0245e}.btn.heat4,.btn.heat5{background:linear-gradient(110deg,#c4143f,#ff5c80,#e6b95c);box-shadow:0 0 0 6px #f6d98b40,0 14px 60px -4px #ff5c80}.btn.heat6{color:#2a0d16;background:linear-gradient(110deg,#b9822f,#fff1c4,#e6b95c);box-shadow:0 0 0 8px #f6d98b59,0 0 70px #f6d98be6}.heat-meter{background:#e6b95c2e;border-radius:3px;width:200px;height:6px;margin:22px auto 0;overflow:hidden}.heat-meter i{background:linear-gradient(90deg,#c4143f,#ff5c80,#f6d98b);border-radius:3px;width:0;height:100%;display:block}.burst{z-index:30;pointer-events:none;position:fixed;inset:0;overflow:hidden}.fall{will-change:transform;animation:fall var(--dur) cubic-bezier(.35, .1, .7, 1) var(--delay) both;position:absolute;top:-120px}@keyframes fall{0%{opacity:1;transform:translate(0,0)rotate(0)}85%{opacity:1}to{transform:translate3d(var(--sway), calc(100vh + 180px), 0) rotate(var(--spin));opacity:0}}.petal{animation:.9s ease-in-out infinite alternate flutter;display:block}.strip{border-radius:2px;width:9px;height:18px;animation:.45s linear infinite alternate flutter;display:block}@keyframes flutter{0%{transform:scaleX(1)rotate(-15deg)}to{transform:scaleX(.25)rotate(25deg)}}.glow{position:relative}.glow:before{content:"";background:radial-gradient(circle,#f6d98b99,#0000 65%);border-radius:50%;position:absolute;inset:-40%}.glow svg{display:block;position:relative}.spark{will-change:transform;animation:spark .95s cubic-bezier(.1, .7, .3, 1) var(--delay) both;position:absolute}@keyframes spark{0%{opacity:1;transform:translate(-50%,-50%)scale(.3)}to{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(1.1) rotate(90deg);opacity:0}}.flash{background:radial-gradient(circle at 50% 75%,#fff1c466,#0000 60%);animation:.7s ease-out both flash;position:absolute;inset:0}@keyframes flash{0%{opacity:1}to{opacity:0}}@media (width>=760px){.frame{flex-basis:300px}.reel{justify-content:flex-start}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.beam,.marquee:before,.marquee:after,.playing .eq i,.ticker-track,.name span,.flame{animation:none}}
