:root,:root[data-theme=dark]{--bg: #14161f;--bg-soft: #1c1f2b;--panel: #222636;--text: #e8eaf2;--muted: #9aa3b5;--accent: #5b8fe0;--cell-bg: #1c202e;--line: #4a5165;--given: #eef1f8;--entered: #7fb0f5;--cand: #9aa3b5;--sel-bg: rgba(91, 143, 224, .22);--sel-border: #5b8fe0;--peer-bg: rgba(91, 143, 224, .08);--same-bg: rgba(230, 199, 76, .18);--error-bg: #e05563;--hint-primary: #3f7fd4;--hint-secondary: #d9a13c;--hint-fin: #9b74d8;--hint-elim: #e05563;--hint-place: #52ab58;--hint-chain: #d9a13c;--accent-fill: #4173c8;--on-accent: #ffffff;--accent-text: #5b8fe0;--danger-text: #f07a86}:root[data-theme=light],:root[data-theme=rose]{--bg: #f2f4f9;--bg-soft: #e8ebf3;--panel: #ffffff;--text: #23293a;--muted: #5d6577;--accent: #3467c0;--cell-bg: #ffffff;--line: #3a4152;--given: #1b2233;--entered: #2f6fd0;--cand: #707a8e;--sel-bg: rgba(52, 103, 192, .18);--sel-border: #3467c0;--peer-bg: rgba(52, 103, 192, .07);--same-bg: rgba(212, 168, 32, .22);--accent-fill: #3467c0;--on-accent: #ffffff;--accent-text: #3467c0;--danger-text: #b3263a}:root[data-theme=rose]{--bg: #fbeef3;--bg-soft: #f6e2ea;--panel: #fff7fa;--text: #3a2733;--muted: #725a67;--accent: #d4568a;--accent-fill: #b93a70;--accent-text: #b5366c;--cell-bg: #fffbfd;--line: #57414d;--given: #a81d47;--entered: #e0567f;--sel-bg: rgba(212, 86, 138, .18);--sel-border: #d4568a;--peer-bg: rgba(212, 86, 138, .07)}:root[data-theme=forest]{--bg: #0f1b14;--bg-soft: #15231a;--panel: #1b2d21;--text: #e8efe6;--muted: #96a89a;--accent: #c9963d;--accent-fill: #c9963d;--on-accent: #0f1b14;--accent-text: #c9963d;--cell-bg: #16241a;--line: #4e6354;--given: #f2ecd9;--entered: #dfb15e;--sel-bg: rgba(201, 150, 61, .22);--sel-border: #c9963d;--peer-bg: rgba(201, 150, 61, .08)}*{box-sizing:border-box}html,body,#root{margin:0;height:100%;overflow-x:hidden}:root{--font-classic: "Avenir Next", "Segoe UI", system-ui, -apple-system, sans-serif;--font-rounded: ui-rounded, "SF Pro Rounded", "Arial Rounded MT Bold", "Nunito", "Varela Round", system-ui, sans-serif;--font-serif: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--font-mono: ui-monospace, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;--font-hand: "Noteworthy", "Bradley Hand", "Segoe Print", "Ink Free", "Chalkboard SE", "Comic Sans MS", casual, cursive;--font: var(--font-classic);--tint-1: #4f8fe8;--tint-2: #2fb3a3;--tint-3: #4caf50;--tint-4: #a3b52c;--tint-5: #e0b030;--tint-6: #ee8a3c;--tint-7: #b06fdc;--tint-8: #e06aa8;--tint-9: #e05563}:root[data-theme=light],:root[data-theme=rose]{--tint-1: #2563c9;--tint-2: #0f8577;--tint-3: #2e7d32;--tint-4: #6b7a10;--tint-5: #9a7100;--tint-6: #b85a12;--tint-7: #7b3fb5;--tint-8: #b83a7e;--tint-9: #c02a3c}:root[data-font=hand]{--font: var(--font-hand)}:root[data-font=rounded]{--font: var(--font-rounded)}:root[data-font=serif]{--font: var(--font-serif)}:root[data-font=mono]{--font: var(--font-mono)}body{background:var(--bg);color:var(--text);font-family:var(--font-classic);-webkit-user-select:none;user-select:none}button{font-family:inherit;touch-action:manipulation}.dialog-note,.hint-body p,.welcome-list,.shortcut-table,.learn-body,.learn-glossary,.learn-points,.learn-what{-webkit-user-select:text;user-select:text}:where(button,a,summary,input,[role=button],[tabindex]):focus-visible{outline:2px solid var(--accent);outline-offset:2px}.modal:focus{outline:none}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:16px;padding:10px 18px;padding-top:max(10px,env(safe-area-inset-top));padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right));background:var(--bg-soft);border-bottom:1px solid rgba(128,128,160,.15)}.brand{display:flex;align-items:center;gap:10px}.brand-mark{display:grid;place-items:center;width:34px;height:34px;border-radius:9px;background:linear-gradient(135deg,#5b8fe0,#9b74d8);color:#fff;font-weight:800;font-size:15px;letter-spacing:.5px}.brand h1{font-size:20px;margin:0;letter-spacing:.5px}.brand-ui{background:linear-gradient(135deg,#5b8fe0,#9b74d8);-webkit-background-clip:text;background-clip:text;color:transparent;font-weight:800}.game-meta{display:flex;align-items:center;gap:10px;flex:1;min-width:0;overflow:hidden}.level-badge{padding:3px 10px;border-radius:20px;font-size:13px;font-weight:700;white-space:nowrap}.level-beginner{background:#26999930;color:#6fd0cd}.level-easy{background:#2e7d3230;color:#7fd486}.level-medium{background:#38761d30;color:#b5d47f}.level-tricky{background:#8a8a2030;color:#d3d36a}.level-hard{background:#b8860b30;color:#e6c74c}.level-unfair{background:#c0541530;color:#e8934a}.level-extreme{background:#b3123030;color:#ef7783}.level-nightmare{background:#6a1b9a30;color:#b78ae8}.level-hidden{background:#8080a02e;color:var(--muted);font-style:italic}:root[data-theme=light] .level-beginner,:root[data-theme=rose] .level-beginner{background:#26999926;color:#0e6360}:root[data-theme=light] .level-easy,:root[data-theme=rose] .level-easy{background:#2e7d3226;color:#1d6322}:root[data-theme=light] .level-medium,:root[data-theme=rose] .level-medium{background:#38761d26;color:#2c5e14}:root[data-theme=light] .level-tricky,:root[data-theme=rose] .level-tricky{background:#8a8a202e;color:#5c5c08}:root[data-theme=light] .level-hard,:root[data-theme=rose] .level-hard{background:#b8860b2e;color:#735300}:root[data-theme=light] .level-unfair,:root[data-theme=rose] .level-unfair{background:#c054152e;color:#93400e}:root[data-theme=light] .level-extreme,:root[data-theme=rose] .level-extreme{background:#b312302e;color:#8f0e24}:root[data-theme=light] .level-nightmare,:root[data-theme=rose] .level-nightmare{background:#6a1b9a2e;color:#4d1470}:root[data-theme=light] .level-hidden,:root[data-theme=rose] .level-hidden{color:var(--text)}:root[data-theme=light] .practice-badge,:root[data-theme=rose] .practice-badge{color:#7a5800}.score-btn{white-space:nowrap;background:none;border:none;color:var(--muted);font-size:14px;font-family:inherit;cursor:pointer;padding:3px 8px;border-radius:8px;display:flex;align-items:center;gap:4px}.score-btn strong{color:var(--text);font-variant-numeric:tabular-nums}.score-btn:hover{background:#8080a026}.mini-i{font-size:12px}.practice-badge{font-size:13px;color:var(--hint-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.topbar-right{display:flex;align-items:center;gap:8px;margin-left:auto;flex-shrink:0}.timer{font-variant-numeric:tabular-nums;font-size:16px;color:var(--muted)}.timer.paused{opacity:.4}.icon-btn{background:none;border:none;font-size:18px;line-height:1;width:34px;height:34px;display:grid;place-items:center;cursor:pointer;color:var(--text);border-radius:8px}.icon-btn.gear{font-size:22px}.icon-btn:hover{background:#8080a026}.layout{flex:1;display:flex;gap:24px;padding:18px;justify-content:center;align-items:flex-start;overflow:auto}.grid-wrap{position:relative;width:100%}.board{width:100%;height:auto;display:block;touch-action:pan-y pinch-zoom;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;border-radius:6px}@media (min-width: 700px) and (min-height: 521px){.board{touch-action:pinch-zoom}}.board text{pointer-events:none;font-family:var(--font)}.pause-card{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;text-align:center;isolation:isolate}.pause-card:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;border-radius:6px;background:var(--bg);opacity:.88;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.pause-card h3{margin:0;font-size:30px;font-weight:700;color:var(--text);letter-spacing:.5px}.pause-tip{margin:0;max-width:72%;color:var(--muted);font-size:14px;line-height:1.5}.resume-btn{margin-top:8px;padding:14px 34px;font-size:19px;font-weight:600;border-radius:12px;border:none;background:var(--accent-fill);color:var(--on-accent);cursor:pointer;box-shadow:0 6px 18px #00000040}.resume-btn:hover{filter:brightness(1.08)}.pause-poodle{margin-top:14px;filter:drop-shadow(0 2px 4px rgba(0,0,0,.25))}.side{display:flex;flex-direction:column;gap:14px;width:300px;flex-shrink:0}.menu-row,.mode-row,.action-row{display:flex;gap:8px}.menu-row button,.action-row button{flex:1;padding:9px 6px;border-radius:10px;border:1px solid rgba(128,128,160,.2);background:var(--panel);color:var(--text);cursor:pointer;font-size:13px;font-weight:600;font-family:inherit;letter-spacing:.1px}.row-caption{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1px;margin:2px 2px -4px}.assist-zone{display:flex;flex-direction:column;gap:8px;margin:0 -8px;padding:8px 8px 10px;border-radius:12px;border:1px solid rgba(128,128,160,.22)}.zone-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:0}.zone-help{flex-shrink:0;width:24px;height:24px;border-radius:50%;border:1px solid rgba(128,128,160,.35);background:none;color:var(--muted);font-size:13px;font-weight:700;line-height:1;cursor:pointer}.zone-help:hover{color:var(--text);border-color:var(--accent)}.button-help dt{display:flex;align-items:baseline;gap:6px}.button-help-icon{display:inline-block;width:20px;text-align:center}.button-help dd{margin-left:26px}.zone-note{text-transform:none;letter-spacing:normal;font-weight:400;margin-left:6px}.menu-row button{display:flex;flex-direction:column;align-items:center;gap:3px;padding:8px 4px}.menu-icon{font-size:16px;line-height:1}.menu-row button:hover,.action-row button:hover:not(:disabled){border-color:var(--accent)}.menu-row button.active{background:var(--accent-fill);color:var(--on-accent);border-color:var(--accent-fill)}.practice-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border-radius:10px;background:var(--panel);font-size:13px;color:var(--muted)}.practice-bar strong{color:var(--text)}.practice-bar button{padding:6px 12px;border-radius:8px;border:none;background:var(--accent-fill);color:var(--on-accent);cursor:pointer;white-space:nowrap}.action-row button:disabled{opacity:.35;cursor:default}.action-row button.toggled{background:var(--accent-fill);color:var(--on-accent)}.controls{display:flex;flex-direction:column;gap:10px}.mode-btn{flex:1;padding:6px 4px;border-radius:10px;border:1px solid rgba(128,128,160,.2);background:none;color:var(--text);cursor:pointer;font-size:12.5px;display:flex;flex-direction:column;align-items:center;gap:2px}.mode-btn.active{background:var(--accent-fill);color:var(--on-accent);border-color:var(--accent-fill)}.mode-btn.held{outline:2px dashed var(--on-accent);outline-offset:-4px}.key-hint{font-size:11px;opacity:.8}.mode-btn.active .key-hint{opacity:1}@media (hover: none) and (pointer: coarse){.key-hint{display:none}}.numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.num-btn{aspect-ratio:1.3;font-size:30px;font-weight:650;border-radius:12px;border:1px solid rgba(128,128,160,.32);background:var(--panel);color:var(--text);cursor:pointer;box-shadow:0 1px 2px #00000038}.num-btn:hover{border-color:var(--accent)}.num-btn{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.num-btn.held-corner{display:flex;align-items:flex-start;justify-content:flex-start;padding:4px 0 0 8px;font-size:15px;border-color:var(--accent);background:var(--accent-fill)}.num-btn.armed{background:var(--accent-fill);color:var(--on-accent);border-color:var(--accent-fill)}.side.paused>*:not(.menu-row){pointer-events:none;opacity:.45}.hint-panel{background:var(--panel);border:1px solid rgba(128,128,160,.2);border-radius:12px;padding:14px}.hint-head{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:2px 10px;margin-bottom:8px}.hint-score{color:var(--muted);font-size:13px;white-space:nowrap}.hint-body p{margin:0 0 12px;font-size:14px;line-height:1.5;max-width:62ch}.hint-body p.hint-key{color:var(--muted);font-size:12.5px;margin-top:-4px}.hint-walk-text{font-size:15px;line-height:1.45;margin:0 0 8px}.hint-walk-nav{display:flex;align-items:center;gap:8px;margin-bottom:8px}.hint-walk-nav button{min-width:40px;padding:6px 10px;font-size:14px}.hint-walk-count{font-size:13px;opacity:.75;min-width:56px;text-align:center}.hint-legend{list-style:none;display:flex;flex-wrap:wrap;gap:4px 12px;margin:0 0 12px;padding:0;font-size:12px;color:var(--muted)}.hint-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}.hint-actions{display:flex;gap:8px;flex-wrap:wrap}.victory .hint-actions{justify-content:center}.hint-actions button{padding:8px 14px;border-radius:8px;border:none;background:var(--accent-fill);color:var(--on-accent);cursor:pointer;font-size:13px}.hint-actions button.ghost{background:none;border:1px solid rgba(128,128,160,.3);color:var(--text)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#080a1099;display:grid;place-items:center;z-index:40}.modal{background:var(--panel);border-radius:16px;padding:20px;width:min(480px,calc(100vw - 32px));max-height:80vh;overflow:auto;box-shadow:0 18px 50px #00000073}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.modal h3{margin:0}.close-btn{background:none;border:none;color:var(--muted);font-size:16px;cursor:pointer}.level-list{display:flex;flex-direction:column;gap:8px}.level-btn{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:12px 14px;border-radius:12px;border:1px solid rgba(128,128,160,.2);background:var(--bg-soft);color:var(--text);cursor:pointer;font-size:15px}.level-btn span{color:var(--muted);font-size:12.5px;line-height:1.45}.level-btn:hover{border-color:var(--accent)}.dialog-note{color:var(--muted);font-size:13px;line-height:1.5}.dialog-error{color:var(--danger-text);font-size:13px}.practice-group h4{margin:12px 0 6px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1px}.practice-btns{display:flex;flex-wrap:wrap;gap:6px}.practice-btns button{padding:7px 11px;border-radius:8px;border:1px solid rgba(128,128,160,.25);background:var(--bg-soft);color:var(--text);cursor:pointer;font-size:13px;position:relative}.practice-btns button:hover:not(:disabled){border-color:var(--accent)}.tech-count{font-size:13px;color:var(--muted);margin:4px 0 0}.tech-legend{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:3px;color:var(--muted);font-size:12.5px;line-height:1.45}.tech-legend .pool-dot{margin:0 6px 0 2px}.practice-btns button.tech-missing{color:var(--muted);cursor:not-allowed;border-style:dashed}.tech-x{color:var(--danger-text);font-weight:700}.practice-btns button.tech-redundant{color:var(--muted);cursor:help;border-style:dotted}.tech-tilde{color:var(--muted);font-weight:700}.practice-btns button.tech-lastresort{color:var(--muted);cursor:help;border-style:dashed}.tech-gear{color:var(--muted)}.tech-score{margin-left:6px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.practice-btns button:has(.tech-kin){text-align:left}.tech-kin{display:block;margin-top:1px;color:var(--muted);font-size:11.5px;line-height:1.3}.pool-dot{display:inline-block;width:7px;height:7px;margin-left:6px;border-radius:50%;background:#52ab58}textarea{width:100%;background:var(--bg-soft);border:1px solid rgba(128,128,160,.25);border-radius:8px;color:var(--text);padding:10px;font-family:ui-monospace,monospace;font-size:13px;margin-bottom:10px;resize:vertical}.spinner{width:34px;height:34px;margin:14px auto;border:4px solid rgba(128,128,160,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.victory{text-align:center}.solve-clean{color:var(--accent-text);font-weight:600;font-size:13px}.solve-assisted{color:var(--muted);font-size:13px}.daily-stats{display:grid;gap:6px;justify-items:center;margin:10px 0 4px}.daily-stats p{margin:0}.board-col{display:flex;flex-direction:column;align-items:flex-start;gap:2px;flex:0 1 min(78vh,640px);max-width:min(78vh,640px);width:100%}.poodle-wrap{align-self:flex-end;margin:14px 10px 0 0;position:relative;display:inline-block}.poodle{display:block;filter:drop-shadow(0 2px 4px rgba(0,0,0,.25));cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none}.poodle:active{cursor:grabbing}.poodle-tip{position:absolute;right:100%;top:10px;margin-right:8px;padding:5px 10px;border-radius:10px;background:var(--panel);color:var(--muted);font-size:12px;white-space:nowrap;box-shadow:0 3px 10px #0003;animation:poodle-tip-fade 3.5s ease forwards}@keyframes poodle-tip-fade{0%{opacity:0;transform:translate(4px)}10%,80%{opacity:1;transform:translate(0)}to{opacity:0}}.level-btn.daily{border:1.5px solid var(--accent)}.welcome-list{margin:10px 0;padding-left:20px;display:flex;flex-direction:column;gap:8px;font-size:14px;line-height:1.5}.welcome-list strong{color:var(--text)}.welcome-list li{color:var(--muted)}.level-btn.surprise{background:linear-gradient(100deg,#6fd0cd29,#67b96a29 18%,#e6c74c29 40%,#e8934a29 60%,#e0556329 78%,#9b74d829),var(--panel)}.level-btn.surprise span{color:var(--text)}.path-list{display:flex;flex-direction:column;gap:3px;max-height:52vh;overflow-y:auto;margin-top:10px}.path-row{display:flex;align-items:center;gap:10px;padding:7px 10px;border-radius:8px;background:var(--panel);cursor:pointer;-webkit-user-select:none;user-select:none}.path-row:hover{outline:1.5px solid var(--accent)}.path-row.path-crux{background:var(--sel-bg);outline:1.5px solid var(--accent)}.path-jump{min-width:52px;padding:3px 8px;font-size:12px;font-variant-numeric:tabular-nums;text-align:center;border-radius:6px;background:var(--sel-bg);color:var(--text)}.path-label{flex:1;text-align:left;background:none;border:none;padding:0;color:var(--text);font-size:14px}.path-group .path-label{color:var(--muted);cursor:pointer}.crux-badge{margin-left:8px;padding:1px 7px;border-radius:999px;background:var(--accent-fill);color:var(--on-accent);font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.path-score{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.path-crux .path-score{color:var(--text)}.dedication{display:block;margin-top:4px;font-family:Snell Roundhand,Segoe Script,Brush Script MT,cursive;font-size:15px;color:var(--muted)}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;pointer-events:none}.confetti i{position:absolute;top:-12px;left:calc((var(--n) * 4.166%) + 1%);width:8px;height:12px;background:hsl(calc(var(--n) * 60),85%,62%);opacity:0;animation:confetti-fall 3.2s ease-in calc(var(--n) * .09s) 2}@keyframes confetti-fall{0%{opacity:1;transform:translateY(0) rotate(0)}to{opacity:.4;transform:translateY(105vh) translate(4vw) rotate(540deg)}}@media (prefers-reduced-motion: reduce){.confetti{display:none}}.version-note{color:var(--muted);font-size:12px}.setting-group{margin:18px 0 6px;color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:1px}.setting-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 0;cursor:pointer}.setting-slider{cursor:default}.setting-slider input[type=range]{flex:0 1 140px;min-width:90px;accent-color:var(--accent);cursor:pointer}.setting-slider output{flex-shrink:0;width:38px;text-align:right;font-size:13px;font-variant-numeric:tabular-nums;color:var(--muted)}.setting-row.disabled{opacity:.45;cursor:default}.setting-row.stack{cursor:default}.setting-text{display:flex;flex-direction:column;gap:2px}.setting-text span{font-size:14.5px}.setting-text small{color:var(--muted);font-size:12px;line-height:1.4}.switch{flex-shrink:0;width:42px;height:24px;border-radius:12px;border:none;background:#8080a059;position:relative;cursor:pointer;transition:background .15s}.switch.on{background:var(--accent)}:root[data-theme=light] .switch:not(.on){background:#888ba3}:root[data-theme=rose] .switch:not(.on){background:#957b89}.switch .knob{position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:#fff;transition:transform .15s}.switch.on .knob{transform:translate(18px)}.segmented{display:flex;flex-shrink:0;border:1px solid rgba(128,128,160,.3);border-radius:9px;overflow:hidden}.segmented button{padding:6px 12px;border:none;background:none;color:var(--text);cursor:pointer;font-size:13px}.segmented button.active{background:var(--accent-fill);color:var(--on-accent)}.shortcut-table{width:100%;border-collapse:collapse;font-size:13px}.shortcut-table td{padding:5px 8px 5px 0;vertical-align:top;line-height:1.45}.shortcut-table td:first-child{white-space:nowrap}kbd{background:var(--bg-soft);border:1px solid rgba(128,128,160,.35);border-bottom-width:2px;border-radius:6px;padding:2px 7px;font-family:inherit;font-size:12px}.app-footer{text-align:center;font-size:12px;color:var(--muted);padding:4px 0 8px;text-wrap:balance}.app-footer a{white-space:nowrap}.app-footer a{color:var(--accent-text);text-decoration:none}.app-footer a:hover{text-decoration:underline}.dialog-note a{color:var(--accent-text)}.footer-learn{font-size:13px;margin-bottom:6px}.modal.wide{width:min(720px,calc(100vw - 24px));max-height:88vh}.learn-link{background:none;border:none;padding:0;font:inherit;color:var(--accent-text);cursor:pointer;text-decoration:underline;text-decoration-color:#8080a080;text-underline-offset:2px}.learn-link:hover{text-decoration-color:currentColor}.learn-link.term{color:inherit;text-decoration-style:dotted;text-decoration-color:var(--accent)}.learn-tabs{width:100%;margin-bottom:12px}.learn-tabs button{flex:1;padding:8px 12px;font-size:14px}.learn-search{width:100%;padding:9px 12px;border-radius:9px;border:1px solid rgba(128,128,160,.3);background:var(--bg-soft);color:var(--text);font:inherit;font-size:14px}.learn-search:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.learn-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.learn-chips button{padding:4px 10px;border-radius:20px;border:1px solid rgba(128,128,160,.28);background:none;color:var(--muted);font-size:12.5px;cursor:pointer}.learn-chips button:hover{color:var(--text);border-color:var(--accent)}.learn-group h4{margin:22px 0 2px;font-size:15px;scroll-margin-top:8px}.learn-cat-note{margin:0 0 8px;color:var(--muted);font-size:13px;line-height:1.5}.learn-tech{border:1px solid rgba(128,128,160,.2);border-radius:10px;background:var(--bg-soft);margin-bottom:6px;scroll-margin-top:8px}.learn-tech.focus,.learn-glossary .focus{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.learn-tech summary{display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:2px 8px;padding:10px 12px;cursor:pointer;list-style:none}.learn-tech summary::-webkit-details-marker{display:none}.learn-tech summary:focus-visible{outline:2px solid var(--accent);outline-offset:-2px;border-radius:10px}.learn-name{font-weight:650;font-size:14.5px}.learn-name:before{content:"▸";display:inline-block;width:14px;color:var(--muted);transition:transform .12s}.learn-tech[open] .learn-name:before{transform:rotate(90deg)}.learn-mark{color:var(--muted)}.learn-tech .level-badge{font-size:12px;padding:2px 8px}.learn-what,.learn-body p,.learn-glossary dd,.learn-points dd,.learn-lead,.learn-cat-note{max-width:68ch}.learn-score{min-width:44px;padding:3px 8px;border-radius:6px;background:var(--sel-bg);color:var(--text);font-size:12px;font-variant-numeric:tabular-nums;text-align:center;white-space:nowrap}.learn-what{grid-column:1 / -1;padding-left:14px;font-size:13.5px;line-height:1.5}.learn-body{padding:2px 12px 12px 26px;border-top:1px solid rgba(128,128,160,.16)}.learn-body p{margin:10px 0 0;font-size:13.5px;line-height:1.55}.learn-label{display:block;color:var(--muted);font-size:12px;font-weight:650;text-transform:uppercase;letter-spacing:.7px}.learn-body .learn-aka,.learn-aka{color:var(--muted);font-size:12.5px;font-weight:400}.learn-body .hint-actions{margin-top:12px;align-items:center}.learn-example{margin:12px 0 0}.learn-example img{display:block;width:100%;max-width:420px;height:auto;border-radius:8px;margin-top:4px}.learn-example figcaption{margin-top:8px;font-size:13.5px;line-height:1.55;max-width:68ch;-webkit-user-select:text;user-select:text}.learn-legend{display:flex;flex-wrap:wrap;gap:2px 14px;margin-bottom:4px;color:var(--muted);font-size:12.5px}.learn-legend i{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px;vertical-align:-1px}.learn-example .learn-link{margin-top:6px;font-size:13px}.learn-permalink{color:var(--muted);font-size:12.5px;text-decoration:none}.learn-permalink:hover{color:var(--accent)}.learn-glossary{margin:0}.learn-glossary>div{padding:8px 10px;border-radius:8px;border:1px solid transparent;scroll-margin-top:8px}.learn-glossary dt{font-weight:650;font-size:14.5px}.learn-glossary dd{margin:2px 0 0;font-size:13.5px;line-height:1.55}.learn-see{color:var(--muted)}.learn-lead{font-size:15px;line-height:1.55;margin:4px 0 6px}.learn-points dt{font-weight:650;font-size:14px;margin-top:12px}.learn-points dd{margin:2px 0 0;font-size:13.5px;line-height:1.55;color:var(--muted)}.band-table{margin-top:12px}.band-table td{padding:4px 10px 4px 0;vertical-align:middle}.hint-tech{display:inline-flex;align-items:center;gap:5px;background:none;border:none;padding:0;font:inherit;color:var(--text);cursor:pointer;text-align:left}.hint-tech:hover strong{text-decoration:underline;text-underline-offset:3px}.hint-body p.hint-what{color:var(--muted);font-size:13.5px;padding-left:10px;border-left:2px solid rgba(128,128,160,.35)}.toast{position:fixed;left:50%;bottom:calc(26px + env(safe-area-inset-bottom));transform:translate(-50%);background:var(--panel);color:var(--text);border:1px solid rgba(128,128,160,.3);border-radius:12px;padding:10px 18px;font-size:13.5px;box-shadow:0 10px 30px #00000059;z-index:60;animation:toast-in .25s ease-out;pointer-events:none;max-width:min(90vw,480px);text-align:center;line-height:1.4}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@media (pointer: coarse){.close-btn{min-width:44px;min-height:44px;margin:-10px -12px -10px 0}.score-btn,.action-row button,.practice-btns button,.practice-bar button,.segmented button,.learn-chips button{min-height:40px}.hint-actions button{min-height:40px;padding:10px 16px}.path-row{min-height:44px}.path-jump{min-height:32px}.zone-help{width:32px;height:32px}.practice-btns,.learn-chips{gap:8px}.learn-tech summary{min-height:44px}}@media (max-width: 560px){.topbar{gap:8px;padding:5px 10px;padding-top:max(5px,env(safe-area-inset-top));padding-left:max(10px,env(safe-area-inset-left));padding-right:max(10px,env(safe-area-inset-right))}.brand h1{display:none}.game-meta{gap:6px}.score-btn{padding:3px 4px;font-size:13px}.score-btn .rating-word,.score-btn .mini-i{display:none}.score-btn{white-space:nowrap}.timer{font-size:14px}.topbar-right{gap:2px;flex-shrink:0}.icon-btn{width:34px;height:40px;font-size:16px}.icon-btn.theme-btn{display:none}.numpad{gap:4px}.setting-row.stack{flex-direction:column;align-items:stretch;gap:8px}.setting-row.stack .segmented{align-self:flex-start}.setting-slider{flex-wrap:wrap;row-gap:6px}.setting-slider .setting-text{flex-basis:100%}.setting-slider input[type=range]{flex:1;min-height:32px}.setting-row.stack .segmented button{padding-left:9px;padding-right:9px}.shortcut-table:not(.band-table) td{display:block;padding:0}.shortcut-table:not(.band-table) td:first-child{white-space:normal;padding-top:8px}.shortcut-table:not(.band-table) td:last-child{padding:3px 0 4px}.icon-btn.gear{font-size:19px}.practice-badge{display:none}}@media (min-width: 861px) and (max-height: 900px){.side>.hint-panel{order:-1}.layout{overflow-anchor:none}}@media (max-width: 860px){.layout{flex-direction:column;align-items:center;justify-content:flex-start;gap:14px;padding:10px;padding-bottom:calc(10px + env(safe-area-inset-bottom))}.side>.menu-row{order:1}.side>.app-footer{order:2}.board-col{flex:none;width:100%;max-width:min(96vw,70vh);position:relative}.poodle-wrap{position:absolute;right:4px;bottom:-22px;margin:0}.poodle{width:46px}.side{width:100%;max-width:520px}.side>.hint-panel{order:-1}.layout{overflow-anchor:none}.numpad{grid-template-columns:repeat(9,1fr);gap:3px}.num-btn{aspect-ratio:.9;min-height:44px;font-size:20px}.mode-btn{min-height:40px}}@media (min-width: 700px) and (max-width: 860px){.board-col{max-width:min(88vw,62vh)}.side{max-width:660px}.num-btn{aspect-ratio:1.5}}@media (max-width: 560px){.num-btn{aspect-ratio:.78;border-radius:10px}}.learn-toolbar{display:flex;gap:8px}.learn-toolbar .learn-search{flex:1;min-width:150px;width:auto}.learn-sort{flex:none;padding:0 10px;border-radius:9px;border:1px solid rgba(128,128,160,.3);background:var(--bg-soft);color:var(--text);font:inherit;font-size:13px;cursor:pointer}.learn-sort:focus-visible{outline:2px solid var(--accent)}@media (max-width: 480px){.learn-toolbar{flex-wrap:wrap}.learn-sort{flex:1;padding:8px 10px}.learn-tabs button{padding:7px 4px;font-size:12.5px}}.learn-freq{grid-column:1 / -1;font-size:12px;color:var(--muted)}.learn-back{display:inline-block;margin:8px 0 4px}.hint-body p.hint-freq{color:var(--muted);font-size:12.5px;margin-top:-4px}.learn-prose{margin:0 0 10px;font-size:14px;line-height:1.55}.solve-verdict{margin:-6px 0 10px;font-size:14px;color:var(--muted)}.solve-verdict strong{color:var(--text)}.time-table{width:100%;table-layout:fixed}.time-table th,.time-table td{text-align:left;font-variant-numeric:tabular-nums}.time-table th:first-child,.time-table td:first-child{width:22%}@media (max-width: 480px){.time-table{font-size:11.5px}.time-table th:first-child,.time-table td:first-child{width:25%}.time-table td{padding-right:3px}.time-table .level-badge{padding:2px 6px;font-size:10.5px}}.time-table .time-mode th{padding-top:14px;text-align:left;color:var(--muted);font-weight:600}.row-sub{margin:2px 2px -4px;font-size:11px;color:var(--muted)}.assist-zone .action-row button{padding:7px 4px;background:none;font-size:12.5px;font-weight:500;display:flex;flex-direction:column;align-items:center;gap:3px}.assist-zone .btn-icon{font-size:16px;line-height:1}.assist-zone .action-row button.toggled{background:var(--accent-fill);font-weight:600}.menu-row button,.action-row button,.mode-btn{min-width:0;line-height:1.2}html:not([lang=en]) .menu-row button,html:not([lang=en]) .action-row button{font-size:12px;padding-left:4px;padding-right:4px}html:not([lang=en]) .mode-btn{font-size:12px}html:not([lang=en]) .zone-note{display:block;margin-left:0}@media (max-width: 480px){html:not([lang=en]) .menu-row button,html:not([lang=en]) .action-row button{font-size:11px;padding-left:2px;padding-right:2px}}.learn-kin{grid-column:1 / -1;padding-left:14px;margin-top:-2px;color:var(--muted);font-size:12px;line-height:1.35}.intuition-part h4{margin-top:28px;font-size:16px}.intuition-section{margin:14px 0 0;scroll-margin-top:8px}.intuition-section h5{margin:0 0 6px;font-size:14.5px;font-weight:650}.intuition-section .learn-prose{max-width:68ch}.intuition-eli12{max-width:68ch;margin:10px 0 0;padding:10px 12px;border-left:3px solid var(--accent);border-radius:0 8px 8px 0;background:var(--sel-bg)}.intuition-eli12 p{margin:4px 0 0;font-size:14px;line-height:1.55}.intuition-figure{margin:10px 0 0}.intuition-figure img{display:block;width:100%;max-width:520px;height:auto;border-radius:8px}.intuition-figure figcaption{margin-top:6px;max-width:68ch;color:var(--muted);font-size:13px;line-height:1.5}.intuition-techs{margin:10px 0 0;font-size:13px;line-height:1.7}.intuition-techs .learn-link{font-size:13px}.intuition-timeline{margin:4px 0 0;max-width:68ch}.intuition-timeline>div{display:grid;grid-template-columns:8.5em 1fr;gap:2px 12px;padding:6px 0;border-top:1px solid rgba(128,128,160,.16)}.intuition-timeline dt{font-weight:650;font-size:13px}.intuition-timeline dd{margin:0;font-size:13.5px;line-height:1.5}@media (max-width: 520px){.intuition-timeline>div{grid-template-columns:1fr}}@media (max-width: 1000px) and (max-height: 520px) and (orientation: landscape){.layout{flex-direction:row;align-items:flex-start;justify-content:center;gap:12px;padding:8px 10px}.board-col{flex:none;width:calc(100vh - 72px);max-width:calc(100vh - 72px)}.side{flex:1;width:auto;min-width:0;max-width:440px;gap:8px}.side>.hint-panel{order:0}.numpad{grid-template-columns:repeat(9,1fr);gap:3px}.num-btn{aspect-ratio:auto;min-height:40px;font-size:18px}.poodle-wrap{display:none}}.solve-summary{font-size:13px;color:var(--muted);max-width:34em;margin:6px auto}.solve-record{font-size:13px;color:var(--text)}.proof-list{list-style:none;margin:0 0 8px;padding:0;display:flex;flex-direction:column;gap:6px}.proof-list li{display:flex;align-items:center;justify-content:space-between;gap:8px}.proof-list button{flex:none}.practice-found{color:var(--accent-text);font-weight:600}.learn-mastery{grid-column:1 / -1;font-size:12px;color:var(--accent-text)}.update-bar{position:fixed;left:50%;bottom:calc(26px + env(safe-area-inset-bottom));transform:translate(-50%);display:flex;align-items:center;gap:10px;background:var(--panel);color:var(--text);border:1px solid rgba(128,128,160,.3);border-radius:12px;padding:10px 14px;font-size:13.5px;box-shadow:0 10px 30px #00000059;z-index:61;max-width:min(92vw,560px)}.update-bar span{flex:1}.update-bar button{flex:none;padding:6px 12px;border-radius:8px;border:none;background:var(--accent-fill);color:var(--on-accent);cursor:pointer;white-space:nowrap}.update-bar button.ghost{background:transparent;color:var(--text);border:1px solid rgba(128,128,160,.3)}.crash{max-width:560px;margin:72px auto;padding:0 20px;color:var(--text, #e8eaf2);font-size:15px;line-height:1.6}.crash h1{font-size:22px;margin:0 0 8px}.crash-detail{color:var(--muted, #9aa0b4);font-size:13px;word-break:break-word}@media (max-width: 480px){.update-bar{flex-wrap:wrap;justify-content:flex-end}.update-bar span{flex:1 0 100%}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.board:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:6px}.path-summary{font-size:14px;margin:6px 0 10px}.path-go{margin-left:6px;padding:4px 10px;border-radius:8px;border:none;background:var(--accent-fill);color:var(--on-accent);cursor:pointer;font-size:12.5px}.path-section .setting-group{display:flex;align-items:center;gap:8px}.path-section .path-list{list-style:none;margin:0 0 6px;padding:0}.path-section .path-row{display:grid;grid-template-columns:20px 1fr auto auto;align-items:center;gap:8px;padding:5px 0;border-bottom:1px solid rgba(128,128,160,.15);font-size:13.5px}.path-mark{text-align:center;color:var(--muted)}.path-learned .path-mark{color:var(--accent-text)}.path-next{background:var(--bg-soft);border-radius:8px;padding-left:4px;padding-right:4px}.path-next .path-mark{color:var(--accent-text)}.path-name{display:flex;flex-direction:column;min-width:0}.path-name .learn-link{text-align:left;font-weight:600}.path-freq{font-size:11.5px;color:var(--muted)}.path-play{font-size:12px;color:var(--muted);white-space:nowrap}.path-ahead .path-play{opacity:.7}.path-practice{padding:4px 10px;font-size:12.5px}.path-record{width:100%;border-collapse:collapse;font-size:13px}.path-record th,.path-record td{text-align:left;padding:5px 6px;border-bottom:1px solid rgba(128,128,160,.15)}.path-record th{font-size:11.5px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}@media (max-width: 480px){.path-section .path-row{grid-template-columns:20px 1fr auto;grid-template-rows:auto auto}.path-section .path-mark{grid-row:1 / span 2;grid-column:1}.path-section .path-name{grid-row:1;grid-column:2}.path-section .path-play{grid-row:2;grid-column:2;white-space:normal}.path-section .path-practice{grid-row:1 / span 2;grid-column:3}}.chain-note{font-size:13px;color:var(--text)}.file-btn{display:inline-block;padding:8px 14px;border-radius:10px;background:var(--accent-fill);color:var(--on-accent);cursor:pointer;font-size:13.5px}.scan-camera video{width:100%;border-radius:10px;background:#000;margin-bottom:8px}.scan-check{display:flex;gap:10px;align-items:flex-start;margin-bottom:8px}.scan-check img{width:120px;height:120px;border-radius:6px;flex:none}.scan-check p{margin:0;font-size:13px;color:var(--muted)}.hub-tabs{margin-bottom:12px}.hub-tabs button{flex:1;padding:8px 4px;white-space:nowrap}
