@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-400.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-500.woff2)format("woff2")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-600.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:400;font-stretch:100%;font-display:swap;src:url(/fonts/ibm-plex-sans-variable.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:500;font-stretch:100%;font-display:swap;src:url(/fonts/ibm-plex-sans-variable.woff2)format("woff2")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-weight:600;font-stretch:100%;font-display:swap;src:url(/fonts/ibm-plex-sans-variable.woff2)format("woff2")}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/source-serif-4-variable.woff2)format("woff2")}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/source-serif-4-variable.woff2)format("woff2")}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/source-serif-4-variable.woff2)format("woff2")}*{box-sizing:border-box;margin:0;padding:0}:root{--ink:#13294b;--interactive:#2a4b86;--interactive-hv:#1d3a6b;--interactive-bg:#eef2f8;--muted:#8fa3c4;--amber:#c8781a;--amber-text:#8a5510;--amber-bg:#fdf6ec;--amber-border:#f0dcc0;--success:#2f7a4d;--success-text:#256040;--success-bg:#f1f8f3;--danger:#b3261e;--danger-bg:#fdf1f0;--danger-border:#eccecb;--surface:#f4f7fb;--surface-alt:#f7f9fc;--border:#e0e7f1;--border-strong:#d7dde7;--body:#4a5666;--body-soft:#5a6472;--white:#fff;--r-sm:6px;--r-md:7px;--r-lg:9px;--r-xl:10px;--shadow-card:0 2px 8px #2a4b8614;--shadow-pop:0 6px 18px #13294b12;--sans:"IBM Plex Sans",system-ui,sans-serif;--serif:"Source Serif 4",Georgia,serif;--mono:"IBM Plex Mono",monospace}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{font-family:var(--sans);color:var(--body);background:var(--white);min-height:100vh}:focus-visible{outline:3px solid var(--interactive);outline-offset:2px}:focus:not(:focus-visible){outline:none}a{color:var(--interactive)}button{font-family:var(--sans)}.site-footer{border-top:1px solid var(--border);text-align:center;max-width:1100px;color:var(--muted);margin:48px auto 0;padding:22px 24px 8px;font-size:12px}.topbar{border-bottom:1px solid var(--border);background:var(--white)}.topbar-inner{flex-wrap:wrap;justify-content:space-between;align-items:center;row-gap:8px;max-width:1100px;margin:0 auto;padding:14px 24px 0;display:flex}.logo{font-family:var(--serif);color:var(--ink);align-items:center;gap:8px;font-size:16px;font-weight:700;text-decoration:none;display:flex}.topbar-actions{gap:10px;margin-left:auto;display:flex}.topbar-crumb{max-width:1100px;margin:0 auto;padding:0 24px}@media (width<=768px){.topbar-inner{padding-left:68px}}.btn-ghost{font-family:var(--sans);color:var(--interactive);border:1px solid var(--border-strong);border-radius:var(--r-md);cursor:pointer;background:0 0;justify-content:center;align-items:center;min-height:40px;padding:7px 12px;font-size:12.5px;font-weight:600;text-decoration:none;display:inline-flex}.btn-ghost:hover{background:var(--surface-alt)}@media (width<=768px){.btn-ghost{min-height:44px}}.layout{grid-template-columns:1.5fr 300px;gap:32px;max-width:1100px;margin:0 auto;padding:26px 24px 60px;display:grid}#chooserMount{grid-column:1/-1}@media (width<=768px){.layout{grid-template-columns:1fr;gap:0}#solveCol{display:contents}.step-meta,.step-title,.step-subtitle{order:-2}.rail{flex-direction:column;order:-1;margin-bottom:20px;display:flex}.rail>:nth-child(3),.rail>:nth-child(4){order:-1}.diagram-wrap{margin-bottom:0}.layout>*,.options,.option,.option-text{min-width:0}.option-text,.diagram-box,.diagram-box svg{max-width:100%}}.step-meta{font-family:var(--mono);letter-spacing:.09em;color:var(--muted);margin-bottom:8px;font-size:11px}.step-title{font-family:var(--serif);color:var(--ink);margin-bottom:8px;font-size:25px;font-weight:700;line-height:1.25}@media (width<=768px){.step-title{font-size:20px}}.step-subtitle{font-family:var(--sans);color:var(--body);max-width:52ch;margin-bottom:14px;font-size:14.5px}.theory-ref{font-family:var(--sans);color:var(--muted);align-items:center;min-height:44px;margin:0 -6px;padding:0 6px;font-size:12.5px;font-weight:600;text-decoration:none;display:inline-flex}.theory-ref:hover{color:var(--interactive)}.options{flex-direction:column;gap:10px;margin-bottom:16px;display:flex}.option{text-align:left;font-family:var(--sans);color:var(--body);background:var(--white);border:1.5px solid var(--border);border-radius:var(--r-md);cursor:pointer;align-items:center;gap:12px;padding:13px 16px;font-size:14px;transition:border-color .15s,background .15s;display:flex}@media (width<=768px){.option{padding:12px 14px}.option-text{white-space:nowrap;overflow-x:auto}}.option:hover:not(:disabled){border-color:var(--interactive);background:var(--surface-alt)}.option .option-label{background:var(--surface);width:22px;height:22px;font-family:var(--mono);color:var(--muted);border-radius:5px;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.option.correct,.option.correct-hint{border-color:var(--success);background:var(--success-bg)}.option.correct .option-label,.option.correct-hint .option-label{background:var(--success);color:var(--white)}.option.reveal-correct{border-color:var(--success);background:#2f7a4d0f}.option.reveal-correct .option-label{background:var(--success);color:var(--white)}.option.wrong{border-color:var(--danger);background:var(--danger-bg)}.option.wrong .option-label{background:var(--danger);color:var(--white)}.option:disabled{opacity:.55;cursor:default}.reveal-note{font-family:var(--sans);color:var(--muted);margin-bottom:14px;font-size:12.5px}.callout{border-radius:var(--r-md);border-left:3px solid;align-items:flex-start;gap:14px;margin-bottom:14px;padding:14px 16px;font-size:13.5px;line-height:1.6;display:flex}.callout .glyph{text-align:center;flex-shrink:0;width:20px}.callout .heading{font-family:var(--serif);margin-bottom:4px;font-size:14.5px;font-weight:600;display:block}.callout-think{border-color:var(--amber);background:var(--amber-bg);color:var(--amber-text)}.callout-correct{border-color:var(--success);background:var(--success-bg);color:var(--success-text)}.callout-invalid{border-color:var(--danger);background:var(--danger-bg);color:var(--danger)}.callout-explain{border-color:var(--interactive);background:var(--interactive-bg);color:var(--interactive)}.action-row{align-items:center;gap:12px;margin-bottom:14px;display:flex}.btn-primary{background:var(--interactive);color:var(--white);border-radius:var(--r-md);font-family:var(--sans);cursor:pointer;border:none;justify-content:center;align-items:center;min-height:44px;padding:11px 22px;font-size:14px;font-weight:600;display:inline-flex}.btn-primary:hover{background:var(--interactive-hv)}.btn-outline{border:1px solid var(--border-strong);border-radius:var(--r-md);color:var(--interactive);font-family:var(--sans);cursor:pointer;background:0 0;justify-content:center;align-items:center;min-height:44px;padding:10px 18px;font-size:13px;font-weight:600;display:inline-flex}.btn-text{color:var(--muted);font-family:var(--sans);cursor:pointer;background:0 0;border:none;font-size:13px;text-decoration:underline}#revealSolutionBtn{margin-bottom:14px}.rail{border-radius:var(--r-lg);background:#fafbfd;align-self:start;padding:18px}.rail-label{font-family:var(--mono);letter-spacing:.09em;color:var(--muted);margin-bottom:10px;font-size:10px}.diagram-wrap{margin-bottom:20px;position:relative}.diagram-box{background:var(--white);border:1px solid var(--border);border-radius:var(--r-lg);justify-content:center;align-items:center;min-height:200px;display:flex;overflow:hidden}.diagram-enlarge-btn{border:1px solid var(--border);width:40px;height:40px;color:var(--muted);cursor:pointer;background:#ffffffeb;border-radius:50%;justify-content:center;align-items:center;font-size:16px;line-height:1;display:flex;position:absolute;top:8px;right:8px}.diagram-enlarge-btn:hover{color:var(--interactive);border-color:var(--interactive)}@media (width<=768px){.diagram-box{min-height:0;max-height:220px}}.diagram-lightbox-backdrop{z-index:220;background:#13294b80;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.diagram-lightbox-backdrop.show{display:flex}.diagram-lightbox{background:var(--white);border-radius:var(--r-lg);width:100%;max-width:560px;box-shadow:var(--shadow-pop);padding:20px;position:relative}.diagram-lightbox-close{color:var(--muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;width:40px;height:40px;font-size:18px;display:flex;position:absolute;top:8px;right:8px}.diagram-lightbox-body{justify-content:center;align-items:center;min-height:120px;display:flex}.plan-list{flex-direction:column;gap:8px;list-style:none;display:flex}.plan-item{font-family:var(--sans);color:var(--body-soft);align-items:center;gap:10px;padding:4px 0;font-size:13px;display:flex}.plan-item.active .plan-title{color:var(--ink);font-weight:600}@media (width<=768px){.plan-list{flex-direction:row;align-items:center;gap:8px;padding-bottom:2px;overflow-x:auto}.plan-item{flex-shrink:0;padding:0}.plan-item .plan-title{display:none}}.circle{width:22px;height:22px;font-family:var(--mono);border:1.5px solid var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.circle.solved{background:var(--success);border-color:var(--success);color:var(--white)}.circle.error{background:var(--danger);border-color:var(--danger);color:var(--white)}.circle.current{background:var(--ink);border-color:var(--ink);color:var(--white)}.circle.upcoming{color:var(--muted)}.sticky-spacer{display:none}@media (width<=768px){.sticky-spacer{height:70px;display:block}.action-row:has(#continueBtn){z-index:10;background:var(--white);margin:0 -24px -60px;padding:12px 24px;position:sticky;bottom:0;box-shadow:0 -4px 14px #13294b14}}.problem-statement{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:22px;padding:16px 20px}.statement-eyebrow{font-family:var(--mono);letter-spacing:.09em;color:var(--muted);margin-bottom:8px;font-size:10px}.problem-statement p{font-family:var(--sans);color:var(--body);font-size:14.5px;line-height:1.6}.problem-statement .hl{color:var(--ink);font-weight:600}.algo-cards{grid-template-columns:1fr 1fr;gap:16px;margin-bottom:18px;display:grid}@media (width<=600px){.algo-cards{grid-template-columns:1fr}}.algo-card{text-align:left;background:var(--white);border:1.5px solid var(--border);border-radius:var(--r-lg);cursor:pointer;font-family:var(--sans);padding:18px;transition:border-color .15s,background .15s}.algo-card:hover:not(:disabled){border-color:var(--interactive);background:var(--surface-alt)}.algo-card:disabled{cursor:default}.algo-card.disabled{opacity:.5}.algo-card.chosen-correct{border-color:var(--success);background:var(--success-bg)}.algo-card.chosen-wrong{border-color:var(--danger);background:var(--danger-bg)}.algo-card.chosen-wrong-valid{border-color:var(--interactive);background:var(--interactive-bg)}.algo-card-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.algo-tag{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);font-size:10px}.algo-count{font-family:var(--mono);letter-spacing:.09em;color:var(--muted);font-size:10px}.algo-name{font-family:var(--serif);color:var(--ink);margin-bottom:6px;font-size:17px;font-weight:600}.algo-desc{color:var(--body-soft);margin-bottom:12px;font-size:13px;line-height:1.55}.algo-step-list{flex-direction:column;gap:4px;padding-left:20px;list-style:decimal;display:flex}.algo-step-list li{color:var(--muted);font-size:12.5px;font-family:var(--mono);line-height:1.5}.algo-step-list li.more{margin-left:-20px;font-style:italic;list-style:none}.algo-cta{border-top:1px solid var(--border);font-family:var(--sans);color:var(--interactive);margin-top:12px;padding-top:10px;font-size:12.5px;font-weight:600}.algo-card:hover:not(:disabled) .algo-cta{color:var(--ink)}.algo-feedback-area{flex-direction:column;gap:14px;display:flex}.reveal-calc-btn{border:1px dashed var(--border-strong);border-radius:var(--r-md);color:var(--interactive);font-family:var(--sans);cursor:pointer;background:0 0;align-self:flex-start;padding:10px 16px;font-size:13px;font-weight:600}.algo-a-steps{flex-direction:column;gap:12px;display:flex}.algo-a-step{align-items:flex-start;gap:12px;display:flex}.algo-a-step .a-num{background:var(--danger-bg);width:22px;height:22px;color:var(--danger);font-family:var(--mono);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:11px;font-weight:700;display:flex}.a-text{color:var(--body);margin-bottom:4px;font-size:13px}.a-result{color:var(--danger);margin-top:6px;font-size:13px;line-height:1.5}.algo-a-warn{color:var(--danger);margin-top:6px;font-size:12.5px;line-height:1.5}.intro-eyebrow{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:10px}.intro-h1{font-family:var(--serif);color:var(--ink);margin-bottom:8px;font-size:27px;font-weight:700}.intro-lead{color:var(--body);text-wrap:pretty;max-width:58ch;margin-bottom:20px;font-size:14.5px}.intro-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:20px;padding:22px}.intro-card h3{font-family:var(--serif);color:var(--ink);margin-bottom:8px;font-size:17px;font-weight:600}.intro-sub{color:var(--body-soft);margin-bottom:16px;font-size:13.5px}.insight-grid{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px;display:grid}@media (width<=600px){.insight-grid{grid-template-columns:1fr}}.insight-box{background:var(--white);border:1px solid var(--border);border-radius:var(--r-md);padding:14px}.ib-label{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:6px;font-size:9.5px}.ib-title{font-family:var(--serif);color:var(--ink);margin-bottom:6px;font-size:15px;font-weight:600}.ib-desc{color:var(--body-soft);margin-bottom:8px;font-size:12.5px;line-height:1.55}.ib-result{color:var(--interactive);font-size:12px;font-weight:600}.steps-overview{border-top:1px solid var(--border);padding-top:14px}.so-title{font-family:var(--mono);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin-bottom:10px;font-size:10px}.so-row{align-items:center;gap:10px;padding:4px 0;display:flex}.so-num{background:var(--surface);width:20px;height:20px;color:var(--muted);font-family:var(--mono);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:10px;font-weight:700;display:flex}.so-text{color:var(--body);font-size:13px}.app-shell{min-height:100vh;display:flex}.shell-main{flex:1;min-width:0}.completion-bar{background:var(--success);height:4px}.completion-hero{text-align:center;background:var(--success-bg);padding:36px 24px}.check-circle{background:var(--success);width:46px;height:46px;color:var(--white);border-radius:50%;justify-content:center;align-items:center;margin:0 auto 14px;font-size:22px;display:flex}.completion-hero h2{font-family:var(--serif);color:var(--ink);margin-bottom:8px;font-size:26px;font-weight:700}.completion-score{font-family:var(--serif);margin-bottom:6px}.completion-score .score-num{color:var(--success);font-size:28px;font-weight:700}.completion-score .score-den{color:var(--muted);font-size:16px;font-weight:600}.completion-meta{font-family:var(--sans);color:var(--body-soft);font-size:13px}.completion-body{grid-template-columns:1fr 230px;gap:32px;max-width:1100px;margin:0 auto;padding:30px 24px 60px;display:grid}@media (width<=768px){.completion-body{grid-template-columns:1fr}}.solution-head{font-family:var(--mono);letter-spacing:.09em;color:var(--muted);margin-bottom:12px;font-size:10px}.sol-row{border-radius:var(--r-md);border:1px solid var(--border);font-family:var(--sans);align-items:baseline;gap:12px;margin-bottom:8px;padding:12px 14px;display:flex}.sol-check{text-align:center;flex-shrink:0;width:16px;font-size:14px;font-weight:700}.sol-row.success .sol-check{color:var(--success)}.sol-row.hint .sol-check{color:var(--amber)}.sol-row.error .sol-check{color:var(--danger)}.sol-row.success{background:var(--success-bg);border-color:var(--success)}.sol-row.hint{background:var(--amber-bg);border-color:var(--amber-border)}.sol-row.error{background:var(--danger-bg);border-color:var(--danger-border)}.sol-label{color:var(--body);flex:1;font-size:13.5px}.sol-note{font-size:11px}.sol-row.hint .sol-note{color:var(--amber-text)}.sol-row.error .sol-note{color:var(--danger)}.sol-result{color:var(--ink);font-size:13.5px}.completion-rail{flex-direction:column;gap:12px;display:flex}.section-progress-label{font-family:var(--mono);letter-spacing:.09em;color:var(--muted);font-size:10px}.up-next-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);margin-bottom:4px;padding:16px}.up-next-card.section-complete{background:var(--success-bg);border-color:var(--success)}.up-next-label{font-family:var(--mono);letter-spacing:.09em;color:var(--muted);margin-bottom:6px;font-size:10px}.up-next-title{font-family:var(--serif);color:var(--ink);font-size:14.5px;font-weight:600}.btn-primary.full,.btn-outline.full{text-align:center;box-sizing:border-box;width:100%;text-decoration:none;display:block}.btn-text-link{text-align:center;font-family:var(--sans);color:var(--muted);font-size:13px;text-decoration:underline}.ref-panel{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--r-xl);z-index:99;width:400px;max-width:calc(100vw - 40px);box-shadow:var(--shadow-pop);scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;overscroll-behavior:contain;max-height:calc(100dvh - 80px);padding:0 20px 20px;display:none;position:fixed;top:60px;right:20px;overflow-y:auto}.ref-panel::-webkit-scrollbar{width:6px}.ref-panel::-webkit-scrollbar-track{background:0 0}.ref-panel::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.ref-panel.open{display:block}.ref-panel h3{z-index:1;background:var(--surface);border-bottom:1px solid var(--border);font-family:var(--mono);text-transform:uppercase;letter-spacing:.06em;color:var(--interactive);margin:0 -20px 14px;padding:16px 20px 12px;font-size:11px;font-weight:700;position:sticky;top:0}.ref-panel .ref-section{margin-bottom:18px}.ref-panel .ref-section-title{font-family:var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin-bottom:8px;font-size:10.5px;font-weight:600}.ref-formula-block{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--r-md);margin-bottom:8px;padding:10px 12px}.ref-label{font-family:var(--sans);color:var(--body-soft);text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;font-size:9.5px}.ref-label .katex,.ref-panel .ref-section-title .katex{letter-spacing:normal;text-transform:none}.ref-expr{color:var(--ink);text-align:center;padding:2px 0;font-size:13.5px;overflow:auto hidden}.ref-empty{font-family:var(--sans);color:var(--muted);text-align:center;padding:20px 0;font-size:13px}@media (width<=600px){.ref-panel{width:auto;max-width:none;left:8px;right:8px;bottom:calc(10px + env(safe-area-inset-bottom,0px));max-height:none}}.leave-modal-backdrop{z-index:200;background:#13294b59;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.leave-modal-backdrop.show{display:flex}.leave-modal{background:var(--white);border-radius:var(--r-lg);width:100%;max-width:380px;box-shadow:var(--shadow-pop);padding:24px}.leave-modal h3{font-family:var(--serif);color:var(--ink);margin-bottom:10px;font-size:18px;font-weight:700}.leave-modal p{font-family:var(--sans);color:var(--body);margin-bottom:20px;font-size:13.5px;line-height:1.6}.leave-modal-actions{justify-content:flex-end;gap:10px;display:flex}.tour-backdrop{z-index:210;background:#13294b59;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.tour-backdrop.show{display:flex}.tour{background:var(--white);border-radius:var(--r-lg);width:100%;max-width:380px;box-shadow:var(--shadow-pop);padding:24px}.tour-top{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.tour-dots{gap:6px;display:flex}.tour-dot{background:var(--border-strong);border-radius:50%;width:6px;height:6px}.tour-dot.on{background:var(--interactive)}.tour-close{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:4px;font-size:15px}.tour-fig{justify-content:center;margin-bottom:16px;display:flex}.tour-body h3{font-family:var(--serif);color:var(--ink);margin-bottom:8px;font-size:17px;font-weight:700}.tour-body p{font-family:var(--sans);color:var(--body);margin-bottom:18px;font-size:13.5px;line-height:1.6}.tour-actions{align-items:center;gap:10px;display:flex}.tour-actions .spacer{flex:1}
