:root{--bg: #0f1420;--panel: #1a2233;--line: #2c3a55;--line-strong: #51648c;--text: #e8edf7;--muted: #8fa0bf;--accent: #5aa9ff;--good: #4ade80;--bad: #f87171;--ice: #7dd3fc;color-scheme:dark}*{box-sizing:border-box}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}#app{max-width:900px;margin:0 auto;padding:24px 16px}header h1{margin:0 0 4px;font-size:1.6rem}.tagline{margin:0 0 24px;color:var(--muted)}#join-form{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:16px;align-items:center}#join-form .bot-setting{display:flex;align-items:center;gap:6px;font-size:.9rem;color:var(--muted, #9ca3af)}#join-form select{padding:8px 10px;border-radius:8px;border:1px solid var(--line, #374151);background:var(--panel, #111827);color:inherit;font:inherit}#join-form input{flex:1;max-width:280px;padding:10px 12px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:1rem}button{padding:10px 18px;border-radius:8px;border:none;cursor:pointer;background:var(--accent);color:#06101f;font-weight:600;font-size:1rem}button:disabled{opacity:.5;cursor:default}button.secondary{background:var(--panel);color:var(--text);border:1px solid var(--line-strong)}.rules{color:var(--muted);line-height:1.7;padding-left:18px}#status-bar{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:16px}#status{font-weight:600}#room-info{margin-top:2px;font-size:.85rem;font-weight:400;color:var(--muted)}#rematch-btn{padding:6px 14px;background:var(--accent);color:#06101f;border:1px solid var(--accent);border-radius:8px;font-size:.9rem;font-weight:600;cursor:pointer}#rematch-btn:disabled{opacity:.6;cursor:default}#leave-btn{padding:6px 14px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;font-size:.9rem;cursor:pointer}#leave-btn:hover{border-color:var(--accent)}#start-now-btn{padding:6px 12px;border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#fff;font-weight:600;cursor:pointer}#start-now-btn:disabled{opacity:.6;cursor:default}#lobby-bots{display:flex;gap:6px;align-items:center}#lobby-bots select{padding:5px 8px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:.85rem}#add-bot-btn{padding:6px 12px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;font-size:.9rem;cursor:pointer}#add-bot-btn:hover{border-color:var(--accent)}#add-bot-btn:disabled{opacity:.6;cursor:default}#scoreboard .remove-bot{margin-left:4px;padding:0 6px;font-size:.8rem;line-height:1.4;background:transparent;color:var(--muted);border:1px solid var(--line);border-radius:6px;cursor:pointer}#scoreboard .remove-bot:hover{color:var(--text);border-color:var(--accent)}.link-btn{margin-left:6px;padding:2px 8px;font-size:.8rem;border-radius:6px;border:1px solid var(--muted);background:transparent;color:inherit;cursor:pointer}.meters{display:flex;gap:12px}.meter{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 12px;font-size:.85rem;color:var(--muted)}.meter strong{color:var(--text);margin-left:4px}.meter strong.hot{color:#fbbf24}.meter.frozen{border-color:var(--ice);color:var(--ice);animation:freeze-pulse 1s ease-in-out infinite}.meter.frozen strong{color:var(--ice);font-variant-numeric:tabular-nums}@keyframes freeze-pulse{0%,to{box-shadow:0 0 #7dd3fc00}50%{box-shadow:0 0 8px 1px #7dd3fc73}}#mute-btn{background:var(--panel);border:1px solid var(--line);color:var(--text);padding:4px 10px;font-size:1rem;line-height:1.3}#mute-btn:hover{border-color:var(--accent)}#mute-btn[aria-pressed=true]{color:var(--muted)}#board-wrap{display:flex;gap:24px;flex-wrap:wrap}#board{display:grid;grid-template-columns:repeat(9,44px);grid-template-rows:repeat(9,44px);border:2px solid var(--line-strong);width:fit-content;-webkit-user-select:none;user-select:none;transition:border-color .2s}.cell{display:flex;align-items:center;justify-content:center;font-size:1.15rem;border:1px solid var(--line);cursor:pointer;background:var(--panel)}.cell.given{color:var(--muted);background:#141b2a;cursor:default;font-weight:600}.cell.claimed{color:var(--player-color, var(--good));font-weight:600;cursor:default}.cell.claimed.mine{font-weight:700;background:color-mix(in srgb,var(--player-color, var(--good)) 14%,var(--panel))}.cell.selected{outline:2px solid var(--accent);outline-offset:-2px}.cell.box-right{border-right:2px solid var(--line-strong)}.cell.box-bottom{border-bottom:2px solid var(--line-strong)}.cell.just-claimed{animation:claim-flash 1.2s ease-out both;position:relative;z-index:1}@keyframes claim-flash{0%{background:#fff;color:#06101f;transform:scale(1.25);box-shadow:0 0 10px 3px var(--player-color, var(--accent))}40%{background:#fff;color:#06101f;transform:scale(1.1);box-shadow:0 0 8px 2px var(--player-color, var(--accent))}to{transform:scale(1);box-shadow:none}}.cell.flash-wrong{animation:flash-bad .6s}.cell .wrong-digit{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;color:var(--player-color, var(--bad));font-weight:700;animation:wrong-digit .6s ease-out both;pointer-events:none;z-index:2}@keyframes flash-bad{0%,to{background:var(--panel)}50%{background:#7f1d1d}}@keyframes wrong-digit{0%{opacity:1;transform:scale(1.3)}70%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}#board.frozen{border-color:var(--ice);box-shadow:0 0 0 2px #7dd3fc40}#board.frozen .cell{cursor:crosshair}#board-frame{position:relative;width:fit-content}#board.frozen{filter:saturate(.35) brightness(.9);transition:filter .2s,border-color .2s}#frost-overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:linear-gradient(160deg,#7dd3fc38,#7dd3fc0f 55%,#bae6fd33);-webkit-backdrop-filter:blur(.6px);backdrop-filter:blur(.6px);pointer-events:none}#frost-overlay[hidden]{display:none}#frost-overlay .frost-badge{font-size:2rem;font-weight:700;color:var(--ice);text-shadow:0 0 12px rgba(125,211,252,.9),0 2px 4px rgba(0,0,0,.6);font-variant-numeric:tabular-nums;animation:freeze-pulse 1s ease-in-out infinite}#frost-overlay .frost-badge strong{font-size:2.4rem}#frost-overlay .frost-bar{width:60%;height:6px;border-radius:3px;overflow:hidden;background:#06101f99;box-shadow:0 0 0 1px #7dd3fc66}#frost-overlay .frost-bar span{display:block;height:100%;width:100%;background:var(--ice);transform-origin:left;transform:scaleX(var(--frost-fraction, 1));transition:transform .25s linear}.cell.claimed.frozen-owner{color:color-mix(in srgb,var(--player-color, var(--good)) 55%,var(--ice));background:repeating-linear-gradient(-45deg,color-mix(in srgb,var(--player-color, var(--good)) 12%,var(--panel)) 0,color-mix(in srgb,var(--player-color, var(--good)) 12%,var(--panel)) 4px,color-mix(in srgb,var(--ice) 18%,var(--panel)) 4px,color-mix(in srgb,var(--ice) 18%,var(--panel)) 8px);box-shadow:inset 0 0 0 1px #7dd3fc73}.cell .freeze-mark{position:absolute;right:1px;top:1px;z-index:2;font-size:.55rem;line-height:1;font-weight:700;padding:1px 3px;border-radius:4px;color:#06101f;background:var(--player-color, var(--ice));box-shadow:0 0 0 1px #7dd3fc99,0 0 6px #7dd3fc80;font-variant-numeric:tabular-nums;pointer-events:none;white-space:nowrap}#scoreboard li.frozen .swatch{box-shadow:0 0 0 2px var(--ice) inset;opacity:.7}aside{min-width:220px;flex:1}#keypad{display:grid;grid-template-columns:repeat(9,1fr);gap:6px;margin-bottom:20px}#keypad button{padding:10px 0;background:var(--panel);color:var(--text);border:1px solid var(--line)}#keypad button:hover{border-color:var(--accent)}#keypad button:disabled{opacity:.35;cursor:not-allowed;border-color:var(--ice);color:var(--ice)}#keypad button:disabled:hover{border-color:var(--ice)}#notes-btn{width:100%;margin:-12px 0 20px;padding:8px 0;background:var(--panel);color:var(--muted);border:1px solid var(--line);font-size:.9rem}#notes-btn:hover{border-color:var(--accent)}#notes-btn.active{color:var(--accent);border-color:var(--accent);background:#1c2c48}#keypad.notes-on button{color:var(--accent);font-size:.8rem}.cell{position:relative}.cell.peer{background:#202b42}.cell.given.peer{background:#1a2335}.cell.same{background:#24406b}.cell .notes{position:absolute;top:1px;right:1px;bottom:1px;left:1px;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);pointer-events:none}.cell .notes span{font-size:.6rem;line-height:1;color:var(--muted);display:flex;align-items:center;justify-content:center}aside h2{font-size:1rem;margin:0 0 8px;color:var(--muted)}#scoreboard{list-style:none;padding:0;margin:0}#scoreboard li{display:flex;justify-content:space-between;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:8px 12px;margin-bottom:6px;font-size:.9rem}#scoreboard li.me{border-color:var(--accent)}#scoreboard li.frozen{border-color:var(--ice)}#scoreboard li.frozen .progress{color:var(--ice)}#scoreboard .who{display:flex;gap:6px;align-items:center}#scoreboard .progress{color:var(--muted);font-size:.8rem;white-space:nowrap}#scoreboard .pts{font-weight:600}#scoreboard .entry{display:flex;flex:1;justify-content:space-between;gap:8px;align-items:center;min-width:0}.swatch{width:12px;height:12px;border-radius:3px;flex-shrink:0;background:var(--player-color, var(--accent));box-shadow:0 0 0 1px #ffffff26 inset}#reaction-bar{display:flex;flex-direction:column;gap:6px;margin-bottom:20px}#reaction-emojis,#reaction-phrases{display:flex;flex-wrap:wrap;gap:6px}.reaction-btn,.phrase-btn{padding:6px 10px;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;cursor:pointer;font:inherit}.reaction-btn{font-size:1.1rem;line-height:1;padding:6px 8px}.phrase-btn{font-size:.8rem;color:var(--muted)}.reaction-btn:hover,.phrase-btn:hover{border-color:var(--accent);color:var(--text)}#reaction-bar.cooling .reaction-btn,#reaction-bar.cooling .phrase-btn{opacity:.5;pointer-events:none}#reaction-feed{position:absolute;left:0;right:0;bottom:6px;z-index:3;display:flex;flex-direction:column;align-items:flex-start;gap:6px;padding:0 6px;pointer-events:none}.reaction-bubble{display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:6px 12px;border-radius:999px;background:var(--panel);color:var(--text);border:1px solid var(--player-color, var(--line-strong));box-shadow:0 0 0 2px color-mix(in srgb,var(--player-color, var(--accent)) 30%,transparent),0 4px 12px #00000059;animation:reaction-in .24s ease-out,reaction-out .4s ease-in 2.6s forwards}.reaction-bubble.mine{align-self:flex-end}.reaction-bubble .reaction-who{font-size:.75rem;font-weight:700;color:var(--player-color, var(--accent))}.reaction-bubble.emoji .reaction-what{font-size:1.5rem;line-height:1}.reaction-bubble.phrase .reaction-what{font-size:.95rem;font-weight:600}@keyframes reaction-in{0%{opacity:0;transform:translateY(8px) scale(.9)}to{opacity:1;transform:none}}@keyframes reaction-out{to{opacity:0;transform:translateY(-6px)}}#toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--panel);border:1px solid var(--line-strong);border-radius:10px;padding:12px 20px;font-weight:600}#toast.good{color:var(--good)}#toast.bad{color:var(--bad)}@media(prefers-reduced-motion:reduce){.reaction-bubble{animation:none}.cell.just-claimed{animation:none;box-shadow:0 0 0 2px var(--player-color, var(--accent)) inset}.cell .wrong-digit,.meter.frozen,#frost-overlay .frost-badge{animation:none}#frost-overlay .frost-bar span,#board.frozen{transition:none}}body.spectating #keypad,body.spectating #notes-btn,body.spectating .meters{display:none}body.spectating .cell{cursor:default}.watch-link{margin:16px 0 0;color:var(--muted);font-size:.85rem;word-break:break-all}.watch-link a{color:var(--accent)}.room-hint{color:var(--muted);font-size:.9rem;margin:-8px 0 16px}.auth-panel{margin:-4px 0 20px}.auth-form{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.auth-form input{flex:1;max-width:280px;padding:8px 12px;border-radius:8px;border:1px solid var(--line);background:var(--panel);color:var(--text);font-size:.95rem}.auth-form button{padding:8px 14px;font-size:.95rem}.auth-hint,.auth-note,.auth-signed-in{color:var(--muted);font-size:.85rem}.auth-note{margin:8px 0 0}.auth-signed-in{margin:0;display:flex;align-items:center;gap:10px}.auth-signed-in .link-btn{padding:4px 10px;font-size:.85rem}#name-input[readonly]{opacity:.8;cursor:default}#puzzle-link-wrap{margin-top:6px}.link-btn:disabled{opacity:.5;cursor:default}#print-sheet{display:none}#print-grid{display:grid;grid-template-columns:repeat(9,1cm);grid-template-rows:repeat(9,1cm)}.print-cell{border:1px solid #999;display:flex;align-items:center;justify-content:center;font-size:.6cm;color:#000}.print-cell:nth-child(9n+1){border-left:2px solid #000}.print-cell:nth-child(9n+3),.print-cell:nth-child(9n+6),.print-cell:nth-child(9n){border-right:2px solid #000}.print-cell:nth-child(-n+9){border-top:2px solid #000}.print-cell:nth-child(n+19):nth-child(-n+27),.print-cell:nth-child(n+46):nth-child(-n+54),.print-cell:nth-child(n+73){border-bottom:2px solid #000}@media print{body{background:#fff;color:#000}#app>:not(#print-sheet){display:none!important}#print-sheet:not([hidden]){display:block!important}#print-sheet h2{font-size:14pt;margin:0 0 .4cm;color:#000}#print-meta{font-size:9pt;color:#444;margin-top:.4cm;word-break:break-all}}.approve-setting{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.9rem}.approve-setting input{accent-color:var(--accent)}#join-requests{flex-basis:100%;font-size:.9rem}#join-requests ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:6px}#join-requests li{display:flex;align-items:center;gap:8px}#join-requests .approve-btn,#join-requests .deny-btn{padding:4px 10px;font-size:.85rem}#join-requests .deny-btn{background:var(--panel);color:var(--text);border:1px solid var(--line-strong)}.ranked-setting input{accent-color:var(--accent)}#rating-info{font-size:.85rem;color:var(--muted)}#rating-results{margin-top:16px}#rating-results h2{font-size:1rem;margin:0 0 8px;color:var(--muted)}.rating-table{list-style:none;margin:0;padding:0;display:grid;gap:4px}.rating-table li{display:grid;grid-template-columns:2.5rem 1fr auto 4rem;align-items:center;gap:8px;padding:6px 8px;border-radius:6px;background:var(--panel);border:1px solid var(--line);font-variant-numeric:tabular-nums}.rating-table li.me{border-color:var(--accent)}.rating-table .rank{opacity:.6}.rating-table .move{opacity:.75;font-size:.85rem}.rating-table .delta{text-align:right;font-weight:600}.rating-table li.up .delta{color:var(--good)}.rating-table li.down .delta{color:var(--bad)}.rating-table li.flat .delta{opacity:.5}.badge{display:inline-block;margin-top:4px;background:#2a2140;color:#c4b5fd;border:1px solid #5b4b8a;border-radius:999px;padding:2px 10px;font-size:.8rem;font-weight:600}#daily-panel{margin-top:16px}#daily-panel .muted{color:var(--muted);font-size:.85rem}#daily-board{list-style:none;padding:0;margin:0}#daily-board li{display:flex;justify-content:space-between;gap:8px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px 10px;margin-bottom:6px;font-size:.9rem}#daily-board li.me{border-color:#c4b5fd}#daily-board .rank{color:var(--muted);width:1.6em}#daily-board .who{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#daily-board .meta{color:var(--muted);font-size:.8rem}#daily-board .pts{font-weight:600}.leaderboard-panel{margin:0 0 20px}.leaderboard-panel h2{font-size:1rem;margin:0 0 4px}.leaderboard-note{color:var(--muted);font-size:.85rem;margin:0 0 8px}.leaderboard .empty{color:var(--muted);font-size:.9rem;margin:0}.leaderboard table{width:100%;border-collapse:collapse;font-size:.9rem;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}.leaderboard th,.leaderboard td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--line)}.leaderboard th{color:var(--muted);font-weight:600;font-size:.8rem}.leaderboard tr:last-child td{border-bottom:none}.leaderboard td.num,.leaderboard th.num{text-align:right;font-variant-numeric:tabular-nums}:root{--given-bg: #141b2a;--given-peer-bg: #1a2335;--peer-bg: #202b42;--same-bg: #24406b;--accent-soft: #1c2c48;--hot: #fbbf24;--btn-text: #06101f;--on-player: #06101f;--flash-bad: #7f1d1d;--claim-flash-bg: #ffffff;--claim-flash-text: #06101f;--swatch-ring: rgba(255, 255, 255, .15);--seat-0: #ffb005;--seat-1: #a8e6ff;--seat-2: #0ce474;--seat-3: #ff24ed;--seat-4: #369be2;--seat-5: #e7765a;--seat-6: #f3ccaa;--seat-7: #9d9090}@media(prefers-color-scheme:light){:root:not([data-theme=dark]){--bg: #f5f7fb;--panel: #ffffff;--line: #d3dae8;--line-strong: #8c9ab8;--text: #16202e;--muted: #5a6b87;--accent: #1668c4;--good: #0f7a4a;--bad: #c0392b;--ice: #0369a1;--given-bg: #e9edf6;--given-peer-bg: #dfe6f3;--peer-bg: #eaf0fa;--same-bg: #cfe0fb;--accent-soft: #dbe8fb;--hot: #a16207;--btn-text: #ffffff;--on-player: #ffffff;--flash-bad: #f5c2c0;--claim-flash-bg: #16202e;--claim-flash-text: #ffffff;--swatch-ring: rgba(0, 0, 0, .15);--seat-0: #855f00;--seat-1: #074e88;--seat-2: #00854b;--seat-3: #e00083;--seat-4: #0a1ac2;--seat-5: #c44231;--seat-6: #523e14;--seat-7: #707070;color-scheme:light}}:root[data-theme=light]{--bg: #f5f7fb;--panel: #ffffff;--line: #d3dae8;--line-strong: #8c9ab8;--text: #16202e;--muted: #5a6b87;--accent: #1668c4;--good: #0f7a4a;--bad: #c0392b;--ice: #0369a1;--given-bg: #e9edf6;--given-peer-bg: #dfe6f3;--peer-bg: #eaf0fa;--same-bg: #cfe0fb;--accent-soft: #dbe8fb;--hot: #a16207;--btn-text: #ffffff;--on-player: #ffffff;--flash-bad: #f5c2c0;--claim-flash-bg: #16202e;--claim-flash-text: #ffffff;--swatch-ring: rgba(0, 0, 0, .15);--seat-0: #855f00;--seat-1: #074e88;--seat-2: #00854b;--seat-3: #e00083;--seat-4: #0a1ac2;--seat-5: #c44231;--seat-6: #523e14;--seat-7: #707070;color-scheme:light}button,#rematch-btn{color:var(--btn-text)}.meter strong.hot{color:var(--hot)}.cell.given{background:var(--given-bg)}.cell .freeze-mark{color:var(--on-player)}.swatch{box-shadow:0 0 0 1px var(--swatch-ring) inset}#notes-btn.active{background:var(--accent-soft)}.cell.peer{background:var(--peer-bg)}.cell.given.peer{background:var(--given-peer-bg)}.cell.same{background:var(--same-bg)}.cell.selected.same,.cell.selected.peer{background:var(--panel)}@keyframes claim-flash{0%{background:var(--claim-flash-bg);color:var(--claim-flash-text);transform:scale(1.25);box-shadow:0 0 10px 3px var(--player-color, var(--accent))}40%{background:var(--claim-flash-bg);color:var(--claim-flash-text);transform:scale(1.1);box-shadow:0 0 8px 2px var(--player-color, var(--accent))}to{transform:scale(1);box-shadow:none}}@keyframes flash-bad{0%,to{background:var(--panel)}50%{background:var(--flash-bad)}}#theme-toggle{background:var(--panel);color:var(--text);border:1px solid var(--line);font-size:.85rem;font-weight:500;padding:6px 12px}#theme-toggle:hover{border-color:var(--accent)}header{position:relative}header #theme-toggle{position:absolute;top:0;right:0}:root{--cell-size: 44px;--gutter: 16px;--touch-target: 44px;--dock-gap: 6px;--dock-height: calc(2 * (var(--touch-target) + 4px) + 3 * var(--dock-gap) + 1px + env(safe-area-inset-bottom, 0px))}#board{grid-template-columns:repeat(9,var(--cell-size));grid-template-rows:repeat(9,var(--cell-size))}#keypad-dock{display:contents}#board,#keypad-dock,button,select{touch-action:manipulation}.cell,#keypad button{-webkit-tap-highlight-color:transparent}:root[data-pointer=coarse] #keypad button,:root[data-pointer=coarse] #notes-btn,:root[data-pointer=coarse] #leave-btn,:root[data-pointer=coarse] #rematch-btn,:root[data-pointer=coarse] #start-now-btn,:root[data-pointer=coarse] #add-bot-btn,:root[data-pointer=coarse] #mute-btn,:root[data-pointer=coarse] #theme-toggle,:root[data-pointer=coarse] .link-btn,:root[data-pointer=coarse] .remove-bot,:root[data-pointer=coarse] #join-form select,:root[data-pointer=coarse] #join-form input{min-height:var(--touch-target)}:root[data-pointer=coarse] .link-btn{padding:6px 12px}:root[data-pointer=coarse] #join-requests .approve-btn,:root[data-pointer=coarse] #join-requests .deny-btn{min-height:var(--touch-target)}@media(max-width:600px){#app{padding:12px var(--gutter) 16px}#app:has(#game-screen:not([hidden])){padding-bottom:calc(var(--dock-height) + 12px)}#app:has(#game-screen:not([hidden])) .tagline{display:none}header h1{font-size:1.3rem;padding-right:110px}.tagline{margin-bottom:16px}#join-form input{max-width:none}#join-form button{flex:1 1 45%;min-height:var(--touch-target)}#join-form .bot-setting{min-height:var(--touch-target)}.rules{padding-left:16px;font-size:.95rem}#status-bar{gap:6px;margin-bottom:10px}#status-text{flex-basis:100%}.meters{gap:6px;flex-wrap:wrap;width:100%}.meter{padding:6px 8px;font-size:.8rem;flex:1 1 auto;text-align:center;white-space:nowrap}#leave-btn,#rematch-btn,#start-now-btn,#add-bot-btn,#mute-btn{min-height:var(--touch-target)}#board-wrap{gap:16px}#board-frame{width:100%;max-width:400px;margin:0 auto}#board{width:100%;grid-template-columns:repeat(9,1fr);grid-template-rows:none}.cell{aspect-ratio:1 / 1;font-size:clamp(.95rem,5vw,1.15rem)}.cell .notes span{font-size:clamp(.45rem,2.2vw,.6rem)}.cell .freeze-mark{font-size:.5rem}#frost-overlay .frost-badge{font-size:1.5rem}#frost-overlay .frost-badge strong{font-size:1.8rem}aside{min-width:0;width:100%;flex:1 1 100%}#keypad-dock{position:fixed;left:0;right:0;bottom:0;z-index:5;display:grid;grid-template-columns:repeat(5,1fr);gap:var(--dock-gap);padding:var(--dock-gap) var(--dock-gap) calc(var(--dock-gap) + env(safe-area-inset-bottom,0px));background:var(--bg);border-top:1px solid var(--line)}#keypad{display:contents}#keypad button,#notes-btn{min-height:calc(var(--touch-target) + 4px);margin:0;width:auto;padding:0;font-size:1.35rem;font-weight:600;border-radius:10px}#notes-btn{font-size:.95rem}#keypad.notes-on button{font-size:1.1rem}body.spectating #keypad-dock{display:none}body.spectating #app:has(#game-screen:not([hidden])){padding-bottom:16px}#toast{bottom:calc(var(--dock-height) + 12px);max-width:calc(100vw - 2 * var(--gutter));text-align:center}.watch-link,#rating-results,.leaderboard-panel{font-size:.9rem}.rating-table li{grid-template-columns:2rem 1fr auto 3.5rem}.leaderboard th,.leaderboard td{padding:8px}}.achievements{margin:0 0 16px}.achievements h2{margin:0 0 8px;font-size:1rem;color:var(--muted)}.achievements ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}.ach-badge{display:grid;grid-template-columns:auto 1fr;column-gap:8px;align-items:center;padding:8px 12px;border-radius:8px;border:1px solid var(--line);background:var(--panel);min-width:180px}.ach-badge-icon{grid-row:span 2;font-size:1.4rem}.ach-badge-title{font-weight:600}.ach-badge-desc{font-size:.8rem;color:var(--muted)}.ach-badge.locked{opacity:.45;filter:grayscale(1)}.ach-badge.earned{border-color:var(--accent)}#unlocked,#bonus-results{margin-top:16px}#bonus-results h2{font-size:1rem;margin:0 0 8px;color:var(--muted)}.bonus-table{list-style:none;margin:0;padding:0;display:grid;gap:4px}.bonus-table li{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;padding:6px 8px;border-radius:6px;background:var(--panel);border:1px solid var(--line);font-variant-numeric:tabular-nums}.bonus-table li.me{border-color:var(--accent)}.bonus-table .what{opacity:.75;font-size:.85rem}.bonus-table .delta{text-align:right;font-weight:600;color:var(--good)}
