:root{--bg:#f4f5f7;--surface:#fff;--text:#1c2330;--muted:#5f6b7a;--line:#c9d0da;--line-strong:#1c2330;--accent:#2459d6;--accent-text:#fff;--given:#1c2330;--user:#2459d6;--cell:#fff;--peer:#e9eef8;--same:#bcd0f6;--selected:#a9c2f5;--recent:#fff3bf;--conflict:#c62828;--conflict-bg:#fde3e3;--pattern:#d7f0dc;--target:#8fd69c;--elimination:#ffe0c2;--remove:#c62828;--place:#1b7a34;--focus:#e07b00;--chain:#6a35c2;--color-a:#2459d6;--color-b:#e07b00;--level-very-easy:#0e8a7d;--level-easy:#2f8f3e;--level-medium:#c27c0e;--level-hard:#d1492b;--level-extreme:#7d3cc8;--trophy:#b7860b;--radius:8px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#12151b;--surface:#1b2029;--text:#e6e9ef;--muted:#9aa5b5;--line:#3a4352;--line-strong:#cfd6e2;--accent:#7aa2ff;--accent-text:#0e1420;--given:#e6e9ef;--user:#8fb1ff;--cell:#1b2029;--peer:#232a37;--same:#34497a;--selected:#3c5594;--recent:#4a4320;--conflict:#ff8a80;--conflict-bg:#4a2224;--pattern:#1f3d2a;--target:#2f6b3f;--elimination:#4d3520;--remove:#ff8a80;--place:#86e39a;--focus:#ffb347;--chain:#c49bff;--color-a:#7aa2ff;--color-b:#ffb347;--level-very-easy:#4fd1c5;--level-easy:#7bd88f;--level-medium:#f6c35b;--level-hard:#ff8f6b;--level-extreme:#c49bff;--trophy:#f2c94c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#12151b;--surface:#1b2029;--text:#e6e9ef;--muted:#9aa5b5;--line:#3a4352;--line-strong:#cfd6e2;--accent:#7aa2ff;--accent-text:#0e1420;--given:#e6e9ef;--user:#8fb1ff;--cell:#1b2029;--peer:#232a37;--same:#34497a;--selected:#3c5594;--recent:#4a4320;--conflict:#ff8a80;--conflict-bg:#4a2224;--pattern:#1f3d2a;--target:#2f6b3f;--elimination:#4d3520;--remove:#ff8a80;--place:#86e39a;--focus:#ffb347;--chain:#c49bff;--color-a:#7aa2ff;--color-b:#ffb347;--level-very-easy:#4fd1c5;--level-easy:#7bd88f;--level-medium:#f6c35b;--level-hard:#ff8f6b;--level-extreme:#c49bff;--trophy:#f2c94c;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.45}button,select,textarea{font:inherit;color:inherit}:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.app{max-width:1120px;padding:max(16px, var(--inset-top)) max(16px, env(safe-area-inset-right)) max(16px, var(--inset-bottom)) max(16px, env(safe-area-inset-left));margin:0 auto}body:before{content:"";z-index:20;height:var(--inset-top);background:var(--bg);position:fixed;inset:0 0 auto}.hint-native,:root[data-platform=android] .hint-web,:root[data-platform=ios] .hint-web{display:none}:root[data-platform=android] .hint-native,:root[data-platform=ios] .hint-native{display:block}:root[data-platform=android] .web-only,:root[data-platform=ios] .web-only{display:none}.step-actions,.dialog-actions,.dialog-choices{flex-wrap:wrap;gap:8px;display:flex}.icon{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none;width:24px;height:24px}.home[hidden],.learn-screen[hidden],.layout[hidden],.menu[hidden],.menu-item[hidden],.menu-separator[hidden],.panel[hidden],.home-choice[hidden],.icon-btn[hidden],.picture-zoom[hidden]{display:none}.home{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:14px;min-height:calc(100dvh - 64px);display:flex}.home-logo{border-radius:24px;width:96px;height:96px;box-shadow:0 8px 24px #00000029}.home h1{letter-spacing:-.01em;margin:0 0 10px;font-size:2rem}.home-choices,.choice-list{gap:12px;width:min(100%,360px);display:grid}.choice-list{width:100%;margin-top:12px}.home-choice{border:1px solid var(--line);background:var(--surface);text-align:left;cursor:pointer;border-radius:14px;align-items:center;gap:14px;width:100%;min-height:64px;padding:12px 18px;display:flex}.home-choice:hover:not(:disabled){border-color:var(--accent)}.home-choice:disabled{opacity:.55;cursor:not-allowed}.tip-choice{justify-content:space-between}.tip-price{font-variant-numeric:tabular-nums;font-weight:700}.tip-choice[aria-busy]{border-color:var(--accent);opacity:1}.support-status{min-height:1.5em;color:var(--muted);margin:12px 0 0}.support-status:empty{display:none}.support-status.success{color:var(--place);font-weight:700}.support-status.problem{color:var(--conflict)}.support-detail{color:var(--muted);overflow-wrap:anywhere;margin:6px 0 0;font-size:.8rem}.support-detail[hidden]{display:none}.home-choice .icon{width:26px;height:26px;color:var(--accent)}.home-choice strong,.home-choice small{display:block}.home-choice strong{font-size:1.05rem}.home-choice small{color:var(--muted);font-size:.85rem}.home-choice.primary{border-color:var(--accent);background:var(--accent);color:var(--accent-text)}.home-choice.primary .icon,.home-choice.primary small{color:inherit}.home-choice.primary small{opacity:.85}.daily-trophy{background:color-mix(in srgb, var(--trophy) 18%, var(--surface));border-radius:50%;place-items:center;width:40px;height:40px;margin-left:auto;display:grid}.daily-trophy[hidden],.daily-done[hidden],.daily-complete[hidden]{display:none}.home-choice .daily-trophy .icon,.daily-complete .icon,.stat-tile .icon{width:22px;height:22px;color:var(--trophy)}.daily-levels{gap:8px}.daily-level{min-height:56px;padding:8px 14px}.daily-level .level-icon{width:27px;height:17px}.daily-level:hover:not(:disabled),.daily-level:focus-visible{border-color:var(--level)}.daily-level.done{border-color:color-mix(in srgb, var(--level) 45%, var(--line));background:color-mix(in srgb, var(--level) 8%, var(--surface))}.daily-done{margin-left:auto}.home-choice .daily-done .icon{width:22px;height:22px;color:var(--level)}.daily-complete{align-items:center;gap:10px;margin:14px 0 0;font-weight:700;display:flex}.link-btn{border-radius:var(--radius);color:var(--muted);cursor:pointer;background:0 0;border:0;align-items:center;gap:8px;margin-top:6px;padding:10px 14px;display:inline-flex}.link-btn:hover{color:var(--text)}a.link-btn{text-decoration:none}.home-notice{border-radius:var(--radius);background:var(--peer);text-align:center;max-width:420px;margin:0;padding:10px 14px}.home-notice:empty{display:none}.home-links{flex-wrap:wrap;justify-content:center;gap:4px 16px;display:flex}.dialog-about{text-align:center;width:min(92vw,380px)}.about-version{color:var(--muted);font-variant-numeric:tabular-nums;margin:0}.about-developer{margin-top:16px}.about-developer h3{margin:0 0 10px;font-size:1rem}.about-picture{border-radius:16px;width:min(100%,240px);height:auto;margin:0 auto;display:block;box-shadow:0 8px 24px #0000002e}.about-developer p{margin:12px 0 0;font-weight:600}.about-feedback{color:var(--muted);margin:16px 0 0}.about-address{color:var(--accent);overflow-wrap:anywhere}a.btn{color:inherit;text-decoration:none;display:inline-block}a.btn.btn-primary{color:var(--accent-text)}a.menu-item{color:inherit;text-decoration:none;display:block}.link-btn .icon{width:20px;height:20px}.topbar{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;width:min(100%,560px);display:grid}.stats{min-width:0;color:var(--muted);white-space:nowrap;justify-content:center;align-items:center;gap:16px;margin:0;font-size:.9rem;display:flex}.stat{align-items:center;gap:4px;display:inline-flex}.stat .icon{width:16px;height:16px}.stat-time,.stat-mistakes{font-variant-numeric:tabular-nums}.stat-mistakes.has-mistakes{color:var(--conflict)}.stat-mistakes.bump{animation:.45s ease-out mistake-bump}@keyframes mistake-bump{0%,to{transform:translate(0)scale(1)}20%{transform:translate(-3px)scale(1.25)}45%{transform:translate(3px)scale(1.25)}70%{transform:translate(-2px)scale(1.1)}}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.icon-btn{cursor:pointer;background:0 0;border:0;border-radius:12px;place-items:center;width:44px;height:44px;padding:0;display:inline-grid}.icon-btn:hover,.icon-btn[aria-expanded=true]{background:var(--peer)}.menu-wrap{display:flex;position:relative}.menu{z-index:10;border:1px solid var(--line);background:var(--surface);border-radius:12px;min-width:210px;padding:6px;display:grid;position:absolute;top:calc(100% + 6px);right:0;box-shadow:0 12px 32px #0003}.menu-item{text-align:left;cursor:pointer;background:0 0;border:0;border-radius:8px;padding:10px 12px}.menu-item:hover:not(:disabled),.menu-item:focus-visible{background:var(--peer)}.menu-item:focus-visible{outline-offset:-2px}.menu-item:disabled{opacity:.45;cursor:not-allowed}.menu-separator{background:var(--line);height:1px;margin:4px 8px}.btn{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;padding:8px 14px}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-primary,.btn.active{background:var(--accent);border-color:var(--accent);color:var(--accent-text)}.status{width:min(100%,560px);min-height:1.5em;color:var(--muted);text-align:center;margin:0}.hint-bar{display:none}.layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:24px;display:grid}.layout.with-panel{grid-template-columns:minmax(0,1fr) 340px}.play{justify-items:center;gap:10px;min-width:0;display:grid}.info{color:var(--muted);margin:0;font-size:.9rem}.board{aspect-ratio:1;border:3px solid var(--line-strong);background:var(--line-strong);border-radius:4px;grid-template-rows:repeat(9,minmax(0,1fr));grid-template-columns:repeat(9,minmax(0,1fr));width:min(100%,560px);display:grid;position:relative;container-type:inline-size}.board-row{display:contents}.cell{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--cell);cursor:pointer;border-radius:0;place-items:center;min-width:0;min-height:0;padding:0;font-size:5.5cqw;display:grid;position:relative}.cell:nth-child(9){border-right:0}.board-row:last-child .cell{border-bottom:0}.cell.box-right{border-right:3px solid var(--line-strong)}.cell.box-bottom{border-bottom:3px solid var(--line-strong)}.cell:focus-visible{outline-offset:-3px;z-index:1}.cell .value{color:var(--user);font-weight:400}.cell.given .value{color:var(--given);font-weight:700}.cell.supposed .value{text-underline-offset:.12em;font-style:italic;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.step-detail .proof-position{color:var(--muted);margin-top:0;font-size:.9em}.cell.peer{background:var(--peer)}.cell.hint-region{background:color-mix(in srgb, var(--focus) 18%, var(--cell))}.cell.same-digit{background:var(--same)}.cell.same-digit .value{font-weight:700}.cell.placed{animation:.9s ease-out placed-flash}@keyframes placed-flash{0%,25%{background-color:var(--recent)}}.cell.pattern{background:var(--pattern)}.cell.elimination{background:var(--elimination)}.cell.hint-target{background:var(--target);box-shadow:inset 0 0 0 3px var(--place)}.cell.selected{background:var(--selected)}.cell.conflict{background:var(--conflict-bg)}.cell.conflict .value{color:var(--conflict);text-underline-offset:3px;-webkit-text-decoration:underline wavy;text-decoration:underline wavy}.cell.wrong .value{color:var(--conflict)}.notes{width:100%;height:100%;color:var(--muted);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);padding:4%;font-size:2.4cqw;line-height:1;display:grid}.note{place-items:center;display:grid}.note.match{background:color-mix(in srgb, var(--accent) 20%, transparent);color:var(--accent);border-radius:50%;font-weight:700}.note.missing{color:var(--conflict);text-decoration:line-through;text-decoration-thickness:2px}.note.remove{color:var(--remove);font-weight:700;text-decoration:line-through}.note.place{color:var(--place);font-weight:800}.note.place,.note.remove{background:0 0;border-radius:0}.note.place{transform:scale(1.5)}.chain-layer{z-index:2;pointer-events:none;position:absolute;inset:0}.chain-layer svg{width:100%;height:100%;display:block;overflow:visible}.chain-link{fill:none;stroke:var(--chain);stroke-width:4.5px;stroke-linecap:round}.chain-link.weak{stroke-dasharray:9 9}.chain-arrow{fill:var(--chain)}.chain-node{fill:none;stroke:var(--chain);stroke-width:3.5px}.chain-node.end{stroke-width:6.5px}.chain-color.a{fill:color-mix(in srgb, var(--color-a) 45%, transparent)}.chain-color.b{fill:color-mix(in srgb, var(--color-b) 45%, transparent)}.chain-area.a{fill:color-mix(in srgb, var(--color-a) 18%, transparent)}.chain-area.b{fill:color-mix(in srgb, var(--color-b) 22%, transparent)}.pad{gap:8px;width:min(100%,560px);display:grid}.pad-digits{grid-template-columns:repeat(9,minmax(0,1fr));gap:6px;display:grid}.pad-key{aspect-ratio:1;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);cursor:pointer;width:100%;min-width:0;min-height:40px;padding:0;font-size:1.25rem;position:relative}.pad-key:hover{border-color:var(--accent)}.pad-key.complete{opacity:.4}.pad-left{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.62rem;line-height:1;position:absolute;top:3px;right:4px}.note-mode .pad-key{border-style:dashed;border-color:var(--accent)}.pad-key.focused{border-color:var(--accent);box-shadow:inset 0 0 0 2px var(--accent)}.pad-tools{grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;display:grid}.tool{border-radius:var(--radius);cursor:pointer;background:0 0;border:0;justify-items:center;gap:2px;min-width:0;padding:6px 2px;font-size:.8rem;display:grid;position:relative}.tool:hover:not(:disabled){background:var(--peer)}.tool:disabled{opacity:.4;cursor:not-allowed}.tool.active{color:var(--accent)}.tool-state{background:var(--line);color:var(--text);border-radius:999px;padding:0 5px;font-size:.65rem;font-weight:700;line-height:1.5;position:absolute;top:2px;left:calc(50% + 8px)}.tool.active .tool-state{background:var(--accent);color:var(--accent-text)}.panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:12px 16px}.panel summary{cursor:pointer;font-weight:700}.panel h3{margin:12px 0 4px;font-size:1rem}.panel p{margin:8px 0}.muted,.legend{color:var(--muted);font-size:.9rem}.swatch{border:1px solid var(--line);vertical-align:-1px;width:.9em;height:.9em;margin:0 4px 0 10px;display:inline-block}.swatch:first-child{margin-left:0}.swatch-pattern{background:var(--pattern)}.swatch-target{background:var(--target)}.swatch-elimination{background:var(--elimination)}.steps{max-height:420px;margin:12px 0 0;padding:0 0 0 1.8em;position:relative;overflow-y:auto}.steps li{margin-bottom:4px}.step{text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;gap:2px;width:100%;padding:6px 8px;font-size:.88rem;display:grid}.step span{color:var(--muted)}.step:hover,.step.current{border-color:var(--accent);background:var(--peer)}.step.current{box-shadow:inset 3px 0 0 var(--accent)}.pad[hidden],.review-bar[hidden]{display:none}.review-bar{border:1px solid var(--accent);border-radius:var(--radius);background:var(--surface);gap:8px;width:min(100%,560px);padding:10px 12px;display:grid}.review-position{margin:0;font-weight:600}.review-actions{flex-wrap:wrap;gap:8px;display:flex}.review-actions .btn{white-space:nowrap;flex:auto;padding-inline:10px}.reviewing .board{outline:3px dashed var(--accent);outline-offset:3px}.learn-screen{flex-direction:column;gap:14px;width:min(100%,560px);margin:0 auto;display:flex}.learn-bar{align-items:center;gap:8px;display:flex}.learn-bar h2{margin:0;font-size:1.25rem}.learn-bar h2:focus{outline:none}.learn-intro{color:var(--muted);margin:0}.chapter-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.chapter-number{background:var(--peer);width:32px;height:32px;color:var(--accent);border-radius:50%;flex:none;place-items:center;font-weight:700;display:grid}.chapter-item.done .chapter-number{background:var(--place);color:var(--surface)}.chapter-check{margin-left:auto}.chapter-check .icon{color:var(--place)}.chapter-text{flex:1;min-width:0}.level-veryEasy{--level:var(--level-very-easy)}.level-easy{--level:var(--level-easy)}.level-medium{--level:var(--level-medium)}.level-hard{--level:var(--level-hard)}.level-extreme{--level:var(--level-extreme)}.level-icon{flex:none;width:22px;height:14px}.level-icon rect{fill:var(--line)}.level-icon rect.lit{fill:var(--level)}.difficulty-choice{min-height:48px;color:var(--text);justify-content:center;align-items:center;gap:10px;font-weight:600;display:inline-flex}.difficulty-choice .level-icon{width:27px;height:17px}.difficulty-choice:hover:not(:disabled),.difficulty-choice:focus-visible{border-color:var(--level);background:color-mix(in srgb, var(--level) 10%, var(--surface))}.level-key{color:var(--muted);flex-wrap:wrap;align-items:center;gap:4px 12px;margin:0;font-size:.85rem;display:flex}.level-key-item,.lesson-level{align-items:center;gap:6px;display:inline-flex}.level-key-item{color:var(--text);white-space:nowrap}.level-badge{flex:none;place-items:center;display:grid}.lesson-level{color:var(--muted);margin:0;font-size:.9rem}.lesson-text p{margin:0 0 10px;line-height:1.5}.lesson-example{gap:8px;margin:0;display:grid}.lesson-example figcaption{color:var(--muted);font-size:.85rem;font-weight:600}.lesson-caption,.lesson-prompt,.lesson-feedback{margin:0}.lesson-prompt{font-weight:600}.lesson-tools{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.lesson-tools:empty{display:none}.lesson-toggle{margin-left:auto;padding:4px 12px;font-size:.9rem}.lesson-count{background:var(--peer);color:var(--accent);border-radius:999px;margin:0;padding:2px 10px;font-size:.9rem;font-weight:600}.lesson-feedback{min-height:3em}.lesson-feedback.ok{color:var(--place);font-weight:600}.lesson-feedback.wrong{color:var(--conflict)}.lesson-actions{flex-wrap:wrap;gap:8px;display:flex}.lesson-done{text-align:center;justify-items:center;gap:8px;display:grid}.lesson-done h3,.lesson-done p{margin:0}.lesson-done .lesson-actions{justify-content:center}.cell.marked{background:color-mix(in srgb, var(--accent) 16%, var(--cell));box-shadow:inset 0 0 0 3px var(--accent)}:root{--inset-top:max(env(safe-area-inset-top,0px), var(--safe-area-inset-top,0px));--inset-bottom:max(env(safe-area-inset-bottom,0px), var(--safe-area-inset-bottom,0px))}.dialog{inset-block:max(8px, var(--inset-top)) max(8px, var(--inset-bottom));max-height:calc(100dvh - max(8px, var(--inset-top)) - max(8px, var(--inset-bottom)) - 16px);border:1px solid var(--line);background:var(--surface);width:min(92vw,460px);color:var(--text);border-radius:12px;padding:20px}.dialog::backdrop{background:#00000080}.dialog h2{margin:0 0 8px;font-size:1.2rem}.dialog textarea{border:1px solid var(--line);border-radius:var(--radius);background:var(--cell);width:100%;margin-top:8px;padding:8px;font-family:ui-monospace,Consolas,monospace}.dialog-actions{justify-content:flex-end;margin-top:16px}.difficulty-choices{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.difficulty-choices>:last-child:nth-child(odd){grid-column:1/-1}.dialog-note{color:var(--muted);margin:12px 0 0;font-size:.85rem}.error{min-height:1.4em;color:var(--conflict);margin:6px 0 0}.dialog-settings,.dialog-full{--column-left:max(16px, env(safe-area-inset-left), calc((100% - 600px) / 2));--column-right:max(16px, env(safe-area-inset-right), calc((100% - 600px) / 2));background:var(--bg);border:0;border-radius:0;width:100%;max-width:none;height:100%;max-height:none;margin:0;padding:0;inset:0;overflow:hidden}.dialog-settings[open],.dialog-full[open]{flex-direction:column;display:flex}.settings-header,.settings-actions{padding-inline:var(--column-left) var(--column-right);background:var(--surface);flex:none}.settings-header{padding-top:max(14px, var(--inset-top));border-bottom:1px solid var(--line);padding-bottom:14px}.dialog-settings h2,.dialog-full h2{align-items:center;gap:10px;margin:0;font-size:1.3rem;display:flex}.dialog-settings h2 .icon,.dialog-full h2 .icon{color:var(--accent)}.settings-body{overscroll-behavior:contain;min-height:0;padding:0 var(--column-right) 24px var(--column-left);flex:1;overflow-y:auto}.settings-actions{padding-top:12px;padding-bottom:max(12px, var(--inset-bottom));border-top:1px solid var(--line);margin:0}.settings-actions .btn{flex:1;min-height:44px}.settings-group h3{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;margin:20px 4px 8px;font-size:.75rem;font-weight:700}.settings-rows{border:1px solid var(--line);background:var(--surface);border-radius:12px}.setting{cursor:pointer;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px;min-height:48px;padding:8px 12px;display:grid}.settings-rows>*+*{border-top:1px solid var(--line)}.setting small{color:var(--muted);grid-column:1/-1;margin-top:2px;font-size:.8rem;line-height:1.3}.setting.with-art{grid-template-columns:72px minmax(0,1fr) auto;column-gap:14px;padding-block:12px}.setting.with-art .setting-label{grid-area:1/2;align-self:end}.setting.with-art small{grid-area:2/2;align-self:start}.setting.with-art .switch{grid-area:1/3/span 2}.setting.with-art .art{grid-area:1/1/span 2;transition:opacity .15s,filter .15s}.switch:not(:checked)~.art{opacity:.4;filter:grayscale()}.setting-choices{border:0;min-width:0;margin:0;padding:12px}.setting-choices legend{float:left;width:100%;margin:0 0 10px;padding:0}.choice-cards{clear:both;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:8px;display:grid}.choice-card{cursor:pointer;display:grid;position:relative}.choice-card input{opacity:0;pointer-events:none;width:1px;height:1px;margin:0;position:absolute}.choice-body{border:1px solid var(--line);background:var(--bg);text-align:center;border-radius:10px;align-content:start;justify-items:center;gap:4px;padding:10px 8px 12px;transition:border-color .15s,background-color .15s;display:grid;position:relative}.choice-body strong{margin-top:4px;font-size:.95rem}.choice-body small{color:var(--muted);font-size:.78rem;line-height:1.3}.choice-body>.icon{background:var(--accent);width:20px;height:20px;box-shadow:0 0 0 2px var(--surface);color:var(--accent-text);stroke-width:3px;opacity:0;border-radius:50%;padding:3px;position:absolute;top:-7px;right:-7px}.choice-card:hover .choice-body{border-color:var(--accent)}.choice-card input:checked+.choice-body{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent);background:color-mix(in srgb, var(--accent) 9%, var(--surface))}.choice-card input:checked+.choice-body>.icon{opacity:1}.choice-card input:focus-visible+.choice-body{outline:3px solid var(--focus);outline-offset:2px}@media (prefers-reduced-motion:reduce){.setting.with-art .art,.choice-body{transition:none}}.setting select,.setting input[type=time]{border:1px solid var(--line);border-radius:var(--radius);background:var(--cell);max-width:100%;color:inherit;font:inherit;padding:6px 8px}.setting input[type=time]:disabled{opacity:.5}.setting-note{color:var(--conflict);margin:0;padding:8px 12px;font-size:.85rem}.setting-note:empty{display:none}.switch{background:var(--muted);cursor:pointer;appearance:none;border-radius:13px;flex:none;width:44px;height:26px;margin:0;transition:background-color .15s;position:relative}.switch:before{background:var(--surface);content:"";border-radius:50%;width:20px;height:20px;transition:transform .15s;position:absolute;top:3px;left:3px}.switch:checked{background:var(--accent)}.switch:checked:before{transform:translate(18px)}@media (prefers-reduced-motion:reduce){.switch,.switch:before{transition:none}}@media (forced-colors:active){.switch{border:1px solid canvastext}.switch:before{background:canvastext}.switch:checked{background:highlight}}.art{font-variant-numeric:tabular-nums;flex:none;justify-content:center;align-items:center;gap:6px;line-height:1;display:flex}.setting .art{width:72px;height:72px}.art-grid{border:2px solid var(--line-strong);background:var(--cell);border-radius:3px;display:grid}.art-grid-1{grid-template-columns:1fr}.art-grid-2{grid-template-columns:repeat(2,auto)}.art-grid-3{grid-template-columns:repeat(3,auto)}.art-grid-9{grid-template-columns:repeat(9,auto)}.art-cell{border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--cell);place-items:center;display:grid}.art-grid-1>*,.art-grid-2>:nth-child(2n),.art-grid-3>:nth-child(3n),.art-grid-9>:nth-child(9n){border-right:0}.art-grid-1>:last-child,.art-grid-2>:nth-last-child(-n+2),.art-grid-3>:nth-last-child(-n+3),.art-grid-9>:nth-last-child(-n+9){border-bottom:0}.art-cell.box-right,.art-straddle>:nth-child(3n+2){border-right:2px solid var(--line-strong)}.art-cell.box-bottom,.art-straddle>:nth-child(n+4):nth-child(-n+6){border-bottom:2px solid var(--line-strong)}.art-cell.given .art-value{color:var(--given);font-weight:700}.art-cell.user .art-value{color:var(--user)}.art-cell.selected{background:var(--selected)}.art-cell.peer{background:var(--peer)}.art-cell.same-digit,.art-cell.filled{background:var(--same)}.art-cell.same-digit .art-value{font-weight:700}.art-cell.conflict{background:var(--conflict-bg)}.art-cell.conflict .art-value{color:var(--conflict)}.art-cell.hint-region{background:color-mix(in srgb, var(--focus) 30%, var(--cell))}.art-cell.pattern{background:var(--pattern)}.art-cell.elimination{background:var(--elimination)}.art-cell.hint-target{background:var(--target)}.art-notes{width:100%;height:100%;color:var(--muted);grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);padding:6%;display:grid}.art-notes>span{place-items:center;display:grid}.art-notes .missing{color:var(--conflict);text-decoration:line-through;text-decoration-thickness:2px}.art-notes .remove{color:var(--remove);font-weight:700;text-decoration:line-through}.art-key{border:1px solid var(--accent);background:var(--surface);width:26px;height:26px;box-shadow:inset 0 0 0 1px var(--accent);border-radius:6px;flex:none;place-items:center;font-size:14px;display:grid}.art-arrow{fill:none;width:14px;height:14px;stroke:var(--muted);stroke-width:2px;stroke-linecap:round;stroke-linejoin:round;flex:none}.art-theme{width:min(100%,120px);height:52px;position:relative}.art-screen{border:1px solid var(--line);background:var(--bg);border-radius:8px;place-items:center;width:100%;height:100%;display:grid}.art-theme-system .art-screen{position:absolute;inset:0}.art-theme-system .art-dark{clip-path:polygon(100% 0,100% 100%,0 100%)}.art-light{--bg:#f4f5f7;--cell:#fff;--line:#c9d0da;--line-strong:#1c2330;--given:#1c2330}.art-dark{--bg:#12151b;--cell:#1b2029;--line:#3a4352;--line-strong:#cfd6e2;--given:#e6e9ef}.art-theme .art-cell{width:12px;height:12px}.art-theme .art-value{font-size:8px}.art-gameplay,.art-candidates{height:56px}.art-gameplay .art-cell{width:15px;height:15px}.art-gameplay .art-value{font-size:10px}.art-candidates .art-cell{width:36px;height:36px}.art-candidates .art-notes{font-size:9px}.art-candidates .art-value{font-size:20px}.art-peers .art-cell{width:6px;height:6px}.art-peers .art-cell.peer{background:color-mix(in srgb, var(--selected) 45%, var(--cell))}.art-peers .art-cell.selected{background:var(--accent)}.art-conflicts .art-cell,.art-autocomplete .art-cell{width:21px;height:21px}.art-conflicts .art-value,.art-autocomplete .art-value{font-size:13px}.art-removed .art-cell{width:60px;height:60px}.art-removed .art-notes{font-size:13px}.art-unique .art-cell{width:32px;height:32px}.art-unique .art-notes{font-size:8.5px}.art-order{gap:6px;height:56px}.art-order .art-grid-1 .art-cell{width:26px;height:26px}.art-order .art-notes{font-size:8px}.art-order .art-value{font-size:15px}.art-order .art-grid-3{border-width:1px}.art-order .art-grid-3 .art-cell{width:8px;height:8px}.art-hints{flex-direction:column;align-items:flex-start;gap:4px}.art-stage{align-items:center;gap:6px;display:flex}.art-stage-number{background:var(--accent);width:14px;height:14px;color:var(--accent-text);border-radius:50%;place-items:center;font-size:9px;font-weight:700;display:grid}.art-hints .art-grid{border-width:1px}.art-hints .art-cell{width:6px;height:6px}.art-says{background:var(--peer);border-radius:5px;align-content:center;gap:3px;width:36px;height:20px;padding:0 5px;display:grid}.art-says>span{background:var(--muted);border-radius:2px;height:3px}.art-says>span+span{width:60%}.image-footer{z-index:2;border-top:1px solid var(--line);background:var(--surface);margin:16px -20px 0;padding:12px 20px 20px;position:sticky;bottom:0}.dialog-image{padding-bottom:0}.image-footer .validation{margin:0 0 10px}.image-footer .validation:empty{display:none}.image-footer .dialog-actions{margin-top:0}.dialog-wide{width:min(96vw,880px)}.dropzone{border:2px dashed var(--line);text-align:center;border-radius:12px;padding:28px 16px}.dropzone .dialog-choices{justify-content:center}.dialog.dragging .dropzone{border-color:var(--accent);background:var(--peer)}.image-progress:empty,.error:empty,.warnings:empty{display:none}.image-review{grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-items:start;gap:20px;display:grid}.image-review[hidden],[data-image-step][hidden]{display:none}.image-preview{gap:8px;margin:0;display:grid}.image-preview figcaption{color:var(--muted);font-size:.85rem}.image-preview .dialog-choices{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.image-preview .dialog-choices .btn{padding:8px 10px;font-size:.9rem;line-height:1.25}.image-frame{width:min(100%, calc(min(50dvh, 560px) * var(--ratio,1)));touch-action:none;margin-inline:auto;line-height:0;position:relative}.image-frame canvas{border:1px solid var(--line);width:100%;height:auto;display:block}.image-outline{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.image-outline polygon{fill:#2459d61f;stroke:var(--accent);stroke-width:2px;vector-effect:non-scaling-stroke}.corner{border:3px solid var(--accent);cursor:grab;touch-action:none;background:#ffffffd9;border-radius:50%;width:28px;height:28px;padding:0;position:absolute;transform:translate(-50%,-50%)}.review-grid{border:3px solid var(--line-strong);border-radius:4px;grid-template-columns:repeat(9,minmax(0,1fr));width:min(100%,380px);display:grid;position:relative;overflow:hidden}.image-frame:before,.image-frame:after,.review-grid:after{content:"";pointer-events:none;opacity:0;transition:opacity .2s;position:absolute}.image-frame:before{background:color-mix(in srgb, var(--accent) 12%, transparent);inset:0}.image-frame:after{background:linear-gradient(to bottom, transparent, color-mix(in srgb, var(--accent) 35%, transparent) 88%, var(--accent) 100%);height:30%;inset:0 0 auto}.review-grid:after{z-index:1;background:linear-gradient(100deg, transparent 25%, color-mix(in srgb, var(--accent) 30%, transparent) 50%, transparent 75%);inset:0}.reading .image-frame{overflow:hidden}.reading .image-frame:before,.reading .image-frame:after,.reading .review-grid:after{opacity:1}.reading .image-frame:after{animation:1.1s cubic-bezier(.45,0,.55,1) infinite picture-scan}.reading .review-grid:after{animation:1.2s linear infinite grid-shimmer}.reading .review-grid{opacity:.6}.reading .corner,.reading .image-outline{visibility:hidden}.reading .image-progress:before,.support-status.busy:before{content:"";border:2px solid var(--accent);vertical-align:-2px;border-right-color:#0000;border-radius:50%;width:1em;height:1em;margin-right:8px;animation:.8s linear infinite spin;display:inline-block}@keyframes picture-scan{0%{transform:translateY(-85%)}to{transform:translateY(333%)}}@keyframes grid-shimmer{0%{transform:translate(-50%)}to{transform:translate(50%)}}@keyframes spin{to{transform:rotate(1turn)}}@media (prefers-reduced-motion:reduce){.reading .image-frame:after,.reading .review-grid:after,.reading .image-progress:before,.support-status.busy:before{animation:none}.reading .image-frame:after{opacity:0}}.review-cell{aspect-ratio:1;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--cell);width:100%;min-width:0;color:var(--text);font:inherit;text-align:center;border-radius:0;padding:0;font-size:1.15rem;font-weight:700}.review-cell:nth-child(9n){border-right:0}.review-cell:nth-child(n+73){border-bottom:0}.review-cell.box-right{border-right:3px solid var(--line-strong)}.review-cell.box-bottom{border-bottom:3px solid var(--line-strong)}.review-cell:focus-visible{outline-offset:-3px}.review-cell.uncertain{background:linear-gradient(225deg, var(--conflict) 0 9px, transparent 9px), var(--elimination)}.review-cell.corrected{box-shadow:inset 0 0 0 2px var(--accent)}.review-cell.conflict{background:var(--conflict-bg);color:var(--conflict)}.warnings{color:var(--conflict);margin:10px 0 0;padding-left:1.2em;font-size:.9rem}.validation{color:var(--conflict);margin:10px 0 0;font-weight:600}.validation.ok{color:var(--place)}.solutions{margin-top:4px}.solutions[hidden]{display:none}.solutions-toggle{min-height:44px;color:var(--accent);font:inherit;text-underline-offset:3px;cursor:pointer;background:0 0;border:0;padding:0;font-weight:600;text-decoration:underline}.solutions-details{margin-top:4px}.solutions-details[hidden]{display:none}.solutions-intro{margin:0 0 10px;font-size:.9rem}.solutions-grids{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;max-width:440px;display:grid}.solution{min-width:0;container-type:inline-size}.solution-grid{table-layout:fixed;border-collapse:collapse;border:2px solid var(--line-strong);width:100%}.solution-grid caption{color:var(--muted);text-align:start;margin-bottom:4px;font-size:.8rem;font-weight:600}.solution-grid td{border:1px solid var(--line);background:var(--cell);height:10.6cqi;color:var(--user);text-align:center;padding:0;font-size:clamp(.6rem,7cqi,1rem);line-height:1}.solution-grid td.box-right{border-right:2px solid var(--line-strong)}.solution-grid td.box-bottom{border-bottom:2px solid var(--line-strong)}.solution-grid td.given{color:var(--given);font-weight:700}.solution-grid td.differs{background:var(--recent);box-shadow:inset 0 0 0 2px var(--focus);color:var(--text);font-weight:700}.cell.autofill{animation:autofill-flash .6s ease-out var(--fill-delay,0s) both}.cell.autofill .value{animation:autofill-pop .45s cubic-bezier(.2, 1.5, .4, 1) var(--fill-delay,0s) both;display:inline-block}@keyframes autofill-flash{30%{background:var(--same)}}@keyframes autofill-pop{0%{opacity:0;transform:scale(.2)}to{opacity:1;transform:scale(1)}}.board.celebrating .cell{animation:cell-ripple .7s ease-out var(--ripple-delay,0s) both}@keyframes cell-ripple{0%{transform:scale(1)}35%{background:var(--target);z-index:1;transform:scale(1.14)}to{transform:scale(1)}}.dialog-solved{text-align:center;width:min(92vw,380px)}.dialog-solved h2{margin-top:4px;font-size:1.5rem}.dialog-solved p{color:var(--muted);margin:4px 0 0}.solved-badge{background:var(--accent);width:76px;height:76px;color:var(--accent-text);border-radius:50%;place-items:center;margin:4px auto 8px;animation:.65s cubic-bezier(.2,1.6,.4,1) both badge-pop;display:grid}.solved-badge .icon{width:40px;height:40px}@keyframes badge-pop{0%{transform:scale(0)rotate(-25deg)}to{transform:scale(1)rotate(0)}}.solved-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:16px 0 4px;display:grid}.solved-stats div{background:var(--peer);border-radius:10px;flex-direction:column-reverse;padding:10px 4px;display:flex}.solved-stats dt{color:var(--muted);font-size:.8rem}.solved-stats dd{font-variant-numeric:tabular-nums;margin:0;font-size:1.3rem;font-weight:700}.solved-actions{justify-content:center}.solved-needed h3{color:var(--muted);margin:14px 0 6px;font-size:.8rem;font-weight:600}.needed-list{flex-wrap:wrap;justify-content:center;gap:6px;margin:0;padding:0;list-style:none;display:flex}.needed-chip{border:1px solid var(--line);background:var(--surface);min-height:32px;color:var(--text);font:inherit;border-radius:999px;align-items:center;gap:4px;padding:4px 12px;font-size:.85rem;display:inline-flex}button.needed-chip{cursor:pointer}button.needed-chip:hover{border-color:var(--accent)}.needed-chip.done{border-color:color-mix(in srgb, var(--place) 50%, var(--line))}.needed-chip.done svg{width:14px;height:14px;color:var(--place)}.needed-chip.beyond{color:var(--muted);border-style:dashed}.dialog-solved .solved-news{color:var(--place);white-space:pre-line;margin:4px 0 0;font-weight:600}.solved-news:empty,.kept-choice[hidden]{display:none}.kept-choice{border:1px solid var(--line);border-radius:10px;margin-top:12px;padding:12px}.kept-choice p{margin:0 0 8px;font-size:.9rem}.library-notice{color:var(--conflict);margin:8px 0 0;font-weight:600}.library-notice:empty{display:none}.library-list{gap:8px;margin:12px 0 0;padding:0;list-style:none;display:grid}.library-row{align-items:center;gap:4px;display:flex}.library-open{border:1px solid var(--line);background:var(--surface);min-width:0;color:inherit;font:inherit;text-align:left;cursor:pointer;border-radius:10px;flex:1;align-items:center;gap:12px;padding:6px;display:flex}.library-thumb{background:var(--peer);width:56px;height:56px;color:var(--muted);border-radius:6px;flex:none;place-items:center;display:grid;overflow:hidden}.library-thumb img{object-fit:cover;width:100%;height:100%}.library-text{min-width:0}.library-text strong,.library-text small{display:block}.library-text small{color:var(--muted);font-size:.85rem}.library-confirm{background:var(--conflict-bg);border-radius:10px;padding:10px 12px;display:block}.library-confirm p{margin:0 0 8px}.library-rename{border:1px solid var(--accent);background:var(--surface);border-radius:10px;padding:10px 12px;display:block}.library-name input{border:1px solid var(--line);border-radius:var(--radius);background:var(--cell);width:100%;min-height:44px;color:inherit;font:inherit;margin-bottom:8px;padding:8px 10px}.library-actions .btn-quiet-danger{color:var(--conflict);background:0 0;border-color:#0000;align-items:center;gap:6px;margin-inline-end:auto;display:inline-flex}.library-actions .btn-quiet-danger[hidden]{display:none}.btn-quiet-danger .icon{width:18px;height:18px}.library-clear[hidden]{display:none}.library-clear{background:var(--conflict-bg);border-radius:10px;margin-top:16px;padding:12px}.library-clear p{margin:0;font-weight:600}.library-clear .dialog-actions{margin-top:10px}.dialog-picture{width:min(96vw,720px)}.picture-frame{background:var(--peer);border-radius:8px;max-height:62dvh;margin-top:12px;overflow:auto}.picture-zoom{cursor:zoom-in;background:0 0;border:0;width:100%;padding:0;display:block}.picture-zoom img{width:100%;display:block}.picture-frame.zoomed .picture-zoom{cursor:zoom-out;width:260%;max-width:none}.share-btn{justify-content:center;align-items:center;gap:8px;margin-top:12px;display:inline-flex}.share-btn .icon{width:20px;height:20px}.share-status{color:var(--muted);margin:6px 0 0;font-size:.85rem}.share-status:empty{display:none}.calendar{margin-top:14px}.calendar-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.calendar-head .icon-btn:disabled{opacity:.35;cursor:default}.calendar-title{text-transform:capitalize;margin:0;font-size:1rem}.calendar-grid{border-collapse:separate;border-spacing:3px;table-layout:fixed;text-align:center;width:100%}.calendar-grid th{color:var(--muted);font-size:.75rem;font-weight:600}.calendar-grid abbr{text-decoration:none}.cal-day{vertical-align:top;font-variant-numeric:tabular-nums;border-radius:8px;height:40px;padding:2px 0;font-size:.8rem;position:relative}.cal-day .cal-date{line-height:1.2;display:block}.cal-day.some{background:var(--peer)}.cal-day.complete{background:color-mix(in srgb, var(--trophy) 18%, var(--surface));font-weight:700}.cal-day.today{box-shadow:inset 0 0 0 2px var(--accent)}.cal-day.future{color:var(--muted);opacity:.55}.cal-day .icon{width:16px;height:16px;color:var(--trophy)}.cal-dot{background:var(--accent);border-radius:50%;width:7px;height:7px;margin-top:4px;display:inline-block}.calendar-key{color:var(--muted);flex-wrap:wrap;justify-content:center;gap:4px 16px;margin:6px 0 0;font-size:.8rem;display:flex}.calendar-key>span{align-items:center;gap:6px;display:inline-flex}.calendar-key .icon{width:16px;height:16px;color:var(--trophy)}.calendar-key .cal-dot{margin-top:0}.stat-tiles{grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:8px;margin:16px 0 0;display:grid}.stat-tile{border:1px solid var(--line);background:var(--surface);text-align:center;border-radius:12px;flex-direction:column;gap:2px;padding:12px 8px;display:flex}.stat-tile dt{color:var(--muted);order:2;font-size:.8rem;line-height:1.25}.stat-tile dd{margin:0}.stat-value{font-variant-numeric:tabular-nums;order:1;justify-content:center;align-items:center;gap:6px;font-size:1.3rem;font-weight:700;display:flex}.stat-best{color:var(--muted);opacity:.85;order:3;font-size:.75rem}.stats-group .stat-tiles{margin-top:0}.stats-card{border:1px solid var(--line);background:var(--surface);border-radius:12px;margin:8px 0 0;padding:12px}.stats-card.calendar{margin-top:8px}.stats-empty{color:var(--muted);text-align:center}.stats-note{margin-top:16px}.stats-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.stats-table th,.stats-table td{border-bottom:1px solid var(--line);text-align:end;padding:8px 6px}.stats-table tbody tr:last-child>*{border-bottom:0}.stats-table th:first-child{text-align:start}.stats-table thead th{color:var(--muted);font-size:.8rem;font-weight:600}.dialog-actions[hidden],.stats-confirm[hidden]{display:none}.stats-confirm{background:var(--conflict-bg)}.stats-confirm p{margin:0;font-weight:600}.stats-confirm .dialog-actions{margin-top:10px}.stats-confirm .btn{flex:1;min-height:44px}.btn-danger{background:var(--conflict);border-color:var(--conflict);color:var(--surface)}.confetti{pointer-events:none;position:fixed;inset:0;overflow:hidden}.confetti i{width:var(--w);height:var(--h);background:var(--c);opacity:0;animation:confetti var(--t) linear var(--d) both;border-radius:2px;position:absolute;top:42%;left:50%}.confetti i.round{border-radius:50%}@keyframes confetti{0%{opacity:1;animation-timing-function:cubic-bezier(.15,.8,.35,1);transform:translate(0)rotate(0)scale(.3)}22%{opacity:1;transform:translate(var(--bx), var(--by)) rotate(calc(var(--r) * .3)) scale(1);animation-timing-function:cubic-bezier(.45,0,.9,.55)}85%{opacity:1}to{opacity:0;transform:translate(var(--fx), 68vh) rotate(var(--r)) scale(1)}}@media (prefers-reduced-motion:reduce){.board.celebrating .cell,.cell.placed,.cell.autofill,.cell.autofill .value,.solved-badge{animation:none}.confetti{display:none}}@media (width<=860px){.app{padding:max(12px, var(--inset-top)) max(12px, env(safe-area-inset-right)) max(12px, var(--inset-bottom)) max(12px, env(safe-area-inset-left))}.layout,.layout.with-panel{grid-template-columns:minmax(0,1fr);gap:16px}.steps{max-height:260px}.image-review{grid-template-columns:minmax(0,1fr)}.status{min-height:2.9em}.hint-bar:not([hidden]){gap:8px;width:min(100%,560px);display:flex}.hint-bar .btn{flex:1}}@media (prefers-reduced-motion:no-preference){.cell,.btn,.pad-key{transition:background-color .12s,border-color .12s}}
