:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0b1220;--bg-2:#0f1a2e;--surface:#162033;--surface-2:#1c2940;--text:#eef3fb;--muted:#8fa0ba;--accent:#3dc6f2;--accent-ink:#04222d;--accent-soft:#3dc6f224;--filled:#3dc6f2;--filled-2:#1fa3d4;--cell:#1a2740;--cell-line:#26364f;--guide:#4a6286;--hl:#3dc6f21a;--cross:#7a8aa5;--border:#26364f;--good:#4ade80;--danger:#f87171;--shadow:0 12px 32px #00000059;--radius:10px}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f6fb;--bg-2:#eaeef6;--surface:#fff;--surface-2:#f0f3fa;--text:#16203a;--muted:#5d6b86;--accent:#0a84c6;--accent-ink:#fff;--accent-soft:#0a84c61a;--filled:#0f6fa8;--filled-2:#0a5a8a;--cell:#f7f9fd;--cell-line:#d5dcea;--guide:#7d8db0;--hl:#0a84c61a;--cross:#94a0b8;--border:#d5dcea;--good:#16a34a;--danger:#dc2626;--shadow:0 12px 28px #1e325a24}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1200px 600px at 20% -10%, var(--bg-2), var(--bg));color:var(--text);-webkit-font-smoothing:antialiased;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#root{flex-direction:column;display:flex}button,input,select{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{flex-direction:column;height:100%;min-height:0;display:flex}.topbar{z-index:5;background:var(--surface);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:1rem;padding:.6rem 1.1rem;display:flex;position:relative}.topbar-brand{letter-spacing:.02em;align-items:center;gap:.6rem;font-size:1.05rem;font-weight:700;display:flex}.topbar-brand span:not(.logo){color:var(--accent)}.logo{grid-template-columns:1fr 1fr;gap:2px;width:22px;height:22px;display:grid}.logo i{background:var(--accent);border-radius:2px}.logo i:nth-child(2),.logo i:nth-child(3){background:var(--cell-line)}.topbar-actions{align-items:center;gap:.6rem;display:flex;position:relative}.btn{border:1px solid var(--border);background:var(--surface-2);color:var(--text);cursor:pointer;border-radius:8px;padding:.42rem .85rem;font-size:.88rem;line-height:1.2;transition:background .12s,border-color .12s,transform 60ms}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:active:not(:disabled){transform:translateY(1px)}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}.btn.primary:hover:not(:disabled){filter:brightness(1.08)}.btn.icon{padding:.25rem .55rem;font-size:1.1rem}.btn.ghost{background:0 0;border-color:#0000;padding:.1rem .45rem;font-size:1.1rem}.btn:disabled{opacity:.45;cursor:not-allowed}.status-pill{background:var(--surface-2);border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:.18rem .65rem;font-size:.75rem}.status-pill[data-state=solving],.status-pill[data-state=generating]{color:var(--accent);border-color:var(--accent);animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.55}}.settings-panel{z-index:10;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:250px;box-shadow:var(--shadow);padding:.85rem 1rem;position:absolute;top:calc(100% + .6rem);right:0}.settings-panel h3{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:0 0 .5rem;font-size:.8rem}.switch-row{cursor:pointer;justify-content:space-between;align-items:center;padding:.4rem 0;font-size:.9rem;display:flex}.switch-row input{accent-color:var(--accent);width:1.05rem;height:1.05rem}.app-body{flex:1;min-height:0;display:flex}.stage{flex-direction:column;flex:1;min-width:0;min-height:0;display:flex}.toolpad{border-bottom:1px solid var(--border);background:color-mix(in srgb, var(--surface) 70%, transparent);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem 1.4rem;padding:.65rem 1.1rem;display:flex}.toolpad-group{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.toolpad-group label{color:var(--muted);align-items:center;gap:.4rem;font-size:.78rem;display:flex}.toolpad-group input[type=number],.toolpad-group select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);border-radius:8px;padding:.35rem .5rem}.toolpad-group input[type=number]{width:4rem}.segmented{border:1px solid var(--border);background:var(--surface-2);border-radius:8px;display:inline-flex;overflow:hidden}.segmented button{cursor:pointer;background:0 0;border:0;align-items:center;gap:.4rem;padding:.42rem .8rem;font-size:.88rem;display:flex}.segmented button.on{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 -2px 0 var(--accent);font-weight:600}.swatch{border-radius:3px;place-items:center;width:.9rem;height:.9rem;font-size:.85rem;line-height:1;display:inline-grid}.swatch.fill{background:var(--filled)}.swatch.cross{color:var(--cross);font-weight:700}.swatch.why{color:var(--accent);font-weight:700}.notice{background:color-mix(in srgb, var(--danger) 14%, var(--surface));border:1px solid color-mix(in srgb, var(--danger) 50%, var(--border));border-radius:8px;justify-content:space-between;align-items:center;gap:.5rem;margin:.6rem 1.1rem 0;padding:.5rem .8rem;font-size:.85rem;display:flex}.board-wrap{--avail-w:calc(100vw - 21rem);--avail-h:calc(100vh - 15rem);flex-direction:column;flex:1;align-items:center;gap:.9rem;min-height:0;padding:1.2rem 1.1rem 2rem;display:flex;overflow:auto}.board-head{text-align:center}.board-title{letter-spacing:.01em;margin:0;font-size:1.15rem}.board-meta{color:var(--muted);margin-top:.15rem;font-size:.8rem}.board{--cell:clamp(14px, min(calc(var(--avail-w) / var(--units-w)), calc(var(--avail-h) / var(--units-h))), 52px);--clue:calc(var(--cell) * .78);background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;max-width:100%;padding:.9rem;position:relative;overflow:auto}.board-grid{touch-action:none;-webkit-user-select:none;user-select:none;width:max-content;display:grid}.board.locked .board-grid{cursor:default}.clue{color:var(--text);font-weight:600;font-size:max(9px, calc(var(--cell) * .46));font-variant-numeric:tabular-nums;display:flex}.clue span{place-items:center;display:grid}.clue.col{flex-direction:column;justify-content:flex-end;align-items:center;padding-bottom:4px}.clue.col span{height:var(--clue)}.clue.row{flex-direction:row;justify-content:flex-end;align-items:center;gap:0;padding-right:6px}.clue.row span{min-width:var(--clue);padding:0 .1em}.clue.done{color:var(--muted);opacity:.45}.clue.hl{background:var(--hl);border-radius:4px}.cell{width:var(--cell);height:var(--cell);background:var(--cell);box-shadow:inset 0 0 0 1px var(--cell-line);cursor:pointer;position:relative}.cell.hl{background:color-mix(in srgb, var(--cell) 80%, var(--accent))}.cell.filled{background:var(--filled);box-shadow:inset 0 0 0 1px var(--filled-2), inset 0 0 0 3px color-mix(in srgb, var(--filled) 80%, #fff)}.cell.crossed:after{content:"";background:linear-gradient(45deg, transparent 44%, var(--cross) 44% 56%, transparent 56%), linear-gradient(-45deg, transparent 44%, var(--cross) 44% 56%, transparent 56%);position:absolute;inset:28%}.guide-r{margin-right:3px}.guide-b{margin-bottom:3px}.cell.guide-r{box-shadow:inset 0 0 0 1px var(--cell-line), 3px 0 0 var(--guide)}.cell.guide-b{box-shadow:inset 0 0 0 1px var(--cell-line), 0 3px 0 var(--guide)}.cell.guide-r.guide-b{box-shadow:inset 0 0 0 1px var(--cell-line), 3px 0 0 var(--guide), 0 3px 0 var(--guide)}.cell.filled.guide-r{box-shadow:inset 0 0 0 1px var(--filled-2), 3px 0 0 var(--guide)}.cell.filled.guide-b{box-shadow:inset 0 0 0 1px var(--filled-2), 0 3px 0 var(--guide)}.cell.filled.guide-r.guide-b{box-shadow:inset 0 0 0 1px var(--filled-2), 3px 0 0 var(--guide), 0 3px 0 var(--guide)}.board.solved .cell.filled{animation:.5s both pop}@keyframes pop{50%{transform:scale(1.12)}}.solved-banner{background:var(--surface);border:1px solid var(--good);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:.9rem;padding:.55rem .7rem .55rem 1.1rem;display:flex}.solved-banner strong{color:var(--good)}.empty-state{text-align:center;max-width:22rem;margin:auto;padding:2rem 1rem}.empty-state h2{margin:1rem 0 .4rem}.empty-state p{color:var(--muted);margin:0 0 1.2rem;font-size:.92rem}.empty-art{grid-template-columns:repeat(5,18px);gap:3px;display:inline-grid}.empty-art span{background:var(--cell);width:18px;height:18px;box-shadow:inset 0 0 0 1px var(--cell-line);border-radius:3px}.empty-art span.on{background:var(--filled);box-shadow:none}.hint-panel{border-radius:var(--radius);background:var(--accent-soft);border:1px solid color-mix(in srgb, var(--accent) 55%, var(--border));flex-direction:column;flex-shrink:0;gap:.4rem;padding:.75rem 2rem .75rem .85rem;display:flex;position:relative}.hint-panel p{margin:0;font-size:.88rem;line-height:1.45}.hint-head{align-items:center;gap:.6rem;display:flex}.hint-changes{color:var(--muted);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.78rem!important}.hint-close{color:var(--muted);position:absolute;top:.3rem;right:.3rem}.hint-actions{gap:.5rem;margin-top:.2rem;display:flex}.badge{white-space:nowrap;border:1px solid var(--border);color:var(--muted);border-radius:999px;padding:.1rem .5rem;font-size:.68rem}.badge.easy{color:var(--good);border-color:var(--good)}.badge.medium{color:#facc15;border-color:#facc15}.badge.hard{color:#fb923c;border-color:#fb923c}.badge.unfair,.badge.extreme{color:var(--danger);border-color:var(--danger)}.cell.tint-a{background:color-mix(in srgb, var(--cell) 78%, #facc15)}.cell.tint-b{background:color-mix(in srgb, var(--cell) 78%, #c084fc)}.cell.hint-key{box-shadow:inset 0 0 0 2px var(--accent)}.cell.hint-fin{box-shadow:inset 0 0 0 2px #c084fc}.cell.hint-place{background:color-mix(in srgb, var(--filled) 45%, var(--cell));box-shadow:inset 0 0 0 2px var(--filled);animation:1s ease-in-out infinite blink}.cell.hint-elim{box-shadow:inset 0 0 0 2px var(--cross);animation:1s ease-in-out infinite blink}.cell.hint-elim:after{content:"";background:linear-gradient(45deg, transparent 44%, var(--cross) 44% 56%, transparent 56%), linear-gradient(-45deg, transparent 44%, var(--cross) 44% 56%, transparent 56%);opacity:.6;position:absolute;inset:28%}.cell.mistake{background:color-mix(in srgb, var(--danger) 60%, var(--cell));box-shadow:inset 0 0 0 3px var(--danger);animation:1s ease-in-out infinite blink}@keyframes blink{50%{opacity:.6}}.coach-label{text-transform:uppercase;letter-spacing:.1em;color:var(--accent);font-size:.7rem;font-weight:700}.stage-dots{gap:4px;display:inline-flex}.stage-dots i{background:var(--border);border-radius:50%;width:8px;height:8px}.stage-dots i.on{background:var(--accent)}.trace{border-top:1px solid color-mix(in srgb, var(--accent) 25%, var(--border));flex-direction:column;gap:.25rem;padding-top:.35rem;display:flex}.trace-q{color:var(--accent);font-size:.78rem;font-weight:700}.trace ol{color:var(--muted);flex-direction:column;gap:.15rem;margin:0;padding-left:1.2rem;font-size:.8rem;display:flex}.trace-none{color:var(--muted)}.board.probing .cell{cursor:help}.sidepanel{background:var(--surface);border-left:1px solid var(--border);flex-direction:column;flex-shrink:0;gap:.7rem;width:270px;padding:1rem;display:flex;overflow:auto}.sidepanel h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);align-items:center;gap:.5rem;margin:0;font-size:.8rem;display:flex}.count{background:var(--surface-2);border-radius:999px;padding:0 .5rem;font-size:.72rem}.sidepanel ul{flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.sidepanel li{border:1px solid var(--border);background:var(--surface-2);border-radius:9px;align-items:stretch;display:flex;overflow:hidden}.sidepanel li.active{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent);background:var(--accent-soft)}.lib-item{text-align:left;cursor:pointer;background:0 0;border:0;flex-direction:column;flex:1;gap:.15rem;min-width:0;padding:.55rem .7rem;display:flex}.lib-top{justify-content:space-between;gap:.4rem;display:flex}.lib-title{text-overflow:ellipsis;white-space:nowrap;font-size:.88rem;font-weight:600;overflow:hidden}.lib-check{color:var(--good);font-weight:700}.lib-meta{color:var(--muted);font-size:.74rem}.lib-del{color:var(--muted);cursor:pointer;opacity:0;background:0 0;border:0;padding:0 .7rem;font-size:1.1rem;transition:opacity .12s}.sidepanel li:hover .lib-del,.lib-del:focus-visible{opacity:1}.lib-del:hover{color:var(--danger)}.empty{color:var(--muted);margin:0;font-size:.82rem}@media (width<=860px){.app{height:auto;min-height:100%}.app-body{flex-direction:column}.board-wrap{--avail-w:calc(100vw - 3.5rem);--avail-h:100vh;padding-inline:.6rem;overflow:visible}.board{padding:.5rem}.sidepanel{border-left:0;border-top:1px solid var(--border);width:100%;max-height:16rem}.lib-del{opacity:1}.hint-panel{z-index:8;background:var(--surface);box-shadow:var(--shadow);max-height:45vh;position:fixed;bottom:.6rem;left:.6rem;right:.6rem;overflow:auto}.toolpad{padding:.55rem .7rem}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
