@font-face{font-family:Editorial;src:url(fonts/PPEditorialNew-Regular.woff2) format('woff2');font-display:swap}@font-face{font-family:Editorial;src:url(fonts/PPEditorialNew-Italic.woff2) format('woff2');font-style:italic;font-display:swap}
:root{color-scheme:dark;--cream:#fffef1;--muted:#c7c8b8;--acid:#f5ffb5;--red:#ff1719;--brand-width:84px;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;touch-action:none;overscroll-behavior:none;background:#000;color:var(--cream);font-family:Arial,Helvetica,sans-serif}button,a{-webkit-tap-highlight-color:transparent;touch-action:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default}a{color:inherit}button:focus-visible,a:focus-visible{outline:2px solid var(--acid);outline-offset:5px}[hidden]{display:none!important}h1,h2,p{margin:0}#experience{position:relative;isolation:isolate;width:100%;height:100dvh;overflow:hidden}#world{width:100%;height:100%;display:block;outline:none}.shade{position:absolute;inset:0;pointer-events:none;background:linear-gradient(#07090688,transparent 25%);z-index:1}.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.header{position:absolute;top:calc(19px + var(--safe-top));left:12px;right:12px;z-index:12;display:flex;align-items:center;flex-direction:column;gap:15px;pointer-events:none}.header a{pointer-events:auto}.brand-main img{display:block;width:var(--brand-width);height:auto}.brand-partners{position:relative;overflow:hidden;width:min(280px,100%);aspect-ratio:1396/116;flex-shrink:0}.brand-partners>img{position:absolute;display:block;width:110.02865%;max-width:none;height:auto;left:-5.01433%;top:-675.86207%}
.screen{position:absolute;inset:0;z-index:3;padding:0 24px;display:flex;align-items:center;flex-direction:column;text-align:center}.intro{background:linear-gradient(#0a10073d,transparent 52%,#06232835 68%,#070f09e0);padding-top:clamp(100px,15vh,170px)}#intro-title{font-family:Arial,Helvetica,sans-serif;font-size:clamp(48px,14vw,100px);line-height:.94;font-weight:500;letter-spacing:-.065em;width:100%;max-width:590px;color:white}#intro-title>span{display:block;white-space:nowrap}#intro-title em{font-family:Editorial,Georgia,serif;font-weight:400;letter-spacing:-.11em;font-size:1.1em}#intro-title>span+span{margin-top:5px}.event-date{color:#000;font-family:monospace;font-size:clamp(13px,3.5vw,24px);letter-spacing:.08em;white-space:nowrap;margin-top:12px}.intro-instructions{position:absolute;bottom:calc(175px + var(--safe-bottom));left:10px;right:10px;font-size:20px;line-height:1.25;letter-spacing:-.6px}.sound-prompt{font-size:16px;margin-bottom:12px}.intro-instructions strong{display:block;font-size:17px;font-weight:400;margin-top:16px}.intro-bottom{width:100%;max-width:430px;margin-top:auto;padding-bottom:calc(17px + var(--safe-bottom))}.primary{border:0;border-radius:2px;background:var(--acid);color:#10140b;width:100%;min-height:58px;padding:18px 20px;display:flex;align-items:center;justify-content:space-between;text-decoration:none;font-size:18px;letter-spacing:.6px;font-weight:500;transition:background .2s,transform .2s}.primary:hover{background:#fffedb}.primary:active{transform:scale(.98)}.primary:disabled{opacity:.5}#enter{justify-content:center}#enter-label{font-size:20px}.footnote{display:block;font-size:14px;margin-top:10px}#intro-prize{font-size:clamp(11px,3.25vw,15px);letter-spacing:.2px;min-height:44px;display:flex;align-items:center;justify-content:center;white-space:nowrap}#load-note{font-size:12px}
.round-hud{position:absolute;inset:calc(19px + var(--safe-top)) 14px auto;z-index:4;display:flex;align-items:center;min-height:calc(var(--brand-width) * 210 / 1016);justify-content:space-between;pointer-events:none}.eyebrow{font-size:10px;letter-spacing:1.7px;line-height:1.5}#round-label,.prize-label{font-size:9px;letter-spacing:-.2px;line-height:1.3}.prize-label{color:var(--acid)}.round-dots{position:fixed;bottom:calc(20px + var(--safe-bottom));left:50%;transform:translateX(-50%);display:flex;gap:10px}.round-dots i{width:6px;height:6px;border:1px solid #ffffff80;border-radius:50%}.round-dots .won{background:var(--cream);border-color:var(--cream)}.round-dots .current{border-color:white}.round-dots .lost{background:red;border-color:red}
#table-targets{position:absolute;inset:0;z-index:2;pointer-events:none}.table-target{position:absolute;left:0;top:0;min-width:80px;min-height:80px;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;border:0;background:transparent;pointer-events:auto;padding:5px}.table-target .number{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border:1px solid #f4efda65;border-radius:50%;background:#20180b99;font-size:15px;color:var(--cream)}.table-status{font-size:9px;letter-spacing:0;text-shadow:0 1px 4px #000}.table-target:disabled{opacity:.85}.table-target.available .number,.table-target.yours .number{background:var(--acid);color:#282a18;border-color:var(--acid);box-shadow:0 0 0 4px #e3e9b21c,0 0 20px #e3e9b23a}.table-target.taken .number{background:#50241d;color:#ca9480;border-color:#854a36}.table-target.running .number{border-color:var(--acid);color:var(--acid)}
.game-message{position:absolute;top:50%;left:50%;width:180px;transform:translate(-50%,-50%);z-index:3;text-align:center;pointer-events:none}.game-message h2{font-size:19px;line-height:1.16;letter-spacing:-.7px;font-weight:400;white-space:pre-line}.game-message .eyebrow,.game-message p,.reaction-track{display:none}#result-score{width:96px;height:96px;margin:0 auto 10px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--acid);color:#000;font-size:49px;letter-spacing:-3px;line-height:1}body[data-state="missed"] #result-score{background:red}body[data-state="moving"] .game-message{opacity:0}body[data-state="entering"] .game-message,body[data-state="entering"] .round-hud,body[data-state="entering"] #table-targets{visibility:hidden}#player-marker{position:absolute;z-index:3;pointer-events:none;transform:translate(-50%,-100%);padding:5px 7px;background:var(--acid);color:#202313;border-radius:2px;font-size:9px;line-height:1;font-weight:700;letter-spacing:.3px}#player-marker::after{content:'';position:absolute;left:50%;bottom:-4px;margin-left:-3px;border:3px solid transparent;border-bottom:0;border-top:4px solid var(--acid)}
.end,.pause{background:radial-gradient(ellipse at 75% 30%,#60643130,transparent 55%),linear-gradient(150deg,#10140df5,#070b08ed);backdrop-filter:blur(14px)}.end{justify-content:center;padding-top:90px;padding-bottom:105px}.end-content{width:100%;max-width:480px}.end .eyebrow{color:var(--acid);font-size:10px}.fine-rule{width:40px;height:1px;background:var(--acid);margin:23px auto}.end h2,.pause h2{font-size:clamp(34px,9vw,58px);font-weight:400;line-height:1.08;letter-spacing:-1.8px}.end h2 em,.pause h2 em{font-family:Editorial,Georgia,serif;color:var(--acid);font-weight:400}.end p,.pause p{font-size:14px;line-height:1.6;color:#c9cbbb;margin:24px 0 30px}.end .primary,.pause .primary{max-width:430px;margin:auto;font-size:20px;justify-content:center}.text-button{border:0;background:none;font-size:11px;letter-spacing:1px;padding:22px 10px;color:#c6c8bb;min-height:44px}.text-button span{margin-left:10px}.pause{position:absolute;inset:0;z-index:10;display:flex;align-items:center;justify-content:center;text-align:center;padding:90px 24px 105px}.pause-card{width:100%;max-width:480px}.pause-card>.eyebrow{font-size:16px;color:var(--acid)}noscript{position:absolute;inset:35% 20px;z-index:20;background:#111;padding:25px;line-height:2}
@media(min-width:700px) and (min-height:551px){.header{top:25px}:root{--brand-width:112px}.brand-partners{width:360px}.round-dots{bottom:calc(24px + var(--safe-bottom))}.round-hud{inset:25px 30px auto}#round-label,.prize-label{font-size:12px}.game-message h2{font-size:24px}.game-message{width:240px}#result-score{width:120px;height:120px;font-size:60px}.intro-instructions{font-size:27px;bottom:185px}.sound-prompt{font-size:20px}.intro-instructions strong{font-size:21px}}
@media(max-height:700px) and (orientation:portrait){.intro{padding-top:105px}#intro-title{font-size:clamp(44px,13vw,68px)}.event-date{margin-top:8px}.intro-instructions{bottom:150px;font-size:18px}.sound-prompt{font-size:14px;margin-bottom:9px}.intro-instructions strong{font-size:15px;margin-top:10px}.intro-bottom{padding-bottom:9px}.primary{min-height:51px;padding:15px 18px}.end{padding-top:95px;padding-bottom:85px}.end h2,.pause h2{font-size:34px}.fine-rule{margin:16px auto}.end p,.pause p{font-size:13px;margin:17px 0 21px}.pause{padding-top:95px;padding-bottom:80px}}
@media(orientation:landscape) and (max-height:550px){.header{top:calc(12px + var(--safe-top));gap:10px}.round-hud{top:calc(12px + var(--safe-top))}:root{--brand-width:62px}.brand-partners{width:220px}.intro{padding:88px 54% 20px 4%;justify-content:center}#intro-title{font-size:54px}.event-date{font-size:13px;margin-top:10px}.intro-instructions{left:51%;right:4%;top:105px;bottom:auto;font-size:19px}.intro-instructions strong{font-size:15px;margin-top:10px}.sound-prompt{font-size:12px;margin-bottom:8px}.intro-bottom{position:absolute;left:55%;right:8%;width:auto;bottom:10px;padding:0}.primary{min-height:46px;padding:12px 16px}.round-dots{bottom:calc(12px + var(--safe-bottom))}.game-message h2{font-size:17px}#result-score{width:72px;height:72px;font-size:39px}.end{padding:80px 25% 56px}.end h2,.pause h2{font-size:31px}.end .fine-rule{display:none}.end p{font-size:12px;margin:12px 0 16px}.end .text-button{padding:12px}.pause{padding:80px 25% 56px}.pause-card .fine-rule{display:none}.pause p{margin:12px 0 16px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}

/* Leave the player visible beneath the instruction. */
body[data-state="dancing"] .game-message,body[data-state="choosing"] .game-message{top:43%}

/* Display the supplied artwork itself, cropped above the partner logos. */
#intro-title.intro-logo-crop{position:relative;overflow:hidden;width:100%;max-width:590px;aspect-ratio:1476/665;flex-shrink:0;margin:0;font-size:0;line-height:0}
#intro-logo{position:absolute;display:block;width:104.065%;max-width:none;height:auto;left:-2.0325%;top:-14.2857%}
body[data-state="loading"] .intro{background:#10150e}
body[data-state="error"] #world{opacity:0}
body[data-state="error"] .intro{background:#10150e}

/* Compact prize and heart HUD, above the co-branded header. */
#round-label{color:var(--acid)}
#lives{display:flex;gap:5px;color:var(--red);font-size:17px;line-height:1;filter:drop-shadow(0 1px 3px #0008)}
#lives .lost{color:#8d827780;transform:scale(.9)}

body[data-state="missed"] #lives{transform:translateY(0);}
#lives .lost{color:#514b44;text-shadow:none;filter:none}

/* Only the newly lost heart blinks, then stays dim for the next attempt. */
@keyframes lost-heart{0%,45%{opacity:1;color:var(--red);transform:scale(1.15)}65%,100%{opacity:.18;color:#514b44;transform:scale(.9)}}
#lives .life-lost{animation:lost-heart .48s ease-in-out 4}
@media(prefers-reduced-motion:reduce){#lives .life-lost{animation:none}}

/* Editorial result lockup, using the event's cream and acid palette. */
#game #result-score{width:auto;height:auto;margin:0 auto 19px;display:flex;flex-direction:column;gap:10px;border-radius:0;background:none;color:var(--acid);font-size:inherit;letter-spacing:normal;line-height:1}
.score-fraction{display:flex;align-items:baseline;justify-content:center;gap:5px}
#score-number{font-family:Editorial,Georgia,serif;font-size:88px;line-height:.88;letter-spacing:-5px}
.score-total{font-size:24px;font-weight:400;letter-spacing:-1px;color:#d0d0bc}
.score-caption{font-size:8px;letter-spacing:2px;color:#d0d0bc}
body[data-state="success"] .game-message,body[data-state="missed"] .game-message{width:230px;top:47%;padding:25px 20px 22px;background:radial-gradient(ellipse,#070c09ed 30%,#070c09a6 65%,transparent 74%)}
body[data-state="success"] .game-message h2,body[data-state="missed"] .game-message h2{font-size:18px;line-height:1.25;letter-spacing:-.35px}
body[data-state="missed"] #game #result-score{color:#ff6255}
@media(orientation:landscape) and (max-height:550px){#score-number{font-size:58px}#game #result-score{margin-bottom:10px;gap:7px}.score-total{font-size:20px}.score-caption{font-size:7px}body[data-state="success"] .game-message,body[data-state="missed"] .game-message{top:49%;padding:14px 20px}body[data-state="success"] .game-message h2,body[data-state="missed"] .game-message h2{font-size:15px}}

/* One deliberate entrance: logo draw, beach, brands, title, copy, actions. */
.preload{flex-direction:column;gap:28px;transition:opacity .6s ease,visibility .6s ease}
.preload.done{opacity:0;visibility:hidden;pointer-events:none}
.preload-logo{clip-path:inset(0 100% 0 0);animation:logo-draw 1.7s linear forwards}
.preload-caption{font-size:9px;letter-spacing:3px;color:#b1b2a6;opacity:0;animation:entrance-rise .7s ease .8s forwards}
@keyframes logo-draw{0%{clip-path:inset(0 100% 0 0)}10%{clip-path:inset(0 75% 0 0)}24%{clip-path:inset(0 70% 0 0)}40%{clip-path:inset(0 45% 0 0)}56%{clip-path:inset(0 41% 0 0)}70%{clip-path:inset(0 30% 0 0)}84%{clip-path:inset(0 26% 0 0)}100%{clip-path:inset(0)}}
@keyframes entrance-rise{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
body[data-state="revealing"] :is(.brand-main,.brand-partners,#intro-title,.event-date,.intro-instructions>*,#enter,#intro-prize){animation:entrance-rise .55s cubic-bezier(.2,.7,.25,1) both;animation-delay:var(--arrival)}
.brand-main{--arrival:.2s}.brand-partners{--arrival:.35s}#intro-title{--arrival:.5s}.event-date{--arrival:.67s}.intro-instructions>.sound-prompt{--arrival:.82s}.intro-instructions>p:not(.sound-prompt){--arrival:.95s}.intro-instructions>strong{--arrival:1.08s}#enter{--arrival:1.18s}#intro-prize{--arrival:1.3s}
@keyframes enter-pulse{0%,100%{background:var(--acid);box-shadow:0 0 0 0 #f5ffb500}50%{background:#d4df91;box-shadow:0 0 22px 2px #f5ffb524}}
body[data-state="intro"] #enter:not(:disabled),body[data-state="end"] #reserve{animation:enter-pulse 2.2s ease-in-out infinite}
body[data-state="intro"] #enter:hover,body[data-state="intro"] #enter:focus-visible,body[data-state="end"] #reserve:hover,body[data-state="end"] #reserve:focus-visible{animation:none;background:#fffedb}
@media(prefers-reduced-motion:reduce){.preload-logo{clip-path:none}.preload-caption{opacity:1}}

@keyframes sound-pulse{0%,100%{opacity:1}50%{opacity:.35}}
body[data-state="intro"] .sound-prompt{animation:sound-pulse 1.8s ease-in-out infinite}

/* Tint the original title artwork with the interface accent colour. */
#intro-logo{opacity:0}
#intro-title.intro-logo-crop::after{content:'';position:absolute;width:104.065%;aspect-ratio:1536/1024;left:-2.0325%;top:-14.2857%;background:var(--acid);-webkit-mask:url(logo-seat.png) center/100% 100% no-repeat;mask:url(logo-seat.png) center/100% 100% no-repeat;pointer-events:none}

/* Venue signature belongs only to the final booking screen. */
.end-footer{position:absolute;bottom:calc(24px + var(--safe-bottom));left:20px;right:20px;display:flex;flex-direction:column;align-items:center;gap:9px}
.end-footer .venue-wordmark{font-family:Editorial,Georgia,serif;font-size:23px;line-height:1}
.end-footer time{font-family:monospace;font-size:11px;letter-spacing:2px;line-height:1.3}
@media(max-height:700px) and (orientation:portrait){.end-footer{bottom:calc(16px + var(--safe-bottom))}}
@media(orientation:landscape) and (max-height:550px){.end-footer{bottom:calc(10px + var(--safe-bottom));gap:5px}.end-footer .venue-wordmark{font-size:18px}.end-footer time{font-size:9px}}

/* Keep the final screen copy readable at every viewport size. */
#end-kicker,#end-copy,#replay,.pause p{font-size:16px}
#replay{display:flex;align-items:center;justify-content:center;gap:10px;width:max-content;max-width:100%;margin-inline:auto;line-height:1}
#replay .replay-label{font-size:16px;line-height:1;margin:0}
#replay .replay-icon{display:block;width:26px;height:26px;flex:none;transform:translateY(-1px)}

/* A brief instruction helps locate the single free table without covering their targets. */
body[data-state="choosing"] .game-message p{display:block;font-size:12px;line-height:1.35;letter-spacing:0;color:var(--cream);margin:9px -10px 0;text-shadow:0 1px 5px #000}

/* The discreet seven-tap trigger retains the original home typography. */
#intro-prize{width:100%;padding:0;border:0;background:none;color:inherit}
/* A VIP invitation, using the same type scale and primary action as the end screen. */
.vip-content{max-width:430px}
.vip-heading>.eyebrow{font-size:16px;margin-bottom:14px}
.vip-ticket{margin:26px 0 22px;padding:17px 12px 18px;border:1px solid #f5ffb54d;border-radius:2px;background:#f5ffb508}
.vip-ticket>span{display:block;font-size:11px;line-height:1.4;letter-spacing:2px;color:var(--muted);margin-bottom:9px}
#vip-code{display:block;font-family:monospace;font-size:clamp(18px,5vw,24px);line-height:1.2;letter-spacing:1px;color:var(--acid);user-select:all;-webkit-user-select:all}
#vip-back{font-size:16px;letter-spacing:.6px;padding:18px 10px}
body[data-state="vip"] .vip-heading,body[data-state="vip"] .vip-ticket,body[data-state="vip"] #claim-vip{animation:entrance-rise .5s ease both}
body[data-state="vip"] .vip-ticket{animation-delay:.12s}
body[data-state="vip"] #claim-vip{animation-delay:.22s}
@media(max-height:700px) and (orientation:portrait){.vip-ticket{padding:12px;margin:16px 0}.vip-heading>.eyebrow{margin-bottom:10px}.vip-ticket>span{margin-bottom:6px}#vip-back{padding:12px 10px}}
@media(orientation:landscape) and (max-height:550px){.vip{padding:85px 7% 64px}.vip-content{display:grid;grid-template-columns:1fr 1.2fr;align-items:center;gap:30px;max-width:720px}.vip-ticket{margin:0 0 12px;padding:12px}.vip-heading>.eyebrow{margin-bottom:14px}#vip-code{font-size:20px}#vip-back{padding:10px}}
