:root{color:#f5edcf;font-synthesis:none;text-rendering:geometricprecision;--cream:#f5edcf;--muted:#9bb0aa;--ink:#102329;--deep:#0c181d;--teal:#80d4bd;--coral:#e96851;--gold:#f4c45f;--panel:#0d1c22db;background:#102329;font-family:Avenir Next,Avenir,Inter,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{background:#102329;min-width:320px}button,textarea{font:inherit}button{cursor:pointer}#app{isolation:isolate;background:#102329;position:relative}#game-canvas{touch-action:none;outline:none;width:100vw;height:100vh;display:block}#app:before{z-index:1;pointer-events:none;content:"";mix-blend-mode:multiply;background:radial-gradient(circle at 50% 40%,#0000 38%,#0612164d 100%);position:absolute;inset:0}#screen-flash{z-index:20;pointer-events:none;background:var(--gold);opacity:0;position:absolute;inset:0}.is-hidden{display:none!important}.screen-layer,.modal-screen{z-index:5;position:absolute;inset:0}.screen-layer{background:linear-gradient(90deg,#08161be6 0%,#08161b94 44%,#08161b0f 78%);flex-direction:column;justify-content:space-between;padding:clamp(20px,3.2vw,52px) clamp(20px,5.5vw,96px) clamp(18px,3vw,44px);display:flex}.setup-topline,.race-topbar{justify-content:space-between;align-items:center;gap:20px;display:flex}.setup-topline-actions{align-items:center;gap:14px;display:flex}.brand-mark{color:var(--cream);letter-spacing:.18em;align-items:center;gap:10px;font-size:.73rem;font-weight:900;display:inline-flex}.brand-dot{background:var(--coral);border-radius:50%;width:10px;height:10px;box-shadow:0 0 0 4px #e968512e,0 0 18px #e9685166}.topline-note,.footer-credit{color:#f5edcf8a;letter-spacing:.12em;text-transform:uppercase;font-size:.65rem}.setup-layout{grid-template-columns:minmax(250px,.82fr) minmax(360px,.95fr);align-items:center;gap:clamp(40px,9vw,150px);width:100%;max-width:1180px;margin:auto;display:grid}.setup-copy{max-width:470px}.eyebrow{color:var(--teal);letter-spacing:.2em;text-transform:uppercase;margin:0 0 12px;font-size:.67rem;font-weight:900}h1,h2{color:var(--cream);letter-spacing:-.075em;margin:0;font-size:clamp(3.5rem,8.4vw,8.6rem);font-weight:800;line-height:.82}h1 em,h2 em{color:var(--gold);letter-spacing:-.1em;font-family:Georgia,Times New Roman,serif;font-weight:400}.setup-intro{color:#f5edcfbd;max-width:330px;margin:28px 0 0;font-size:clamp(.88rem,1.2vw,1.04rem);line-height:1.55}.panel-card{background:var(--panel);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border:1px solid #f5edcf33;box-shadow:0 30px 80px #040e1257,inset 0 1px #ffffff0f}.lineup-card{justify-self:end;width:min(100%,480px);padding:clamp(20px,2.4vw,32px);transform:rotate(1.2deg)}.card-heading,.results-heading{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.card-caption{color:#f5edcfb8;letter-spacing:-.02em;margin:-2px 0 20px;font-size:1.1rem}.mode-picker{border-top:1px solid #f5edcf24;margin:2px 0 18px;padding-top:14px}.mode-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:8px;display:grid}.mode-card{color:#f5edcfad;text-align:left;background:#04101575;border:1px solid #f5edcf33;border-radius:2px;flex-direction:column;justify-content:center;align-items:flex-start;gap:3px;min-width:0;min-height:76px;padding:9px 10px;transition:border-color .14s,background .14s,transform .14s,color .14s;display:flex}.mode-card:hover{border-color:var(--teal);color:var(--cream);transform:translateY(-2px)}.mode-card.is-selected{border-color:var(--gold);color:var(--cream);background:linear-gradient(135deg,#f4c45f29,#80d4bd14);box-shadow:inset 0 0 0 1px #f4c45f1f}.mode-card:focus-visible{outline:2px solid var(--teal);outline-offset:2px}.mode-index{color:var(--teal);letter-spacing:.12em;font-size:.52rem;font-weight:900}.mode-card strong{letter-spacing:-.02em;font-size:.78rem}.mode-card small{color:#f5edcf7a;text-overflow:ellipsis;white-space:nowrap;width:100%;font-size:.52rem;line-height:1.25;overflow:hidden}.sticker,.result-stamp{aspect-ratio:1;width:62px;min-width:62px;color:var(--coral);letter-spacing:.12em;text-align:center;border:1px solid #f5edcf8c;border-radius:50%;place-items:center;font-size:.5rem;font-weight:900;line-height:1.08;display:grid;transform:rotate(8deg)}#names-input{resize:vertical;width:100%;min-height:150px;max-height:34vh;color:var(--cream);background:#0410159e;border:1px solid #f5edcf33;border-radius:2px;outline:none;padding:15px 16px;font-size:1rem;line-height:1.62;transition:border-color .16s,box-shadow .16s;display:block}#names-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #80d4bd29}.input-foot{justify-content:space-between;align-items:center;gap:14px;margin-top:16px;display:flex}#name-helper{color:#f5edcf80;max-width:190px;font-size:.64rem;line-height:1.4}#name-helper.is-error{color:var(--coral)}.race-options{border-top:1px solid #f5edcf24;justify-content:space-between;align-items:center;gap:16px;margin-top:14px;padding:11px 0 2px;display:flex}.race-options label{flex-direction:column;gap:4px;display:flex}.option-label{color:var(--teal);letter-spacing:.16em;font-size:.62rem;font-weight:900}.option-help{color:#f5edcf75;font-size:.62rem}.duration-control{color:var(--gold);letter-spacing:.12em;align-items:baseline;gap:8px;font-size:.64rem;font-weight:900;display:flex}#duration-input{width:76px;color:var(--cream);font-variant-numeric:tabular-nums;text-align:right;background:#0410159e;border:1px solid #f5edcf3d;border-radius:2px;outline:none;padding:8px;font-size:.9rem}#duration-input:focus{border-color:var(--teal);box-shadow:0 0 0 3px #80d4bd29}.primary-button{min-height:48px;color:var(--ink);background:var(--gold);letter-spacing:.06em;text-transform:uppercase;border:0;border-radius:0;padding:0 18px;font-size:.73rem;font-weight:900;transition:transform .14s,background .14s,box-shadow .14s}.primary-button span{margin-left:12px;font-size:1.1rem;transition:transform .14s;display:inline-block}.primary-button:hover{background:#ffe087;transform:translateY(-2px);box-shadow:0 10px 28px #f4c45f2e}.primary-button:hover span{transform:translate(2px,-2px)}.primary-button:active{transform:translateY(0)}.primary-button:disabled{cursor:not-allowed;opacity:.48;box-shadow:none;transform:none}.setup-footer{color:#f5edcf8a;letter-spacing:.1em;text-transform:uppercase;align-items:center;gap:clamp(14px,2.8vw,42px);font-size:.65rem;display:flex}.setup-footer b{color:var(--teal);margin-right:6px}.footer-credit{margin-left:auto}#race-hud{z-index:4;pointer-events:none;color:var(--cream);position:absolute;inset:0}.race-topbar{top:max(18px, env(safe-area-inset-top));right:max(22px, env(safe-area-inset-right));left:max(22px, env(safe-area-inset-left));pointer-events:auto;position:absolute}.race-meta{align-items:baseline;gap:13px;margin-left:auto;margin-right:20px;display:flex}.race-meta-label{color:#f5edcf7a;letter-spacing:.15em;font-size:.6rem}.race-mode-label{color:var(--teal);letter-spacing:.12em;font-size:.6rem;font-weight:900}.race-phase{color:var(--gold);letter-spacing:.16em;font-size:.7rem;font-weight:900}.race-time{min-width:68px;color:var(--cream);font-variant-numeric:tabular-nums;font-size:1rem;font-weight:800}.race-duration{color:#f5edcf7a;letter-spacing:.12em;font-size:.58rem;font-weight:800}.hud-actions{gap:7px;display:flex}.quiet-button,.text-button{color:#f5edcfdb;letter-spacing:.09em;text-transform:uppercase;background:#0c181d9e;border:1px solid #f5edcf47;padding:9px 11px;font-size:.62rem;font-weight:800}.landing-sound-button{min-width:92px;min-height:44px}.quiet-button:hover,.text-button:hover{border-color:var(--teal);color:var(--teal)}.live-board{top:94px;right:max(22px, env(safe-area-inset-right));pointer-events:auto;border-top:1px solid #f5edcf42;border-bottom:1px solid #f5edcf29;width:min(210px,25vw);padding:7px 0;position:absolute}.camera-control{bottom:max(48px, calc(env(safe-area-inset-bottom) + 48px));left:max(22px, env(safe-area-inset-left));pointer-events:auto;align-items:center;gap:8px;display:flex;position:absolute}.camera-kicker{color:#f5edcf7a;letter-spacing:.16em;font-size:.58rem;font-weight:900}.camera-button{min-width:104px}.camera-button:disabled{cursor:not-allowed;opacity:.52}.camera-button:focus-visible{outline:2px solid var(--teal);outline-offset:3px}.live-row{color:#f5edcfa3;grid-template-columns:18px 7px minmax(0,1fr) auto;align-items:center;gap:7px;padding:7px 2px;font-size:.65rem;display:grid}.live-row.is-leading{color:var(--cream)}.live-rank{color:#f5edcf61;font-variant-numeric:tabular-nums}.live-row.is-leading .live-rank{color:var(--gold)}.live-swatch,.standing-swatch{background:var(--row-color);width:7px;height:7px;box-shadow:0 0 9px var(--row-color);border-radius:50%;display:block}.live-name,.standing-name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.live-distance{color:#f5edcf66;font-variant-numeric:tabular-nums}.race-footer-note{right:max(22px, env(safe-area-inset-right));bottom:max(18px, env(safe-area-inset-bottom));color:#f5edcf78;letter-spacing:.08em;text-transform:uppercase;font-size:.6rem;position:absolute}.footer-pip{background:var(--teal);border-radius:50%;width:6px;height:6px;margin-right:8px;display:inline-block}.countdown-callout{pointer-events:none;text-align:center;text-shadow:0 14px 34px #0006;flex-direction:column;align-items:center;gap:12px;display:flex;position:absolute;top:52%;left:50%;transform:translate(-50%,-50%)}#countdown-number{color:var(--gold);letter-spacing:-.12em;font-size:clamp(6.5rem,19vw,13rem);font-weight:950;line-height:.72}#countdown-caption{color:#f5edcfdb;letter-spacing:.28em;font-size:clamp(.62rem,1.2vw,.82rem);font-weight:900}.countdown-callout.is-go #countdown-number{color:var(--teal);letter-spacing:-.08em;font-size:clamp(5.3rem,15vw,10.5rem)}.countdown-callout.is-go #countdown-caption{color:var(--teal)}.event-toast{border-top:2px solid var(--toast-color,var(--gold));min-width:210px;max-width:min(420px,76vw);color:var(--cream);text-align:center;background:#0a161bd1;flex-direction:column;align-items:center;padding:14px 22px 15px;display:flex;position:absolute;top:18%;left:50%;transform:translate(-50%);box-shadow:0 14px 42px #0000003d}.toast-kicker{color:var(--toast-color,var(--gold));letter-spacing:.2em;font-size:.58rem;font-weight:900}#event-title{letter-spacing:-.035em;margin-top:4px;font-size:clamp(1.05rem,2vw,1.55rem)}#event-detail{color:#f5edcf9e;margin-top:4px;font-size:.7rem}.modal-screen{-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#06121642;place-items:center;padding:22px;display:grid}.pause-card{text-align:center;width:min(440px,100%);padding:clamp(28px,5vw,54px)}.pause-card h2{margin-bottom:36px;font-size:clamp(3.5rem,8vw,5.7rem)}.results-card{width:min(580px,100%);max-height:min(92vh,760px);padding:clamp(22px,3.4vw,34px);overflow:auto}.results-heading h2{font-size:clamp(3.7rem,6vw,5.4rem)}.winner-block{border-top:1px solid #f5edcf38;border-bottom:1px solid #f5edcf38;grid-template-columns:minmax(142px,.46fr) minmax(0,1fr);align-items:center;gap:18px;margin:24px 0 16px;padding:10px 0 12px;display:grid}.winner-showcase{background:radial-gradient(at 50% 62%,#80d4bd2e,#0000 66%);border-right:1px solid #f5edcf29;min-height:150px}#winner-model-canvas{width:100%;height:150px;display:block}.winner-copy{min-width:0}.winner-kicker{color:var(--teal);letter-spacing:.18em;font-size:.62rem;font-weight:900;display:block}#winner-name{color:var(--gold);letter-spacing:-.075em;text-overflow:ellipsis;white-space:nowrap;margin:7px 0 6px;font-size:clamp(2.3rem,5.5vw,3.6rem);line-height:.95;display:block;overflow:hidden}#winner-meta{color:#f5edcf9e;font-size:.73rem}.standings{gap:2px;display:grid}.standing-row{color:#f5edcfa6;grid-template-columns:25px 8px minmax(0,1fr) auto;align-items:center;gap:10px;min-height:30px;font-size:.75rem;display:grid}.standing-row.is-winner{color:var(--cream)}.standing-rank{color:#f5edcf57;font-variant-numeric:tabular-nums}.standing-row.is-winner .standing-rank{color:var(--gold);font-weight:900}.standing-status{color:#f5edcf6b;text-transform:uppercase;font-size:.61rem}.result-actions{align-items:center;gap:18px;margin-top:20px;display:flex}.text-button{background:0 0;border:0;padding:11px 0}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=820px){.screen-layer{padding:18px max(16px, env(safe-area-inset-left)) max(18px, env(safe-area-inset-bottom))}.setup-layout{grid-template-columns:1fr;align-content:center;gap:26px}.setup-copy{max-width:370px}h1{font-size:clamp(3.6rem,17vw,6.5rem)}.setup-intro{margin-top:16px}.lineup-card{justify-self:stretch;width:100%;max-width:480px;transform:none}.setup-footer{flex-wrap:wrap;gap:10px 18px}.footer-credit,.topline-note{display:none}.setup-topline-actions{margin-left:auto}.race-meta-label,.race-mode-label,.race-duration{display:none}.race-topbar{right:max(14px, env(safe-area-inset-right));left:max(14px, env(safe-area-inset-left))}.race-meta{gap:8px;margin-right:0}.live-board{top:82px;right:max(14px, env(safe-area-inset-right));width:min(180px,48vw)}.camera-control{bottom:max(48px, calc(env(safe-area-inset-bottom) + 48px));left:max(14px, env(safe-area-inset-left))}.race-footer-note{right:max(14px, env(safe-area-inset-right));bottom:max(14px, env(safe-area-inset-bottom));font-size:.52rem}.countdown-callout{top:54%}.event-toast{top:23%}}@media (width<=520px){.setup-topline{align-items:flex-start}.setup-layout{gap:22px}.lineup-card{padding:18px}.card-caption{margin-bottom:14px;font-size:.94rem}.mode-card{min-height:58px;padding:7px 8px}.mode-card small{display:none}#names-input{min-height:132px;font-size:.9rem}.race-options{align-items:flex-start}.option-help{max-width:170px;line-height:1.35}.input-foot{align-items:flex-end}.input-foot .primary-button{min-height:43px;padding:0 13px;font-size:.63rem}#name-helper,.race-phase{font-size:.58rem}.race-time{min-width:60px;font-size:.84rem}.quiet-button{padding:8px;font-size:.55rem}.camera-kicker{display:none}.camera-button{min-width:96px}.live-board{top:72px}.results-card{padding:22px 18px}.results-heading h2{font-size:3.8rem}.result-stamp{width:52px;min-width:52px;font-size:.44rem}.winner-block{grid-template-columns:112px minmax(0,1fr);gap:12px}.winner-showcase{min-height:126px}#winner-model-canvas{height:126px}.standing-status{display:none}.result-actions{flex-direction:column;align-items:stretch;gap:8px}}
