:root{--bg:#f1f5f9;--surface:#fff;--fg:#0f172a;--muted:#475569;--border:#cbd5e1;--accent:#1d4ed8;--accent-soft:#1d4ed824;--green:#15803d;--red:#dc2626;--amber:#b45309;--cell:#fff;--peer:#e8eefc;--same:#c7d7fb;--sel:#a9c4f8;--conflict:#fdd5d5;--wrong:#f9a8a8;--black:#111827;--thin:#94a3b8;--bold:#0f172a;--given:#0f172a;--placed:#1d4ed8;--cage:#334155;--mark:#0f172a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#0b1120;--surface:#111a2e;--fg:#e5e7eb;--muted:#9ca3af;--border:#334155;--accent:#60a5fa;--accent-soft:#60a5fa33;--green:#4ade80;--red:#f87171;--amber:#fbbf24;--cell:#111a2e;--peer:#18243d;--same:#1e3a6b;--sel:#2b4f8f;--conflict:#4c1d24;--wrong:#7f1d1d;--black:#64748b;--thin:#3b4a63;--bold:#cbd5e1;--given:#f1f5f9;--placed:#7cb4ff;--cage:#94a3b8;--mark:#e5e7eb}}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--fg);margin:0}body{overscroll-behavior-y:none}button{font:inherit;color:inherit;cursor:pointer;touch-action:manipulation}button:disabled{opacity:.4;cursor:default}.screen{max-width:560px;padding:calc(env(safe-area-inset-top) + 4px) 10px calc(env(safe-area-inset-bottom) + 12px);flex-direction:column;gap:8px;min-height:100dvh;margin:0 auto;display:flex}.topbar{grid-template-columns:1fr auto 1fr;align-items:center;gap:6px;min-height:44px;display:grid}.topbar>:first-child{justify-self:start}.topbar h1{text-align:center;white-space:nowrap;text-overflow:ellipsis;max-width:46vw;margin:0;font-size:17px;overflow:hidden}.topbar-actions{justify-self:end;gap:2px;display:flex}.home .topbar{justify-content:space-between;display:flex}.home .topbar h1{text-align:left;font-size:28px}.link{color:var(--accent);background:0 0;border:0;min-height:44px;padding:10px 8px;font-size:17px}.primary,.secondary{border-radius:10px;min-height:44px;padding:10px 16px;font-size:17px;font-weight:600}.primary{background:var(--accent);color:#fff;border:0}.primary.small,.secondary.small{padding:8px 14px}.home .topbar-actions{gap:8px}.secondary{background:var(--surface);border:1px solid var(--border);color:var(--fg)}section h2{text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:12px 4px 6px;font-size:15px}.muted{color:var(--muted);margin:4px}.list{background:var(--surface);border:1px solid var(--border);border-radius:12px;margin:0;padding:0;list-style:none;overflow:hidden}.list:empty{display:none}.row{border-top:1px solid var(--border);align-items:stretch;display:flex}.row:first-child{border-top:0}.row-main{text-align:left;background:0 0;border:0;flex-direction:column;flex:1;gap:3px;min-height:60px;padding:12px 14px;display:flex}.row-title{font-size:17px;font-weight:600}.row-sub{color:var(--muted);font-size:14px}.row-delete{color:var(--muted);background:0 0;border:0;width:52px;font-size:26px}.board-wrap{width:100%;margin:0 auto}.play .board-wrap{width:min(100%,100dvh - 330px);min-width:280px}.board{touch-action:manipulation;-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.board text{pointer-events:none}.board-bg,.cell{fill:var(--cell)}.cell.peer{fill:var(--peer)}.cell.same-digit{fill:var(--same)}.cell.selected{fill:var(--sel)}.cell.conflict{fill:var(--conflict)}.cell.wrong{fill:var(--wrong)}.cell.black{fill:var(--black)}.selected-ring{fill:none;stroke:var(--accent);stroke-width:6px}.marked-ring{fill:var(--accent-soft);stroke:var(--accent);stroke-width:5px}.flag-ring{fill:none;stroke:var(--amber);stroke-width:5px;stroke-dasharray:10 6;pointer-events:none}.line{fill:none}.line.thin{stroke:var(--thin);stroke-width:2px}.line.bold,.line.border{stroke:var(--bold);stroke-width:6px;stroke-linecap:square}.digit,.note,.cage-sum,.xv text,.quad text,.outside{dominant-baseline:central;text-anchor:middle}.digit{font-size:64px}.digit.given{fill:var(--given);font-weight:700}.digit.placed{fill:var(--placed);font-weight:500}.digit.bad{fill:var(--red)}.note{font-size:32px;font-weight:700}.note.tight{font-size:26px}.note.green{fill:var(--green)}.note.red{fill:var(--red)}.cage path{fill:none;stroke:var(--cage);stroke-width:2.5px;stroke-dasharray:8 6}.cage.bad path{stroke:var(--red);stroke-width:4px}.cage-sum{fill:var(--fg);text-anchor:start;font-size:24px;font-weight:700}.cage.bad .cage-sum{fill:var(--red)}.xv circle,.quad circle{fill:var(--cell);stroke:var(--mark);stroke-width:2.5px}.xv text{fill:var(--mark);font-size:30px;font-weight:800}.quad text{fill:var(--mark);font-size:26px;font-weight:700}.bar{fill:var(--cell);stroke:var(--mark);stroke-width:3.5px}.corner-mark{fill:none;stroke:var(--mark);stroke-width:4.5px;stroke-linecap:round;stroke-linejoin:round}.outside{fill:var(--mark);font-size:36px;font-weight:700}.bad.xv circle,.bad.quad circle,.bad.bar{stroke:var(--red);stroke-width:5px}.bad.xv text,.bad.quad text,.outside.bad{fill:var(--red)}.corner-mark.bad{stroke:var(--red)}.chosen.xv circle,.chosen.quad circle,.chosen.bar{stroke:var(--accent);stroke-width:6px}.outside.chosen{fill:var(--accent)}.cage.chosen path{stroke:var(--accent)}.outside-slot{fill:var(--accent-soft);stroke:var(--accent);stroke-width:3px}.status{text-align:center;min-height:22px;color:var(--muted);padding:0 4px;font-size:15px}.tone-good{color:var(--green);font-weight:700}.tone-bad{color:var(--red);font-weight:600}.tone-warn{color:var(--amber);font-weight:600}.rules-panel{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:15px;line-height:1.4}.mode-toggle{background:var(--surface);border:1px solid var(--border);border-radius:12px;grid-template-columns:repeat(3,1fr);gap:3px;padding:3px;display:grid}.mode{background:0 0;border:0;border-radius:9px;min-height:44px;font-size:16px;font-weight:600}.mode.mode-green{color:var(--green)}.mode.mode-red{color:var(--red)}.mode.on{color:#fff}.mode.mode-final.on{background:var(--accent)}.mode.mode-green.on{background:#15803d}.mode.mode-red.on{background:#dc2626}.keypad{grid-template-columns:3fr 1fr;gap:8px;display:grid}.play .keypad{flex:1;max-height:270px}.play .digits{grid-auto-rows:1fr}.digits{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.actions{grid-auto-rows:1fr;gap:6px;display:grid}.key{border:1px solid var(--border);background:var(--surface);min-height:54px;color:var(--fg);border-radius:12px;font-size:28px;font-weight:600}.key:active{background:var(--accent-soft)}.key.action{font-size:16px}.digits.mode-green .key{color:var(--green);border-color:var(--green)}.digits.mode-red .key{color:var(--red);border-color:var(--red)}.key.done{opacity:.3}.fields{grid-template-columns:1fr auto;gap:8px;display:grid}.fields input,.fields select{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--fg);border-radius:10px;padding:0 10px;font-size:16px}.tools{gap:6px;padding-bottom:2px;display:flex;overflow-x:auto}.chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;flex:none;min-height:40px;padding:0 14px;font-size:15px;font-weight:600}.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}.hint{color:var(--muted);text-align:center;margin:0;font-size:14px}.hint.strong{color:var(--fg);font-weight:600}.button-row{grid-template-columns:1fr 1fr;gap:8px;display:grid}.check{flex-direction:column;gap:8px;margin-top:4px;display:flex}.check-result{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:15px}.check-result ul{margin:0;padding-left:18px}.scan-input{display:none}.scan-status{text-align:center;flex-direction:column;align-items:center;gap:14px;padding:40px 16px;display:flex}.scan-status img{border:1px solid var(--border);border-radius:10px;max-width:100%;max-height:45vh}.spinner{border:4px solid var(--border);border-top-color:var(--accent);border-radius:50%;width:36px;height:36px;animation:.9s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.scan-panel{background:var(--surface);border:1px solid var(--amber);border-radius:10px;flex-direction:column;gap:6px;padding:8px 10px;font-size:15px;display:flex}.scan-panel h2{color:var(--amber);margin:0;font-size:15px}.scan-panel p{margin:0}.scan-panel ul{flex-direction:column;gap:4px;max-height:30vh;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.flag-row{align-items:stretch;gap:6px;display:flex}.flag-row .flag-main{text-align:left;border:1px solid var(--border);color:var(--fg);background:0 0;border-radius:8px;flex:1;min-height:40px;padding:8px 10px;font-size:15px}.flag-row .flag-main .sure{color:var(--muted);font-size:13px}.flag-row .flag-ok{border:1px solid var(--border);min-width:44px;color:var(--green);background:0 0;border-radius:8px;font-size:18px}.scan-photo{border:1px solid var(--border);border-radius:10px;width:100%}
