@import "https://fonts.googleapis.com/css2?family=IBM+Plex+Sans:wght@300;400;500;600&family=IBM+Plex+Mono:wght@400;500&display=swap";*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#f9fafb;--surface:#fff;--border:#e5e7eb;--border-subtle:#f3f4f6;--text:#111827;--text-2:#6b7280;--text-3:#9ca3af;--accent:oklch(52% .22 254);--accent-hover:oklch(45% .22 254);--accent-soft:oklch(97% .03 254);--accent-mid:oklch(90% .06 254);--error:oklch(55% .2 25);--error-soft:oklch(97% .03 25);--success:oklch(55% .18 145);--success-soft:oklch(97% .03 145);--radius-sm:4px;--radius-md:8px;--radius-lg:12px;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #00000014, 0 2px 4px #0000000a;--font:"IBM Plex Sans", system-ui, sans-serif;--mono:"IBM Plex Mono", monospace}main.sn-container{max-width:100%;margin:0;padding:0}.sn-footer{display:none}#app-root{font-family:var(--font);background:var(--bg);color:var(--text)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}@keyframes celebrate{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}.center-screen{justify-content:center;align-items:center;height:100vh;display:flex}.loading-text{font-family:var(--mono);color:var(--text-3);font-size:13px}.menu{flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 344px);padding:24px;animation:.3s fadeIn;display:flex}.menu-header{text-align:center;margin-bottom:48px}.logo-square{background:var(--text);border-radius:var(--radius-md);justify-content:center;align-items:center;width:56px;height:56px;margin:0 auto 16px;display:flex}.brand{letter-spacing:.08em;text-transform:uppercase;color:var(--accent);margin-bottom:6px;font-size:11px;font-weight:600}.title{letter-spacing:-.03em;color:var(--text);font-size:36px;font-weight:600}.subtitle{color:var(--text-2);margin-top:6px;font-size:14px}.level-list{flex-direction:column;gap:12px;width:100%;max-width:320px;display:flex}.level-btn{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);cursor:pointer;font-family:var(--font);text-align:left;justify-content:space-between;align-items:center;padding:18px 22px;transition:all .15s;display:flex}.level-btn:hover{border-color:var(--level-color,var(--accent));box-shadow:var(--shadow-md)}.level-btn:hover .level-label{color:var(--level-color,var(--accent))}.level-label{color:var(--text);letter-spacing:-.01em;font-size:16px;font-weight:600;transition:color .15s}.level-desc{color:var(--text-3);margin-top:2px;font-size:12px}.level-best{text-align:right;font-family:var(--mono);color:var(--text-3)}.best-label{text-transform:uppercase;letter-spacing:.06em;margin-bottom:2px;font-size:10px}.best-time{font-size:12px}.arrow{color:var(--border);font-size:18px}.hint{color:var(--text-3);font-size:12px;font-family:var(--mono);margin-top:40px}.hint-sm{margin-top:8px;font-size:11px}.game{flex-direction:column;justify-content:center;align-items:center;min-height:calc(100vh - 344px);padding:16px 16px 32px;animation:.25s fadeIn;display:flex}.game-header{justify-content:space-between;align-items:center;width:100%;max-width:420px;margin-bottom:20px;display:flex}.link-btn{cursor:pointer;font-family:var(--font);color:var(--text-2);background:0 0;border:none;padding:0;font-size:13px}.diff-pill{letter-spacing:.08em;text-transform:uppercase;background:var(--surface);border-radius:var(--radius-sm);border:1px solid;padding:3px 10px;font-size:11px;font-weight:600}.stats{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);width:100%;max-width:420px;box-shadow:var(--shadow-sm);gap:0;margin-bottom:20px;display:flex;overflow:hidden}.stat{text-align:center;border-right:1px solid var(--border);flex:1;padding:12px 0}.stat:last-child{border-right:none}.stat-label{letter-spacing:.07em;text-transform:uppercase;color:var(--text-3);margin-bottom:3px;font-size:10px;font-weight:600}.stat-value{font-size:15px;font-weight:600;font-family:var(--mono);color:var(--text)}.board{aspect-ratio:1;background:var(--surface);border:2px solid var(--text);border-radius:var(--radius-md);width:100%;max-width:420px;box-shadow:var(--shadow-md);grid-template-rows:repeat(9,1fr);transition:box-shadow .3s;display:grid;overflow:hidden}.board.won{box-shadow:0 0 0 3px var(--success);animation:.5s celebrate}.board-row{border-bottom:1px solid var(--border);grid-template-columns:repeat(9,1fr);display:grid}.board-row:last-child{border-bottom:none}.board-row.thick{border-bottom:2px solid var(--text)}.cell{cursor:pointer;border-right:1px solid var(--border);user-select:none;justify-content:center;align-items:center;transition:background .1s;display:flex;position:relative}.cell:last-child{border-right:none}.cell.thick-r{border-right:2px solid var(--text)}.cell.shake{animation:.4s shake}.cell-num{font-size:clamp(14px,3.5vw,22px);font-family:var(--mono);line-height:1}.note-grid{grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);width:90%;height:90%;display:grid}.note{font-size:clamp(6px,1.2vw,8px);font-family:var(--mono);color:var(--text-3);justify-content:center;align-items:center;line-height:1;display:flex}.note-grid.on-selected .note{color:#fffc}.numpad{flex-direction:column;gap:10px;width:100%;max-width:420px;margin-top:20px;display:flex}.num-row{grid-template-columns:repeat(9,1fr);gap:6px;display:grid}.num-btn{aspect-ratio:1;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;font-family:var(--mono);color:var(--text);box-shadow:var(--shadow-sm);font-size:18px;font-weight:600;transition:all .1s}.num-btn:disabled{color:var(--border);cursor:default}.num-btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.action-row{grid-template-columns:1fr 1fr;gap:6px;display:grid}.action-btn{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);cursor:pointer;font-family:var(--font);color:var(--text-2);box-shadow:var(--shadow-sm);padding:11px 0;font-size:13px;font-weight:500;transition:all .12s}.action-btn:hover{background:var(--bg)}.action-btn.active{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.win-banner{background:var(--surface);border:1px solid var(--success);border-radius:var(--radius-lg);width:100%;max-width:420px;box-shadow:var(--shadow-md);text-align:center;margin-top:24px;padding:28px 24px;animation:.4s fadeIn}.win-label{letter-spacing:.08em;text-transform:uppercase;color:var(--success);margin-bottom:8px;font-size:11px;font-weight:600}.win-time{font-size:32px;font-weight:600;font-family:var(--mono);letter-spacing:-.02em;color:var(--text);margin-bottom:4px}.new-best{color:var(--success);margin-bottom:12px;font-size:12px;font-weight:500}.win-actions{gap:8px;margin-top:20px;display:flex}.btn-secondary{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);cursor:pointer;font-family:var(--font);color:var(--text-2);flex:1;padding:11px 0;font-size:13px;font-weight:500}.btn-primary{border-radius:var(--radius-md);background:var(--text);cursor:pointer;font-family:var(--font);color:#fff;border:none;flex:2;padding:11px 0;font-size:13px;font-weight:600}.best-wrap{flex-direction:column;align-items:flex-end;display:flex}
