:root{--paper:#f6f2e8;--paper-strong:#fffaf0;--ink:#171916;--muted:#6e7167;--line:#c8c1ad;--line-strong:#423f37;--accent:#b7ff4a;--accent-ink:#1d2c08;--teal:#0e7c74;--signal:#ff5d38;--blueprint:#315f7d;--shadow:0 22px 60px #28261d1f}*{box-sizing:border-box}html,body{min-height:100%}body{background:linear-gradient(90deg, #1719160d 1px, transparent 1px), linear-gradient(#1719160d 1px, transparent 1px), radial-gradient(circle at 65% 12%, #b7ff4a3d, transparent 24rem), var(--paper);color:var(--ink);letter-spacing:0;background-size:28px 28px,28px 28px,auto,auto;margin:0;font-family:IBM Plex Sans,Aptos,Helvetica Neue,Arial,sans-serif}button{color:inherit;font:inherit}.app-shell{grid-template-columns:76px minmax(0,1fr);min-height:100svh;display:grid}.rail{background:var(--ink);color:var(--paper-strong);flex-direction:column;align-items:center;gap:14px;padding:18px 12px;display:flex}.brand-mark{aspect-ratio:1;background:var(--accent);color:var(--accent-ink);place-items:center;width:44px;margin-bottom:20px;font-size:15px;font-weight:850;display:grid}.rail-button,.icon-button,.play-button{cursor:pointer;background:0 0;border:1px solid #fffaf02e;justify-content:center;align-items:center;width:42px;height:42px;transition:background .18s,border-color .18s,transform .18s;display:inline-flex}.rail-button:hover,.rail-button.active{border-color:var(--accent);background:#b7ff4a29;transform:translateY(-1px)}.workspace{min-width:0;padding:clamp(18px,2.4vw,34px)}.topbar{justify-content:space-between;align-items:center;gap:24px;max-width:1500px;margin:0 auto 24px;display:flex}.eyebrow{color:var(--blueprint);letter-spacing:0;text-transform:uppercase;margin:0 0 6px;font-size:12px;font-weight:800}h1{max-width:850px;margin:0;font-size:clamp(25px,3vw,46px);line-height:1}.engine-summary{color:var(--muted);margin:10px 0 0;font-size:13px;font-weight:750}.topbar-actions,.board-toolbar,.playback{align-items:center;gap:10px;display:flex}.primary-action,.auto-toggle{background:var(--ink);border:1px solid var(--ink);color:var(--paper-strong);cursor:pointer;white-space:nowrap;align-items:center;gap:8px;height:42px;padding:0 16px;transition:background .18s,transform .18s;display:inline-flex}.primary-action:hover,.auto-toggle:hover{transform:translateY(-1px)}.primary-action:disabled,.play-button:disabled,.auto-toggle:disabled,.hint-button:disabled,.number-pad button:disabled,.cell:disabled{cursor:not-allowed;opacity:.46;transform:none}.topbar .icon-button,.playback .icon-button{border-color:var(--line)}.stage-grid{grid-template-columns:minmax(210px,270px) minmax(420px,1fr) minmax(260px,330px);gap:22px;max-width:1500px;margin:0 auto;display:grid}.left-pane,.right-pane,.board-zone{min-width:0}.left-pane,.right-pane{border-top:2px solid var(--ink);padding-top:16px}.metric-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.metric{border:1px solid var(--line);background:#fffaf0b8;padding:14px}.metric span,.study-strip span,.inspector-head span,.mastery-title span{color:var(--muted);margin-bottom:4px;font-size:12px;font-weight:750;display:block}.metric strong{font-size:26px;line-height:1;display:block}.study-strip{background:var(--accent);color:var(--accent-ink);align-items:flex-start;gap:10px;margin:16px 0 22px;padding:14px;display:flex}.study-strip strong{font-size:14px;line-height:1.25;display:block}.learning-path-panel,.review-queue-panel{border:1px solid var(--line);background:#fffaf0b8;margin-bottom:18px;padding:12px}.learning-path-title,.review-queue-title{grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;margin-bottom:10px;display:grid}.learning-path-title span,.review-queue-title span,.path-next span{color:var(--muted);font-size:12px;font-weight:780}.learning-path-title strong,.review-queue-title strong{color:var(--teal);font-size:13px}.path-stage-row,.path-actions,.path-node-strip{flex-wrap:wrap;gap:6px;display:flex}.path-stage-row span{color:var(--teal);background:#0e7c7414;padding:5px 7px;font-size:11px;font-weight:820}.path-next{border-bottom:1px solid var(--line);border-top:1px solid var(--line);margin:10px 0;padding:10px 0}.path-next strong{margin:2px 0 6px;font-size:17px;display:block}.path-next p{color:#3f423b;margin:0 0 6px;font-size:12px;line-height:1.35}.review-next{border-top:1px solid var(--line);margin-top:10px;padding-top:10px}.review-next span{color:var(--muted);font-size:12px;font-weight:780;display:block}.review-next strong{margin:2px 0 6px;font-size:15px;display:block}.review-next p,.review-empty{color:#3f423b;margin:0 0 8px;font-size:12px;line-height:1.35}.path-actions button,.path-node-strip button,.review-next button,.review-list button{background:var(--paper-strong);border:1px solid var(--line);color:var(--ink);cursor:pointer;align-items:center;gap:5px;min-height:30px;padding:0 8px;font-size:12px;font-weight:820;display:inline-flex}.path-actions button:disabled{cursor:not-allowed;opacity:.45}.path-node-strip button{justify-content:space-between;width:calc(50% - 3px)}.path-node-strip .complete{color:var(--teal);background:#0e7c741a}.path-node-strip .in-progress,.path-node-strip .ready{background:var(--accent);border-color:var(--accent-ink);color:var(--accent-ink)}.path-node-strip .locked{color:var(--muted)}.review-list{gap:6px;margin-top:8px;display:grid}.review-list button{justify-content:space-between;width:100%;min-height:32px}.technique-list{display:grid}.technique-row{border:0;border-top:1px solid var(--line);cursor:pointer;text-align:left;background:0 0;grid-template-columns:minmax(0,1fr) 56px 48px;align-items:center;gap:12px;min-height:68px;padding:0;display:grid}.technique-row:last-child{border-bottom:1px solid var(--line)}.technique-row.active{box-shadow:inset 3px 0 0 var(--teal);background:#0e7c7414;padding-left:10px}.technique-row strong,.technique-row small{display:block}.technique-row strong{font-size:14px}.technique-row small,.technique-row em{color:var(--muted);text-transform:uppercase;font-size:11px;font-style:normal;font-weight:750}.technique-row i{background:linear-gradient(90deg, var(--teal) var(--level), #17191621 var(--level));height:7px}.technique-row.auto em{color:var(--teal)}.technique-row.hint em{color:var(--blueprint)}.technique-row.manual em{color:var(--signal)}.puzzle-library{border-top:2px solid var(--ink);margin-top:24px;padding-top:14px}.section-kicker{color:var(--muted);letter-spacing:.02em;text-transform:uppercase;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:11px;font-weight:850;display:flex}.section-kicker strong{color:var(--teal);font-size:11px}.puzzle-row{border:1px solid var(--line);cursor:pointer;text-align:left;background:#fffaf094;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;min-height:62px;margin-bottom:8px;padding:10px;transition:background .16s,border-color .16s,transform .16s;display:grid}.puzzle-row:hover,.puzzle-row.active{border-color:var(--teal);background:#b7ff4a29;transform:translate(2px)}.puzzle-row strong,.puzzle-row small{display:block}.puzzle-row strong{font-size:13px}.puzzle-row small,.puzzle-row em{color:var(--muted);font-size:11px;font-style:normal;font-weight:800}.puzzle-row em{color:var(--teal)}.board-zone{align-self:start}.board-toolbar{justify-content:space-between;margin-bottom:14px}.segmented{border:1px solid var(--line);background:#fffaf0c7;grid-template-columns:repeat(3,minmax(64px,1fr));min-height:42px;display:inline-grid}.segmented button{cursor:pointer;background:0 0;border:0;padding:0 14px;font-size:13px;font-weight:800}.segmented .selected{background:var(--ink);color:var(--paper-strong)}.auto-toggle{background:var(--paper-strong);color:var(--ink)}.auto-toggle.on{background:var(--accent);border-color:var(--accent-ink);color:var(--accent-ink)}.preferences-panel{border:1px solid var(--line);background:#fffaf0b8;justify-content:space-between;align-items:center;gap:10px;min-height:40px;margin-bottom:12px;padding:8px 10px;display:flex}.preferences-panel span{color:var(--muted);font-size:12px;font-weight:810}.preference-toggle{color:var(--teal);cursor:pointer;background:#0e7c7414;border:1px solid #0e7c7442;min-height:30px;padding:0 10px;font-size:12px;font-weight:840}.preference-toggle.on{background:var(--accent);border-color:var(--accent-ink);color:var(--accent-ink)}.mobile-puzzle-strip{display:none}.mobile-puzzle-strip button{border:1px solid var(--line);color:var(--ink);cursor:pointer;text-align:left;background:#fffaf0b8;min-width:164px;padding:9px 10px}.mobile-puzzle-strip button.active{background:var(--accent);border-color:var(--accent-ink)}.mobile-puzzle-strip strong,.mobile-puzzle-strip span{display:block}.mobile-puzzle-strip strong{font-size:12px;line-height:1.2}.mobile-puzzle-strip span{color:var(--muted);margin-top:3px;font-size:11px;font-weight:800}.sudoku-board{aspect-ratio:1;background:var(--paper-strong);border:3px solid var(--ink);box-shadow:var(--shadow);grid-template-columns:repeat(9,minmax(0,1fr));width:min(100%,74svh);display:grid;overflow:hidden}.cell{aspect-ratio:1;border:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line);cursor:pointer;background:#fffaf0e6;place-items:center;min-width:0;padding:0;transition:background .16s,box-shadow .16s;display:grid;position:relative}.cell:nth-child(3n){border-right-color:var(--line-strong);border-right-width:2px}.cell:nth-child(9n){border-right:0}.cell:nth-child(n+19):nth-child(-n+27),.cell:nth-child(n+46):nth-child(-n+54){border-bottom-color:var(--line-strong);border-bottom-width:2px}.cell:nth-child(n+73){border-bottom:0}.cell.given{background:#efe6d3}.cell.filled{background:#f5f8e7}.cell.diagonal-rule:before{content:"";pointer-events:none;background:linear-gradient(135deg,#315f7d2e,#0000 46%),linear-gradient(45deg,#b7ff4a26,#0000 54%);position:absolute;inset:0}.cell.auto-solved{background:#dff7e7;animation:.72s both solve-pop}.cell.highlighted{background:#edf6d0}.cell.elimination{background:#fff1de}.cell.wrong{background:#ffe3d8}.cell.selected,.cell.focus{box-shadow:inset 0 0 0 3px var(--teal);z-index:1}.cell.killer-cage{--killer-cage-top:#0000;--killer-cage-right:#0000;--killer-cage-bottom:#0000;--killer-cage-left:#0000;background-image:repeating-linear-gradient(90deg, var(--killer-cage-top) 0 5px, transparent 5px 8px), repeating-linear-gradient(180deg, var(--killer-cage-right) 0 5px, transparent 5px 8px), repeating-linear-gradient(90deg, var(--killer-cage-bottom) 0 5px, transparent 5px 8px), repeating-linear-gradient(180deg, var(--killer-cage-left) 0 5px, transparent 5px 8px);background-position:0 0,100% 0,0 100%,0 0;background-repeat:no-repeat;background-size:100% 2px,2px 100%,100% 2px,2px 100%}.cell.killer-cage-top{--killer-cage-top:#076762d9}.cell.killer-cage-right{--killer-cage-right:#076762d9}.cell.killer-cage-bottom{--killer-cage-bottom:#076762d9}.cell.killer-cage-left{--killer-cage-left:#076762d9}.killer-cage-label{color:#075f62;z-index:2;font-size:clamp(8px,1vw,12px);font-weight:950;line-height:1;position:absolute;top:3px;left:3px}.cell.jigsaw-region{--jigsaw-region-top:#0000;--jigsaw-region-right:#0000;--jigsaw-region-bottom:#0000;--jigsaw-region-left:#0000;background-image:linear-gradient(var(--jigsaw-region-top), var(--jigsaw-region-top)), linear-gradient(var(--jigsaw-region-right), var(--jigsaw-region-right)), linear-gradient(var(--jigsaw-region-bottom), var(--jigsaw-region-bottom)), linear-gradient(var(--jigsaw-region-left), var(--jigsaw-region-left));background-position:0 0,100% 0,0 100%,0 0;background-repeat:no-repeat;background-size:100% 3px,3px 100%,100% 3px,3px 100%}.cell.jigsaw-region-top{--jigsaw-region-top:#7e5111e6}.cell.jigsaw-region-right{--jigsaw-region-right:#7e5111e6}.cell.jigsaw-region-bottom{--jigsaw-region-bottom:#7e5111e6}.cell.jigsaw-region-left{--jigsaw-region-left:#7e5111e6}.jigsaw-region-label{color:#7e5111;z-index:2;font-size:clamp(8px,1vw,11px);font-weight:950;line-height:1;position:absolute;top:3px;left:3px}.cell.thermo-line:before{content:"";z-index:0;background:#744ba02e;border:2px solid #744ba0b8;border-radius:999px;width:44%;min-width:18px;height:44%;min-height:18px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.cell.thermo-bulb:before{background:#744ba047;width:56%;height:56%}.cell.thermo-tip:before{border-color:#186f65c7}.thermo-line-label{color:#744ba0;z-index:2;font-size:clamp(8px,1vw,11px);font-weight:950;line-height:1;position:absolute;top:3px;left:3px}.thermo-line-order{color:#4f3571;z-index:2;background:#ffffffe0;border:1px solid #744ba073;border-radius:999px;justify-content:center;align-items:center;width:15px;height:15px;font-size:clamp(7px,.9vw,10px);font-weight:900;line-height:1;display:flex;position:absolute;top:3px;right:3px}.value{z-index:1;font-size:clamp(24px,5vw,46px);font-weight:800;line-height:1;position:relative}.given .value{color:var(--ink)}.filled .value{color:var(--teal)}.wrong .value{color:var(--signal)}.auto-solved .value{color:var(--teal)}.candidates{z-index:1;grid-template-columns:repeat(3,1fr);width:74%;height:74%;font-size:clamp(8px,1.15vw,13px);font-weight:750;line-height:1;display:grid;position:relative}.candidates span{color:#17191673;justify-content:center;align-items:center;display:flex}.candidates .candidate-target{color:var(--teal);font-weight:900}.candidates .candidate-remove{color:var(--signal);font-weight:950;position:relative}.candidates .candidate-remove:after{content:"";background:currentColor;width:70%;height:2px;position:absolute;top:50%;left:15%;transform:rotate(-28deg)}.selection-status{border:1px solid var(--line);border-top:0;justify-content:space-between;align-items:center;width:min(100%,74svh);min-height:42px;padding:0 12px;display:flex}.selection-status span{color:var(--muted);font-size:12px;font-weight:800}.selection-status strong{color:var(--teal);font-size:13px}@keyframes solve-pop{0%{box-shadow:inset 0 0 0 3px var(--teal), 0 0 0 0 #0e7c7400;transform:scale(1)}42%{box-shadow:inset 0 0 0 3px var(--teal), 0 0 0 10px #0e7c7429;transform:scale(1.045)}to{box-shadow:inset 0 0 0 3px var(--teal), 0 0 0 0 #0e7c7400;transform:scale(1)}}.number-pad{grid-template-columns:repeat(10,minmax(0,1fr));gap:8px;width:min(100%,74svh);margin-top:14px;display:grid}.number-pad button{aspect-ratio:1.28;background:var(--paper-strong);border:1px solid var(--line);cursor:pointer;font-size:17px;font-weight:850}.number-pad .clear-button{white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:0 10px;font-size:14px;display:flex}.validation-panel{border:1px solid var(--line);background:#fffaf0bd;width:min(100%,74svh);margin-top:12px;padding:12px}.validation-title{color:var(--muted);align-items:center;gap:8px;margin-bottom:8px;font-size:12px;font-weight:780;display:flex}.validation-summary,.validation-targets{color:#3f423b;margin:0;font-size:13px}.validation-counts{flex-wrap:wrap;gap:6px;margin:10px 0 8px;display:flex}.validation-counts span{color:var(--teal);background:#0e7c741a;border:1px solid #0e7c743d;padding:5px 7px;font-size:11px;font-weight:840}.validation-core-checklist{border-left:2px solid #0e7c7447;margin:8px 0 10px;padding-left:8px}.inspector-head{align-items:center;gap:10px;display:flex}.inspector-head strong{font-size:20px;display:block}.explanation{border-bottom:1px solid var(--line);border-top:1px solid var(--line);margin:18px 0;padding:16px 0}.explanation p,.mastery-panel p{color:#3f423b;margin:0;font-size:14px;line-height:1.5}.result-line{color:var(--teal);background:#0e7c741a;align-items:center;gap:8px;margin-top:14px;padding:10px;font-size:13px;font-weight:850;display:flex}.hint-button{background:var(--paper-strong);border:1px solid var(--teal);color:var(--teal);cursor:pointer;min-height:34px;margin-top:10px;padding:0 10px;font-size:12px;font-weight:820}.speed-summary{color:#31564f;background:#0e7c740f;border:1px solid #0e7c7438;margin-bottom:16px;padding:10px}.speed-summary p{margin:0;font-size:13px;line-height:1.45}.speed-summary p+p{margin-top:6px}.playback{flex-wrap:wrap;margin-bottom:18px}.replay-status{color:#31564f;background:#0e7c740f;border:1px solid #0e7c7438;margin:-4px 0 16px;padding:8px 10px}.replay-status p{margin:0;font-size:12px;font-weight:760}.replay-speed{gap:6px;margin-top:8px;display:flex}.replay-speed button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:#fffaf0e0;min-height:30px;padding:0 9px;font-size:11px;font-weight:820}.replay-speed button.active{color:var(--teal);background:#0e7c741f;border-color:#0e7c7452}.play-button{background:var(--ink);border-color:var(--ink);color:var(--paper-strong)}.timeline{gap:2px;display:grid}.timeline button{color:var(--muted);cursor:pointer;text-align:left;background:0 0;border:0;grid-template-columns:22px 1fr;align-items:center;min-height:32px;padding:0;font-size:13px;font-weight:800;display:grid}.timeline i{background:#17191629;width:8px;height:8px}.timeline .done{color:var(--ink)}.timeline .done i{background:var(--accent);box-shadow:0 0 0 4px #b7ff4a38}.mastery-panel{border:1px solid var(--line);background:#fffaf0b8;margin-top:22px;padding:14px}.engine-panel{border-top:1px solid var(--line);margin-top:18px;padding-top:16px}.mastery-title,.engine-title{align-items:center;gap:9px;margin-bottom:12px;display:flex}.engine-title span{color:var(--muted);font-size:12px;font-weight:750;display:block}.engine-queue{gap:8px;display:grid}.engine-counts{flex-wrap:wrap;gap:6px;margin-bottom:10px;display:flex}.engine-counts button{color:var(--teal);cursor:pointer;background:#0e7c741a;border:1px solid #0000;padding:6px 8px;font-size:12px;font-weight:850}.engine-counts button.active,.engine-counts button:hover{background:var(--accent);border-color:var(--accent-ink);color:var(--accent-ink)}.engine-queue button{background:var(--paper-strong);border:1px solid var(--line);cursor:pointer;text-align:left;justify-content:space-between;align-items:center;min-height:42px;padding:0 10px;display:flex}.engine-queue button:hover{border-color:var(--teal)}.engine-queue span{color:var(--muted);font-size:12px;font-weight:800}.engine-queue strong{color:var(--teal);font-size:18px}.engine-queue p{color:var(--muted);margin:0;font-size:13px}.threshold{background:#1719161f;height:9px;margin-bottom:12px}.threshold span{background:linear-gradient(90deg, var(--teal), var(--accent));height:100%;display:block}@media (max-width:1180px){.stage-grid{grid-template-columns:minmax(0,1fr) minmax(270px,340px)}.left-pane{display:none}.mobile-puzzle-strip{gap:8px;width:100%;margin-bottom:12px;padding-bottom:2px;display:flex;overflow-x:auto}.sudoku-board,.number-pad,.selection-status,.validation-panel{width:100%}}@media (max-width:760px){.app-shell{grid-template-columns:1fr}.rail{flex-direction:row;min-height:66px;padding:10px 14px;overflow-x:auto}.brand-mark{width:42px;margin:0 8px 0 0}.workspace{padding:16px}.topbar{flex-direction:column;align-items:flex-start;margin-bottom:18px}.topbar-actions{width:100%}.primary-action{flex:1;justify-content:center}.stage-grid{grid-template-columns:minmax(0,1fr)}.board-toolbar,.preferences-panel{flex-direction:column;align-items:stretch}.preference-toggle,.segmented{width:100%}.auto-toggle{justify-content:center;width:100%}.right-pane{padding-bottom:28px}.number-pad{grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}.number-pad button{min-height:38px}.number-pad .clear-button{gap:3px;padding:0 6px;font-size:12px}.number-pad .clear-button svg{width:14px;height:14px}.selection-status{flex-direction:column;justify-content:center;align-items:flex-start;gap:2px;padding:8px 10px}.validation-panel{padding:10px}.validation-summary,.validation-targets,.replay-status p,.speed-summary p{font-size:12px;line-height:1.35}.validation-counts{gap:4px;margin:8px 0 6px}.validation-counts span{padding:4px 6px;font-size:10px}.validation-core-checklist{margin:6px 0 8px;padding-left:6px}.validation-core-checklist .validation-targets{font-size:11px;line-height:1.3}.speed-summary{margin-bottom:12px;padding:10px}.replay-status{margin-bottom:12px;padding:8px 10px}.timeline button{font-size:12px}}
