:root{--bg:radial-gradient(circle at 20% 10%,#e8f2ff 0%,#f7efe4 42%,#edf6ef 100%);--surface:rgba(255,255,255,0.88);--text:#1f2937;--muted:#556679;--primary:#0f766e;--primary-soft:#cdf3ee;--line:#a0afc1;--line-strong:#2d3f56;--fixed:#142033;--editable:#0a5e93;--danger:#b4233b;--danger-soft:#fdecef}*{box-sizing:border-box}body,html{margin:0;min-height:100%}body{font-family:Avenir Next,Segoe UI,sans-serif;color:var(--text);background:var(--bg)}button{font:inherit}.app-shell{min-height:100dvh;display:grid;place-items:center;padding:24px}.game-card{position:relative;width:min(980px,100%);background:var(--surface);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.58);border-radius:22px;box-shadow:0 16px 48px rgba(26,37,50,.15);padding:22px;display:grid;grid-gap:16px;gap:16px}.topbar{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;flex-wrap:wrap}h1{margin:0;letter-spacing:.02em}.subtitle{margin:6px 0 0;color:var(--muted);font-size:.92rem}.stats{display:flex;gap:10px;flex-wrap:wrap}.stats div{display:grid;grid-gap:2px;gap:2px;min-width:92px}.stats span{color:var(--muted);font-size:.8rem}.toolbar{justify-content:space-between;align-items:flex-start;gap:12px}.toolbar,.toolbar-group{display:flex;flex-wrap:wrap}.toolbar-group{gap:8px}.toolbar-actions{justify-content:flex-end}.chip{border:1px solid #b4c2d4;background:#f7fbff;color:#173553;border-radius:999px;padding:8px 13px;font-size:.9rem;cursor:pointer;transition:transform .15s ease,background .15s ease,box-shadow .15s ease}.chip:hover{transform:translateY(-1px)}.cell:focus-visible,.chip:focus-visible,.pad-btn:focus-visible{outline:2px solid #1f7ae0;outline-offset:-2px}.chip.active{border-color:var(--primary);background:var(--primary-soft);color:#104b45;font-weight:600}.board{width:min(560px,100%);margin:0 auto;border:2px solid var(--line-strong);grid-template-columns:repeat(9,1fr);border-radius:10px;overflow:hidden}.board,.cell{aspect-ratio:1;display:grid;background:#fff}.cell{border:none;border-right:1px solid var(--line);border-bottom:1px solid var(--line);position:relative;place-items:center;cursor:pointer;padding:0;transition:background-color .12s ease,box-shadow .12s ease}.cell.box-right{border-right:2px solid var(--line-strong)}.cell.box-bottom{border-bottom:2px solid var(--line-strong)}.cell.fixed .cell-value{color:var(--fixed);font-weight:800}.cell.editable .cell-value{color:var(--editable);font-weight:700}.cell.selected{background:#ffefb8;box-shadow:inset 0 0 0 2px #d48b00}.cell.row-col-peer{background:#f6f9ff}.cell.box-peer{background:#eff5ff}.cell.same-value{background:#d9f5ee}.cell.conflict{background:var(--danger-soft);box-shadow:inset 0 0 0 1px rgba(180,35,59,.35)}.cell.error-flash{animation:error-pulse .65s ease}@keyframes error-pulse{0%{background:#ffe4ea}to{background:inherit}}.cell-value{font-size:clamp(1rem,3.8vw,2rem);line-height:1}.notes-grid{width:100%;height:100%;display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);place-items:center;padding:3px}.note-value{font-size:clamp(.45rem,1.3vw,.76rem);color:#4e7099}.numpad{width:min(560px,100%);margin:0 auto;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-gap:10px;gap:10px}.pad-btn{border:1px solid #afc4d9;border-radius:12px;background:#fff;min-height:48px;font-size:1.03rem;font-weight:700;cursor:pointer;touch-action:manipulation}.pad-btn.clear{grid-column:span 5;color:var(--danger)}.hint-text{width:min(560px,100%);margin:0 auto;color:var(--muted);font-size:.86rem}.result-overlay{position:fixed;inset:0;background:rgba(20,31,46,.5);display:grid;place-items:center;padding:20px;z-index:30}.result-dialog{width:min(420px,100%);background:#ffffff;border:1px solid #d6e2ef;border-radius:16px;box-shadow:0 14px 40px rgba(16,27,41,.3);padding:20px;animation:rise-in .2s ease}@keyframes rise-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.result-dialog h2{margin:0 0 6px}.result-dialog p{margin:0;color:var(--muted)}.result-actions{margin-top:14px;display:flex;gap:8px;flex-wrap:wrap}.startup-overlay{position:fixed;inset:0;background:rgba(20,31,46,.45);display:grid;place-items:center;padding:20px;z-index:40}.startup-dialog{width:min(390px,100%);background:rgba(255,255,255,.96);border:1px solid #d6e2ef;border-radius:14px;box-shadow:0 10px 26px rgba(16,27,41,.22);padding:18px}.startup-dialog h2{margin:0 0 6px}.startup-dialog p{margin:0;color:var(--muted)}@media (max-width:900px){.toolbar{display:grid;grid-template-columns:1fr}.toolbar-actions{justify-content:flex-start}}@media (max-width:768px){.app-shell{padding:12px}.game-card{padding:14px;border-radius:14px;gap:12px}.stats{width:100%;justify-content:space-between}.stats div{min-width:auto}.toolbar-group{width:100%}.chip{flex:1 1 auto;text-align:center;padding:10px;font-size:.88rem}.numpad{gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}.pad-btn{min-height:56px;font-size:1.08rem;border-radius:13px}.pad-btn.clear{grid-column:span 3}}