:root{--bg:#f6f5f2;--surface:#fff;--text:#1d1d1f;--muted:#6b6b70;--border:#e2e0db;--accent:#2f6f4f;--accent-text:#fff;--accent-soft:#e3f0e8;--danger:#b3261e;--warn-bg:#fff4d6;--warn-text:#5c4300;--online:#2e9d5b;--offline:#c9a227;--away:#9a9aa0;--radius:10px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}@media (prefers-color-scheme:dark){:root{--bg:#161618;--surface:#202023;--text:#ececef;--muted:#9d9da5;--border:#333338;--accent:#5fb185;--accent-text:#0d1f15;--accent-soft:#1f3328;--danger:#ff8a80;--warn-bg:#3a3017;--warn-text:#f3dc9b;--online:#5fd08a;--offline:#e2c35a;--away:#77777e;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}a{color:var(--accent)}h1{margin:0 0 .5rem;font-size:1.8rem}h2{margin:0 0 .75rem;font-size:1.1rem}h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 .4rem;font-size:.8rem}code{letter-spacing:.04em;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.95em}button,input,select{font:inherit;color:inherit}button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:8px;padding:.45rem .9rem}button:hover:not(:disabled){border-color:var(--muted)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);font-weight:600}button.subtle{background:0 0}button.small{padding:.2rem .55rem;font-size:.85rem}button.big{margin-top:.5rem;padding:.7rem 1.4rem;font-size:1.05rem}input,select{border:1px solid var(--border);background:var(--bg);border-radius:8px;min-width:0;padding:.45rem .7rem}input:focus,select:focus,button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.page{max-width:1120px;margin:0 auto;padding:16px}.page.narrow{max-width:560px;padding-top:48px}.lead{color:var(--muted);margin-bottom:1.5rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:1rem;padding:1.1rem 1.2rem}.row{gap:.5rem;display:flex}.row input{flex:1}.name-form label{color:var(--muted);margin-bottom:.3rem;font-size:.9rem;display:block}.code-input{text-transform:uppercase;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.error{color:var(--danger);margin:.5rem 0 0}.notice{background:var(--warn-bg);color:var(--warn-text);border-radius:8px;padding:.6rem .8rem}.muted{color:var(--muted)}.small{font-size:.85rem}.banner{z-index:10;background:var(--warn-bg);color:var(--warn-text);text-align:center;padding:.35rem;font-size:.9rem;position:sticky;top:0}.lobby-header{flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:1rem;display:flex}.brand{color:var(--text);font-weight:700;text-decoration:none}.lobby-code{color:var(--muted)}.header-actions{gap:.5rem;margin-left:auto;display:flex}.player-list{margin:0 0 .5rem;padding:0;list-style:none}.player-list li{border-radius:6px;align-items:center;gap:.55rem;padding:.35rem .4rem;display:flex}.player-list li.on-move{background:var(--accent-soft)}.player-name{overflow-wrap:anywhere;flex:1;min-width:0}.dot{background:var(--away);border-radius:50%;flex:none;width:9px;height:9px}.dot.connected{background:var(--online)}.dot.disconnected{background:var(--offline)}.tag{border:1px solid var(--border);color:var(--muted);vertical-align:1px;border-radius:999px;margin-left:.4rem;padding:0 .45rem;font-size:.72rem}.tag.host{border-color:var(--accent);color:var(--accent)}.waiting{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:start;gap:1rem;display:grid}.waiting .card{margin:0}.setting{justify-content:space-between;align-items:center;gap:1rem;margin:.75rem 0;display:flex}.game{grid-template-columns:minmax(0,1fr) 320px;align-items:start;gap:1.5rem;display:grid}@media (width<=860px){.game{grid-template-columns:minmax(0,1fr)}}.board-column{width:100%;max-width:640px}.board-wrap{position:relative}.board-actions{justify-content:flex-end;margin-top:.4rem;display:flex}.status{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:.75rem;padding:.6rem .9rem}.status.mine{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.status.over{border-color:var(--accent)}.promotion{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);z-index:5;align-items:center;gap:.4rem;width:max-content;height:max-content;margin:auto;padding:.6rem;display:flex;position:absolute;inset:0;box-shadow:0 8px 30px #0000004d}.promotion button:not(.small){padding:.3rem .5rem;font-size:2.2rem;line-height:1}.side section{margin-bottom:1.2rem}.up-next{margin:0;padding-left:1.4rem}.up-next li.me{font-weight:700}.move-list{border:1px solid var(--border);background:var(--surface);border-radius:8px;max-height:260px;overflow-y:auto}.move-list table{border-collapse:collapse;width:100%;font-size:.92rem}.move-list th{text-align:right;width:2.6rem;color:var(--muted);padding:.2rem .4rem;font-weight:400}.move-list td{width:50%;padding:.2rem .4rem}.move-list tr:nth-child(odd){background:color-mix(in srgb, var(--bg) 60%, transparent)}.san{font-weight:600}.by{color:var(--muted);font-size:.8rem}.host-actions{gap:.5rem;display:flex}.status{justify-content:space-between;align-items:center;gap:.75rem;display:flex}.countdown{font-variant-numeric:tabular-nums;text-align:right;min-width:3ch;font-size:1.1rem;font-weight:700}.countdown.urgent{color:var(--danger)}.status.mine .countdown.urgent{color:inherit;animation:1s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.45}}.move-list-note{border-top:1px solid var(--border);padding:0 .5rem}.notice p{margin:0 0 .5rem}.side .notice{margin:0 0 1.2rem}.results{margin-top:1.5rem}.board-result{margin:0 0 .5rem;font-size:1.15rem;font-weight:700}.table-scroll{margin:.5rem 0;overflow-x:auto}table.stats{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%;font-size:.92rem}table.stats th,table.stats td{text-align:right;white-space:nowrap;border-bottom:1px solid var(--border);padding:.4rem .55rem}table.stats th{color:var(--muted);cursor:help;font-size:.78rem;font-weight:600}table.stats .left{text-align:left}table.stats td.accuracy{font-weight:700}table.stats td.zero{color:color-mix(in srgb, var(--muted) 55%, transparent)}table.stats tr.unranked td{color:var(--muted)}table.stats tr.team-row td{background:color-mix(in srgb, var(--accent-soft) 60%, transparent);font-weight:600}.v-blunders,.v-gameLosing,.verdict-blunder .mark{color:var(--danger)}.v-mistakes,.verdict-mistake .mark{color:#d9730d}.v-inaccuracies,.verdict-inaccuracy .mark{color:#b8860b}.v-only,.verdict-only .mark{color:var(--accent)}.mark{margin-left:1px;font-weight:700}.verdict-book .san{color:var(--muted);font-weight:500}.team-picker{gap:.2rem;display:inline-flex}.team-picker button.selected{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}@media (width<=480px){.player-list li{flex-wrap:wrap}}
