: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}: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)}:root[data-theme=rose]{--bg: #fbeef3;--bg-soft: #f6e2ea;--panel: #fff7fa;--text: #3a2733;--muted: #8a6f7d;--accent: #d4568a;--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;--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}body{background:var(--bg);color:var(--text);font-family:Avenir Next,Segoe UI,system-ui,-apple-system,sans-serif;-webkit-user-select:none;user-select:none}.app{display:flex;flex-direction:column;height:100%}.topbar{display:flex;align-items:center;gap:16px;padding:10px 18px;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:#e05563}.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:#7a5800}: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}.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;opacity:.6}.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:none;border-radius:6px}.board text{pointer-events:none;font-family:inherit}.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);color:#fff;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:10.5px;text-transform:uppercase;letter-spacing:1.2px;margin:2px 2px -4px}.assist-zone{display:flex;flex-direction:column;gap:10px;margin:0 -8px;padding:8px 8px 10px;border-radius:12px;border:1px solid rgba(217,161,60,.16);background:linear-gradient(180deg,#d9a13c17,#d9a13c05)}.zone-note{text-transform:none;letter-spacing:normal;font-weight:400;opacity:.75;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);color:#fff;border-color:var(--accent)}.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);color:#fff;cursor:pointer;white-space:nowrap}.action-row button:disabled{opacity:.35;cursor:default}.action-row button.toggled{background:var(--accent);color:#fff}.controls{display:flex;flex-direction:column;gap:10px}.mode-btn{flex:1;padding:8px 4px;border-radius:10px;border:1px solid rgba(128,128,160,.2);background:var(--panel);color:var(--text);cursor:pointer;font-size:13px;display:flex;flex-direction:column;align-items:center;gap:2px}.mode-btn.active{background:var(--accent);color:#fff;border-color:var(--accent)}.mode-btn.held{outline:2px dashed rgba(255,255,255,.75);outline-offset:-4px}.key-hint{font-size:10px;opacity:.6}.numpad{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.num-btn{aspect-ratio:1.35;font-size:26px;font-weight:600;border-radius:12px;border:1px solid rgba(128,128,160,.2);background:var(--panel);color:var(--text);cursor:pointer}.num-btn:hover{border-color:var(--accent)}.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;margin-bottom:8px}.hint-score{color:var(--muted);font-size:13px}.hint-body p{margin:0 0 12px;font-size:14px;line-height:1.5}.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);color:#fff;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}.level-btn:hover{border-color:var(--accent)}.dialog-note{color:var(--muted);font-size:13px;line-height:1.5}.dialog-error{color:var(--hint-elim);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}.practice-btns button.tech-missing{opacity:.45;cursor:not-allowed;border-style:dashed}.tech-x{color:var(--hint-elim);font-weight:700}.practice-btns button.tech-redundant{opacity:.6;cursor:help;border-style:dotted}.tech-tilde{color:var(--muted);font-weight:700}.practice-btns button.tech-lastresort{opacity:.6;cursor:help;border-style:dashed}.tech-gear{color:var(--muted)}.tech-score{margin-left:6px;color:var(--muted);font-size:11px;font-variant-numeric:tabular-nums}.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);font-weight:600;font-size:13px}.solve-assisted{color:var(--muted);font-size:13px}.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)}.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);color:#fff;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}.path-score{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.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:11px}.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-row.disabled{opacity:.45;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)}.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);color:#fff}.shortcut-table{width:100%;border-collapse:collapse;font-size:13px}.shortcut-table td{padding:5px 8px 5px 0;vertical-align:top}.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}.app-footer a{color:var(--accent);text-decoration:none}.app-footer a:hover{text-decoration:underline}.dialog-note a{color:var(--accent)}.toast{position:fixed;left:50%;bottom:26px;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}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}@media (max-width: 560px){.topbar{gap:8px;padding:8px 10px}.brand h1{display:none}.game-meta{gap:6px}.score-btn{padding:3px 4px;font-size:13px}.score-btn .rating-word{display:none}.timer{font-size:14px}.topbar-right{gap:2px}.icon-btn{width:30px;height:30px;font-size:16px}.icon-btn.gear{font-size:19px}.practice-badge{display:none}}@media (max-width: 860px){.layout{flex-direction:column;align-items:center;gap:14px;padding:10px}.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}.numpad{grid-template-columns:repeat(9,1fr)}.num-btn{aspect-ratio:.9;font-size:20px}}@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}}
