: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;--viz-grid: #6e7682;--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: #1c1d21;--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 14%, transparent);--dock-ink: #f4f5f7;--dock-muted: color-mix(in srgb, #f4f5f7 68%, 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)}.topic-page-label{font-family:var(--font-ui);font-size:.875rem;font-weight:700;letter-spacing:.01em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.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:44px;min-width:44px;transition:transform .15s var(--ease-out),opacity .15s var(--ease-out)}.brand-button:hover{transform:scale(1.02)}.brand-button:active{transform:scale(.97)}.brand-mark{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--radius-sm);background:var(--blue);color:var(--on-primary);font:600 18px/1 var(--font-display)}.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-hint{margin:-20px 0 26px;color:var(--muted);font-family:var(--font-ui);font-size:.875rem;font-weight:500;line-height:1.45}.topic-main{width:min(1600px,100%);margin:0 auto;padding:clamp(16px,2.5vw,28px) clamp(10px,1.5vw,20px) max(36px,calc(24px + env(safe-area-inset-bottom,0px)))}.topic-main .landing-title{margin-bottom:8px;font-size:clamp(1.375rem,2.5vw,1.75rem)}.topic-main .landing-hint{margin:0 0 18px;font-size:.875rem}.landing-section{margin-bottom:28px}.landing-label{margin:0 0 12px;font-family:var(--font-ui);font-size:.875rem;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;min-height:44px;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:transform .2s var(--ease-out),border-color .2s var(--ease-out),background-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}.topic-card:hover{border-color:var(--blue-hover-line);background:var(--blue-hover-soft);transform:translateY(-2px);box-shadow:0 4px 14px color-mix(in srgb,var(--ink) 8%,transparent)}.topic-card:active{border-color:var(--blue-hover-line);background:var(--blue-hover-soft);transform:translateY(0) scale(.985);box-shadow:0 2px 6px color-mix(in srgb,var(--ink) 5%,transparent)}.topic-card:disabled{cursor:default;opacity:.55}.topic-card.selected{border-color:var(--blue);background:var(--blue-soft);box-shadow:0 2px 8px color-mix(in srgb,var(--blue) 15%,transparent)}.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:.875rem;color:var(--muted);font-weight:500;line-height:1.45}.question-picker-status{margin:0;color:var(--muted);font-family:var(--font-ui);font-size:.875rem;font-weight:500}.question-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,380px),1fr));gap:10px}.question-card{display:grid;min-height:44px;gap:5px;width:100%;min-width:0;padding:12px 14px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--panel);color:var(--ink);text-align:left;transition:transform .2s var(--ease-out),border-color .2s var(--ease-out),background-color .2s var(--ease-out),box-shadow .2s var(--ease-out)}.question-card:hover:not(:disabled){border-color:var(--blue-hover-line);background:var(--blue-hover-soft);transform:translateY(-2px);box-shadow:0 4px 14px color-mix(in srgb,var(--ink) 8%,transparent)}.question-card:active:not(:disabled){border-color:var(--blue-hover-line);background:var(--blue-hover-soft);transform:translateY(0) scale(.985);box-shadow:0 2px 6px color-mix(in srgb,var(--ink) 5%,transparent)}.question-card:disabled{cursor:default;opacity:.55}.question-card-head{display:flex;align-items:baseline;gap:10px}.question-card-number{font-family:var(--font-display);font-size:.875rem;font-weight:700;line-height:1;color:var(--accent);flex:none}.question-card-title{font-family:var(--font-ui);font-size:.875rem;font-weight:600;line-height:1.3;color:var(--ink)}.question-card-prompt{min-width:0;font-family:var(--font-ui);font-size:.875rem;font-weight:500;line-height:1.5;color:var(--ink);text-align:left;overflow-wrap:anywhere}.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:pointer}.visual-camera-hint:hover,.visual-camera-hint:active{border-color:var(--secondary-hover-line);color:var(--ink)}.visual-camera-hint.is-open{border-color:var(--blue);background:var(--blue-soft);color:var(--ink)}.camera-help-panel{margin:6px 0 0;padding:8px 10px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--elevated)}.camera-help-panel[hidden]{display:none!important}.camera-help-text{margin:0;color:var(--ink);font-family:var(--font-ui);font-size:.875rem;font-weight:500;line-height:1.4;text-wrap:pretty}.step-track{display:flex;flex-wrap:nowrap;flex:1 1 auto;gap:4px;margin:0;padding:0 0 4px;list-style:none;min-width:0;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--scrollbar-thumb) transparent}.step-track::-webkit-scrollbar{height:4px}.step-track::-webkit-scrollbar-thumb{background:var(--scrollbar-thumb);border-radius:var(--radius-sm)}.step-track::-webkit-scrollbar-track{background:transparent}.step-item-wrap{margin:0;padding:0;flex:0 0 auto}.step-item{min-height:44px;padding:4px 12px;border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);font-family:var(--font-ui);font-size:.875rem;font-weight:700;cursor:pointer;transition:transform .2s var(--ease-out),border-color .2s var(--ease-out),background-color .2s var(--ease-out),color .2s var(--ease-out),box-shadow .2s var(--ease-out)}.step-item:hover{border-color:var(--blue-hover-line);color:var(--ink);transform:translateY(-1px);box-shadow:0 2px 6px color-mix(in srgb,var(--ink) 6%,transparent)}.step-item:active{transform:scale(.96)}.step-item.active{border-color:var(--blue);background:var(--blue-soft);color:var(--ink);box-shadow:0 2px 8px color-mix(in srgb,var(--blue) 18%,transparent);transform:scale(1.02)}.step-item.active:hover{transform:translateY(-1px) scale(1.02);box-shadow:0 4px 10px color-mix(in srgb,var(--blue) 22%,transparent)}.step-detail{margin:4px 0 0;color:var(--muted);font-family:var(--font-ui);font-size:.875rem;font-weight:500;line-height:1.4;white-space:normal;overflow:visible;text-wrap:pretty}#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%,var(--canvas)) 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.is-loading .viz-stage__canvas,.viz-host.has-error .legacy-animation,.viz-host.has-error .viz-stage__canvas{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:.875rem;font-weight:600;text-align:center}.legacy-animation,.viz-stage__canvas{display:block;width:100%;height:100%;border:0;background:transparent;transition:opacity .22s 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:var(--radius-sm);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:44px;border:0;background:transparent;color:var(--blue);padding:6px 4px;font-family:var(--font-ui);font-size:.875rem;font-weight:700;white-space:nowrap;transition:transform .15s var(--ease-out),color .16s var(--ease-out)}.text-button:hover:not(:disabled){color:var(--blue-hover)}.text-button:active:not(:disabled){transform:scale(.97)}.model-controls{flex:0 0 auto;padding:10px 14px 12px;background:var(--panel);border-top:1px solid color-mix(in srgb,var(--line) 85%,transparent);display:flex;flex-direction:column;gap:10px}.control-progress-row{display:flex;align-items:center;gap:10px;width:100%}.control-field{display:flex;align-items:center;gap:8px}.control-field-progress{flex:1 1 auto}.control-label{font-family:var(--font-ui);font-size:.875rem;font-weight:700;color:var(--muted);white-space:nowrap;min-width:2.8rem}#progress-out,#slices-out,#speed-out{font-family:var(--font-ui);font-size:.875rem;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ink);min-width:2.8ch;text-align:right}.control-field input[type=range]{flex:1 1 auto;-webkit-appearance:none;appearance:none;height:6px;border-radius:999px;background:linear-gradient(to right,var(--blue) 0%,var(--blue) var(--range-pct, 0%),var(--progress-track) var(--range-pct, 0%),var(--progress-track) 100%);outline:none;cursor:pointer;transition:background .15s var(--ease-out)}.control-field input[type=range]:focus-visible{outline:2px solid var(--focus);outline-offset:3px;box-shadow:0 0 0 5px var(--focus-ring)}.control-field input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;border-radius:50%;background:var(--blue);border:2px solid var(--canvas);box-shadow:0 1px 4px color-mix(in srgb,var(--blue) 35%,transparent);cursor:pointer;transition:transform .18s var(--ease-out),background-color .18s var(--ease-out),box-shadow .18s var(--ease-out)}.control-field input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:50%;background:var(--blue);border:2px solid var(--canvas);box-shadow:0 1px 4px color-mix(in srgb,var(--blue) 35%,transparent);cursor:pointer;transition:transform .18s var(--ease-out),background-color .18s var(--ease-out),box-shadow .18s var(--ease-out)}.control-field input[type=range]:hover::-webkit-slider-thumb{transform:scale(1.25);box-shadow:0 2px 8px color-mix(in srgb,var(--blue) 45%,transparent)}.control-field input[type=range]:hover::-moz-range-thumb{transform:scale(1.25);box-shadow:0 2px 8px color-mix(in srgb,var(--blue) 45%,transparent)}.control-field input[type=range]:active::-webkit-slider-thumb{transform:scale(1.38);background:var(--blue-hover);box-shadow:0 3px 10px color-mix(in srgb,var(--blue) 60%,transparent)}.control-field input[type=range]:active::-moz-range-thumb{transform:scale(1.38);background:var(--blue-hover);box-shadow:0 3px 10px color-mix(in srgb,var(--blue) 60%,transparent)}.control-transport{display:flex;align-items:center;gap:6px}.control-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;transition:transform .15s var(--ease-out),background-color .16s var(--ease-out),border-color .16s var(--ease-out),box-shadow .16s var(--ease-out),color .16s var(--ease-out)}.control-btn-icon{width:44px;height:44px;min-width:44px;min-height:44px;padding:0;border-radius:50%}.control-btn-icon:hover:not(:disabled){transform:scale(1.06)}.control-btn-icon:active:not(:disabled){transform:scale(.95)}.control-icon{width:20px;height:20px;transition:transform .2s var(--ease-out)}#reset-playback:hover:not(:disabled) .control-icon{transform:rotate(-30deg) scale(1.05)}#reset-playback:active:not(:disabled) .control-icon{transform:rotate(-60deg) scale(.95)}.control-expand-btn{min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--canvas);color:var(--muted);font-family:var(--font-ui);font-size:.875rem;font-weight:700;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:transform .15s var(--ease-out),border-color .16s var(--ease-out),color .16s var(--ease-out),background-color .16s var(--ease-out)}.control-expand-btn:hover{border-color:var(--secondary-hover-line);color:var(--ink);background:var(--surface-hover)}.control-expand-btn:active{transform:scale(.97)}.control-expand-chevron{display:inline-block;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform .22s var(--ease-out);margin-left:2px}.control-expand-btn[aria-expanded=true] .control-expand-chevron{transform:rotate(-135deg)}.control-grid{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:center}.control-details{transition:opacity .2s var(--ease-out),transform .2s var(--ease-out);transform-origin:top center}.control-details[hidden]{display:none!important}.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:transform .2s var(--ease-out),border-color .2s var(--ease-out),background-color .2s var(--ease-out),box-shadow .2s 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:1rem;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) 45%,var(--line));background:var(--blue-hover-soft);transform:translateY(-2px);box-shadow:0 4px 14px color-mix(in srgb,var(--blue) 10%,transparent)}.choice:active:not(:disabled){background:var(--blue-soft);transform:translateY(0) scale(.985);box-shadow:0 2px 6px color-mix(in srgb,var(--blue) 6%,transparent)}.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),0 2px 8px color-mix(in srgb,var(--accent) 15%,transparent)}.choice.correct{border-color:color-mix(in srgb,var(--teal) 45%,var(--line));background:var(--teal-soft);box-shadow:0 2px 8px color-mix(in srgb,var(--teal) 15%,transparent)}.choice.incorrect{border-color:color-mix(in srgb,var(--red) 40%,var(--line));background:var(--red-soft);box-shadow:0 2px 8px color-mix(in srgb,var(--red) 15%,transparent)}.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:.875rem;font-weight:700;transition:transform .2s var(--ease-out),background-color .2s var(--ease-out),border-color .2s var(--ease-out),color .2s var(--ease-out)}.choice:hover:not(:disabled) .choice-letter{transform:scale(1.08);border-color:color-mix(in srgb,var(--blue) 45%,var(--line))}.choice-math{min-width:0;overflow-x:auto;line-height:1.4;font-family:var(--font-ui);font-size:1rem}.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);transform:scale(1.12)}.correct .choice-letter{border-color:var(--teal);background:var(--teal);color:var(--on-primary);transform:scale(1.12)}.incorrect .choice-letter{border-color:var(--red);background:var(--red);color:var(--on-primary);transform:scale(1.12)}.primary,.secondary{min-height:48px;border-radius:var(--radius-sm);padding:12px 18px;font-family:var(--font-ui);font-size:1rem;font-weight:700;letter-spacing:.01em;transition:transform .15s var(--ease-out),background-color .16s var(--ease-out),border-color .16s var(--ease-out),box-shadow .16s var(--ease-out),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);box-shadow:0 3px 10px color-mix(in srgb,var(--blue) 25%,transparent)}.primary:active:not(:disabled){transform:scale(.97);box-shadow:none}.primary:disabled{border-color:var(--disabled);background:var(--disabled);color:color-mix(in srgb,var(--ink) 72%,var(--on-primary));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:active:not(:disabled){transform:scale(.97)}.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:6px;border:1px solid var(--dock-line);border-radius:999px;background:var(--dock-bg-solid);color:var(--dock-ink);box-shadow:0 2px 8px color-mix(in srgb,var(--dock-bg-solid) 28%,transparent);transform:translate(-50%)}.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:44px;min-width:44px;padding:0;border-radius:999px;font-size:.875rem;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:.875rem;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:44px;min-width:5.5rem;margin:0;padding:0 18px;border-radius:999px;font-size:.875rem;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-result{margin:0 0 4px;font-family:var(--font-ui);font-size:.875rem;font-weight:700;letter-spacing:.02em;line-height:1.2;color:var(--teal)}.solution-banner.is-incorrect .solution-result{color:var(--red)}.solution-banner h2{margin:0;font-family:var(--font-ui);font-size:1rem;font-weight:700;letter-spacing:-.01em;line-height:1.3;color:var(--ink)}.problem-source{margin:0 0 14px;font-family:var(--font-ui);font-size:.875rem;font-weight:500;line-height:1.4;color:var(--muted)}.problem-source a{color:var(--blue);font-weight:600;text-decoration:underline;text-underline-offset:2px}.problem-source a:hover{color:var(--blue-hover)}.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:.875rem;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:.875rem;font-weight:700;font-variant-numeric:tabular-nums}.solution-step-title{margin:0 0 6px;font-family:var(--font-ui);font-size:1rem;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:1rem;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-lead{margin:0 0 10px;color:var(--ink);font-family:var(--font-ui);font-size:1rem;font-weight:500;line-height:1.5}.solution-qty-list{list-style:none;margin:0;padding:0;display:grid;gap:8px;min-width:0}.solution-qty-item{display:grid;gap:4px;margin:0;padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--canvas);min-width:0}.solution-qty-symbol{display:block;color:var(--ink);font-family:var(--font-ui);font-size:1rem;font-weight:700;line-height:1.4;min-width:0;overflow-x:auto}.solution-qty-detail{display:block;color:var(--muted);font-family:var(--font-ui);font-size:.875rem;font-weight:500;line-height:1.45;min-width:0}.solution-qty-item .katex{font-size:1.2em}.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:.875rem;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:.875rem;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:.875rem;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}.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.375rem;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:44px;min-width:44px}.problem-nav-position{font-size:.875rem}.problem-nav-action{min-height:44px;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-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:.875rem}.solution-step-title{margin-bottom:5px;font-size:1rem;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:44px;height:44px}.model-controls{padding:10px 10px 12px;gap:10px}.model-controls .segmented button{min-height:44px;padding:8px 10px;font-size:.875rem}.control-label{min-width:3.2rem}.control-actions{gap:8px}.control-btn:not(.control-btn-icon){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}.brand-mark{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-progress-row{grid-template-columns:minmax(0,1fr) auto auto;gap:6px}.control-field-progress .control-label{min-width:0}.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}.control-expand-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;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-progress-row{grid-template-columns:minmax(0,1fr) auto auto;gap:6px}.control-field-progress .control-label{min-width:0}.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}.control-expand-label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.control-expand-btn{width:44px;padding-inline:0}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.choice,.choice:hover,.choice:active,.choice-letter,.selected .choice-letter,.correct .choice-letter,.incorrect .choice-letter,.topic-card,.topic-card:hover,.topic-card:active,.question-card,.question-card:hover,.question-card:active,.step-item,.step-item:hover,.step-item:active,.step-item.active,.primary,.primary:hover,.primary:active,.secondary,.secondary:hover,.secondary:active,.brand-button,.brand-button:hover,.brand-button:active,.visual-camera-hint,.visual-camera-hint:hover,.visual-camera-hint:active,.control-btn,.control-btn-icon,.control-btn-icon:hover,.control-btn-icon:active,.control-icon,#reset-playback:hover .control-icon,#reset-playback:active .control-icon,.control-expand-btn,.control-expand-chevron,.problem-nav-step,.problem-nav-action,.segmented button,.text-button,.control-field input[type=range]::-webkit-slider-thumb,.control-field input[type=range]::-moz-range-thumb{transform:none!important}}
