.button{width:100%;min-height:var(--button-height);border-radius:var(--radius-button);font-family:var(--font-label);letter-spacing:.05em;text-transform:uppercase;cursor:pointer;justify-content:center;align-items:center;gap:10px;padding:0 20px;font-size:21px;font-weight:700;display:flex}.button:active:not(:disabled){transform:scale(.98)}.button:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}.button-primary{background:var(--accent);color:var(--ink);box-shadow:var(--glow-accent);border:0}.button-secondary{color:var(--accent-2);border:2px solid var(--accent-2);box-shadow:var(--glow-accent-2);background:#3de8ff0f}.button-danger{background:var(--error);color:var(--ink);border:0}.button-plain{min-height:48px;color:var(--text-soft);font-family:var(--font-body);letter-spacing:0;text-transform:none;text-underline-offset:4px;background:0 0;border:0;font-size:16px;font-weight:500;text-decoration:underline}.button:disabled{cursor:default}.button:disabled:not([aria-busy]){opacity:.55;box-shadow:none}.button[aria-busy]{cursor:progress}.spinner{flex:none}@media (prefers-reduced-motion:no-preference){.button{transition:transform .12s var(--ease-exit)}.spinner{animation:.9s linear infinite spin}}.field{flex-direction:column;gap:6px;display:flex}.label{font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);font-size:14px;font-weight:600}.input{width:100%;height:var(--button-height);padding:0 var(--space-4);border-radius:var(--radius-button);border:2px solid var(--border);background:var(--field);color:var(--text);font-family:var(--font-body);outline:none;font-size:20px;font-weight:600}.input:focus{border-color:var(--accent-2);box-shadow:var(--focus-ring)}.input[aria-invalid=true]{border-color:var(--error)}.input:disabled{opacity:.6}.chip{align-items:center;gap:var(--space-1);border-radius:var(--radius-chip);height:22px;font-family:var(--font-label);letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;border:1px solid;padding:0 7px;font-size:13px;font-weight:600;display:inline-flex}.chip-accent{color:var(--ink);border-color:var(--accent);background:var(--accent)}.chip-info{color:var(--accent-2);background:#3de8ff14;border-color:#3de8ff99}.chip-success{color:var(--success);background:#5be38b1a;border-color:#5be38b99}.chip-warning{color:var(--warning);background:#ffc53d1a;border-color:#ffc53db3}.chip-error{color:var(--error);background:#ff6b5e1a;border-color:#ff6b5eb3}.chip-muted{color:var(--text-soft);border-color:var(--border);background:#b9b0d614}.notice{--tone:var(--accent-2);--tone-rgb:61 232 255;padding:var(--space-3) 14px;border-radius:var(--radius-field);background:rgb(var(--tone-rgb) / 12%);border:1.5px solid rgb(var(--tone-rgb) / 80%);color:var(--text);text-align:start;align-items:flex-start;gap:10px;font-size:15px;font-weight:500;line-height:1.35;display:flex}@media (prefers-reduced-motion:no-preference){.notice{animation:rise .26s var(--ease-exit)}}.notice svg{color:var(--tone);flex:none}.notice.error{--tone:var(--error);--tone-rgb:255 107 94}.notice.success{--tone:var(--success);--tone-rgb:91 227 139}.notice.warning{--tone:var(--warning);--tone-rgb:255 197 61}.toast{background:var(--surface-raised);align-items:center;box-shadow:0 12px 32px #00000073}@media (prefers-reduced-motion:no-preference){.toast.leaving{animation:rise .18s var(--ease-entry) reverse both}}.avatar{width:36px;height:36px;color:var(--ink);font-family:var(--font-label);letter-spacing:.02em;border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:16px;font-weight:700;display:flex}.avatar.away{opacity:.45;filter:grayscale(.7)}.scrim{z-index:20;padding:0 var(--space-3) max(env(safe-area-inset-bottom), 34px);background:#080610bd;justify-content:center;align-items:flex-end;display:flex;position:fixed;inset:0}.dialog{width:100%;max-width:420px;padding:var(--space-6) 20px 20px;border-radius:var(--radius-panel);background:var(--surface-raised);border:1.5px solid var(--border);text-align:start;flex-direction:column;gap:10px;display:flex;box-shadow:0 -10px 50px #0009}.dialog h2{margin:0;font-size:22px;font-weight:700;line-height:1.2}.dialog p{margin:0 0 var(--space-2);color:var(--text-soft)}@media (prefers-reduced-motion:no-preference){.dialog{animation:rise .28s var(--ease-exit)}}.scorecard{text-align:start;flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.scorecard-row{gap:var(--space-1);padding:6px var(--space-2);background:var(--surface);border:1.5px solid var(--border);border-radius:14px;flex-direction:column;display:flex}.scorecard-row[aria-current=true]{border:2px solid var(--accent);box-shadow:0 0 18px #ff3d8b59}.scorecard-head{align-items:center;gap:var(--space-2);height:26px;display:flex}.scorecard-position{width:18px;font-family:var(--font-display);color:var(--text-soft);font-size:16px}.scorecard-head .avatar{width:26px;height:26px;font-size:11px}.scorecard-name{white-space:nowrap;text-overflow:ellipsis;font-size:17px;font-weight:700;overflow:hidden}.scorecard-total{font-family:var(--font-display);margin-left:auto;font-size:22px;line-height:1}.scorecard-numbers,.scorecard-frames{gap:3px;display:flex}.scorecard-numbers span,.scorecard-frame{text-align:center;flex:1 1 0;min-width:0}.scorecard-numbers span:last-child,.scorecard-frame:last-child{flex-grow:1.5}.scorecard-numbers{font-family:var(--font-label);color:var(--text-soft);font-size:12px;font-weight:600;line-height:1}.scorecard-frame{border:1.5px solid var(--border);background:var(--field);height:42px;font-family:var(--font-label);border-radius:7px;flex-direction:column;justify-content:center;gap:1px;line-height:1.1;display:flex}.scorecard-frame.pending{background:#ffc53d12;border:1.5px dashed #ffc53db3}.scorecard-frame.empty{opacity:.55;background:0 0}.scorecard-rolls{min-height:1.1em;font-size:15px;font-weight:700;display:flex}.scorecard-rolls span{flex:1 1 0}.scorecard-score{min-height:1.1em;color:var(--text-soft);font-size:14px;font-weight:600}.scorecard .strike,.scorecard-legend .strike{color:var(--accent)}.scorecard .spare,.scorecard-legend .spare{color:var(--accent-2)}.scorecard-frame.pending .scorecard-score,.scorecard-legend .pending{color:var(--warning)}.scorecard-legend{font-family:var(--font-label);color:var(--text-soft);flex-wrap:wrap;gap:6px 14px;margin:0;font-size:13px;font-weight:600;display:flex}.scorecard-legend strong{color:var(--text)}.sheet{gap:var(--space-3);width:100%;max-width:420px;max-height:calc(100dvh - max(env(safe-area-inset-top), var(--space-6)));padding:20px var(--space-4) max(env(safe-area-inset-bottom), 20px);border-radius:var(--radius-panel) var(--radius-panel) 0 0;background:var(--bg);border:1.5px solid var(--border);border-bottom:0;flex-direction:column;display:flex;position:relative;overflow-y:auto;box-shadow:0 -10px 50px #0009}.scrim:has(.sheet){padding:0}.sheet h2{font-family:var(--font-display);margin:0;padding-right:52px;font-size:30px;font-weight:400;line-height:1.05}.sheet-close{top:var(--space-3);right:var(--space-3);width:var(--touch);height:var(--touch);color:var(--text-soft);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;display:flex;position:absolute}.scrim.closing{visibility:hidden}@media (prefers-reduced-motion:no-preference){.sheet{animation:rise .28s var(--ease-exit)}.scrim.closing{visibility:visible;animation:fade-out .18s var(--ease-entry) both}.scrim.closing .sheet{animation:rise .18s var(--ease-entry) reverse both}}@keyframes fade-out{to{opacity:0}}.final{gap:var(--space-6);max-width:390px;padding-top:var(--space-6);text-align:start;flex-direction:column;margin:0 auto;display:flex;position:relative}.final:before,.final:after{content:"";z-index:-1;pointer-events:none;border-radius:50%;width:300px;height:300px;position:absolute}.final:before{background:radial-gradient(closest-side,#ff3d8b66,#0000);top:-96px;left:-76px}.final:after{background:radial-gradient(closest-side,#3de8ff47,#0000);top:44px;right:-96px}.final-title{text-align:center;flex-direction:column;align-items:center;gap:6px;display:flex}.final-label{font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);font-size:15px;font-weight:600}.final-title h1{font-family:var(--font-display);color:var(--title);text-shadow:0 0 6px var(--accent), 0 0 20px var(--accent), 0 0 46px #ff3d8bcc;margin:0;font-size:44px;font-weight:400;line-height:1.1}.podium{align-items:flex-end;gap:10px;margin:0;padding:0 14px;list-style:none;display:flex}.podium-step{align-items:center;gap:var(--space-1);flex-direction:column;flex:1 1 0;min-width:0;display:flex}.podium-crown{width:26px;height:26px;color:var(--warning);stroke-width:2.2px;filter:drop-shadow(0 0 6px #ffc53dcc);flex:none}.podium-step .avatar{width:46px;height:46px;font-size:20px}.podium-1 .avatar{width:56px;height:56px;font-size:25px}.podium-name{white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:17px;font-weight:700;line-height:1.1;overflow:hidden}.podium-total{font-family:var(--font-display);font-size:22px;line-height:1}.podium-block{width:100%;height:68px;margin-top:var(--space-1);padding-top:var(--space-2);background:linear-gradient(180deg, var(--wood-light) 0%, var(--wood-back) 100%);font-family:var(--font-display);color:#2a1608;border-radius:10px 10px 0 0;justify-content:center;font-size:30px;line-height:1;display:flex;box-shadow:inset 0 3px #ffffff80,inset 0 -20px 30px #3c190559}.podium-2 .podium-block{height:96px}.podium-1 .podium-block{height:132px;font-size:40px}.final-scorecard{gap:var(--space-2);flex-direction:column;display:flex}.final-scorecard h2{margin:0 0 2px var(--space-1);font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;font-size:15px;font-weight:600}.final-actions{gap:var(--space-1);padding:var(--space-4) var(--space-2) 0;background:linear-gradient(180deg, transparent 0%, var(--bg) 22%);flex-direction:column;display:flex;position:sticky;bottom:0}.final-waiting{padding:var(--space-3) 0;text-align:center;color:var(--text-soft);margin:0}@media (prefers-reduced-motion:no-preference){.podium-step{animation:podium-rise .5s var(--ease-exit) both}.podium-2{animation-delay:.25s}.podium-1{animation-delay:.5s}.final-title h1{animation:headline-pop .5s var(--ease-bounce) .9s both}}@keyframes podium-rise{0%{opacity:0;transform:translateY(40px)}}@keyframes headline-pop{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.12)}}.code-boxes{border:0;min-width:0;margin:0;padding:0}.code-boxes legend{margin-bottom:6px;padding:0}.code-boxes div{gap:var(--space-2);display:flex}.code-boxes input{text-align:center;border-radius:var(--radius-field);border:2px solid var(--border);background:var(--field);min-width:0;height:64px;color:var(--text);font-family:var(--font-display);text-transform:uppercase;caret-color:var(--accent-2);outline:none;flex:1 1 0;padding:0;font-size:28px}.code-boxes .filled{color:var(--accent-2);border-color:#3de8ffb3}.code-boxes input:focus{border-color:var(--accent-2);box-shadow:var(--focus-ring)}.code-boxes:disabled input{opacity:.6}.home{isolation:isolate;min-height:calc(100dvh - max(env(safe-area-inset-top), var(--space-4)) - max(env(safe-area-inset-bottom), var(--space-4)));text-align:start;max-width:390px;padding:0 var(--space-2);flex-direction:column;margin:0 auto;display:flex;position:relative}.home-hero{top:calc(-1 * max(env(safe-area-inset-top), var(--space-4)));z-index:-1;width:100vw;max-width:480px;height:330px;position:absolute;left:50%;transform:translate(-50%);-webkit-mask-image:linear-gradient(#000 70%,#0000);mask-image:linear-gradient(#000 70%,#0000)}.home-hero .neon-cyan{filter:drop-shadow(0 0 7px var(--accent-2))}.home-hero .neon-pink{filter:drop-shadow(0 0 8px var(--accent))}.home-title{text-align:center;font-family:var(--font-display);letter-spacing:.03em;color:var(--title);text-shadow:0 0 6px var(--accent), 0 0 18px var(--accent), 0 0 44px #ff3d8bd9;margin:38px 0 0;font-size:68px;font-weight:400;line-height:1}@media (prefers-reduced-motion:no-preference){.home-title{animation:5s linear infinite flicker}}.home-form{flex-direction:column;gap:14px;margin-top:196px;display:flex}.divider{align-items:center;gap:var(--space-3);color:var(--text-soft);margin:0;font-size:14px;font-weight:500;display:flex}.divider:before,.divider:after{content:"";background:var(--border);flex:1;height:1px}.home-footer{padding-top:var(--space-6);text-align:center;color:var(--text-soft);margin-top:auto;font-size:13px}.lobby{gap:var(--space-4);max-width:390px;min-height:calc(100dvh - max(env(safe-area-inset-top), var(--space-4)) - max(env(safe-area-inset-bottom), var(--space-4)));padding:0 var(--space-2);text-align:start;flex-direction:column;margin:0 auto;display:flex}.lobby-leave{align-self:flex-start;align-items:center;gap:var(--space-2);min-height:var(--touch);margin-left:calc(-1 * var(--space-3));padding:0 var(--space-2);color:var(--text-soft);font:inherit;cursor:pointer;background:0 0;border:0;font-size:15px;font-weight:500;display:flex}.lobby-room{flex-direction:column;gap:2px;min-width:0;display:flex}.lobby-label{font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);font-size:14px;font-weight:600}.lobby-code{font-family:var(--font-display);letter-spacing:.08em;color:var(--accent-2);text-shadow:0 0 14px #3de8ffa6;margin:0;font-size:42px;font-weight:400;line-height:1.05}.lobby-link{color:var(--text-soft);white-space:nowrap;text-overflow:ellipsis;align-items:center;gap:6px;margin-top:6px;font-size:14px;display:flex;overflow:hidden}.lobby-link svg{flex:none;width:16px;height:16px}.lobby-heading{justify-content:space-between;align-items:center;min-height:28px;margin-bottom:6px;display:flex}.lobby-heading h2{font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:16px;font-weight:600}.lobby-bowlers ul{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.lobby-bowler,.lobby-free{border-radius:var(--radius-button);align-items:center;gap:10px;height:56px;display:flex}.lobby-bowler{background:var(--surface);border:1.5px solid var(--border);padding:0 6px 0 10px}.lobby-bowler.you{border:2px solid var(--accent)}.lobby-name{text-overflow:ellipsis;white-space:nowrap;font-size:18px;font-weight:700;overflow:hidden}.lobby-bowler.away .lobby-name{color:var(--text-soft)}.lobby-chips{flex:1;gap:5px;min-width:0;display:flex}.chip-icon{width:12px;height:12px}.lobby-remove{min-height:var(--touch);padding:0 var(--space-3);color:var(--error);font-family:var(--font-label);letter-spacing:.05em;text-transform:uppercase;cursor:pointer;background:0 0;border:1.5px solid #ff6b5e99;border-radius:10px;flex:none;font-size:16px;font-weight:700}.lobby-free{border:1.5px dashed var(--border);color:var(--text-soft);padding:0 10px}.lobby-free-avatar{border:1.5px dashed var(--border);border-radius:50%;width:36px;height:36px}.lobby-footer{gap:var(--space-2);padding-top:var(--space-4);flex-direction:column;margin-top:auto;display:flex}.lobby-footer .toast{left:var(--space-4);right:var(--space-4);bottom:calc(max(env(safe-area-inset-bottom), var(--space-4)) + 88px);z-index:10;max-width:420px;margin:0 auto;position:fixed}.lobby-waiting{justify-content:center;align-items:center;gap:var(--space-3);min-height:var(--button-height);border-radius:var(--radius-button);background:var(--surface);border:1.5px solid var(--border);margin:0;font-weight:600;display:flex}.lobby-dots{gap:5px;display:flex}.lobby-dots span{background:var(--accent-2);border-radius:50%;width:8px;height:8px}@media (prefers-reduced-motion:no-preference){.lobby-dots span{animation:1.2s ease-in-out infinite dots}.lobby-dots span:nth-child(2){animation-delay:.2s}.lobby-dots span:nth-child(3){animation-delay:.4s}}@keyframes dots{0%,to{opacity:.25}50%{opacity:1}}.reconnecting{z-index:10;padding:var(--space-6);background:#080610b8;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.reconnecting-card{align-items:center;gap:var(--space-3);border-radius:var(--radius-panel);background:var(--surface-raised);border:1.5px solid var(--border);text-align:center;width:100%;max-width:342px;color:var(--text-soft);flex-direction:column;padding:28px 22px;display:flex}.reconnecting-card p{margin:0}.reconnecting-spinner{width:40px;height:40px;color:var(--accent-2);stroke-width:2.5px}.reconnecting-card .reconnecting-title{font-family:var(--font-display);color:var(--text);margin-top:6px;font-size:26px;line-height:1.1}.reconnecting-card .reconnecting-attempt{margin-top:var(--space-1);font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;font-size:14px;font-weight:600}@media (prefers-reduced-motion:no-preference){.reconnecting-card{animation:rise .26s var(--ease-exit)}.reconnecting-spinner{animation:.9s linear infinite spin}}.restart{isolation:isolate;min-height:calc(100dvh - max(env(safe-area-inset-top), var(--space-4)) - max(env(safe-area-inset-bottom), var(--space-4)));max-width:390px;padding:0 var(--space-2) 18px;flex-direction:column;margin:0 auto;display:flex;position:relative}.restart-message{align-items:center;gap:var(--space-4);margin:236px 0 var(--space-6);text-align:center;flex-direction:column;display:flex}.restart-message p{margin:var(--space-2) 0 0;font-size:22px;font-weight:700;line-height:1.3}.restart-icon{border:2px solid var(--warning);width:84px;height:84px;color:var(--warning);border-radius:50%;justify-content:center;align-items:center;display:flex;box-shadow:0 0 24px #ffc53d59}.restart-icon svg{stroke-width:1.8px;width:40px;height:40px}.restart .button{margin-top:auto}.celebration{z-index:3;pointer-events:none;position:absolute;inset:0;overflow:hidden}.celebration-beam{mix-blend-mode:screen;opacity:0;width:28%;height:120%;animation:beam 1.2s var(--ease-exit) both;background:linear-gradient(#ff3d8b8c,#3de8ff00);position:absolute;top:-10%}.celebration-beam.left{transform-origin:0 0;left:6%}.celebration-beam.right{transform-origin:100% 0;animation-name:beam-mirrored;right:6%}.celebration-confetti{width:8px;height:14px;animation:confetti 1.2s var(--ease-entry) both;border-radius:2px;position:absolute;top:-12px}@keyframes beam{0%{opacity:0;transform:rotate(-18deg)}25%{opacity:1}to{opacity:0;transform:rotate(14deg)}}@keyframes beam-mirrored{0%{opacity:0;transform:rotate(18deg)}25%{opacity:1}to{opacity:0;transform:rotate(-14deg)}}@keyframes confetti{0%{transform:translateY(0)rotate(0)}to{transform:translateY(110vh)rotate(540deg)}}.swipe-limit{pointer-events:none;border-top:2px dashed #ffffff8c;position:absolute;bottom:40%;left:0;right:0}.swipe-limit span{bottom:100%;left:var(--space-3);margin-bottom:var(--space-1);font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;color:#ffffffb3;font-size:13px;font-weight:600;position:absolute}.swipe-hint,.swipe-gauge{pointer-events:none;position:absolute;inset:0}.swipe-hint p{align-items:center;gap:var(--space-1);flex-direction:column;margin:0;display:flex;position:absolute;top:60%;left:0;right:0}.swipe-hint strong,.swipe-hint span{background:#0e0b1adb;border-radius:999px}.swipe-hint strong{padding:var(--space-2) var(--space-4);border:1.5px solid var(--accent-2);font-size:17px}.swipe-hint span{padding:3px 10px;font-size:14px;font-weight:500}.swipe-hint-hand{bottom:4%;left:calc(50% + var(--space-4));fill:none;width:52px;height:52px;stroke:var(--text);stroke-width:1.6px;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 2px 6px #000000b3);position:absolute}@media (prefers-reduced-motion:no-preference){.swipe-hint-hand{animation:swipe-hint 1.8s var(--ease-pulse) infinite}}@keyframes swipe-hint{0%{opacity:.3;transform:translateY(0)}15%,80%{opacity:1}to{opacity:.3;transform:translateY(-140px)}}.swipe-gauge{padding:0 var(--space-3) calc(max(env(safe-area-inset-bottom), var(--space-4)) + 8dvh);justify-content:space-between;align-items:flex-end;display:flex}.swipe-gauge-panel{padding:var(--space-2) var(--space-3);border-radius:var(--radius-field);border:1px solid var(--border);background:#0e0b1ad1;flex-direction:column;gap:6px;display:flex}.swipe-gauge-label{font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);font-size:13px;font-weight:600}.swipe-gauge-bars{align-items:flex-end;gap:var(--space-1);height:26px;display:flex}.swipe-gauge-bars span{background:#ffffff2e;border-radius:3px;width:12px}.swipe-gauge-bars span:first-child{height:10px}.swipe-gauge-bars span:nth-child(2){height:14px}.swipe-gauge-bars span:nth-child(3){height:18px}.swipe-gauge-bars span:nth-child(4){height:22px}.swipe-gauge-bars span:nth-child(5){height:26px}.swipe-gauge-bars .lit{background:var(--accent-2);box-shadow:0 0 8px var(--accent-2)}.swipe-gauge-spin{align-items:center;gap:6px;height:26px;font-size:15px;font-weight:600;display:flex}.swipe-gauge-spin svg{fill:none;stroke:var(--accent-2);stroke-width:2.5px;stroke-linecap:round;stroke-linejoin:round}.swipe-gauge-spin .derecha{transform:scaleX(-1)}.reveal{gap:var(--space-4);max-width:390px;min-height:calc(100dvh - max(env(safe-area-inset-top), var(--space-4)) - max(env(safe-area-inset-bottom), var(--space-4)));padding:var(--space-6) var(--space-2) 0;text-align:start;flex-direction:column;margin:0 auto;display:flex}.reveal-title{flex-direction:column;gap:2px;display:flex}.reveal-label{font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);font-size:15px;font-weight:600}.reveal-title h1{font-family:var(--font-display);margin:0;font-size:40px;font-weight:400;line-height:1.05}.reveal-lead{align-items:center;gap:var(--space-3);min-height:72px;padding:var(--space-2) var(--space-4);color:#2a1608;background:linear-gradient(#e7c489 0%,#c99b5e 100%);border-radius:16px;margin:0;display:flex;box-shadow:inset 0 2px #ffffff73,0 0 26px #ff3d8b4d}.reveal-crown{stroke-width:2.2px;flex:none;width:30px;height:30px}.reveal-lead span{font-family:var(--font-display);flex:1;font-size:22px;line-height:1.1}.reveal-lead .avatar{width:44px;height:44px;font-size:19px}.reveal-list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.reveal-row{height:62px;padding:0 var(--space-3) 0 10px;background:var(--surface);border:1.5px solid var(--border);border-radius:14px;align-items:center;gap:10px;display:flex}.reveal-row.leader{border:2px solid var(--accent);box-shadow:0 0 18px #ff3d8b59}.reveal-position{width:18px;font-family:var(--font-display);color:var(--text-soft);font-size:18px}.reveal-row .avatar{width:34px;height:34px;font-size:15px}.reveal-who{flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.reveal-name{align-items:center;gap:6px;font-size:17px;font-weight:700;display:flex;overflow:hidden}.reveal-bonus{font-family:var(--font-label);color:var(--warning);font-size:13px;font-weight:600}.reveal-rolls{gap:var(--space-1);perspective:300px;display:flex}.roll{border:1.5px solid var(--border);background:var(--field);width:34px;height:38px;font-family:var(--font-display);border-radius:8px;justify-content:center;align-items:center;font-size:20px;line-height:1;display:flex}.roll.strike{color:var(--accent);border-color:var(--accent)}.roll.spare{color:var(--accent-2);border-color:var(--accent-2)}.reveal-total{text-align:right;width:46px;font-family:var(--font-display);font-size:24px;line-height:1}.reveal-actions{flex-direction:column;gap:10px;margin-top:auto;display:flex}.reveal-scorecard{justify-content:center;align-items:center;gap:var(--space-2);min-height:var(--touch);color:var(--accent-2);font:inherit;cursor:pointer;background:0 0;border:0;font-weight:600;display:flex}.next-frame{min-height:64px;padding:0 var(--space-4);background:var(--surface-raised);border:1.5px solid var(--border);border-radius:16px;align-items:center;gap:14px;font-size:19px;font-weight:700;display:flex}.next-frame svg{flex:none}.next-frame circle{fill:none;stroke-width:4px}.ring-track{stroke:#ffffff24}.ring{stroke:var(--accent-2);stroke-linecap:round;stroke-dasharray:119.4;transform-origin:50%;transform:rotate(-90deg)}.next-frame text{font-family:var(--font-display);fill:var(--text);font-size:17px}@media (prefers-reduced-motion:no-preference){.roll{animation:flip .32s var(--ease-exit) both}.reveal-row{animation:reorder .4s var(--ease-exit) var(--reorder-at) both}.reveal-lead{animation:pop .4s var(--ease-bounce) var(--lead-at) both}.ring{animation:5s linear both drain}}@keyframes flip{0%{opacity:0;transform:rotateX(90deg)}}@keyframes reorder{0%{transform:translateY(calc(var(--from) * 70px))}}@keyframes pop{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.12)}}@keyframes drain{to{stroke-dashoffset:119.4px}}.play{gap:var(--space-2);flex-direction:column;max-width:390px;display:flex;position:relative}.play-header{z-index:1;align-items:center;gap:var(--space-2);margin:0 calc(-1 * var(--space-3)) 0 calc(-1 * var(--space-4));text-align:start;padding:0 2px 14px 4px;display:flex;position:relative}.play-leave{width:var(--touch);height:var(--touch);color:var(--text-soft);cursor:pointer;background:0 0;border:0;flex:none;justify-content:center;align-items:center;padding:0;display:flex}.play-where{gap:var(--space-1);flex-direction:column;flex:1;min-width:0;display:flex}.play-where h1{font-family:var(--font-display);margin:0;font-size:24px;font-weight:400;line-height:1}.play-rolls{align-items:center;gap:var(--space-1);font-family:var(--font-label);letter-spacing:.04em;color:var(--text-soft);white-space:nowrap;font-size:14px;font-weight:600;display:flex}.play-rolls ol{gap:var(--space-1);margin:0 var(--space-1) 0 0;padding:0;list-style:none;display:flex}.play-rolls li{border-radius:var(--radius-chip);border:1.5px solid var(--border);background:var(--surface-raised);width:24px;height:24px;color:var(--text);justify-content:center;align-items:center;font-size:16px;font-weight:700;line-height:1;display:flex}.play-rolls li.pending{opacity:.6;background:0 0;border-style:dashed}.pin-map{flex:none}.pin-map .standing{fill:var(--text)}.pin-map .down{fill:none;stroke:#f6f1e761;stroke-width:1.4px}.play-clock{flex-direction:column;flex:none;align-items:flex-end;width:88px;display:flex}.play-clock-label{font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);font-size:13px;font-weight:600}.play-seconds{font-family:var(--font-display);transition:color .2s var(--ease-exit);font-size:36px;line-height:1}.play-seconds small{font-size:20px}.play-tick{display:inline-block}.play-bar{left:calc(-1 * var(--space-4));right:calc(-1 * var(--space-4));background:#ffffff1f;height:4px;position:absolute;bottom:0}.play-bar div{background:var(--accent-2);height:100%;box-shadow:0 0 10px var(--accent-2);transition:width .25s linear, background-color .2s var(--ease-exit)}.play-header.urgent .play-seconds{color:var(--error)}.play-header.urgent .play-bar div{background:var(--error);box-shadow:0 0 10px var(--error)}.play-edges{z-index:5;pointer-events:none;position:fixed;inset:0;box-shadow:inset 0 0 60px 8px #ff6b5e8c}@media (prefers-reduced-motion:no-preference){.play-tick{animation:tick .16s var(--ease-exit)}.play-header.urgent .play-tick{animation:beat .5s var(--ease-pulse) infinite}.play-edges{animation:edges .5s var(--ease-pulse) infinite}}@keyframes tick{50%{transform:scale(1.08)}}@keyframes beat{50%{transform:scale(1.1)}}@keyframes edges{50%{opacity:.25}}.rivals{z-index:1;margin:var(--space-2) 0 0;padding:var(--space-2) 2px 7px;border-radius:var(--radius-button);background:#1a1530c7;border:1px solid #3a3160cc;list-style:none;display:flex;position:relative}.rival{--state:var(--accent-2);flex-direction:column;flex:1 1 0;align-items:center;gap:2px;min-width:0;display:flex}.rival.finished{--state:var(--success)}.rival.away{--state:var(--text-soft)}.rival-avatar{position:relative}.rival .avatar{width:32px;height:32px;font-size:14px}.rival-dot{background:var(--state);border:2px solid var(--surface);border-radius:50%;width:16px;height:16px;position:absolute;bottom:-3px;right:-3px}.rival-name{text-overflow:ellipsis;white-space:nowrap;max-width:100%;margin-top:2px;font-size:13px;font-weight:600;line-height:1.15;overflow:hidden}.rival-state{font-family:var(--font-label);color:var(--state);white-space:nowrap;font-size:12px;font-weight:600;line-height:1.1}@media (prefers-reduced-motion:no-preference){.rival.playing .rival-dot{animation:1.2s ease-in-out infinite dots}}.play .toast{z-index:6;position:absolute;top:150px;left:0;right:0}.play-bonus{z-index:1;margin:0;position:relative}.outcome{z-index:4;pointer-events:none;flex-direction:column;align-items:center;display:flex;position:fixed;top:min(60dvh,100dvh - 280px);left:0;right:0}.outcome.fleeting{animation:1ms 1.6s forwards outcome-out}.outcome.fleeting.foul{animation-delay:3s}.outcome-symbol{font-family:var(--font-display);color:#fdfcfb;text-shadow:0 0 8px var(--text), 0 0 30px var(--text), 0 6px 0 #00000059;font-size:150px;line-height:.95}.outcome.strike .outcome-symbol{color:#ffdcea;text-shadow:0 0 8px var(--accent), 0 0 30px var(--accent), 0 0 70px #ff3d8bb3}.outcome.spare .outcome-symbol{color:#dcfaff;text-shadow:0 0 8px var(--accent-2), 0 0 30px var(--accent-2), 0 0 70px #3de8ffb3}.outcome.zero .outcome-symbol,.outcome.foul .outcome-symbol{color:#f2f1f8;text-shadow:0 0 8px var(--text-soft), 0 0 30px var(--text-soft)}.outcome-label{font-family:var(--font-display);text-shadow:0 2px #00000080,0 0 18px #0009;margin-top:6px;font-size:32px;line-height:1.1}.outcome-detail{padding:var(--space-1) var(--space-3);background:#0e0b1acc;border-radius:999px;margin-top:6px;font-size:15px;font-weight:600}.play-finished{margin-top:var(--space-6);border-radius:var(--radius-panel);border:1.5px solid var(--border);background:#1a1530f0;flex-direction:column;align-items:center;gap:10px;padding:22px 20px;display:flex}.play-finished p{color:var(--text-soft);margin:0}.play-finished .outcome{position:static}.play-finished .outcome .outcome-symbol{min-width:72px;height:72px;padding:0 var(--space-2);border:2px solid var(--accent);background:var(--field);border-radius:16px;justify-content:center;align-items:center;font-size:44px;line-height:1;display:flex}.play-finished .outcome-label{font-size:22px}.play-finished .play-finished-title{margin-top:var(--space-1);color:var(--text);font-size:20px;font-weight:700;line-height:1.25}.play-finished .play-finished-note{margin-top:6px;font-size:14px}@media (prefers-reduced-motion:no-preference){.outcome.strike .outcome-symbol,.outcome.spare .outcome-symbol{animation:outcome-pop .42s var(--ease-bounce) both}.outcome.zero,.outcome.foul,.outcome.count{animation:outcome-fade .2s var(--ease-exit) both}.outcome.fleeting{animation:outcome-out .25s var(--ease-exit) 1.6s forwards}.outcome.fleeting.zero,.outcome.fleeting.foul,.outcome.fleeting.count{animation:outcome-fade .2s var(--ease-exit) both, outcome-out .25s var(--ease-exit) 1.6s forwards}.outcome.fleeting.foul{animation-delay:0s,3s}}@keyframes outcome-out{to{opacity:0;visibility:hidden}}@keyframes outcome-pop{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.12)}to{opacity:1;transform:scale(1)}}@keyframes outcome-fade{0%{opacity:0}}.desktop-gate{isolation:isolate;min-height:calc(100dvh - 2 * var(--space-4));text-align:start;justify-content:center;align-items:center;gap:120px;max-width:none;display:flex;position:relative;overflow:hidden}.desktop-gate:before{content:"";z-index:-1;background:radial-gradient(closest-side,#ff3d8b4d,#ff3d8b00);border-radius:50%;width:640px;height:640px;position:absolute;top:-160px;left:-120px}.desktop-content{flex-direction:column;gap:28px;max-width:600px;display:flex}.desktop-title{font-family:var(--font-display);letter-spacing:.03em;color:var(--title);text-shadow:0 0 8px var(--accent), 0 0 26px var(--accent), 0 0 70px #ff3d8bd9;margin:0;font-size:132px;font-weight:400;line-height:1}.desktop-lead{max-width:520px;margin:0;font-size:34px;font-weight:600;line-height:1.25}.desktop-invite{margin-top:var(--space-3);align-items:center;gap:28px;display:flex}.desktop-qr{background:var(--text);border-radius:var(--radius-field);flex:none;width:240px;height:240px;padding:19px}.desktop-qr svg{width:100%;height:100%;display:block}.desktop-address{flex-direction:column;gap:10px;min-width:0;display:flex}.desktop-label{font-family:var(--font-label);letter-spacing:.1em;text-transform:uppercase;color:var(--text-soft);font-size:16px;font-weight:600}.desktop-url{font-family:var(--font-display);color:var(--accent-2);text-shadow:0 0 14px #3de8ff99;overflow-wrap:anywhere;font-size:30px;line-height:1.1}.desktop-only{align-items:center;gap:var(--space-2);color:var(--text-soft);font-size:18px;display:flex}.desktop-only svg{width:22px;height:22px}.desktop-phone{border:6px solid var(--border);border-radius:44px;flex:none;order:1;width:314px;height:680px;overflow:hidden;transform:rotate(4deg);box-shadow:0 0 80px #3de8ff40,0 30px 80px #0009}.desktop-phone .home-hero{width:100%;max-width:none;height:100%;display:block;position:static;transform:none;-webkit-mask-image:none;mask-image:none}@media (width<=1100px){.desktop-phone{display:none}}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/barlow-latin-400-normal-qiz4-Cze.woff2)format("woff2"),url(/assets/barlow-latin-400-normal-fsAxiSwU.woff)format("woff")}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-latin-500-normal-BPAOfeC8.woff2)format("woff2"),url(/assets/barlow-latin-500-normal-C1h8hMer.woff)format("woff")}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-latin-600-normal-DILqtrty.woff2)format("woff2"),url(/assets/barlow-latin-600-normal-CNwfPWQD.woff)format("woff")}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-latin-700-normal-A9pxMQ4z.woff2)format("woff2"),url(/assets/barlow-latin-700-normal-__SGTsZ1.woff)format("woff")}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/barlow-condensed-latin-500-normal-BgYH2mbd.woff2)format("woff2"),url(/assets/barlow-condensed-latin-500-normal-HIEiP5Ov.woff)format("woff")}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(/assets/barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff")}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(/assets/barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff")}@font-face{font-family:Bowlby One;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/bowlby-one-latin-400-normal-BlBlciR_.woff2)format("woff2"),url(/assets/bowlby-one-latin-400-normal-DAczUCp_.woff)format("woff")}:root{--bg:#0e0b1a;--surface:#1a1530;--surface-raised:#251e42;--field:#120e22;--border:#3a3160;--text:#f6f1e7;--text-soft:#b9b0d6;--placeholder:#8d84ad;--accent:#ff3d8b;--accent-2:#3de8ff;--success:#5be38b;--warning:#ffc53d;--error:#ff6b5e;--ink:#1a0a14;--title:#ffe3ef;--wood-light:#efcf96;--wood-mid:#d9b274;--wood-back:#b98a5a;--arrow:#8a3f1c;--gutter:#090712;--glow-accent:0 0 0 1px #ff3d8b99, 0 0 26px #ff3d8b80;--glow-accent-2:0 0 18px #3de8ff38;--focus-ring:0 0 0 4px #3de8ff2e;--radius-chip:6px;--radius-field:12px;--radius-button:14px;--radius-panel:22px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-6:24px;--touch:44px;--button-height:56px;--font-display:"Bowlby One", "Arial Black", Impact, sans-serif;--font-body:Barlow, "Helvetica Neue", Arial, sans-serif;--font-label:"Barlow Condensed", "Arial Narrow", Arial, sans-serif;--ease-exit:cubic-bezier(.2, .8, .2, 1);--ease-entry:cubic-bezier(.5, 0, .9, .3);--ease-bounce:cubic-bezier(.34, 1.56, .64, 1);--ease-pulse:cubic-bezier(.4, 0, .6, 1)}*,:before,:after{box-sizing:border-box}html{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;background:var(--bg)}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-body);-webkit-tap-highlight-color:transparent;margin:0;font-size:16px;line-height:1.35}#app{min-height:100dvh;padding:max(env(safe-area-inset-top), var(--space-4)) max(env(safe-area-inset-right), var(--space-4)) max(env(safe-area-inset-bottom), var(--space-4)) max(env(safe-area-inset-left), var(--space-4));overflow-x:clip}input::placeholder{color:var(--placeholder)}a{color:var(--accent-2)}@keyframes spin{to{transform:rotate(360deg)}}@keyframes rise{0%{opacity:0;transform:translateY(40px)}}@keyframes flicker{0%,46%,54%,to{opacity:1}50%{opacity:.55}}main{text-align:center;width:100%;max-width:420px;margin:0 auto}form,label{gap:8px;display:grid}form{gap:16px}input,button{font:inherit;border-radius:8px;padding:12px}input[name=code]{text-transform:uppercase;letter-spacing:.2em}ul{padding:0;list-style:none}.invite{overflow-wrap:anywhere}.lane{z-index:0;position:fixed;inset:0}.lane:before,.lane:after{content:"";pointer-events:none;position:absolute;left:0;right:0}.lane:before{background:linear-gradient(#0e0b1af2,#0e0b1a00);height:230px;top:0}.lane:after{background:linear-gradient(#0e0b1a00,#0e0b1a99);height:154px;bottom:0}.lane canvas{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;height:100%;display:block}.lane p{z-index:1;left:var(--space-4);right:var(--space-4);bottom:max(env(safe-area-inset-bottom), var(--space-4));text-align:center;pointer-events:none;margin:0;font-size:.875rem;position:absolute}
