:root{--bg:#0c1420;--bg-elev:#14202f;--bg-elev-2:#1c2b3d;--line:#2a3b52;--text:#eaf1fb;--text-dim:#8ea3bd;--accent:#2b8fff;--accent-2:#5aa9ff;--strike:#e5352f;--spare:#2b8fff;--good:#35c88a;--radius:14px;--radius-sm:10px;--shadow:0 6px 24px #00000059;--nav-h:64px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body,#root{min-height:100%;margin:0}body{background:radial-gradient(1200px 600px at 50% -10%, #16283f 0%, var(--bg) 55%);min-height:100dvh}#root{flex-direction:column;max-width:560px;min-height:100dvh;margin:0 auto;display:flex}button{font:inherit;color:inherit;cursor:pointer;background:0 0;border:none}input,select{font:inherit;color:var(--text);background:var(--bg-elev-2);border:1px solid var(--line);border-radius:var(--radius-sm);width:100%;padding:12px 14px}input:focus,select:focus{outline:2px solid var(--accent-2);outline-offset:1px}a{color:var(--accent-2);text-decoration:none}.app-main{padding:16px 16px calc(var(--nav-h) + env(safe-area-inset-bottom) + 20px);padding-top:calc(env(safe-area-inset-top) + 12px);flex:1}.topbar{justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.topbar h1{letter-spacing:.2px;margin:0;font-size:22px}.topbar .sub{color:var(--text-dim);font-size:13px}.btn{border-radius:var(--radius);background:var(--bg-elev-2);border:1px solid var(--line);justify-content:center;align-items:center;gap:8px;padding:13px 18px;font-weight:650;transition:transform 60ms,background .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn.primary{color:#fff;background:linear-gradient(#2b8fff 0%,#1a7bea 100%);border:none}.btn.block{width:100%}.btn.ghost{background:0 0}.btn.danger{color:var(--strike);border-color:#452028}.card{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.card+.card{margin-top:12px}.stack{flex-direction:column;gap:12px;display:flex}.row{align-items:center;gap:10px;display:flex}.row.between{justify-content:space-between}.muted{color:var(--text-dim)}.center{text-align:center}.bottom-nav{width:100%;max-width:560px;height:calc(var(--nav-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--line);z-index:20;background:#0f131ce6;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav a{color:var(--text-dim);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;font-size:11px;font-weight:600;display:flex}.bottom-nav a.active{color:var(--accent)}.bottom-nav .ico{font-size:20px;line-height:1}.nav-badge{background:var(--strike);color:#fff;text-align:center;border-radius:999px;min-width:16px;height:16px;padding:0 4px;font-size:10px;font-weight:800;line-height:16px;position:absolute;top:-6px;right:-10px}.empty{text-align:center;color:var(--text-dim);padding:48px 20px}.empty .big{margin-bottom:8px;font-size:42px}.scorecard{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg-elev-2);font-variant-numeric:tabular-nums;grid-template-columns:repeat(9,1fr) 1.5fr;display:grid;overflow:hidden}.sc-frame{border-right:1px solid var(--line);border-bottom:1px solid var(--line);min-width:0}.sc-frame:last-child{border-right:none}.sc-frame.active{background:#2b8fff24}.sc-head{color:var(--text-dim);text-align:center;border-bottom:1px solid var(--line);padding:3px 0;font-size:9px}.sc-throws{justify-content:flex-end;height:22px;display:flex}.sc-throw{border-left:1px solid var(--line);flex:1;justify-content:center;align-items:center;font-size:12px;font-weight:700;display:flex}.sc-throw:first-child{border-left:none}.sc-throw.x{color:var(--strike)}.sc-throw.slash{color:var(--spare)}.sc-cum{justify-content:center;align-items:center;height:26px;font-size:15px;font-weight:750;display:flex}.sc-cum.pending{color:var(--text-dim);font-weight:500}.sc-frame.tenth .sc-throws .sc-throw{font-size:11px}.pad{grid-template-columns:repeat(4,1fr);gap:10px;display:grid}.pad button{aspect-ratio:1;border-radius:var(--radius);background:var(--bg-elev-2);border:1px solid var(--line);justify-content:center;align-items:center;font-size:22px;font-weight:750;transition:transform 50ms,background .12s;display:flex}.pad button:active{transform:scale(.95)}.pad button:disabled{opacity:.28}.pad button.wide{aspect-ratio:auto;grid-column:span 2;padding:16px}.pad button.strike{color:#ff8a95;background:#ff4d5e29;border-color:#5a2730}.pad button.spare{color:#92cbff;background:#3ba7ff29;border-color:#234a6b}.pad-status{text-align:center;color:var(--text-dim);min-height:20px;margin:6px 0 14px;font-size:14px}.pad-status b{color:var(--text)}.avg-banner{text-align:left;border-radius:var(--radius);border:1px solid var(--line);background:linear-gradient(135deg,#2b8fff2e,#2b8fff0a);justify-content:space-between;align-items:center;gap:12px;width:100%;margin-bottom:18px;padding:16px 18px;display:flex}.avg-banner:active{transform:scale(.995)}.avg-label{letter-spacing:.5px;color:var(--accent-2);font-size:11px;font-weight:700}.avg-value{font-variant-numeric:tabular-nums;font-size:40px;font-weight:800;line-height:1}.avg-meta{color:var(--text-dim);flex-direction:column;align-items:flex-end;gap:4px;font-size:13px;display:flex}.avg-cta{color:var(--accent);font-weight:700}.stat-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.stat-tile{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);padding:16px}.stat-tile .label{color:var(--text-dim);font-size:12px;font-weight:600}.stat-tile .value{font-variant-numeric:tabular-nums;margin-top:4px;font-size:30px;font-weight:800}.stat-tile .value.accent{color:var(--accent)}.stat-tile.wide{grid-column:span 2}.spark{width:100%;height:120px}.spark-dot{fill:var(--accent)}.spark-line{fill:none;stroke:var(--accent);stroke-width:2.5px}.spark-area{fill:url(#sparkGrad)}.list-row{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.list-row+.list-row{margin-top:10px}.list-row .title{font-weight:700}.list-row .meta{color:var(--text-dim);margin-top:2px;font-size:13px}.pill{font-variant-numeric:tabular-nums;color:var(--accent);font-size:22px;font-weight:800}.game-score-badge{text-align:center;font-variant-numeric:tabular-nums;border-radius:var(--radius-sm);background:var(--bg-elev-2);border:1px solid var(--line);min-width:52px;padding:6px 10px;font-size:20px;font-weight:800}.chip{border:1px solid var(--line);background:var(--bg-elev-2);color:var(--text-dim);border-radius:999px;align-items:center;gap:6px;padding:5px 10px;font-size:12px;font-weight:600;display:inline-flex}.chip .dot{background:currentColor;border-radius:50%;width:8px;height:8px}.chip.synced{color:var(--good)}.chip.syncing{color:var(--accent)}.chip.error{color:var(--strike)}.field-label{color:var(--text-dim);margin-bottom:6px;font-size:13px;font-weight:600}.field+.field{margin-top:12px}.error-text{color:var(--strike);font-size:13px}.login{min-height:100dvh;padding:24px 18px calc(env(safe-area-inset-bottom) + 24px);flex-direction:column;flex:1;justify-content:center;align-items:center;display:flex}.login-card{background:var(--bg-elev);border:1px solid var(--line);width:100%;max-width:380px;box-shadow:var(--shadow);border-radius:18px;padding:22px}.login-brand{text-align:center;margin-bottom:18px}.login-logo{width:84px;height:84px;box-shadow:var(--shadow);border-radius:20px;margin-bottom:10px}.login-brand h1{letter-spacing:.3px;margin:4px 0 2px;font-size:26px}.linklike{color:var(--accent-2);background:0 0;border:none;padding:6px;font-size:14px;font-weight:600}.linklike:active{opacity:.7}.request-card{background:linear-gradient(135deg,#2b8fff24,#0000);border-color:#2a4a6b}.season-group{margin-top:16px}.season-title{color:var(--text-dim);letter-spacing:.4px;margin:0 2px 10px;font-size:13px;font-weight:700}.league-tiles{grid-template-columns:1fr 1fr;gap:12px;display:grid}.league-tile{background:var(--bg-elev);border:1px solid var(--line);border-radius:var(--radius);text-align:center;box-shadow:var(--shadow);padding:18px 12px 14px;position:relative}.tile-badge{color:#fff;border-radius:50%;justify-content:center;align-items:center;width:54px;height:54px;margin:0 auto 10px;font-size:19px;font-weight:800;display:flex}.tile-name{font-size:15px;font-weight:750;line-height:1.2}.tile-sub{color:var(--text-dim);margin-top:4px;font-size:12px;line-height:1.3}.tile-stat{color:var(--accent);margin-top:8px;font-size:13px;font-weight:700}.tile-stat.none{color:var(--text-dim);font-weight:500}.tile-req{background:var(--strike);color:#fff;text-align:center;border-radius:999px;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-weight:800;line-height:20px;position:absolute;top:6px;left:6px}.tile-remove{background:var(--bg-elev-2);border:1px solid var(--line);width:24px;height:24px;color:var(--text-dim);border-radius:50%;justify-content:center;align-items:center;font-size:15px;line-height:1;display:flex;position:absolute;top:6px;right:6px}.modal-overlay{z-index:50;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#060a10b3;justify-content:center;align-items:center;padding:22px;display:flex;position:fixed;inset:0}.modal-card{background:var(--bg-elev);border:1px solid var(--line);width:100%;max-width:360px;box-shadow:var(--shadow);border-radius:16px;padding:20px}.modal-card h3{margin:0 0 6px;font-size:18px}.modal-card.scroll{max-height:85vh;overflow-y:auto}.splash{flex-direction:column;flex:1;justify-content:center;align-items:center;gap:20px;min-height:100dvh;display:flex}.splash-logo{width:96px;height:96px;box-shadow:var(--shadow);border-radius:22px;animation:.4s splash-pop}@keyframes splash-pop{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.splash-dots{gap:7px;display:flex}.splash-dots span{background:var(--accent);border-radius:50%;width:9px;height:9px;animation:1s ease-in-out infinite splash-bounce}.splash-dots span:nth-child(2){animation-delay:.15s}.splash-dots span:nth-child(3){animation-delay:.3s}@keyframes splash-bounce{0%,80%,to{opacity:.5;transform:scale(.6)}40%{opacity:1;transform:scale(1)}}
