:root{--bg:#0b1020;--bg-2:#121a30;--panel:#182340;--line:#2a3760;--text:#eef2ff;--muted:#a3afd0;--accent:#ffd34d;--accent-text:#1a1400;--danger:#ff7a7a;--danger-bg:#3a1620;--info-bg:#17284a;--floor:#1f4f7a;--floor-line:#f4f7ff;--serve-zone:#16263f;--role-s:#ffd34d;--role-oh:#6cc0ff;--role-mb:#58dc98;--role-opp:#ff9466;--role-l:#d0a8ff;--dot-text:#0b1020;--radius:14px;--tap:44px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--text);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent;margin:0;overflow-x:hidden}body{background:radial-gradient(120% 60% at 50% 0%, #141d3a 0%, var(--bg) 60%) no-repeat, var(--bg);min-height:100dvh}button,select{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.app{max-width:560px;padding:env(safe-area-inset-top) 16px calc(68px + env(safe-area-inset-bottom));margin:0 auto}input{font:inherit;color:inherit;min-height:var(--tap);background:var(--panel);border:1px solid var(--line);border-radius:10px;width:100%;padding:0 12px}.top{padding-top:12px}.team{letter-spacing:.14em;text-transform:uppercase;color:var(--accent);margin:0;font-size:13px;font-weight:700;display:block}.lineup-bar{gap:6px;display:flex}.lineup-bar select{flex:1;min-width:0}.lineup-bar .btn{white-space:nowrap;padding:0 12px}.field{flex-direction:column;flex:1;gap:4px;min-width:0;display:flex}.field span{color:var(--muted);font-size:12px}select{min-height:var(--tap);background:var(--panel);border:1px solid var(--line);border-radius:10px;width:100%;padding:0 10px}.screen{flex-direction:column;gap:10px;padding-top:10px;display:flex}.fit{height:calc(100svh - 68px - env(safe-area-inset-top) - 8px);flex-direction:column;gap:10px;min-height:460px;display:flex}@media (display-mode:standalone){.fit{height:calc(100svh - 68px - env(safe-area-inset-bottom) - env(safe-area-inset-top) - 8px)}}.fit .court-wrap{flex:1;min-height:0}.fit .court{height:100%}.btn{min-height:var(--tap);border:1px solid var(--line);background:var(--panel);cursor:pointer;border-radius:10px;padding:0 14px}.btn.primary{background:var(--accent);color:var(--accent-text);border-color:var(--accent);min-width:84px;font-weight:700}.btn.ghost{background:0 0}.btn.small{min-height:36px;color:var(--muted);font-size:14px}.btn.icon{width:var(--tap);padding:0;font-size:26px;line-height:1}.stepper{align-items:center;gap:6px;display:flex}.stepper-pills{flex:1;gap:4px;display:flex}.pill{min-height:var(--tap);border:1px solid var(--line);background:var(--bg-2);cursor:pointer;border-radius:10px;flex:1;font-weight:600}.pill.on{background:var(--accent);color:var(--accent-text);border-color:var(--accent)}.subtitle{color:var(--muted);margin:0;font-size:14px}.subtitle strong{color:var(--text)}.row{align-items:stretch;gap:8px;display:flex}.seg{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;flex:1;gap:3px;padding:3px;display:flex}.seg button{cursor:pointer;min-height:36px;color:var(--muted);background:0 0;border:0;border-radius:8px;flex:1;font-weight:600}.seg button.on{background:var(--panel);color:var(--text);box-shadow:inset 0 0 0 1px var(--line)}.seg.small button{font-size:13px}.phases{gap:6px;display:flex}.chip{border:1px solid var(--line);min-height:38px;color:var(--muted);cursor:pointer;background:0 0;border-radius:999px;flex:1;justify-content:center;align-items:center;gap:5px;padding:0 6px;font-size:14px;font-weight:600;display:inline-flex}.chip.on{color:var(--text);border-color:var(--accent);background:#ffd34d1a}.chip-n{opacity:.7;font-size:11px}.court-wrap{touch-action:pan-y}.court{-webkit-user-select:none;user-select:none;width:100%;display:block}.court-floor{fill:var(--floor)}.court-outline,.court-line{fill:none;stroke:var(--floor-line);stroke-width:.06px}.court-line{stroke-opacity:.7}.court-mark{fill:var(--floor-line);opacity:.7;font-size:.3px}.serve-zone{fill:var(--serve-zone)}.net{stroke:#fff;stroke-width:.14px}.net-label{fill:var(--muted);letter-spacing:.08px;font-size:.32px}.zone-num{fill:#ffffffa0;font-size:.42px;font-weight:700}.dot{transition:transform .3s ease-out}.dot.tappable{cursor:pointer}.dot-fill{stroke:#0b1020;stroke-width:.05px}.r-s .dot-fill{fill:var(--role-s)}.r-oh .dot-fill{fill:var(--role-oh)}.r-mb .dot-fill{fill:var(--role-mb)}.r-opp .dot-fill{fill:var(--role-opp)}.dot.r-l .dot-fill{fill:var(--role-l)}.dot-role{fill:var(--dot-text);pointer-events:none;font-size:.32px;font-weight:800}.dot-name{fill:#fff;stroke:#0b1020;stroke-width:.12px;paint-order:stroke;pointer-events:none;font-size:.4px;font-weight:700}.passer-ring{fill:none;stroke:#fff;stroke-width:.09px}.w-badge circle{fill:#fff;stroke:#0b1020;stroke-width:.03px}.w-badge text{fill:#0b1020;font-size:.2px;font-weight:800}.lane line{stroke-width:.08px;stroke-linecap:round}.lane-attack line{stroke:#fff}.lane-backrow line{stroke:#fffc}.lane-setter line{stroke:var(--role-s)}.lane-block line{stroke:var(--role-mb)}.arrowhead-attack,.arrowhead-backrow{fill:#fff}.arrowhead-setter{fill:var(--role-s)}.arrowhead-block{fill:var(--role-mb)}.lane-label{fill:#fff;stroke:#0b1020;stroke-width:.09px;paint-order:stroke;font-size:.3px;font-weight:700}.compact .dot-name{font-size:.55px}.compact .lane-label,.compact .court-mark,.compact .net-label{display:none}.facts{grid-template-columns:1fr 1fr;gap:6px;display:grid}.facts>div{background:var(--bg-2);border:1px solid var(--line);border-radius:10px;flex-direction:column;gap:2px;min-width:0;padding:8px 10px;display:flex}.k{color:var(--muted);font-size:12px}.v{font-size:14px;font-weight:600}.v.bad{color:var(--danger)}.note{color:var(--muted);margin:0;font-size:14px;line-height:1.45}.hint{color:var(--muted);text-align:center;margin:0;font-size:13px}.option,.warnings{flex-direction:column;gap:6px;display:flex}.warn{text-align:left;border-radius:10px;margin:0;padding:10px 12px;font-size:14px;line-height:1.4}.warn.error{background:var(--danger-bg);border:1px solid #ff7a7a55}.warn.info{background:var(--info-bg);color:var(--muted)}.warn.link{cursor:pointer;color:var(--text)}.grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.mini{background:var(--bg-2);border:1px solid var(--line);cursor:pointer;text-align:left;border-radius:12px;padding:6px}.mini-title{color:var(--muted);margin:0 0 4px 2px;font-size:12px;display:block}.mini-title strong{color:var(--text)}.card{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);padding:14px}.card h2{margin:0 0 4px;font-size:17px}.muted{color:var(--muted);font-size:14px}.lineup-card{gap:4px;margin:10px 0;padding:0;list-style:none;display:grid}.lineup-card li{border-bottom:1px solid var(--line);grid-template-columns:40px 1fr auto;align-items:center;padding:6px 0;font-weight:600;display:grid}.roman{color:var(--accent);font-weight:800}.tabs{padding:8px 16px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--line);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:#0b1020ee;justify-content:center;gap:8px;display:flex;position:fixed;bottom:0;left:0;right:0}.tabs button{max-width:260px;min-height:var(--tap);color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:10px;flex:1;font-weight:700}.tabs button.on{color:var(--text);background:var(--panel)}.foot{text-align:center;margin:18px 0 0}.sheet{border:1px solid var(--line);background:var(--bg-2);width:100%;max-width:560px;max-height:85dvh;color:var(--text);border-bottom:0;border-radius:18px 18px 0 0;margin:auto auto 0;padding:0}.sheet::backdrop{background:#000a}.sheet-body{padding:16px 16px calc(16px + env(safe-area-inset-bottom))}.sheet-head{justify-content:space-between;align-items:flex-start;gap:8px;display:flex}.sheet h2{margin:0;font-size:20px}.sheet h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:16px 0 6px;font-size:13px}.sheet .muted{margin:4px 0 0}.pick-list{gap:6px;margin:0;padding:0;list-style:none;display:grid}.pick{width:100%;min-height:var(--tap);background:var(--panel);border:1px solid var(--line);cursor:pointer;border-radius:10px;justify-content:space-between;align-items:center;gap:8px;padding:0 12px;display:flex}.pick-name{align-items:center;gap:6px;font-weight:700;display:inline-flex}.pick-pos{color:var(--muted);font-size:13px}.pick-pos.match{color:var(--role-mb)}.tag{color:#0b1020;background:#fff;border-radius:999px;padding:1px 6px;font-size:11px}@media (prefers-reduced-motion:reduce){.dot{transition:none}}.hit{fill:#0000}.compact .dot-fill{r:.54px}.compact .passer-ring{r:.68px}.compact .dot-role{font-size:.4px;transform:translateY(.02px)}.compact .w-badge{display:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.wide{flex:1;width:100%}.btn.danger{color:var(--danger)}.sheet-actions{flex-direction:column;gap:8px;margin-top:16px;display:flex}.sheet .field{margin-top:12px}.sheet select{margin-bottom:6px}.pick.check{justify-content:flex-start}.pick.check input{width:22px;min-height:22px;accent-color:var(--accent);margin:0}.pick.check .pick-pos{margin-left:auto}.pick.check.off{opacity:.55}.foot{flex-direction:column;align-items:center;display:flex}.fit>.seg,.fit>.phases,.fit>.stepper,.fit>.lineup-bar{flex:none}#root{position:relative}.stars{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden;-webkit-mask-image:linear-gradient(#000 0 300px,#0000 1100px);mask-image:linear-gradient(#000 0 300px,#0000 1100px)}.star-layer{border-radius:50%;position:absolute;top:0;left:0}.s1{width:1px;height:1px}.s2{width:1.5px;height:1.5px;animation:6s ease-in-out infinite twinkle}.s3{width:2px;height:2px;animation:9s ease-in-out 2s infinite twinkle}@keyframes twinkle{0%,to{opacity:1}50%{opacity:.45}}@media (prefers-reduced-motion:reduce){.s2,.s3{animation:none}}.app{z-index:1;position:relative}.front-ring{fill:none;stroke:var(--accent);stroke-width:.07px;stroke-dasharray:.18 .12}.lane-move line{stroke:#ffffffb0;stroke-width:.06px}.arrowhead-move{fill:#ffffffb0}.pill.bad{box-shadow:inset 0 0 0 2px var(--danger);position:relative}.pill.bad:after{content:"";background:var(--danger);border-radius:50%;width:6px;height:6px;position:absolute;top:4px;right:4px}.pill.on.bad{box-shadow:inset 0 0 0 2px var(--danger), 0 0 0 2px var(--danger)}.legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 6px;margin:0;font-size:12px;display:flex}.lg{border-radius:50%;width:14px;height:14px;display:inline-block}.lg-front{border:2px dashed var(--accent)}.lg-pass{border:2px solid #fff}.lg-w{color:#0b1020;background:#fff;border-radius:50%;place-items:center;width:14px;height:14px;font-size:10px;font-weight:800;display:inline-grid}.lg-dash{border-top:2px dashed #ffffffb0;width:18px;display:inline-block}.sub-badge rect{fill:#6cc0ff;stroke:#0b1020;stroke-width:.03px}.sub-badge text{fill:#0b1020;font-size:.19px;font-weight:800}.pill.sub:before{content:"";background:#6cc0ff;border-radius:50%;width:6px;height:6px;position:absolute;bottom:4px;left:50%;transform:translate(-50%)}.pill{position:relative}.sub-banner{background:#6cc0ff22;border:1px solid #6cc0ff66;border-radius:10px;flex:none;align-items:center;gap:8px;margin:0;padding:6px 10px;font-size:14px;font-weight:600;display:flex}.sub-banner-k{color:#0b1020;background:#6cc0ff;border-radius:999px;padding:1px 7px;font-size:11px;font-weight:800}.warn.soft{background:#3a2c10;border:1px solid #ffd34d55}.pick.chosen{background:#6cc0ff22;border-color:#6cc0ff}.small-note{margin:-2px 0 8px;font-size:13px}.fit>.phases{margin-bottom:-4px}.warn.current{box-shadow:inset 0 0 0 2px var(--danger)}.here-tag{background:var(--danger);color:#1a0508;border-radius:999px;margin-left:4px;padding:1px 7px;font-size:11px;font-weight:800;display:inline-block}.scoreboard{background:var(--bg-2);border:1px solid var(--line);border-radius:var(--radius);flex:none;grid-template-columns:1fr auto 1fr;align-items:center;padding:6px 12px;display:grid}.sb-team{flex-direction:column;align-items:center;display:flex}.sb-name{letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:12px;font-weight:800}.sb-pts{font-variant-numeric:tabular-nums;font-size:40px;font-weight:800;line-height:1.05}.sb-mid{flex-direction:column;align-items:center;gap:1px;font-size:13px;font-weight:700;display:flex}.sb-sets{color:var(--accent)}.game-status{color:var(--muted);text-align:center;flex:none;margin:0;font-size:15px}.game-status strong{color:var(--text)}.fit.game>.warn{flex:none;margin:0}.rally-btns{flex:none;grid-template-columns:1fr 1fr;gap:8px;display:grid}.btn.rally{border-radius:var(--radius);min-height:64px;font-size:17px;font-weight:800}.btn.rally.us{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.btn.rally.them{background:var(--panel)}.btn.rally:active{transform:scale(.98)}.game-tools{flex:none}.game-tools .btn{min-height:38px;font-size:14px}.btn.wide{flex:1}.setup{flex-direction:column;flex:none;gap:8px;display:flex}.field-k{color:var(--muted);margin-top:4px;font-size:13px;font-weight:700;display:block}.set-done{flex:none}.counters{margin:10px 0}.counter{flex:1}.counter .row{align-items:center}.counter-v{text-align:center;font-variant-numeric:tabular-nums;flex:1;font-size:28px;font-weight:800}.card-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.card .pick-list{margin-top:8px}.sub-h{color:var(--muted);margin:14px 0 0;font-size:14px}.roster-row.off{opacity:.6}.pos-chips{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.check-row{align-items:flex-start;gap:10px;margin:14px 0 4px;font-size:14px;display:flex}.check-row input{flex:none;width:20px;height:20px;margin:0}.card .row{margin-top:10px}.lineup-name{flex:none;margin:0;font-size:17px;font-weight:700}.link-row{align-items:center}.link{text-overflow:ellipsis;white-space:nowrap;background:var(--bg);border:1px solid var(--line);border-radius:10px;flex:1;min-width:0;padding:10px 12px;font-size:14px;overflow:hidden}.card .field{margin-top:12px}.sync-line{color:var(--muted);margin:10px 0 0;font-size:14px}.sync-line.conflict,.sync-line.error{color:var(--danger)}.sync-dot{vertical-align:middle;background:var(--muted);border-radius:50%;width:8px;height:8px;margin-left:4px;display:inline-block}.sync-dot.ok{background:var(--role-mb)}.sync-dot.busy{background:var(--accent)}.sync-dot.bad{background:var(--danger)}.conflict{border-color:var(--danger);margin:10px 0 0}.update-bar{left:12px;right:12px;bottom:calc(76px + env(safe-area-inset-bottom));z-index:5;border-radius:var(--radius);background:var(--panel);border:1px solid var(--accent);justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;font-weight:600;display:flex;position:fixed}.signin{flex-direction:column;gap:8px;display:flex}.foot .btn+.btn{margin-left:8px}
