:root{--bg: #0f1216;--panel: #171b21;--panel-2: #1f252d;--line: #2c343e;--text: #eef2f6;--muted: #8a96a3;--accent: #f5b83d;--floor: #1d4d3a;--court-line: rgba(255, 255, 255, .85);--area: rgba(255, 255, 255, .07);--goal: #2ecc71;--saved: #f5b83d;--miss: #e74c3c;--blocked: #9b59b6;--radius: 10px;color-scheme:dark;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);overscroll-behavior:none}button{font:inherit;color:inherit}kbd{font-family:ui-monospace,monospace;font-size:11px;padding:1px 5px;border-radius:4px;border:1px solid var(--line);color:var(--muted)}.muted{color:var(--muted)}.btn{background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px;cursor:pointer;min-height:44px;touch-action:manipulation}.btn:hover{border-color:var(--muted)}.btn:disabled{opacity:.4;cursor:default}.btn.small{min-height:36px;padding:6px 10px;font-size:14px}.btn.ghost{background:transparent}.btn.primary{background:var(--accent);color:#111;border-color:var(--accent);font-weight:600}.btn.big{font-size:18px;padding:14px 28px}.btn.on{border-color:var(--accent);color:var(--accent)}.badge{font-size:13px;padding:3px 8px;border-radius:999px;border:1px solid var(--line);background:var(--panel-2);white-space:nowrap;font-variant-numeric:tabular-nums}.badge.warn{border-color:var(--accent);color:var(--accent)}.setup{max-width:1100px;margin:0 auto;padding:24px 16px 48px;display:grid;gap:18px}.setup-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.setup-head-actions{display:flex;align-items:center;gap:8px}.lang-picker{position:relative}.lang-current{display:inline-flex;align-items:center;gap:6px;font-weight:600}.flag{width:20px;height:15px;border-radius:2px;object-fit:cover;box-shadow:0 0 0 1px #ffffff26;flex:none}.lang-menu{position:absolute;right:0;top:calc(100% + 6px);z-index:80;list-style:none;margin:0;padding:6px;display:grid;grid-template-columns:repeat(2,auto);gap:2px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 30px #00000080}.lang-menu.left{right:auto;left:0}.lang-menu button{display:flex;align-items:center;gap:8px;width:100%;padding:7px 10px;border-radius:6px;background:none;border:none;cursor:pointer;font-weight:600;font-size:14px}.lang-menu button:hover{background:var(--panel-2)}.lang-menu button.on{background:color-mix(in srgb,var(--accent) 18%,var(--panel-2));color:var(--accent)}.setup h1{margin:0}.setup-teams{display:grid;grid-template-columns:1fr 1fr;gap:18px}@media (max-width: 760px){.setup-teams{grid-template-columns:1fr}}.setup-team{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;display:grid;gap:10px}.setup-team h2{margin:0;font-size:16px;color:var(--muted);font-weight:500}.setup-row{display:flex;gap:10px}.setup-row input[type=color]{width:56px;height:44px;border:none;background:none}.color-pick{display:flex;flex-direction:column;align-items:center;font-size:11px;color:var(--muted)}.color-pick input[type=color]{height:32px}.input{background:var(--bg);border:1px solid var(--line);border-radius:8px;color:var(--text);padding:10px 12px;font:inherit;width:100%}.roster{font-family:ui-monospace,monospace;font-size:14px;resize:vertical}.hint{font-size:13px;color:var(--muted)}.check{display:flex;gap:10px;align-items:center}.check input{width:20px;height:20px}.errors{margin:0;color:var(--miss)}.setup .btn.primary{justify-self:start}.setup select.input{cursor:pointer}.region-flag{width:44px;height:33px;flex:none;align-self:center;border-radius:4px;object-fit:cover;box-shadow:0 0 0 1px #ffffff26}.setup-comp p.hint{margin:0;min-height:17px}.club-logo{width:44px;height:44px;flex:none;object-fit:contain;background:var(--bg);border:1px solid var(--line);border-radius:8px;padding:4px}.hint.warn{color:var(--accent)}.source{margin:0}.roster:disabled{opacity:.55}.roster-card{border-top:4px solid var(--team);align-content:start}.roster-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.roster-bar .btn{margin-left:auto}.count{font-size:13px;padding:3px 9px;border-radius:999px;background:var(--panel-2);font-variant-numeric:tabular-nums}.count.bad{color:var(--accent)}.roster-table{width:100%;border-collapse:collapse;font-size:14px}.roster-table th{font-size:11px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:4px;text-align:center}.roster-table th.name{text-align:left}.roster-table td{padding:3px 4px;border-top:1px solid var(--line);text-align:center}.roster-table td.name{text-align:left;width:100%}.roster-table tr:not(.on) td{opacity:.5}.roster-table tr:not(.on) td:first-child{opacity:1}.roster-table input[type=checkbox]{width:18px;height:18px;cursor:pointer}.roster-table td.empty{color:var(--muted);padding:14px;opacity:1}input.num{width:44px;text-align:center;font-weight:700;font-size:15px;padding:6px 4px;border-radius:6px;background:var(--bg);border:1px solid var(--line);color:var(--text);font-variant-numeric:tabular-nums}.tag{min-width:34px;padding:4px 6px;border-radius:6px;font-size:12px;font-weight:700;cursor:pointer;background:transparent;border:1px solid var(--line);color:var(--muted)}.tag.on{background:color-mix(in srgb,var(--team) 35%,var(--panel-2));border-color:var(--team);color:var(--text)}.tag.on.gk{background:#f1c40f33;border-color:#f1c40f;color:#f1c40f}.tag:disabled{opacity:.3;cursor:default}.row-actions{white-space:nowrap}.icon{background:none;border:none;color:var(--muted);cursor:pointer;padding:4px 6px;font-size:14px;border-radius:6px}.icon:hover{color:var(--text);background:var(--panel-2)}.name-edit{display:flex;gap:4px}.name-edit .input{padding:5px 8px}.add-player{display:flex;gap:6px;align-items:center}.add-player .num{width:56px}.add-player .btn{white-space:nowrap}.paste-import summary{cursor:pointer;color:var(--muted);font-size:14px}.paste-import[open]{display:grid;gap:8px}.paste-import .btn{justify-self:start}.linkish{background:none;border:none;color:var(--muted);cursor:pointer;padding:0;font-size:14px}.removed{display:grid;gap:4px}.removed-row{display:flex;justify-content:space-between;align-items:center;font-size:14px;color:var(--muted)}.live{height:100vh;height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr);user-select:none;-webkit-user-select:none}.live.dragging,.live.dragging *{cursor:grabbing!important}.status{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:14px;padding:6px 12px;background:var(--panel);border-bottom:1px solid var(--line)}.status-side{display:flex;align-items:center;gap:6px;flex-wrap:wrap;min-width:0}.status-side.right{justify-content:flex-end}.team .timeout{width:100%;margin-bottom:6px;min-height:32px;padding:4px 6px;font-size:13px}.scoreboard{display:flex;align-items:center;gap:14px;font-variant-numeric:tabular-nums;justify-self:center;min-width:0}.sb-team{display:flex;align-items:center;gap:10px}.sb-team .team-name{font-weight:600;font-size:16px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sb-team .goals{font-size:34px;font-weight:800;min-width:1.3em;text-align:center}.sb-team .team-logo{width:28px;height:28px;object-fit:contain}.clock{display:flex;flex-direction:column;align-items:center;padding:2px 16px;border-radius:var(--radius);background:var(--bg);border:1px solid var(--line);cursor:pointer;line-height:1.1}.clock .time{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums}.clock .period{color:var(--muted);font-size:12px}.clock.running{border-color:var(--goal)}.clock.running .play{color:var(--goal)}.status-actions{display:flex;gap:6px;align-items:center}.team-susp{display:grid;gap:4px;margin-bottom:6px}.badge.susp{text-align:center;border-color:var(--accent);color:var(--accent)}.badge.susp b{color:var(--text)}.live:not(.phase-live) .court{opacity:.55;filter:saturate(.6)}.live:not(.phase-live) .court-hint{color:var(--accent);font-weight:600}.status-actions{justify-content:flex-end}.field{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;padding:8px 10px;min-height:0}.center{min-height:0;display:grid;grid-template-rows:minmax(0,1fr) auto;gap:8px}.court-wrap{min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px}.court{width:100%;max-height:calc(100% - 28px);touch-action:none;overflow:visible;cursor:crosshair}.court .floor{fill:var(--floor)}.court .lines{stroke:var(--court-line);stroke-width:.1;fill:none}.court .lines .area{fill:var(--area)}.court .lines .dashed{stroke-dasharray:.45 .35}.court .goal{fill:#fff;opacity:.9}.court-label{font-size:.8px;fill:#ffffff8c}.court .shot-dot{stroke:#0009;stroke-width:.08}.court .aim line{stroke:var(--accent);stroke-width:.18;stroke-dasharray:.5 .3}.court .aim circle{fill:var(--accent);stroke:#111;stroke-width:.1}.court-hint{font-size:14px;color:var(--muted);min-height:20px;text-align:center}.controls{display:grid;gap:12px;align-items:end}.controls.with-faces{grid-template-columns:minmax(150px,210px) minmax(0,1fr) minmax(150px,210px)}.goal-slot{min-width:0}.actions{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:8px;align-self:center}.with-faces .actions{grid-template-columns:repeat(4,minmax(0,1fr))}.btn.action{display:flex;justify-content:space-between;align-items:center;min-height:52px;font-weight:600}.act-susp,.act-yellow,.act-red,.act-blue{border-left-width:5px}.act-susp{border-left-color:#bdc3c7}.act-yellow{border-left-color:#f1c40f}.act-red{border-left-color:var(--miss)}.act-blue{border-left-color:#3498db}.goalpanel-label{font-size:12px;color:var(--muted);text-align:center;margin-bottom:4px}.goalface{position:relative;padding:22px 22px 0;border-radius:var(--radius);background:repeating-linear-gradient(45deg,rgba(231,76,60,.12) 0 6px,transparent 6px 12px);border:1px dashed rgba(231,76,60,.5);touch-action:none}.goalface.pickable{cursor:crosshair;padding:40px 13% 0}.miss-label{position:absolute;top:3px;left:0;right:0;text-align:center;font-size:11px;color:var(--miss)}.goalframe{position:relative;aspect-ratio:3 / 2;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);border:7px solid #fff;border-bottom:none;background:#ffffff0d;background-image:radial-gradient(rgba(255,255,255,.1) 1px,transparent 1px);background-size:8px 8px}.goalcell{border:1px solid rgba(255,255,255,.12)}.goal-dot.mark{width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid #fff;box-shadow:0 0 0 2px #00000080}.court .goal-zone{fill:transparent;stroke:none}.court .goal-end.active .goal-zone{fill:#f5b83d24;stroke:var(--accent);stroke-width:.08;stroke-dasharray:.3 .2}.court .goal-end.active .goal{fill:var(--accent);opacity:1}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:70;background:#05070aa6;display:grid;place-items:center;padding:16px}.modal{width:min(720px,100%);max-height:100%;overflow:auto;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:16px;display:grid;gap:14px;box-shadow:0 20px 60px #0009}.modal-head{display:flex;align-items:center;gap:10px;font-size:17px}.outcome-badge{cursor:pointer;font-weight:700;font-size:14px}.outcome-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.outcome-btn{min-height:96px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:8px;font-size:18px;font-weight:700;border:2px solid var(--oc);background:color-mix(in srgb,var(--oc) 16%,var(--panel-2))}.outcome-btn:hover{background:color-mix(in srgb,var(--oc) 30%,var(--panel-2));border-color:var(--oc)}.modal-foot{display:flex;justify-content:flex-end;gap:10px}.shot-body{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"face confirm" "opts opts";gap:14px;align-items:center}.shot-face{grid-area:face}.shot-opts{grid-area:opts;display:grid;gap:10px}.confirm-col{grid-area:confirm}.shot-face{display:grid;gap:6px;text-align:center}.blocked-note{min-height:160px;place-items:center;color:var(--muted);border:1px dashed var(--line);border-radius:var(--radius)}.confirm-col{display:grid;gap:12px}.confirm-col .btn{width:72px;height:72px;font-size:30px;font-weight:800}.confirm-col .cancel{color:var(--miss)}.opt-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.opt-label{width:70px;font-size:13px;color:var(--muted)}.btn.opt.on{background:color-mix(in srgb,var(--accent) 20%,var(--panel-2))}.btn.opt.assist-opt{border-left:4px solid var(--team)}.shooter-pick{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.shooter-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:10px}.shooter-btn{min-height:76px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:color-mix(in srgb,var(--team) 26%,var(--panel-2));border:2px solid color-mix(in srgb,var(--team) 70%,transparent)}.shooter-btn:hover{background:color-mix(in srgb,var(--team) 45%,var(--panel-2))}.shooter-btn.gk{border-style:double;border-width:4px}.shooter-btn .chip-name{max-width:84px}@media (max-width: 640px){.outcome-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.team{min-height:0;display:flex;flex-direction:column;border-radius:12px;padding:6px;background:var(--panel);border:1px solid var(--line)}.team.active{border-color:color-mix(in srgb,var(--team) 60%,transparent)}.team-head{display:flex;align-items:center;gap:6px;font-size:14px;margin-bottom:6px;max-width:130px}.team-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.team.side-right .team-head{flex-direction:row-reverse;margin-left:auto}.team-cols{flex:1;min-height:0;display:flex;gap:6px}.roster-col{display:flex;flex-direction:column;align-items:center;gap:5px;overflow-y:auto;min-height:0}.col-label{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.swatch{width:12px;height:12px;border-radius:3px;background:var(--team)}.roster-col.bench .chip{opacity:.75}.chip{width:60px;height:50px;flex:none;border-radius:10px;cursor:grab;touch-action:none;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;background:color-mix(in srgb,var(--team) 26%,var(--panel-2));border:2px solid color-mix(in srgb,var(--team) 70%,transparent);transition:transform .08s}.chip:active{transform:scale(.96)}.chip-num{font-size:24px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}.chip-name{font-size:11px;color:var(--muted);max-width:60px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chip.gk{border-style:double;border-width:4px}.chip.selected{outline:3px solid var(--accent);outline-offset:2px;background:color-mix(in srgb,var(--team) 50%,var(--panel-2))}.chip.assist{animation:pulse .9s ease-in-out infinite;outline:2px dashed var(--goal);outline-offset:2px}.chip.suspended{filter:grayscale(1);opacity:.55}.chip.suspended .chip-name{color:var(--text);font-weight:700}.chip.dq{background:#e74c3c40;border-color:var(--miss);opacity:.6}.roster-col.bench .chip.selected{opacity:1}@keyframes pulse{50%{transform:scale(1.06)}}.drag-ghost{position:fixed;z-index:50;pointer-events:none;transform:translate(-50%,-50%);width:52px;height:52px;border-radius:50%;display:grid;place-items:center;font-size:22px;font-weight:800;background:var(--team);border:3px solid #fff;box-shadow:0 6px 20px #00000080}.toast{position:fixed;left:50%;top:64px;transform:translate(-50%);z-index:40;display:flex;gap:10px;align-items:center;padding:8px 10px 8px 16px;border-radius:12px;background:#fff;color:#111;box-shadow:0 8px 30px #00000073;font-weight:600}.toast .btn{background:#f0f2f4;border-color:#d5d9de;color:#111}.drawer{position:fixed;top:0;right:0;bottom:0;width:min(560px,100vw);z-index:60;background:var(--panel);border-left:1px solid var(--line);display:flex;flex-direction:column;box-shadow:-10px 0 40px #0006;-webkit-user-select:text;user-select:text}.drawer-head{display:flex;gap:6px;padding:10px;border-bottom:1px solid var(--line)}.drawer-head .btn{margin-left:auto}.tab{background:none;border:none;padding:8px 12px;border-radius:8px;cursor:pointer;color:var(--muted)}.tab.on{background:var(--panel-2);color:var(--text)}.log{list-style:none;margin:0;padding:6px 10px;overflow:auto;flex:1}.log li{display:flex;gap:10px;align-items:center;padding:6px 8px;border-left:4px solid var(--team, var(--line));border-bottom:1px solid var(--line)}.log-time{font-variant-numeric:tabular-nums;color:var(--muted);width:48px}.log-text{flex:1}.stats{overflow:auto;flex:1;padding:10px;display:grid;gap:18px;align-content:start}.stats h3{margin:0 0 6px}.stats table{width:100%;border-collapse:collapse;font-size:13px;font-variant-numeric:tabular-nums}.stats th,.stats td{padding:4px 6px;text-align:right;border-bottom:1px solid var(--line)}.stats th{color:var(--muted);font-weight:500}.stats th:nth-child(2),.stats td.name,.stats tr.total td:nth-child(2){text-align:left}.stats tr.total td{font-weight:700}.stats table.gk{margin-top:8px}.drawer-foot{padding:10px;border-top:1px solid var(--line)}@media (max-width: 1100px){.chip{width:52px;height:46px}.chip-num{font-size:20px}.actions{grid-template-columns:repeat(4,minmax(0,1fr))}.with-faces .actions{grid-template-columns:repeat(2,minmax(0,1fr))}.status{gap:8px}.scoreboard{gap:10px}.sb-team .team-name{max-width:100px}.status-actions{gap:4px}.status-actions .btn{padding:6px 7px;font-size:13px}}.goal-dot{position:absolute;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;border:1.5px solid rgba(0,0,0,.6);pointer-events:none}.shot-legend{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;justify-content:center;font-size:13px}.legend-item{display:inline-flex;align-items:center;gap:5px}.legend-item i{width:10px;height:10px;border-radius:50%;display:inline-block}.shot-dialog .goalface{width:100%;max-width:calc((100vh - 300px)*1.35);justify-self:center}@media (max-height: 620px){.status{padding:3px 10px;gap:8px}.clock{padding:1px 12px}.clock .time{font-size:22px}.clock .period{font-size:11px}.sb-team .goals{font-size:26px}.sb-team .team-logo{width:22px;height:22px}.field{padding:6px 8px;gap:8px}.center{gap:6px}.team{padding:4px}.team-head{margin-bottom:3px;font-size:13px}.team .timeout{min-height:26px;padding:2px 6px;margin-bottom:4px;font-size:12px}.roster-col{gap:4px}.chip{height:clamp(34px,calc((100dvh - 185px) / 7),50px)}.chip-num{font-size:18px}.chip-name{font-size:10px}.btn.action{min-height:40px;padding:4px 10px}.court-hint{font-size:12px;min-height:16px}}@media (orientation: landscape) and (max-height: 700px){.modal-backdrop{padding:8px}.modal{width:min(1100px,100%);padding:12px;gap:10px}.shot-body{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"face opts confirm";align-items:start}.shot-dialog .goalface{max-width:calc((100dvh - 130px)*1.9)}.shot-opts{gap:8px}.shot-opts .opt-row{gap:6px}.shot-opts .opt-label{width:100%}.outcome-btn{min-height:72px}}@media (hover: none) and (pointer: coarse){kbd{display:none}}@media (max-width: 760px){.status{grid-template-columns:auto minmax(0,1fr)}.scoreboard{grid-column:1 / -1;grid-row:2}.status-actions{flex-wrap:wrap}}
