:root{color-scheme:light;--ink: #1a1b1e;--muted: #5c6570;--line: #e2e4e8;--canvas: #ffffff;--panel: #f5f6f8;--elevated: #eef0f3;--blue: #5e1f2e;--blue-light: #8a3a48;--blue-soft: color-mix(in srgb, #5e1f2e 9%, transparent);--accent: #c4922e;--teal: #1a5c48;--teal-soft: color-mix(in srgb, #1a5c48 12%, transparent);--red: #9c1f2a;--red-soft: color-mix(in srgb, #9c1f2a 11%, transparent);--warning: #b07a1a;--on-primary: #ffffff;--focus: #5e1f2e;--focus-ring: color-mix(in srgb, #5e1f2e 32%, transparent);--surface-hover: #eef0f3;--blue-hover: #471622;--blue-hover-soft: color-mix(in srgb, #5e1f2e 5%, transparent);--blue-hover-line: #c4922e;--secondary-hover-line: #c8ccd3;--disabled: #a8b0bc;--progress-track: #e2e4e8;--media-canvas: #e8eaee;--scrollbar-thumb: color-mix(in srgb, #5c6570 35%, transparent);--scrollbar-thumb-hover: color-mix(in srgb, #5c6570 55%, transparent);--viz-region: #c4887a;--viz-shell: #c4922e;--viz-solid: #8a3a48;--viz-water: #1a5c48;--viz-ink: #5e1f2e;--page-stripe: color-mix(in srgb, #5e1f2e 3%, transparent);--radius: 10px;--radius-sm: 8px;--ease-out: cubic-bezier(.16, 1, .3, 1);--z-sticky: 10;--z-dock: 40;--dock-bg: color-mix(in srgb, #1a1b1e 88%, transparent);--dock-bg-solid: #1c1d21;--dock-elevated: color-mix(in srgb, #ffffff 14%, transparent);--dock-elevated-strong: color-mix(in srgb, #ffffff 22%, transparent);--dock-line: color-mix(in srgb, #ffffff 12%, transparent);--dock-ink: #f4f5f7;--dock-muted: color-mix(in srgb, #f4f5f7 62%, transparent);--dock-active: #5e1f2e;--font-ui: "DM Sans", "Segoe UI", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-display: "Cormorant Garamond", Georgia, "Times New Roman", serif;--font-body: "DM Sans", "Segoe UI", ui-sans-serif, system-ui, -apple-system, sans-serif;--font-math-ui: "DM Sans", "Segoe UI", ui-sans-serif, system-ui, sans-serif;--font-base: 16px;--ui-scale: 1}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-x:hidden;overflow-x:clip;max-width:100%}body{margin:0;background-color:var(--canvas);background-image:none;color:var(--ink);font:var(--font-base)/1.55 var(--font-body);-webkit-font-smoothing:antialiased;overflow-x:hidden;overflow-x:clip;max-width:100%;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}#app,.app-shell{max-width:100%;min-width:0}button,select,input{font-family:var(--font-ui)}button,a,[role=button],[role=option],[role=radio]{touch-action:manipulation;-webkit-tap-highlight-color:color-mix(in srgb,var(--blue) 16%,transparent)}button:focus-visible,select:focus-visible,input:focus-visible,a:focus-visible{outline:3px solid var(--focus);outline-offset:2px;box-shadow:0 0 0 6px var(--focus-ring)}button:not(:disabled),select,input{cursor:pointer}.topbar{position:sticky;top:0;z-index:var(--z-sticky);min-height:0;padding:max(8px,env(safe-area-inset-top,0px)) clamp(12px,1.5vw,20px) 8px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--canvas)}.brand,.brand-button{display:flex;align-items:center;gap:8px;color:var(--blue);font-family:var(--font-display);font-size:1.25rem;font-weight:600;letter-spacing:-.02em;text-decoration:none;white-space:nowrap;border:0;background:transparent;padding:0;min-height:36px}.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:6px;background:var(--blue);color:var(--on-primary);font:600 18px/1 var(--font-display)}.topbar-meta{display:flex;align-items:center;gap:10px;color:var(--muted);font-family:var(--font-ui);font-size:.8125rem;font-weight:600}.topbar-topic{color:var(--muted)}.topbar-progress{font-variant-numeric:tabular-nums;color:var(--ink);font-weight:700;min-width:2.75rem;text-align:center;padding:4px 8px;border:1px solid var(--line);border-radius:999px;background:var(--panel)}.landing{min-height:100vh;display:flex;flex-direction:column}.landing-top{padding:max(16px,env(safe-area-inset-top,0px)) clamp(16px,3vw,36px) 16px;border-bottom:1px solid var(--line);background:var(--canvas)}.landing-main{width:min(960px,100%);margin:0 auto;padding:clamp(24px,4vw,40px) clamp(12px,2vw,20px) max(40px,calc(24px + env(safe-area-inset-bottom,0px)))}.landing-title{margin:0 0 28px;font-family:var(--font-ui);font-size:clamp(1.75rem,4vw + .5rem,2.25rem);font-weight:700;letter-spacing:-.025em;line-height:1.2;text-wrap:balance;color:var(--ink)}.landing-section{margin-bottom:28px}.landing-label{margin:0 0 12px;font-family:var(--font-ui);font-size:.8125rem;font-weight:700;letter-spacing:.01em;text-transform:none;color:var(--muted)}.topic-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:12px}.topic-card{display:grid;gap:6px;padding:16px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);text-align:left;transition:border-color .16s var(--ease-out),background-color .16s var(--ease-out)}.topic-card:hover,.topic-card:active{border-color:var(--blue-hover-line);background:var(--blue-hover-soft)}.topic-card.selected{border-color:var(--blue);background:var(--blue-soft)}.topic-card-icon{font-family:var(--font-display);font-size:22px;line-height:1;color:var(--accent)}.topic-card-label{font-family:var(--font-ui);font-size:1rem;font-weight:700}.topic-card-desc{font-family:var(--font-ui);font-size:.8125rem;color:var(--muted);font-weight:500;line-height:1.45}.diff-row{display:flex;flex-wrap:wrap;gap:8px}.diff-chip{min-height:48px;padding:10px 20px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--ink);font-family:var(--font-ui);font-size:.875rem;font-weight:700;letter-spacing:.01em;transition:border-color .16s var(--ease-out),background-color .16s var(--ease-out)}.diff-chip:hover,.diff-chip:active{border-color:var(--blue-hover-line)}.diff-chip.selected{border-color:var(--blue);background:var(--blue-soft);color:var(--ink)}.landing-start{width:100%;max-width:360px;margin-top:8px}.load-error{max-width:40ch;margin:10px 0 0;color:var(--red);font-family:var(--font-ui);font-size:.875rem;font-weight:600;line-height:1.45}.workspace{width:100%;max-width:100%;min-width:0;margin:0 auto;padding:6px 8px calc(3.75rem + env(safe-area-inset-bottom,0px))}.content-grid{display:grid;grid-template-columns:minmax(240px,2fr) minmax(0,3fr);align-items:start;gap:10px;width:100%;max-width:100%;min-width:0}.visual-panel,.problem-panel,.solution-panel{min-width:0;max-width:100%;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}.visual-panel{grid-column:1;grid-row:1 / -1;position:sticky;top:calc(48px + env(safe-area-inset-top,0px));display:flex;flex-direction:column;height:calc(100dvh - 56px - env(safe-area-inset-top,0px) - 4rem);max-height:calc(100dvh - 56px - env(safe-area-inset-top,0px) - 4rem);overflow:hidden}.problem-panel,.solution-panel{grid-column:2}.visual-head{flex:0 0 auto;padding:6px 10px;background:var(--panel);border-bottom:1px solid color-mix(in srgb,var(--line) 85%,transparent)}.visual-head-row{display:flex;align-items:center;gap:10px;min-width:0}.visual-camera-hint{flex:0 0 auto;display:grid;place-items:center;width:44px;height:44px;margin:0 0 0 auto;padding:0;border:1px solid var(--line);border-radius:50%;background:var(--elevated);color:var(--muted);font-family:var(--font-ui);font-size:.875rem;font-weight:700;line-height:1;cursor:help}.visual-camera-hint:hover,.visual-camera-hint:active{border-color:var(--secondary-hover-line);color:var(--ink)}.step-track{display:flex;flex-wrap:nowrap;flex:1 1 auto;gap:4px;margin:0;padding:0;list-style:none;min-width:0;overflow-x:auto;scrollbar-width:none}.step-track::-webkit-scrollbar{display:none}.step-item-wrap{margin:0;padding:0;flex:0 0 auto}.step-item{min-height:44px;padding:3px 9px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-family:var(--font-ui);font-size:.6875rem;font-weight:700;cursor:pointer;transition:border-color .16s var(--ease-out),background-color .16s var(--ease-out),color .16s var(--ease-out)}.step-item:hover{border-color:var(--blue-hover-line);color:var(--ink)}.step-item.active{border-color:var(--blue);background:var(--blue-soft);color:var(--ink)}.step-detail{margin:4px 0 0;color:var(--muted);font-family:var(--font-ui);font-size:.75rem;font-weight:500;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#three-host,.viz-host{position:relative;flex:1 1 auto;min-height:0;height:auto;background:radial-gradient(120% 90% at 50% 42%,color-mix(in srgb,var(--media-canvas) 92%,#fff) 0%,var(--media-canvas) 55%,color-mix(in srgb,var(--media-canvas) 88%,var(--ink)) 100%);isolation:isolate}.viz-host.is-loading .legacy-animation,.viz-host.has-error .legacy-animation{opacity:0;pointer-events:none}.viz-loading{position:absolute;inset:0;z-index:1;display:grid;place-content:center;gap:12px;padding:24px;background:var(--media-canvas)}.viz-loading.hidden,.viz-host:not(.is-loading) .viz-loading{display:none}.viz-error{position:absolute;inset:0;z-index:2;display:grid;place-content:center;justify-items:center;gap:14px;padding:24px;background:var(--media-canvas);text-align:center}.viz-error[hidden]{display:none!important}.viz-error-text{margin:0;max-width:28ch;color:var(--ink);font-family:var(--font-ui);font-size:.875rem;font-weight:600;line-height:1.45}.viz-loading-bar{display:block;width:min(240px,70%);height:6px;margin:0 auto;border-radius:999px;background:var(--progress-track);overflow:hidden;position:relative}.viz-loading-bar:after{content:"";position:absolute;inset:0;width:40%;border-radius:inherit;background:var(--blue);animation:viz-load-slide 1.1s var(--ease-out) infinite}@keyframes viz-load-slide{0%{transform:translate(-120%)}to{transform:translate(320%)}}.viz-loading-text{color:var(--muted);font-family:var(--font-ui);font-size:.8125rem;font-weight:600;text-align:center}.legacy-animation{display:block;width:100%;height:100%;border:0;background:transparent;transition:opacity .2s var(--ease-out);cursor:grab;touch-action:none}.legacy-animation:focus-visible{outline:3px solid var(--focus);outline-offset:2px}.legacy-animation:active{cursor:grabbing}.segmented{display:flex;padding:3px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.segmented button{min-height:44px;border:0;border-radius:6px;background:transparent;color:var(--muted);padding:6px 14px;font-family:var(--font-ui);font-size:.875rem;font-weight:700}.segmented button.selected{background:var(--blue-soft);color:var(--ink)}.text-button{min-height:40px;border:0;background:transparent;color:var(--blue);padding:4px 2px;font-family:var(--font-ui);font-size:.875rem;font-weight:700;white-space:nowrap}.text-button:hover:not(:disabled){color:var(--blue-hover)}.problem-panel{padding:16px 18px 18px;background:var(--panel)}.question-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.question-number{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;color:var(--muted);font-family:var(--font-ui);font-size:.875rem;font-weight:600;letter-spacing:.02em}.question-index{color:var(--ink);font-family:var(--font-ui);font-size:.875rem;font-weight:700;font-variant-numeric:tabular-nums;padding:3px 10px;border-radius:999px;background:var(--elevated);border:1px solid var(--line)}.problem-panel h1#question-title,.problem-panel h1{margin:0 0 16px;font-family:var(--font-ui);font-size:1.375rem;font-weight:600;line-height:1.4;letter-spacing:-.015em;color:var(--ink);text-wrap:pretty;max-width:42ch}.problem-panel h1 .katex{font-size:1.12em}.choices{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;min-width:0;max-width:100%}.choice{display:flex;align-items:center;gap:14px;width:100%;min-width:0;max-width:100%;min-height:56px;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--canvas);color:var(--ink);font-family:var(--font-ui);text-align:left;transition:border-color .16s var(--ease-out),background-color .16s var(--ease-out)}.choice.choice-long{align-items:flex-start;min-height:0;padding-top:12px;padding-bottom:12px}.choice-status{margin-left:auto;flex:0 0 auto;font-family:var(--font-ui);font-size:1.05rem;font-weight:700;line-height:1}.choice.correct .choice-status{color:var(--teal)}.choice.incorrect .choice-status{color:var(--red)}.choice:hover:not(:disabled){border-color:color-mix(in srgb,var(--blue) 35%,var(--line));background:var(--blue-hover-soft)}.choice:active:not(:disabled){background:var(--blue-soft)}.choice.selected{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--canvas));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 40%,transparent)}.choice.correct{border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:var(--teal-soft);box-shadow:none}.choice.incorrect{border-color:color-mix(in srgb,var(--red) 40%,var(--line));background:var(--red-soft);box-shadow:none}.choice:disabled{color:var(--ink);cursor:default}.choice-letter{display:grid;flex:0 0 34px;place-items:center;width:34px;height:34px;border:1px solid var(--line);border-radius:50%;background:var(--panel);color:var(--muted);font-family:var(--font-ui);font-size:.9375rem;font-weight:700}.choice-math{min-width:0;overflow-x:auto;line-height:1.4;font-family:var(--font-ui);font-size:1.125rem}.choice-math .katex{font-size:1.28em}.choice-long .choice-math{overflow-x:auto;-webkit-overflow-scrolling:touch;white-space:nowrap}.choice-long .choice-math .katex{font-size:1.12em}.choice-long .choice-math .katex-display{margin:0;text-align:left}.selected .choice-letter{border-color:var(--blue);background:var(--blue);color:var(--on-primary)}.correct .choice-letter{border-color:var(--teal);background:var(--teal);color:var(--on-primary)}.incorrect .choice-letter{border-color:var(--red);background:var(--red);color:var(--on-primary)}.primary,.secondary{min-height:48px;border-radius:var(--radius-sm);padding:12px 18px;font-family:var(--font-ui);font-size:1.0625rem;font-weight:700;letter-spacing:.01em;transition:background-color .16s var(--ease-out),border-color .16s var(--ease-out)}.primary{border:1px solid var(--blue);background:var(--blue);color:var(--on-primary)}.primary:hover:not(:disabled){background:var(--blue-hover);border-color:var(--blue-hover)}.primary:active:not(:disabled),.secondary:active:not(:disabled){filter:brightness(.97)}.primary:disabled{border-color:var(--disabled);background:var(--disabled);cursor:not-allowed}.secondary{border:1px solid var(--line);background:var(--canvas);color:var(--ink)}.secondary:hover:not(:disabled){border-color:var(--secondary-hover-line);background:var(--surface-hover)}.secondary:disabled{color:var(--muted);opacity:.62;cursor:not-allowed}.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}.problem-navigator{position:fixed;left:50%;bottom:max(10px,env(safe-area-inset-bottom,0px));z-index:var(--z-dock);display:flex;flex-direction:row;align-items:center;gap:6px;width:max-content;max-width:calc(100dvw - 16px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));margin:0;padding:5px 6px 5px 5px;border:1px solid var(--dock-line);border-radius:999px;background:var(--dock-bg);color:var(--dock-ink);box-shadow:0 10px 28px color-mix(in srgb,#000 34%,transparent),0 1px 4px color-mix(in srgb,#000 18%,transparent),inset 0 1px color-mix(in srgb,#fff 10%,transparent);backdrop-filter:blur(16px) saturate(1.15);-webkit-backdrop-filter:blur(16px) saturate(1.15);transform:translate(-50%)}@supports not ((backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px))){.problem-navigator{background:var(--dock-bg-solid)}}.problem-navigator button:focus-visible{outline:2px solid color-mix(in srgb,#fff 75%,var(--blue));outline-offset:2px;box-shadow:0 0 0 4px color-mix(in srgb,#fff 18%,transparent)}.problem-navigator .secondary,.problem-navigator .problem-nav-step{border:0;background:transparent;color:var(--dock-ink);box-shadow:none}.problem-navigator .secondary:hover:not(:disabled),.problem-navigator .problem-nav-step:hover:not(:disabled){background:var(--dock-elevated);border-color:transparent;color:var(--dock-ink)}.problem-navigator .secondary:disabled,.problem-navigator .problem-nav-step:disabled{color:var(--dock-muted);opacity:.45;background:transparent}.problem-nav-step{flex:0 0 auto;min-height:36px;min-width:36px;padding:0;border-radius:999px;font-size:.9375rem;line-height:1}.problem-nav-position{flex:0 0 auto;margin:0;padding:0 2px;color:var(--dock-muted);font-family:var(--font-ui);font-size:.8125rem;font-weight:600;letter-spacing:.01em;line-height:1;white-space:nowrap;-webkit-user-select:none;user-select:none}.problem-nav-current{color:var(--dock-ink);font-weight:700;font-variant-numeric:tabular-nums}.problem-nav-of{margin:0 .28em;font-weight:500;opacity:.85}.problem-nav-total{font-variant-numeric:tabular-nums}.problem-nav-action{flex:0 0 auto;min-height:40px;min-width:5.5rem;margin:0;padding:0 18px;border-radius:999px;font-size:.9375rem;font-weight:700;letter-spacing:.01em;line-height:1;white-space:nowrap;box-shadow:none}@media(prefers-reduced-motion:reduce){.problem-nav-step,.problem-nav-action{transition:none}}.solution-panel{margin:0;padding:0 0 12px;overflow-x:hidden;overflow-x:clip;overflow-y:visible;max-width:100%;scroll-margin-top:72px;scroll-margin-bottom:calc(4rem + env(safe-area-inset-bottom,0px))}.solution-equation-math,.solution-step-text .katex-display,.solution-answer-math,.solution-step-title,.solution-step-text,.solution-insight-text{max-width:100%;min-width:0}.solution-step-body{min-width:0;max-width:100%}.solution-banner{padding:14px 16px 12px;border-bottom:1px solid var(--line);background:var(--elevated)}.solution-banner.is-correct{background:var(--teal-soft)}.solution-banner.is-incorrect{background:var(--blue-soft)}.solution-banner h2{margin:0;font-family:var(--font-ui);font-size:1.125rem;font-weight:700;letter-spacing:-.01em;line-height:1.3;color:var(--ink)}.solution-equations{margin:12px 14px 4px;padding:12px 14px 10px;border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--canvas);min-width:0;max-width:calc(100% - 28px);box-sizing:border-box}.solution-equations-label{margin:0 0 8px;font-family:var(--font-ui);font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.solution-equations-list{list-style:none;margin:0;padding:0;display:grid;gap:8px}.solution-equation-item{margin:0}.solution-equation-math{width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding:10px 12px;border-radius:8px;background:var(--canvas);border:1px solid var(--line);color:var(--ink)}.solution-equation-math .katex-display{margin:0;text-align:left;max-width:none}.solution-equation-math .katex{font-size:1.35em}.solution-steps{list-style:none;margin:0;padding:8px 0;min-width:0;max-width:100%}.solution-step{display:grid;grid-template-columns:32px minmax(0,1fr);gap:10px 12px;padding:12px 16px;border-bottom:1px solid color-mix(in srgb,var(--line) 80%,transparent);min-width:0;max-width:100%}.solution-step:last-child{border-bottom:0}.solution-step-marker{display:grid;place-items:center;width:28px;height:28px;margin-top:2px;border-radius:999px;background:var(--blue-soft);color:var(--blue);font-family:var(--font-ui);font-size:.75rem;font-weight:700;font-variant-numeric:tabular-nums}.solution-step-title{margin:0 0 6px;font-family:var(--font-ui);font-size:1.0625rem;font-weight:700;letter-spacing:-.01em;line-height:1.35;text-wrap:balance;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}.solution-step-text{color:var(--ink);font-family:var(--font-ui);font-size:1.0625rem;line-height:1.55;max-width:min(72ch,100%);overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;text-wrap:pretty}.solution-step-text .katex-display{display:block;width:100%;box-sizing:border-box;margin:10px 0;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;padding:10px 12px;border-radius:8px;background:var(--canvas);border:1px solid var(--line);text-align:left}.solution-step-text .katex-display>.katex{white-space:nowrap}.solution-step-text .katex{font-size:1.35em}.solution-answer{margin:0 14px 14px;padding:12px 14px;border-radius:var(--radius-sm);border:1px solid color-mix(in srgb,var(--blue) 22%,var(--line));background:var(--blue-soft);min-width:0;max-width:calc(100% - 28px);box-sizing:border-box}.solution-answer-label{margin:0 0 6px;font-family:var(--font-ui);font-size:.6875rem;font-weight:700;color:var(--blue);letter-spacing:.04em;text-transform:uppercase}.solution-answer-math{width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;color:var(--ink)}.solution-answer-math .katex-display{margin:0;text-align:left;max-width:none}.solution-answer-math .katex{font-size:1.5em}.solution-insight{margin:0 14px 14px;padding:12px 14px;border-radius:var(--radius-sm);background:var(--canvas);border:1px solid var(--line);min-width:0;max-width:calc(100% - 28px);box-sizing:border-box}.solution-insight-label{margin:0 0 4px;font-family:var(--font-ui);font-size:.6875rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.solution-insight-text{margin:0;font-family:var(--font-ui);font-size:1rem;line-height:1.55;color:var(--ink);max-width:min(70ch,100%);overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch;text-wrap:pretty}.solution-method-title{margin:18px 16px 8px;font-family:var(--font-ui);font-size:.8125rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.solution-method-block{margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}.solution-method-note{margin:0 16px 10px;font-family:var(--font-body);font-size:.875rem;line-height:1.5;color:var(--muted)}.slice-hint{margin-top:4px}@media(max-width:1100px){.content-grid{grid-template-columns:minmax(200px,2fr) minmax(0,3fr)}}@media(max-width:860px){.content-grid{display:flex;flex-direction:column;gap:12px;width:100%;max-width:100%;min-width:0}.problem-panel{order:1}.visual-panel{order:2}.solution-panel{order:3}.visual-panel,.problem-panel,.solution-panel{grid-column:auto;grid-row:auto;width:100%;max-width:100%;min-width:0;box-sizing:border-box}.visual-panel{position:static;height:auto;max-height:none}.workspace{padding-bottom:calc(4.25rem + env(safe-area-inset-bottom,0px))}#three-host,.viz-host{flex:none;height:min(42svh,420px);min-height:300px;max-width:100%}.visual-head-row{flex-wrap:wrap;row-gap:6px}.step-track{flex:1 1 100%;order:3}.step-detail{white-space:normal;overflow:visible;text-overflow:unset}.solution-panel{overflow-x:clip}.solution-equations,.solution-answer,.solution-insight,.solution-method-block{min-width:0;box-sizing:border-box}.solution-equations,.solution-answer,.solution-insight{margin-inline:10px;max-width:calc(100% - 20px)}.solution-method-block{max-width:100%}.solution-step-text .katex,.solution-equation-math .katex{font-size:1.12em}.solution-answer-math .katex{font-size:1.2em}.problem-panel h1#question-title,.problem-panel h1{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}}@media(max-width:600px){.topbar{gap:8px;padding-inline:12px}.brand-button span:not(.brand-mark){max-width:9ch;overflow:hidden;text-overflow:ellipsis}.topbar-meta{gap:6px;min-width:0}.topbar-topic{max-width:12ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace{padding:10px 10px calc(4rem + env(safe-area-inset-bottom,0px))}.problem-panel{padding:14px 14px 16px}.problem-panel h1,.problem-panel h2{font-size:1.5rem;margin-bottom:14px}.problem-panel h2 .katex{font-size:1.05em}.question-top{gap:8px;align-items:flex-start}.question-number{min-width:0;line-height:1.35}#three-host,.viz-host{height:min(42svh,360px);min-height:240px}.choices{grid-template-columns:minmax(0,1fr);gap:8px}.choice{min-height:52px;padding:12px 14px}.choice-math{flex:1 1 auto;min-width:0;-webkit-overflow-scrolling:touch}.problem-navigator{left:50%;right:auto;bottom:max(8px,env(safe-area-inset-bottom,0px));width:max-content;max-width:calc(100dvw - 12px - env(safe-area-inset-left,0px) - env(safe-area-inset-right,0px));padding:4px 5px 4px 4px;gap:6px;border-radius:999px;transform:translate(-50%)}.problem-nav-step{min-height:36px;min-width:36px}.problem-nav-position{font-size:.75rem}.problem-nav-action{min-height:40px;min-width:5.25rem;padding:0 16px;font-size:.875rem}.topic-grid{grid-template-columns:1fr 1fr;gap:10px}.topic-card{min-height:44px;padding:14px 12px}.landing-start{max-width:none;min-height:48px}.landing-main{padding-top:20px}.landing-title{margin-bottom:20px}.solution-banner{padding:12px 14px}.solution-banner h2{font-size:1.35rem}.solution-step{grid-template-columns:28px minmax(0,1fr);padding:12px;gap:10px}.solution-step-marker{width:28px;height:28px;font-size:.8125rem}.solution-step-title{margin-bottom:5px;font-size:1.05rem;line-height:1.25}.solution-step-text{line-height:1.55}.solution-step-text .katex{font-size:1.05em}.solution-equations{margin-inline:8px;max-width:calc(100% - 16px);padding:10px 10px 8px}.solution-equation-math{padding:7px 8px}.solution-equation-math .katex{font-size:1em}.solution-answer{margin-inline:8px;max-width:calc(100% - 16px);padding:12px}.solution-answer-math .katex{font-size:1.05em}.solution-insight{margin-inline:8px;margin-bottom:12px;max-width:calc(100% - 16px);padding:11px 12px}.solution-method-title,.solution-method-note{margin-inline:12px}.solution-equation-math,.solution-step-text .katex-display,.solution-answer-math,.solution-step-title,.solution-step-text{-webkit-overflow-scrolling:touch}.visual-camera-hint{width:40px;height:40px}.model-controls{padding:10px 10px 12px;gap:10px}.model-controls .segmented button{min-height:44px;padding:8px 10px;font-size:.8125rem}.control-label{min-width:3.2rem}.control-actions{gap:8px}.control-btn{min-height:44px;flex:1}.control-actions .text-button{min-height:44px;padding:8px 10px;font-size:.875rem}}@media(max-width:360px){.topic-grid{grid-template-columns:1fr}.topbar-topic{display:none}.brand-mark{width:32px;height:32px;font-size:20px}.label-rest{display:none}}@media(max-height:480px)and (orientation:landscape){#three-host,.viz-host{height:min(58vh,240px);min-height:180px}.visual-panel{position:static;height:auto;max-height:none}.step-detail{display:none}.model-controls{padding:6px 8px 8px;gap:6px}.control-grid{grid-template-columns:1fr 1fr auto}.control-actions{grid-column:3;grid-row:1 / 3;flex-direction:column}}@media(pointer:coarse){.brand-button,.diff-chip,.topic-card,.text-button,.segmented button,.primary,.secondary,.control-btn{min-height:44px}.problem-navigator .secondary,.problem-navigator .problem-nav-step{min-height:36px}.problem-navigator .primary,.problem-navigator .problem-nav-action{min-height:44px}.step-item{min-height:44px;padding:6px 12px;font-size:.75rem}.visual-camera-hint{width:44px;height:44px}.problem-nav-step{min-height:36px;min-width:36px}.model-controls input[type=range]{min-height:44px}.choice{min-height:56px}.topic-card:active,.diff-chip:active,.choice:active:not(:disabled),.step-item:active{border-color:var(--blue-hover-line);background:var(--blue-hover-soft);color:var(--ink)}}@media(hover:none){.topic-card:hover{border-color:var(--line);background:var(--panel)}.topic-card.selected:hover{border-color:var(--blue);background:var(--blue-soft)}.diff-chip:hover{border-color:var(--line);background:var(--panel)}.diff-chip.selected:hover{border-color:var(--blue);background:var(--blue-soft)}.choice:hover:not(:disabled){border-color:var(--line);background:var(--panel)}.choice.selected:hover:not(:disabled){border-color:var(--blue);background:var(--blue-soft)}.step-item:hover{border-color:var(--line);color:var(--muted);background:transparent}.step-item.active:hover{border-color:var(--blue);background:var(--blue-soft);color:var(--ink)}.problem-navigator .secondary:hover:not(:disabled),.problem-navigator .problem-nav-step:hover:not(:disabled){background:transparent;color:var(--dock-ink)}.primary:hover:not(:disabled){background:var(--blue);border-color:var(--blue)}.secondary:hover:not(:disabled){border-color:var(--line);background:var(--panel)}.text-button:hover:not(:disabled){color:var(--blue)}.visual-camera-hint:hover{border-color:var(--line);color:var(--muted)}}body::-webkit-scrollbar{width:6px;height:6px}body::-webkit-scrollbar-track{background:transparent}body::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:3px}body::-webkit-scrollbar-thumb:hover{background:var(--scrollbar-thumb-hover)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.viz-loading-bar:after{animation:none;width:55%;transform:none}}.model-controls{flex:0 0 auto;display:grid;gap:8px;align-items:stretch;min-height:0;padding:8px 10px 10px;border-top:1px solid var(--line);background:color-mix(in srgb,var(--panel) 92%,var(--elevated))}.model-controls .segmented{width:100%}.model-controls .segmented button{flex:1;min-height:36px;padding:4px 10px;font-size:.8125rem}.control-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:6px 10px;align-items:center;width:100%}.control-field{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;min-width:0;color:var(--muted);font-family:var(--font-ui);font-size:.8125rem;font-weight:700}.control-field-wide{grid-column:1 / 3}.control-label{min-width:3.4rem;color:var(--muted);font-family:var(--font-ui);font-size:.75rem;font-weight:700}.control-field input[type=range]{width:100%;min-width:0;accent-color:var(--blue)}.control-field output{min-width:2.4rem;text-align:right;font-family:var(--font-ui);font-size:.75rem;font-variant-numeric:tabular-nums;color:var(--ink);font-weight:700}.control-actions{grid-column:3;grid-row:1 / 3;display:flex;flex-direction:column;flex-wrap:nowrap;align-items:stretch;justify-content:center;gap:4px;min-width:5.5rem}.control-btn{min-height:36px;padding:6px 12px;font-size:.8125rem}.control-actions .text-button{min-height:28px;padding:2px 4px;font-size:.75rem}.control-hint{margin:0;color:var(--muted);font-family:var(--font-ui);font-size:.6875rem;font-weight:500;line-height:1.35}@media(max-width:1100px){.control-grid{grid-template-columns:1fr 1fr}.control-field-wide{grid-column:1 / -1}.control-actions{grid-column:1 / -1;grid-row:auto;flex-direction:row;flex-wrap:wrap;align-items:center;min-width:0}}@media(max-width:600px){.control-grid{grid-template-columns:1fr}.control-field-wide{grid-column:auto}.control-actions{grid-column:auto;flex-direction:row;flex-wrap:wrap;align-items:stretch}.control-actions .text-button{flex:1 1 auto}}
