*{box-sizing:border-box}:root{--bg: #0f1216;--panel: #1a1f27;--panel2: #232a34;--line: #313a47;--fg: #e8edf3;--muted: #93a1b3;--accent: #3b82f6;--accent2: #22c55e;--danger: #ef4444}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,Noto Sans KR,system-ui,sans-serif;background:var(--bg);color:var(--fg);-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer;min-height:44px;border-radius:10px;border:1px solid var(--line);background:var(--panel2);color:var(--fg);padding:0 14px}button:hover{border-color:var(--accent)}button.primary{background:var(--accent);border-color:var(--accent);color:#fff}button.primary:disabled{opacity:.4}button.big{width:100%;font-size:18px;margin-top:10px}input,select{font:inherit;min-height:44px;padding:0 12px;border-radius:10px;border:1px solid var(--line);background:var(--panel);color:var(--fg)}h1,h2,h3,h4{margin:0 0 12px}small{color:var(--muted);font-weight:400}.center{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:16px}.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:16px}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:8px}.row input,.row select{flex:1 1 140px}.muted{color:var(--muted)}.msg{color:var(--accent2);margin-top:8px}.err{color:var(--danger);margin-top:8px}.auth .card{width:100%;max-width:380px;display:flex;flex-direction:column;gap:10px}.seg2{display:flex;gap:4px;padding:4px;background:var(--panel2);border:1px solid var(--line);border-radius:12px}.seg2 button{flex:1;min-height:38px;background:transparent;border:0;border-radius:9px;color:var(--muted);font-weight:600}.seg2 button.on{background:var(--accent);color:#fff}.seg2 button:not(.on):hover{color:var(--fg)}.reset-head{display:flex;align-items:center;gap:10px}.reset-head .reset-title{font-weight:700}.reset-head .link-btn{min-height:34px;text-decoration:none}.auth .primary:disabled{opacity:.45}.link-btn{background:transparent;border:0;color:var(--muted);min-height:32px;text-decoration:underline;font-size:13px}.link-btn:hover{color:var(--fg)}.link-btn:disabled{opacity:.5;text-decoration:none}.app-shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap}.topbar .brand{font-weight:700;display:inline-flex;align-items:center;gap:6px}.brand-base{width:20px;height:20px;fill:#fff;stroke:var(--bg);stroke-width:1.5;stroke-linejoin:round}.topbar nav{display:flex;gap:4px;flex:1}.topbar nav a{color:var(--muted);text-decoration:none;padding:8px 10px;border-radius:8px}.topbar nav a.active{color:#fff;background:var(--panel2)}.topbar .user{display:flex;align-items:center;gap:8px}.remote-link{display:inline-flex;align-items:center;min-height:34px;padding:0 10px;border-radius:8px;border:1px solid var(--accent);color:#fff;background:var(--accent);text-decoration:none;font-size:13px;font-weight:600}.remote-link:hover{filter:brightness(1.08)}.page{max-width:900px;margin:0 auto;padding:16px}.chips{display:flex;gap:8px;list-style:none;padding:0;flex-wrap:wrap}.chips li{background:var(--panel2);padding:6px 8px 6px 12px;border-radius:999px;display:inline-flex;align-items:center;gap:4px}.chip-btn{min-height:26px;padding:0 6px;border-radius:6px;background:transparent;border:1px solid var(--line);font-size:12px}.danger-x{min-height:26px;padding:0 8px;border-radius:6px;background:transparent;border:1px solid var(--line);color:var(--danger);font-weight:700}.card-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:8px}.card-head h3{margin:0}.head-actions{display:flex;gap:6px;flex-wrap:wrap}.head-actions button{min-height:34px;padding:0 10px;font-size:13px}.games{list-style:none;padding:0}.games li{padding:12px;border:1px solid var(--line);border-radius:10px;margin-bottom:6px}.games li.sel{border-color:var(--accent)}.st{float:right;font-size:12px;color:var(--muted)}.st.in_progress{color:var(--accent2)}.st.final{color:var(--muted)}.game-actions .st{float:none}.hint{color:var(--muted);font-size:12px;margin:8px 0 0}.game-row{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.matchup{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.matchup .side{display:inline-flex;align-items:center;gap:6px}.matchup .team{font-weight:600}.matchup .vs{color:var(--muted);font-size:12px}.badge{font-size:11px;font-weight:700;padding:2px 7px;border-radius:999px;border:1px solid var(--line)}.badge.first{background:color-mix(in srgb,var(--accent) 22%,transparent);border-color:var(--accent);color:#cfe0ff}.badge.second{background:var(--panel2);color:var(--muted)}.bye{font-size:11px;color:var(--muted);margin-left:6px}.game-actions{display:flex;align-items:center;gap:8px}.swap-btn{min-height:32px;padding:0 10px;font-size:12px;background:transparent}.game-date{color:var(--muted);font-size:12px}.game-edit{flex-basis:100%;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}.game-edit .row{margin-bottom:8px}.ef-field{display:flex;align-items:center;gap:6px;flex:1 1 160px}.ef-field select,.ef-field input{flex:1}.ef-label{font-size:12px;color:var(--muted)}.ef-buttons{margin-bottom:0}.dnd-draggable{cursor:grab}.dnd-draggable:active{cursor:grabbing}.team-chip{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border-radius:8px;background:var(--panel2);border:1px solid var(--line);font-weight:600;-webkit-user-select:none;user-select:none}.team-chip.muted{color:var(--muted);font-weight:400}.dnd-droppable{border:1px dashed var(--line);border-radius:10px;padding:10px;transition:border-color .12s,background .12s}.dnd-droppable.over{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 12%,transparent)}.tabs.seg{display:flex;gap:6px;margin-bottom:12px}.tabs.seg button{flex:1;background:transparent}.tabs.seg button.on{background:var(--accent);border-color:var(--accent);color:#fff}.palette-wrap{margin-bottom:14px}.palette-label{font-size:12px;color:var(--muted);margin-bottom:6px}.palette{display:flex;flex-wrap:wrap;gap:8px;min-height:56px;align-items:center}.group-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.group-box{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:10px}.group-head{display:flex;align-items:center;gap:8px;margin-bottom:8px}.group-head b{margin-right:auto}.group-drop{display:flex;flex-wrap:wrap;gap:8px;min-height:52px;align-items:center;background:var(--panel)}.group-match{border-top:1px solid var(--line);padding-top:10px;margin-top:10px}.group-match:first-of-type{border-top:0;padding-top:0;margin-top:0}.group-match h4{margin-bottom:8px}.bracket{overflow-x:auto;padding:8px 2px 4px}.bracket-inner{position:relative;display:flex;gap:44px;align-items:stretch;min-height:120px}.bracket-lines{position:absolute;top:0;left:0;pointer-events:none;z-index:0;overflow:visible}.bracket-lines polyline{fill:none;stroke:#5b6b82;stroke-width:2}.bracket-round{display:flex;flex-direction:column;min-width:200px;position:relative;z-index:1}.round-body{flex:1;display:flex;flex-direction:column;justify-content:space-around;gap:12px}.round-label{font-size:12px;color:var(--muted);text-align:center;font-weight:700;margin-bottom:8px}.bracket-round:last-child .round-label{color:var(--accent2)}.bracket-node{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:6px;position:relative;z-index:1}.bslot{display:flex;align-items:center;gap:6px;padding:6px;min-height:44px;background:var(--panel)}.bslot .badge{flex-shrink:0}.bslot .team-chip{margin-right:auto}.bslot-empty{margin-right:auto;font-size:12px}.node-foot{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding-top:2px}.bscore{font-weight:700;font-variant-numeric:tabular-nums}.bye-badge{font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;color:var(--accent2);border:1px solid var(--accent2);background:color-mix(in srgb,var(--accent2) 14%,transparent)}.team-choose{gap:10px}.team-pick-btn{flex:1 1 140px;display:inline-flex;align-items:center;gap:8px;justify-content:center;min-height:52px;font-weight:600}.team-pick-btn.on{background:var(--accent);border-color:var(--accent);color:#fff}.team-pick-btn.on .badge{background:#fff3;border-color:#ffffff80;color:#fff}.gv-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.gv-group{margin-bottom:14px}.gv-group h4{margin-bottom:8px}.game-card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;padding:8px;display:flex;flex-direction:column;gap:6px}.gv-team{display:flex;align-items:center;gap:8px;width:100%;justify-content:flex-start;min-height:40px;background:var(--panel);text-align:left}.gv-team .team{margin-right:auto;font-weight:600}.gv-team .gv-score{font-weight:700;font-variant-numeric:tabular-nums}.gv-team:not(:disabled):hover{border-color:var(--accent)}.gv-team.sel{background:var(--accent);border-color:var(--accent);color:#fff}.gv-team.sel .badge{background:#fff3;border-color:#ffffff80;color:#fff}.gv-team:disabled{opacity:.5}.gv-foot{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}.gv-foot .st{float:none}.bslot.pickable{cursor:pointer}.bslot.pickable:hover{border-color:var(--accent)}.bslot.sel{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 20%,transparent)}.rec-ctx{position:sticky;top:0;z-index:6;display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 12px;background:var(--panel);border-bottom:1px solid var(--line)}.half-seg{flex:1 1 240px}.half-seg button{display:inline-flex;align-items:center;gap:6px;justify-content:center;min-height:40px;font-weight:600}.inning-step{display:flex;align-items:center;gap:6px}.inning-step button{min-height:36px;padding:0 12px}.inning-step button:disabled{opacity:.4}.inning-now{font-weight:700;min-width:42px;text-align:center}.next-half{font-size:13px}.rec-count{font-size:13px;color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}.rec-outs{font-size:13px;color:var(--muted);font-weight:700}.result{display:inline-flex;align-items:center;gap:4px}.score{width:46px;min-height:32px;padding:0 6px;text-align:center}.colon{color:var(--muted)}.st-select{min-height:32px;padding:0 6px;border-radius:8px;font-size:12px}.st-select.in_progress{color:var(--accent2);border-color:var(--accent2)}.st-select.final{color:var(--muted)}.game-score{font-weight:700;font-variant-numeric:tabular-nums}.loser{opacity:.4;filter:grayscale(.6)}.winner .team,.winner.team{font-weight:800}.team-pick,.pick{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.pick{background:var(--panel2);padding:6px 10px;border-radius:8px}.lineup-row{justify-content:space-between}table.players{width:100%;border-collapse:collapse}table.players th,table.players td{padding:6px 4px;border-bottom:1px solid var(--line);text-align:left}table.players input{width:100%}.ord-btns button{min-height:32px;padding:0 8px}.save-status{font-size:13px;font-weight:400;margin-left:8px}.save-status.saving{color:var(--muted)}.save-status.saved{color:var(--accent2)}.live{max-width:640px;margin:0 auto;padding:12px}.statusbar{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin-bottom:12px}.sb-count span{margin-right:8px}.sb-count .outs{color:var(--danger)}.sb-net.on{color:var(--accent2)}.sb-net.off{color:var(--danger)}.diamond{position:relative;width:240px;height:190px;margin:10px auto}.diamond .base{position:absolute;width:84px;height:44px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--panel2);border:1px solid var(--line);border-radius:8px;font-size:12px;line-height:1.1;padding:2px;overflow:hidden}.diamond .base.occ{background:var(--accent2);color:#04210f;font-weight:700}.diamond .rn-name{max-width:80px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}.diamond .rn-num{font-size:10px;opacity:.85}.diamond .b1{right:0;top:73px}.diamond .b2{left:78px;top:0}.diamond .b3{left:0;top:73px}.diamond .home{left:78px;top:146px}.batter-card{text-align:center;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px}.batter-card .order{color:var(--muted)}.batter-card .bname{font-size:26px;font-weight:800}.result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.result-grid.more{margin-top:8px}.res{min-height:56px;font-size:16px}.more-toggle{width:100%;margin-top:8px;background:transparent}.live-actions{display:flex;gap:8px;margin-top:12px}.live-actions button{flex:1}.playlog{margin-top:16px}.playlog ul{list-style:none;padding:0 4px 0 0;margin:0;font-size:14px;color:var(--muted);max-height:50vh;overflow-y:auto;-webkit-overflow-scrolling:touch}.playlog li{padding:6px 4px;border-bottom:1px dashed var(--line);cursor:pointer;border-radius:6px}.playlog li:hover{background:var(--panel2)}.playlog li.hl{background:var(--panel2);color:var(--fg)}.batter-card.viewing-mode{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 9%,var(--panel))}.view-nav{display:flex;align-items:center;gap:8px}.view-nav .nav-btn{min-width:62px;font-size:14px;padding:0 10px;background:transparent;white-space:nowrap}.view-nav .nav-btn:disabled{opacity:.35}.view-nav .viewing{flex:1}.viewing.view-on .order{color:var(--accent);font-weight:700}.edit-play{display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:8px}.edit-play .cur{color:var(--muted);font-size:13px}.edit-play select{min-height:40px}.back-live{margin-top:8px;background:transparent}.cast-btn{min-height:28px;padding:0 8px;font-size:12px;border-radius:8px;margin-left:auto}.cast-btn:hover{border-color:var(--accent2);color:var(--accent2)}.node-foot .cast-btn{margin-left:4px}.team-logo,.chip-logo{width:20px;height:20px;flex:0 0 20px;object-fit:contain;border-radius:4px}.chip-logo{margin-right:6px}.bslot .team-logo{width:18px;height:18px;flex-basis:18px}.logo-thumb{width:44px;height:44px;flex:0 0 44px;padding:0;border-radius:10px;overflow:hidden;background:var(--panel2);display:flex;align-items:center;justify-content:center}.logo-thumb img{width:100%;height:100%;object-fit:contain}.logo-sheet{gap:8px}.logo-sheet .logo-preview{align-self:center;width:128px;height:128px;border:1px solid var(--line);border-radius:14px;background:var(--panel2);display:flex;align-items:center;justify-content:center;overflow:hidden}.logo-sheet .logo-preview img{width:100%;height:100%;object-fit:contain}.logo-sheet button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.logo-sheet .row{margin-bottom:0}.logo-sheet .row button{flex:1}.logo-lib-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;max-height:50vh;overflow:auto}.logo-lib-item{display:flex;flex-direction:column;gap:4px;padding:6px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.logo-lib-item img{width:100%;aspect-ratio:1;object-fit:contain;background:var(--panel);border-radius:6px}.logo-lib-name{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.logo-lib-actions{display:flex;gap:4px}.logo-lib-actions button{flex:1;min-height:32px;padding:0 4px;font-size:12px}.logo-lib-actions button.danger{background:transparent;border-color:var(--danger);color:var(--danger)}.logo-lib-msg{grid-column:1 / -1;text-align:center;color:var(--muted);padding:20px 0}.modal-overlay{position:fixed;inset:0;background:#0000008c;display:flex;align-items:flex-end;justify-content:center;z-index:100}.sheet{width:100%;max-width:480px;background:var(--panel);border:1px solid var(--line);border-radius:16px 16px 0 0;padding:18px;display:flex;flex-direction:column;gap:12px}.sheet label{display:flex;flex-direction:column;gap:4px;font-size:14px;color:var(--muted)}@media(min-width:600px){.modal-overlay{align-items:center}.sheet{border-radius:16px}}.sheet.composer{gap:14px}.fielder-pad{border:1px solid var(--line);border-radius:12px;padding:10px}.fp-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;font-size:14px}.fp-head button{min-height:34px;background:transparent}.fp-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:6px}.fp{display:flex;flex-direction:column;align-items:center;min-height:52px;padding:4px}.fp small{color:var(--muted)}.adv-head{color:var(--muted);font-size:14px;margin-bottom:6px}.adv-row{display:flex;align-items:center;gap:10px;justify-content:space-between;padding:4px 0}.adv-row .rn{flex:1}.adv-row select{min-width:130px}.composer-summary{text-align:center;color:var(--muted)}.kind-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.kbtn{min-height:48px}.kbtn.on{background:var(--accent);border-color:var(--accent);color:#fff}.box-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}table.linescore,table.batbox,table.pitchbox{width:100%;border-collapse:collapse;font-size:14px}table.linescore th,table.linescore td,table.batbox th,table.batbox td,table.pitchbox th,table.pitchbox td{border:1px solid var(--line);padding:5px 6px;text-align:center}table.linescore .tn,table.batbox .pn,table.pitchbox .pn{text-align:left;font-weight:600}table.linescore .tot{font-weight:700;color:var(--accent2)}.batbox{overflow-x:auto;display:block;white-space:nowrap}.checks.ok h3{color:var(--accent2)}.checks.has-fail{border-color:var(--danger)}.checks.has-fail h3{color:var(--danger)}.checks ul{list-style:none;padding:0;font-size:14px}.checks li{padding:3px 0}.checks li.ok{color:var(--muted)}.checks li.fail{color:var(--danger);font-weight:600}.leader-grid{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:700px){.leader-grid{grid-template-columns:repeat(2,1fr)}}ol.leaders{margin:0;padding-left:22px}ol.leaders li{display:flex;justify-content:space-between;padding:4px 0;border-bottom:1px dashed var(--line)}ol.leaders .lv{font-weight:700;color:var(--accent2)}label.inline{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:14px}.arch-actions{display:inline-flex;gap:10px;align-items:center;float:right}.arch-actions a{color:var(--accent);text-decoration:none}.lock-card{width:100%;max-width:320px;display:flex;flex-direction:column;gap:12px;text-align:center}ul.kv{list-style:none;padding:0}ul.kv li{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--line)}ul.kv span{color:var(--muted)}button.danger{background:var(--danger);border-color:var(--danger);color:#fff}.danger-zone{border-color:var(--danger)}.pii-warn{color:#f59e0b;font-size:13px}.cons-grid{display:grid;grid-template-columns:1fr;gap:12px}@media(min-width:720px){.cons-grid{grid-template-columns:1fr 1fr}}.cons-grid>div{display:flex;flex-direction:column;gap:8px;background:var(--panel2);border:1px solid var(--line);border-radius:10px;padding:12px}.cons-grid h4{margin:0 0 4px}.preview-box{margin-top:12px;border-top:1px solid var(--line);padding-top:12px}.lock-badge{margin-top:8px;font-size:14px;color:#f59e0b;display:flex;gap:8px;align-items:center;justify-content:center}.lock-badge button{min-height:34px;background:transparent}.result-grid.locked{opacity:.45;pointer-events:none}.takeover-banner{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:center;background:#422006;border:1px solid #f59e0b;color:#fde68a;border-radius:12px;padding:10px 12px;margin-bottom:10px}.takeover-banner button{min-height:38px}@media print{body{background:#fff;color:#000}.topbar,.no-print{display:none!important}.card{border-color:#ccc;break-inside:avoid}.page{max-width:none}table.linescore th,table.linescore td,table.batbox th,table.batbox td,table.pitchbox th,table.pitchbox td{border-color:#999}}@media(min-width:600px){.live{max-width:760px}.result-grid{grid-template-columns:repeat(3,1fr)}}@media(min-width:1024px){.live{display:grid;max-width:1180px;grid-template-columns:minmax(220px,1fr) minmax(360px,1.4fr) minmax(240px,1fr);grid-template-areas:"status status status" "diamond input log";gap:20px;align-items:start}.statusbar{grid-area:status}.diamond{grid-area:diamond;align-self:center}.input-col{grid-area:input}.playlog{grid-area:log;margin-top:0;position:sticky;top:12px}}.input-col{display:contents}@media(min-width:1024px){.input-col{display:block}}.sk-guide{position:fixed;inset:0;z-index:9998;pointer-events:none}.sk-guide-ring{position:fixed;border-radius:8px;pointer-events:none;box-shadow:0 0 0 3px #e67e22,0 0 0 9999px #000000b3;transition:top .15s ease,left .15s ease,width .15s ease,height .15s ease}.sk-guide-tip{position:fixed;z-index:10000;pointer-events:auto;width:300px;max-width:calc(100vw - 20px);background:#fff;color:#333;border-radius:8px;padding:15px;box-shadow:0 4px 20px #00000080;font-size:14px;line-height:1.5;word-break:keep-all}.sk-guide-tip h4{margin:0 0 8px;padding-bottom:5px;font-size:16px;color:#e67e22;border-bottom:1px solid #eee}.sk-guide-body{margin-bottom:15px;color:#555}.sk-guide-body b{color:#333}.sk-guide-nav{display:flex;justify-content:flex-end;gap:6px}.sk-guide-nav button{padding:10px 14px;border:none;border-radius:5px;cursor:pointer;font-size:13px;font-weight:700;background:#3498db;color:#fff}.sk-guide-nav button:hover{background:#2980b9}.sk-guide-nav button.ghost{background:#95a5a6}.sk-guide-nav button.ghost:hover{background:#7f8c8d}.sk-guide-nav button.primary{background:#e67e22}.sk-guide-nav button.primary:hover{background:#d35400}.topbar .guide-btn{background:transparent;border:1px solid var(--line, #2a3140);color:var(--muted, #93a2b6);border-radius:8px;padding:6px 10px;cursor:pointer;font-size:14px;line-height:1}.topbar .guide-btn:hover{color:#fff}
