:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.4}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12151b;--surface:#1b2029;--text:#e6e9ef;--muted:#98a2b3;--border:#384152;--border-strong:#c4cad6;--accent:#6d9bff;--accent-text:#0d1220;--danger:#ff6b5e;--danger-text:#fff;--ok:#3ccf7f;--warn:#f0b44c;--focus:#6d9bff;--input-bg:#1b2029;--cell-bg:#1b2029;--cell-given:#e6e9ef;--cell-selected:#2c4a85;--cell-peer:#232a36;--cell-same:#2a3a5c;--cell-wrong-bg:#5a2420;--cell-wrong:#ff6b5e;--note:#98a2b3;--note-focus:#6d9bff;--player-0:#7aa5ff;--player-1:#ff9a5c;--hint-region:#322e1e;--hint-pattern:#42350d;--hint-remove:#ff8f85;--hint-place:#5ee39a;--overlay:#12151bbf;--shadow:#00000073}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef1f5;--surface:#fff;--text:#182030;--muted:#576072;--border:#c5ccd8;--border-strong:#283141;--accent:#1f5bd8;--accent-text:#fff;--danger:#c42b1c;--danger-text:#fff;--ok:#11733b;--warn:#8f5300;--focus:#1f5bd8;--input-bg:#fff;--cell-bg:#fff;--cell-given:#182030;--cell-selected:#b9d0fb;--cell-peer:#edf1f7;--cell-same:#dbe6fc;--cell-wrong-bg:#fccdc6;--cell-wrong:#b42318;--note:#4b5466;--note-focus:#1a4cbc;--player-0:#1f5bd8;--player-1:#b04500;--hint-region:#fbf2d4;--hint-pattern:#f3d98a;--hint-remove:#b42318;--hint-place:#0d6b35;--overlay:#eef1f5cc;--shadow:#1820302e}[data-theme=paper]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#ede3cd;--surface:#faf5e9;--text:#2f2619;--muted:#66563f;--border:#d3c4a5;--border-strong:#4d3f2b;--accent:#2b5876;--accent-text:#fffaf0;--danger:#a8231a;--danger-text:#fffaf0;--ok:#3d6b1f;--warn:#855200;--focus:#2b5876;--input-bg:#fffcf4;--cell-bg:#fffcf4;--cell-given:#2f2619;--cell-selected:#bccfe0;--cell-peer:#f5eddb;--cell-same:#f1e1bd;--cell-wrong-bg:#f3c2b3;--cell-wrong:#a8231a;--note:#5a4b36;--note-focus:#2b5876;--player-0:#234f86;--player-1:#9a4310;--hint-region:#f6ecc8;--hint-pattern:#ecd27e;--hint-remove:#a8231a;--hint-place:#2f5a14;--overlay:#ede3cdcc;--shadow:#4d3f2b38}[data-theme=midnight]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0a0f1f;--surface:#111a30;--text:#e4e9f7;--muted:#97a3c6;--border:#2a375c;--border-strong:#9aaad6;--accent:#74c0fc;--accent-text:#061325;--danger:#ff7b8a;--danger-text:#1b0609;--ok:#4cd9a4;--warn:#f7c35f;--focus:#74c0fc;--input-bg:#0d1528;--cell-bg:#111a30;--cell-given:#eef2ff;--cell-selected:#1f3f78;--cell-peer:#18223f;--cell-same:#2b2f63;--cell-wrong-bg:#4a1a2b;--cell-wrong:#ff8b98;--note:#a9b4d4;--note-focus:#74c0fc;--player-0:#74c0fc;--player-1:#ffb36b;--hint-region:#232634;--hint-pattern:#41391a;--hint-remove:#ff8b98;--hint-place:#4cd9a4;--overlay:#0a0f1fc7;--shadow:#00000080}[data-theme=high-contrast]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#000;--surface:#000;--text:#fff;--muted:#d6d6d6;--border:#8c8c8c;--border-strong:#fff;--accent:#ffd400;--accent-text:#000;--danger:#ff6b6b;--danger-text:#000;--ok:#5dff9b;--warn:#ffd400;--focus:#ffd400;--input-bg:#000;--cell-bg:#000;--cell-given:#fff;--cell-selected:#00389a;--cell-peer:#1f1f1f;--cell-same:#3d3300;--cell-wrong-bg:#5c0000;--cell-wrong:#ffa3a3;--note:#e6e6e6;--note-focus:#ffd400;--player-0:#6cd0ff;--player-1:#fa5;--hint-region:#24123a;--hint-pattern:#4d1a5c;--hint-remove:#ff9b9b;--hint-place:#5dff9b;--overlay:#000000e0;--shadow:#0000}:root:not([data-theme]){--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#eef1f5}@media (prefers-color-scheme:dark){:root:not([data-theme]){--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#12151b}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0}a{color:var(--accent)}.app{flex-direction:column;min-height:100vh;display:flex}.app-header{padding:max(8px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 8px max(16px, env(safe-area-inset-left));border-bottom:1px solid var(--border);background:var(--surface);flex-wrap:wrap;align-items:center;gap:4px 12px;display:flex}.app-header h1{white-space:nowrap;margin:0;font-size:1.2rem}.app-header h1 a{color:inherit;text-decoration:none}.app-header nav a{font-weight:600;text-decoration:none}.app-header nav a:hover{text-decoration:underline}main{flex:1;width:100%;max-width:1100px;margin:0 auto;padding:16px}.app-footer{padding:8px max(16px, env(safe-area-inset-right)) max(8px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));font-size:.85rem}.spacer{flex:1}.muted{color:var(--muted)}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.card{background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:16px}.narrow{max-width:480px;margin:0 auto}.inline{gap:8px;display:flex}.inline input{flex:1;min-width:0}.actions{flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;display:flex}.error{color:var(--danger)}.notice{color:var(--danger);text-align:center}label{margin:12px 0 4px;font-weight:600;display:block}input,select{font:inherit;border:1px solid var(--border);background:var(--input-bg);color:var(--text);border-radius:6px;padding:6px 8px}form button[type=submit]{margin-top:12px}button{font:inherit;cursor:pointer;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:6px 14px}button:disabled{cursor:not-allowed;opacity:.5}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.button-danger{background:var(--danger);border-color:var(--danger);color:var(--danger-text)}.link-button{border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:6px;padding:6px 14px;text-decoration:none;display:inline-block}.link-button:hover{border-color:var(--accent)}.button-link{color:var(--accent);background:0 0;border:none;padding:0;text-decoration:underline}:focus-visible{outline:2px solid var(--focus);outline-offset:2px}.confirm{align-items:center;gap:6px;display:inline-flex}.badge{border:1px solid var(--border);color:var(--muted);border-radius:999px;margin-left:6px;padding:1px 6px;font-size:.75rem;display:inline-block}.badge-ok{border-color:var(--ok);color:var(--ok)}.badge-warn{border-color:var(--warn);color:var(--warn)}.connection{color:var(--muted);align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.connection-dot,.dot{background:var(--muted);border-radius:50%;width:9px;height:9px;display:inline-block}.connection-open .connection-dot,.dot-on{background:var(--ok)}.connection-reconnecting .connection-dot,.connection-connecting .connection-dot{background:var(--warn)}.connection-closed .connection-dot,.dot-off{background:var(--danger)}.lobby{max-width:560px;margin:0 auto}.players{margin:0;padding:0;list-style:none}.players li{align-items:center;gap:6px;padding:4px 0;display:flex}.config{grid-template-columns:max-content 1fr;align-items:center;gap:6px 12px;display:grid}.config dt,.config label{margin:0;font-weight:600}.config dd{margin:0}.config .error{grid-column:1/-1;margin:0}.lobby-highlight-details{grid-column:1/-1;align-items:flex-start;gap:14px;margin:2px 0 4px;display:flex}.lobby-highlight-note{margin:0;font-size:.9rem}.lobby-highlight-details .highlight-flags{margin-top:8px}.config select{min-width:0;max-width:100%}.lobby-appearance{border-top:1px solid var(--border);margin-top:20px;padding-top:4px}.lobby-appearance p{margin-top:0}.theme-picker{border:none;min-width:0;margin:0;padding:0}.theme-picker legend{margin-bottom:8px;padding:0;font-weight:600}.theme-options{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;display:grid}.theme-option{border:1px solid var(--border);cursor:pointer;border-radius:8px;align-items:center;gap:10px;margin:0;padding:8px;font-weight:400;display:flex;position:relative}.theme-option:has(input:checked){border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.theme-option:has(input:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.theme-option input{opacity:0;width:1px;height:1px;margin:0;position:absolute}.theme-option-text{flex-direction:column;min-width:0;display:flex}.theme-option-label{font-weight:600}.theme-option-description{font-size:.8rem}.theme-option-check{color:var(--accent);visibility:hidden;margin-left:auto;font-weight:700}.theme-option:has(input:checked) .theme-option-check{visibility:visible}.theme-swatch{border:1px solid var(--border-strong);background:var(--cell-bg);text-align:center;flex:none;grid-template-rows:repeat(3,18px);grid-template-columns:repeat(3,18px);font-size:11px;line-height:18px;display:grid}.swatch-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.swatch-cell:nth-child(3n){border-right:none}.swatch-cell:nth-child(n+7){border-bottom:none}.swatch-given{color:var(--cell-given);font-weight:700}.swatch-solved{color:var(--player-0);font-weight:600}.swatch-opponent{color:var(--player-1);font-weight:600}.swatch-note{color:var(--note-focus);font-size:8px}.swatch-peer{background:var(--cell-peer)}.swatch-same{background:var(--cell-same)}.swatch-selected{background:var(--cell-selected)}.swatch-wrong{background:var(--cell-wrong-bg);color:var(--cell-wrong)}.highlight-picker{border:none;min-width:0;margin:0;padding:0}.highlight-picker legend{margin-bottom:8px;padding:0;font-weight:600}.highlight-options{grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.highlight-option:has(input:disabled){cursor:default}.highlight-preview{border:1px solid var(--border-strong);background:var(--cell-bg);color:var(--cell-given);text-align:center;flex:none;grid-template-columns:repeat(9,12px);grid-auto-rows:12px;font-size:9px;font-weight:700;line-height:11px;display:grid}.hp-cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.hp-cell:nth-child(3n){border-right-color:var(--border-strong)}.hp-cell:nth-child(9n){border-right:none}.hp-cell:nth-child(n+19):nth-child(-n+27),.hp-cell:nth-child(n+46):nth-child(-n+54){border-bottom-color:var(--border-strong)}.hp-cell:nth-child(n+73){border-bottom:none}.hp-peer{background:color-mix(in srgb, var(--accent) 22%, var(--cell-bg))}.hp-same{background:color-mix(in srgb, var(--accent) 45%, var(--cell-bg))}.hp-selected{background:var(--accent);color:var(--accent-text)}.hp-note{color:var(--note);font-size:6px;font-weight:400;line-height:6px;display:block}.hp-note-focus{color:var(--note-focus);font-weight:700}.highlight-flags{flex-wrap:wrap;gap:6px 18px;margin-top:12px;display:flex}.highlight-flag{cursor:pointer;align-items:center;gap:6px;font-weight:400;display:inline-flex}.highlight-flag input{width:16px;height:16px;accent-color:var(--accent);margin:0}.highlight-picker+.highlight-picker,.settings-section .highlight-picker{margin-top:10px}.theme-swatch-split{flex:none;display:grid;position:relative}.theme-swatch-split>*{grid-area:1/1}.theme-swatch-split>:last-child{clip-path:polygon(100% 0,100% 100%,0 100%)}.theme-menu{position:relative}.theme-menu-panel{z-index:20;background:var(--surface);border:1px solid var(--border);width:min(340px,100vw - 32px);max-height:calc(100vh - 80px);box-shadow:0 8px 24px var(--shadow);border-radius:8px;padding:12px;position:absolute;top:calc(100% + 8px);right:0;overflow-y:auto}.theme-menu-panel .theme-options{grid-template-columns:1fr;gap:6px}.theme-menu-panel .theme-option{padding:6px 8px}.account-menu{position:relative}.account-button{align-items:center;gap:6px;max-width:260px;display:inline-flex}.account-name{text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.account-badge{flex-shrink:0;margin-left:0}.account-menu-panel{z-index:20;background:var(--surface);border:1px solid var(--border);width:min(280px,100vw - 32px);box-shadow:0 8px 24px var(--shadow);border-radius:8px;padding:8px;position:absolute;top:calc(100% + 8px);right:0}@media (width<=640px){.account-menu-panel{left:0;right:auto}}.account-actions{gap:4px;margin:0;padding:0;list-style:none;display:grid}.account-actions button{text-align:left;border-color:#0000;width:100%}.account-actions button:hover:not(:disabled){border-color:var(--border)}.account-hint{margin:0 0 4px;padding:0 14px;font-size:.8rem}.account-confirm p{margin:4px 4px 0}.account-menu-panel .error{margin:8px 4px 0}.entry h2{margin-top:0}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-top:12px;display:flex}.tab{color:var(--muted);background:0 0;border:1px solid #0000;border-bottom:none;border-radius:6px 6px 0 0;flex:1;margin-bottom:-1px;padding:8px 10px}.tab[aria-selected=true]{border-color:var(--border);background:var(--surface);color:var(--text);box-shadow:inset 0 2px 0 var(--accent);font-weight:600}.tab:hover:not([aria-selected=true]){color:var(--text)}.tab-panel>p:first-child{margin:12px 0 0}.tab-panel input:not([type=checkbox]),.modal input:not([type=checkbox]){width:100%}label.checkbox{align-items:center;gap:6px;margin-top:8px;font-weight:400;display:inline-flex}.form-note{margin:8px 0 0;font-size:.85rem}.modal-backdrop{z-index:30;background:var(--overlay);justify-content:center;align-items:flex-start;padding:10vh 16px 16px;display:flex;position:fixed;inset:0}.modal{width:min(440px,100%);max-height:80vh;box-shadow:0 8px 32px var(--shadow);overflow-y:auto}.modal-header{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.modal-header h2{margin:0;font-size:1.2rem}.guest-hint{margin:0 0 12px}.game-bar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px;display:flex}.timer{font-variant-numeric:tabular-nums;font-weight:600}.game-main{flex-wrap:wrap;align-items:flex-start;gap:16px;display:flex}.game-board{flex:0 540px;width:100%;max-width:540px;position:relative}.game-side{flex-direction:column;flex:220px;gap:12px;display:flex}.player-panel{border:1px solid var(--border);border-left:4px solid var(--player-color);background:var(--surface);border-radius:6px;padding:8px 12px}.player-panel h3{margin:0 0 4px;font-size:1rem}.player-panel dl{grid-template-columns:max-content 1fr;gap:2px 12px;margin:0;display:grid}.player-panel dd{font-variant-numeric:tabular-nums;margin:0}.player-swatch{background:var(--player-color);border-radius:2px;width:10px;height:10px;margin-right:6px;display:inline-block}.player-0{--player-color:var(--player-0)}.player-1{--player-color:var(--player-1)}.board{aspect-ratio:1;border:2px solid var(--border-strong);background:var(--cell-bg);-webkit-user-select:none;user-select:none;grid-template-rows:repeat(9,1fr);width:100%;display:grid}.board-row{grid-template-columns:repeat(9,1fr);display:grid}.board-hidden{filter:blur(3px);opacity:.6;grid-template-columns:repeat(9,1fr)}.board-compact{max-width:300px}.cell{border-right:1px solid var(--border);border-bottom:1px solid var(--border);cursor:pointer;justify-content:center;align-items:center;min-width:0;min-height:0;font-size:clamp(1rem,4.5vw,1.8rem);display:flex;position:relative}.board-compact .cell{font-size:clamp(.7rem,2.5vw,1rem)}.board-readonly .cell{cursor:default}.cell-box-right{border-right:2px solid var(--border-strong)}.cell-box-bottom{border-bottom:2px solid var(--border-strong)}.cell-given{color:var(--cell-given);font-weight:700}.cell-solved{color:var(--player-color);font-weight:600}.cell-revealed{color:var(--muted);font-style:italic}.cell-peer{background:var(--cell-peer)}.cell-same-digit,.cell-note-digit{background:var(--cell-same)}.cell-hint-region{background:var(--hint-region)}.cell-hint-pattern{background:var(--hint-pattern)}.cell-hint-pattern-2{box-shadow:inset 0 0 0 2px var(--border-strong)}.cell-hint-placement{color:var(--hint-place);font-weight:700}.cell-selected{background:var(--cell-selected)}.cell-pending-digit{color:var(--muted);opacity:.6}.cell-wrong{background:var(--cell-wrong-bg);animation:.3s shake}.cell-wrong-digit{color:var(--cell-wrong)}@keyframes shake{25%{transform:translate(-2px)}75%{transform:translate(2px)}}.notes{color:var(--note);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);font-size:clamp(.45rem,1.6vw,.7rem);line-height:1;display:grid;position:absolute;inset:1px}.note{justify-content:center;align-items:center;display:flex}.note-focus{color:var(--note-focus);font-weight:700}.note-hint{color:var(--cell-given);font-weight:800}.note-hint-removed{color:var(--hint-remove);font-size:1.25em;font-weight:700;text-decoration:line-through;text-decoration-thickness:2px}@media (prefers-reduced-motion:no-preference){.cell-hint-placement,.note-hint-removed{animation:.4s ease-out hint-appear}}@keyframes hint-appear{0%{opacity:0}to{opacity:1}}.number-pad{grid-template-columns:repeat(3,1fr);gap:6px;max-width:320px;display:grid}.pad-digit{padding:10px 0;font-size:1.4rem}.pad-erase,.pad-notes{grid-column:span 3}.pad-notes-on{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.overlay{background:var(--overlay);z-index:10;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.overlay-card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:8px;max-width:90%;padding:16px 20px}.overlay-card h2{margin-top:0}.overlay-card .actions{justify-content:center}.countdown{margin:0;font-size:3rem;font-weight:700}.finished{text-align:center}.finished-boards{text-align:left;flex-wrap:wrap;justify-content:center;gap:16px;margin:16px 0;display:flex}.finished-player{flex-direction:column;flex:0 420px;gap:8px;display:flex}.finished-actions{justify-content:center}.replay-head{flex-wrap:wrap;align-items:flex-start;gap:8px 16px;margin-bottom:12px;display:flex}.replay-head h2{margin:0 0 4px}.replay-meta{margin:0}.replay-boards{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.replay-player{flex-direction:column;flex:340px;gap:8px;max-width:520px;display:flex}.replay-player .cell{font-size:clamp(1rem,3.6vw,1.6rem)}.replay-player .notes{font-size:clamp(.45rem,1.3vw,.65rem)}.replay-controls{background:var(--surface);border:1px solid var(--border);border-radius:8px;margin-top:16px;padding:12px 16px}.replay-timeline input{width:100%;accent-color:var(--accent);background:0 0;border:none;margin:0;padding:0;display:block}.replay-markers{border-top:1px solid var(--border);height:12px;margin:4px 8px 0;position:relative}.replay-marker{background:var(--muted);border-radius:1px;width:3px;height:10px;margin-left:-1px;position:absolute;top:0}.replay-marker-mistake{background:var(--player-color)}.replay-marker-pause{background:var(--warn)}.replay-marker-hint{background:var(--ok);height:6px;margin-top:4px}.replay-marker-finish{background:var(--text);width:4px}.replay-buttons{flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px;display:flex}.replay-buttons button{min-width:2.5rem}.replay-icon{padding:3px 10px;font-size:1.15rem;line-height:1.2}.replay-play{min-width:5.5rem}.replay-time{font-variant-numeric:tabular-nums;margin-left:6px}.replay-speeds{display:inline-flex}.replay-speeds button{border-radius:0;min-width:0;margin-left:-1px;padding:6px 10px}.replay-speeds button:first-child{border-radius:6px 0 0 6px;margin-left:0}.replay-speeds button:last-child{border-radius:0 6px 6px 0}.replay button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text);position:relative}.replay-status{margin:8px 0 0;font-size:.9rem}.history{max-width:820px;margin:0 auto}.history h2{margin-top:0}.history-record{margin-bottom:16px}.record-title{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0 0 4px;font-size:.85rem}.history-filter{border:1px solid var(--border);border-radius:8px;margin-bottom:16px;display:inline-flex;overflow:hidden}.history-filter-option{background:var(--surface);color:var(--text);border:none;border-radius:0;padding:6px 16px}.history-filter-option+.history-filter-option{border-left:1px solid var(--border)}.history-filter-option[aria-pressed=true]{background:var(--accent);color:var(--accent-text);font-weight:600}.record-total{font-variant-numeric:tabular-nums;margin:0;font-size:1.6rem;font-weight:700}.record-wins{color:var(--ok)}.record-losses{color:var(--danger)}.record-sep{color:var(--muted);margin:0 8px}.record-abandoned{font-size:1rem;font-weight:400}.record-table{border-collapse:collapse;font-variant-numeric:tabular-nums;margin-top:12px}.record-table th,.record-table td{text-align:left;padding:4px 16px 4px 0}.record-table thead th{color:var(--muted);border-bottom:1px solid var(--border);font-size:.85rem;font-weight:600}.history-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.history-item{flex-wrap:wrap;align-items:center;gap:8px 16px;padding:12px 16px;display:flex}.history-main{flex:200px;min-width:0}.history-main p{margin:0}.history-how{font-size:.9rem}.history-facts{font-variant-numeric:tabular-nums;grid-template-columns:max-content max-content;gap:0 8px;margin:0;font-size:.85rem;display:grid}.history-facts dt{color:var(--muted)}.history-facts dd{margin:0}.history-watch{white-space:nowrap;margin-left:auto}.history-more{margin:16px auto 0;display:block}.result-badge{border:1px solid var(--border);text-align:center;min-width:5.5rem;color:var(--muted);border-radius:999px;flex:none;padding:2px 10px;font-weight:700}.result-win{border-color:var(--ok);color:var(--ok)}.result-loss{border-color:var(--danger);color:var(--danger)}.result-solved{border-color:var(--ok);color:var(--ok)}@media (width<=640px){main{padding:8px max(8px, env(safe-area-inset-right)) 8px max(8px, env(safe-area-inset-left))}.game-side{flex-basis:100%}}.friends-button{align-items:center;gap:6px;display:inline-flex}.count-badge{background:var(--accent);min-width:1.4em;color:var(--accent-text);text-align:center;border-radius:999px;padding:0 5px;font-size:.75rem;font-weight:700;line-height:1.4;display:inline-block}.presence-dot{flex-shrink:0}.presence-online{background:var(--ok)}.presence-in-lobby{background:var(--accent)}.presence-in-game{background:var(--warn)}.presence-in-solo-game{background:var(--warn);box-shadow:inset 0 0 0 2px var(--surface);outline:1.5px solid var(--warn);outline-offset:-1.5px}.presence-offline{box-shadow:inset 0 0 0 1.5px var(--muted);background:0 0}.drawer-backdrop{justify-content:flex-end;padding:0}.drawer{width:min(400px,100%);height:100%;max-height:none;padding:max(16px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) 16px;overscroll-behavior:contain;border-width:0 0 0 1px;border-radius:0}.add-friend label{margin-top:16px}.ok-text{color:var(--ok);margin:8px 0 0}.warning-text{border:1px solid var(--warn);border-radius:6px;margin:12px 0 0;padding:8px 10px}.friends-section h3{align-items:center;gap:6px;margin:20px 0 6px;font-size:1rem;display:flex}.friends-empty{margin:4px 0}.friends-guest p:first-child{margin-top:12px}.friend-list{margin:0;padding:0;list-style:none}.friend-row{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px 8px;padding:8px 0;display:flex}.friend-row:last-child{border-bottom:none}.friend-name{text-overflow:ellipsis;white-space:nowrap;min-width:0;font-weight:600;overflow:hidden}.friend-status{font-size:.85rem}.friend-actions,.friend-confirm{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:6px;margin-left:auto;display:inline-flex}.friend-actions button,.friend-confirm button{padding:4px 10px}.friend-actions .button-link{color:var(--muted);padding:0;font-size:.85rem}.friend-actions .button-link:hover{color:var(--danger)}.friend-outcome{font-size:.85rem}.friend-error{flex-basis:100%;margin:0}.pending-invite{font-variant-numeric:tabular-nums;align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.lobby-invites{margin-top:16px}.lobby-invites h3{margin-bottom:4px}.toasts{right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));z-index:40;flex-direction:column;gap:8px;width:min(360px,100vw - 32px);display:flex;position:fixed}.toast{background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--accent);box-shadow:0 8px 24px var(--shadow);border-radius:8px;padding:12px 14px}.toast p{margin:0}.toast .actions{margin-top:10px}.toast-details{flex-wrap:wrap;justify-content:space-between;gap:4px 12px;margin-top:4px;font-size:.9rem;display:flex}.toast-countdown{font-variant-numeric:tabular-nums}.toast-notice{border-left-color:var(--muted);justify-content:space-between;align-items:center;gap:12px;display:flex}@media (width<=640px){.toasts{left:max(12px, env(safe-area-inset-left));right:max(12px, env(safe-area-inset-right));bottom:max(12px, env(safe-area-inset-bottom));width:auto}}.lobby-pill{border:1px solid var(--accent);background:var(--bg);border-radius:999px;align-items:stretch;min-width:0;max-width:100%;font-size:.9rem;display:inline-flex;position:relative}.lobby-pill[data-attention=true]{background:var(--cell-same)}.lobby-pill[data-attention=true] .lobby-pill-status{color:var(--text);font-weight:600}.lobby-pill-flash{border-radius:inherit;pointer-events:none;position:absolute;inset:-1px}@media (prefers-reduced-motion:no-preference){.lobby-pill-flash{animation:1.2s ease-out 2 lobby-pill-pulse}}@keyframes lobby-pill-pulse{0%{box-shadow:0 0 0 0 var(--accent)}to{box-shadow:0 0 0 8px #0000}}.lobby-pill-link{min-width:0;color:var(--text);border-radius:999px 0 0 999px;align-items:center;gap:6px;padding:5px 4px 5px 12px;text-decoration:none;display:inline-flex}.lobby-pill-link-alone{border-radius:999px;padding-right:12px}.lobby-pill-link:hover .lobby-pill-code{text-decoration:underline}.lobby-pill-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.lobby-pill-dot-idle{border:2px solid var(--muted)}.lobby-pill-dot-busy{background:var(--accent)}.lobby-pill-dot-ok{background:var(--ok)}.lobby-pill-dot-warn{background:var(--warn)}.lobby-pill-code{white-space:nowrap;font-weight:600}.lobby-pill-status{text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--muted);overflow:hidden}.lobby-pill-short{display:none}.lobby-pill-leave{border:none;border-left:1px solid var(--border);min-width:32px;color:var(--text);background:0 0;border-radius:0 999px 999px 0;flex-shrink:0;padding:0 12px 0 8px;font-size:1rem;line-height:1}.lobby-pill-leave:hover{color:var(--danger)}.lobby-notice{border:1px solid var(--border);border-left:4px solid var(--muted);background:var(--bg);border-radius:6px;align-items:center;gap:10px;min-width:0;max-width:100%;padding:3px 12px;font-size:.9rem;display:inline-flex}@media (width<=640px){.lobby-pill,.lobby-notice{flex-basis:100%;order:1}.lobby-pill-link{flex:1;min-height:36px}.lobby-pill-leave{min-width:44px}}@media (width<=480px){.lobby-pill-long{display:none}.lobby-pill-short{display:inline}}.settings-link{align-items:center;gap:4px;display:inline-flex}.app-header nav{align-items:center;gap:12px;display:flex}.settings-gear{font-size:1.1em;line-height:1}@media (width<=480px){.settings-link-text{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.settings-page{max-width:820px;margin:0 auto}.settings-page-header{justify-content:space-between;align-items:center;gap:12px;display:flex}.settings-page-header h2{margin:0}.settings-drawer{width:min(720px,100%)}.settings-game-note{border:1px solid var(--warn);border-radius:6px;margin:12px 0 0;padding:8px 10px}.settings-saved{margin:8px 0 0;font-size:.9rem}.settings-section{border-top:1px solid var(--border);margin-top:20px;padding-top:4px}.settings-section h3{margin:12px 0 10px;font-size:1.05rem}.settings-toggles{border:none;gap:8px;margin:12px 0 0;padding:0;display:grid}.settings-toggle{cursor:pointer;align-items:flex-start;gap:10px;margin:0;font-weight:400;display:flex}.settings-toggle input{width:16px;height:16px;accent-color:var(--accent);margin:3px 0 0;padding:0}.settings-toggle-hint{font-size:.85rem;display:block}.settings-intro{margin:0 0 4px;font-size:.9rem}.settings-status{min-height:1.4em;color:var(--ok);margin:4px 0;font-size:.9rem}.shortcut-group h4{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:14px 0 4px;font-size:.8rem}.shortcut-list{margin:0;padding:0;list-style:none}.shortcut{border-bottom:1px solid var(--border);grid-template-columns:minmax(150px,1fr) minmax(0,1.6fr) auto;align-items:center;gap:4px 16px;padding:8px 0;display:grid}.shortcut:last-child{border-bottom:none}.shortcut-info{flex-direction:column;min-width:0;display:flex}.shortcut-label{font-weight:600}.shortcut-description{font-size:.85rem}.shortcut-keys{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.shortcut-warning,.shortcut-note,.key-conflict{grid-column:1/-1;margin:0;font-size:.85rem}.shortcut-warning{color:var(--warn)}.key-chip{border:1px solid var(--border-strong);background:var(--bg);border-radius:6px;align-items:center;display:inline-flex;overflow:hidden}.key-chip-physical{border-style:dashed}.key-chip kbd{text-align:center;min-width:1.8em;padding:2px 8px;font-family:inherit;font-size:.9rem;font-weight:600}.key-chip-remove{border:none;border-left:1px solid var(--border);color:var(--muted);background:0 0;border-radius:0;padding:2px 7px;line-height:1.3}.key-chip-remove:hover{color:var(--danger)}.button-small{padding:3px 10px;font-size:.9rem}.shortcut-reset{font-size:.9rem}.shortcut-reset:disabled{color:var(--muted);text-decoration:none}.key-capture{border:2px solid var(--accent);border-radius:6px;flex-wrap:wrap;align-items:center;gap:4px 10px;padding:3px 10px;font-size:.9rem;display:inline-flex}.key-capture:focus{outline:none}.key-capture kbd{font-family:inherit;font-weight:600}.key-capture-error{color:var(--danger);flex-basis:100%}.key-conflict{border:1px solid var(--warn);background:var(--bg);border-radius:6px;padding:10px 12px}.key-conflict p{margin:0 0 4px}.key-conflict .actions{margin-top:8px}.notes-hint{margin:0;font-size:.85rem}.hint-panel{flex-direction:column;gap:10px;display:flex}.hint-controls,.hint-card{border:1px solid var(--border);background:var(--surface);border-radius:6px;padding:8px 12px}.hint-controls{flex-direction:column;gap:4px;display:flex}.hint-row{justify-content:space-between;align-items:center;gap:8px;display:flex}.hint-controls input[type=range]{width:100%;accent-color:var(--accent);margin:4px 0 0}.hint-ticks{color:var(--muted);text-align:center;grid-template-columns:repeat(4,1fr);font-size:.75rem;display:grid}.hint-tick:first-child{text-align:left}.hint-tick:last-child{text-align:right}.hint-tick-on{color:var(--text);font-weight:700}.hint-count{margin:2px 0 0;font-size:.8rem}.hint-card{border-left:4px solid var(--ok)}.hint-head{align-items:center;gap:8px;display:flex}.hint-title{margin:0;font-size:1rem}.hint-tier,.assisted-badge{border:1px solid var(--border);color:var(--muted);border-radius:999px;flex:none;padding:0 8px;font-size:.75rem}.hint-level{font-variant-numeric:tabular-nums;font-size:.8rem}.hint-close{color:var(--muted);background:0 0;border-color:#0000;padding:0 6px}.hint-alternatives{flex-wrap:wrap;gap:4px;margin-top:8px;display:flex}.hint-alternative{border-radius:999px;padding:1px 10px;font-size:.8rem}.hint-alternative[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.hint-text p{margin:6px 0 0;font-size:.9rem}.hint-text .hint-legend{font-size:.75rem}.hint-actions{flex-wrap:wrap;gap:6px;margin-top:10px;display:flex}.assisted-badge{border-color:var(--warn);color:var(--warn);margin-left:8px;font-weight:600}@media (width<=640px){.shortcut{grid-template-columns:minmax(0,1fr) auto}.shortcut-info{grid-column:1/-1}.key-chip-remove{padding:5px 10px}.settings-gear{font-size:1.4em}}.solo-form{margin-top:12px}.solo-limit{gap:8px;min-width:0;display:flex}.solo-limit input{width:5.5em;min-width:0}.solo-limit-hint,.solo-actions{grid-column:1/-1;margin:0}.solo-actions{margin-top:8px}.home-actions{flex-wrap:wrap;gap:8px;display:flex}.solo-record-note{margin:2px 0 0}.game,.board,.number-pad{touch-action:manipulation}.board,.number-pad{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.pad-digit{position:relative;overflow:hidden}.pad-pressing{border-color:var(--accent)}.pad-pressing:after{content:"";background:var(--accent);opacity:.25;transform-origin:bottom;pointer-events:none;height:100%;position:absolute;inset:auto 0 0}@media (prefers-reduced-motion:no-preference){.pad-pressing:after{animation:.4s linear long-press}}@keyframes long-press{0%{transform:scaleY(0)}to{transform:scaleY(1)}}.pad-left{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.7rem;line-height:1.2;position:absolute;top:2px;right:6px}.header-menu{position:relative}.header-menu-button{align-items:center;gap:6px;min-height:40px;display:inline-flex}.header-menu-icon{font-size:1.1em;line-height:1}.header-menu-panel{z-index:20;overscroll-behavior:contain;background:var(--surface);border:1px solid var(--border);width:min(340px,100vw - 16px);max-height:calc(100svh - 80px);box-shadow:0 8px 24px var(--shadow);border-radius:8px;flex-direction:column;gap:12px;padding:8px;display:flex;position:absolute;top:calc(100% + 8px);right:0;overflow-y:auto}.app-header .header-menu-nav{gap:4px;display:grid}.header-menu-item{width:100%;min-height:44px;color:var(--text);text-align:left;background:0 0;border:1px solid #0000;border-radius:6px;align-items:center;gap:8px;padding:8px 14px;font-weight:600;text-decoration:none;display:flex}.header-menu-item:hover{border-color:var(--border)}.header-menu-section{border-top:1px solid var(--border);padding-top:8px}.header-menu-section .theme-options{grid-template-columns:1fr;gap:6px}.header-menu-section .theme-option{padding:6px 8px}.header-menu-account{align-items:center;gap:6px;margin:0 0 6px;padding:0 14px;display:flex}.header-menu-section .account-actions button{min-height:44px}.hint-sheet{flex:none;height:48px}.game-side-hint .game-status{display:none}.hint-sheet .hint-card{height:100%;box-shadow:0 4px 16px var(--shadow);padding:4px 6px 4px 10px}.hint-sheet-open .hint-card{z-index:5;overscroll-behavior:contain;height:auto;padding:6px 10px;position:absolute;inset:0;overflow-y:auto}.hint-sheet .hint-head{gap:6px;height:100%;min-height:38px}.hint-sheet-open .hint-head{height:auto}.hint-sheet .hint-title{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.hint-sheet .hint-head>button{flex:none;min-width:40px;min-height:38px}.hint-next{padding:0 10px;font-size:1.2rem;line-height:1}.hint-toggle{padding:4px 10px}.game-status{flex-wrap:wrap;align-items:center;gap:4px 10px;font-size:.9rem;display:flex}.game-status button{min-height:36px;padding:4px 10px}.game-status-settings{font-size:1.2rem;line-height:1}.number-pad-compact{grid-template-columns:repeat(5,minmax(0,1fr));width:100%;max-width:none}.number-pad-compact .pad-digit{min-height:48px;padding:0;font-size:1.5rem}.number-pad-compact .pad-erase,.number-pad-compact .pad-notes{grid-column:auto;min-height:48px;padding:0 4px}.pad-tools{grid-column:1/-1;gap:6px;display:flex}.pad-tools>*{flex:1 1 0;min-height:44px}@media (width<=640px),(orientation:landscape) and (height<=500px){.app-header{padding-top:max(6px, env(safe-area-inset-top));gap:6px 10px;padding-bottom:6px}.app-header h1{font-size:1.1rem}.app-header .connection-open{gap:0;font-size:0}.app-header .connection-dot{width:10px;height:10px}.phone-game .app{height:100dvh;min-height:0}.phone-game .app>main{overscroll-behavior:contain;flex:1 1 0;min-height:0;overflow-y:auto}.phone-game .app>.app-footer{display:none}.game-compact{height:100%}.game-compact .game-main{flex-flow:column;align-items:stretch;gap:8px;height:100%}.game-board-area{flex:1 1 0;justify-content:center;align-items:center;min-height:200px;display:flex;position:relative;container-type:size}.game-compact .game-board{flex:none;width:min(100cqw,100cqh);max-width:none}.game-compact .game-side{flex:none;gap:8px;width:100%;position:relative}.game-extra{flex-direction:column;gap:8px;padding-top:12px;display:flex}.game-compact .board{container-type:inline-size}.game-compact .cell{font-size:6.6cqi}.game-compact .notes{font-size:3cqi}.game-compact .player-panel{flex-wrap:wrap;align-items:baseline;gap:2px 12px;padding:4px 10px;display:flex}.game-compact .player-panel h3{margin:0;font-size:.95rem}.game-compact .player-panel dl{flex-wrap:wrap;gap:0 6px;display:flex}.game-compact .player-panel dt{color:var(--muted)}.game-compact .player-panel dd+dt{margin-left:6px}.game-compact .overlay{overflow-y:auto}.game-compact .overlay-card{padding:12px}.game-compact .overlay-card h2{margin-bottom:8px}.game-compact .notice{z-index:11;background:var(--surface);border:1px solid var(--danger);box-shadow:0 4px 12px var(--shadow);border-radius:6px;margin:0;padding:6px 10px;position:absolute;bottom:8px;left:8px;right:8px}.modal-backdrop{padding:max(16px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) max(16px, env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left))}.modal{max-height:100%}.drawer-backdrop{padding:0}.drawer{border-width:0;width:100%}.tab{white-space:nowrap;padding:8px 6px}}@media (orientation:landscape) and (height<=500px){main{padding:8px max(12px, env(safe-area-inset-right)) 8px max(12px, env(safe-area-inset-left))}.game-compact .game-main{flex-direction:row;gap:12px}.game-board-area{justify-content:flex-end;min-width:0;min-height:0}.game-compact .game-side{flex:0 380px;gap:6px;width:auto;min-width:260px;max-height:100%;overflow-y:auto}.number-pad-compact{grid-template-columns:repeat(6,minmax(0,1fr))}.number-pad-compact .pad-tools{display:contents}.number-pad-compact .pad-digit,.number-pad-compact .pad-erase,.number-pad-compact .pad-tools>*{min-height:44px;padding:0 2px}.number-pad-compact .pad-tools>*{font-size:.85rem;line-height:1.1}.game-compact .game-status{font-size:.85rem}}
