.lesson-headmeta-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;grid-gap:8px 14px;gap:8px 14px}.breadcrumb.lesson-aside-crumbs{margin:0 0 14px;font-size:calc(12px * var(--text-scale));line-height:1.6}.ad-slot{margin:20px 0;min-height:64px;display:flex;align-items:center;justify-content:center;border:1px dashed var(--hairline);border-radius:8px;background:var(--surface)}.ad-slot-label{font-size:11px;letter-spacing:.12em;color:var(--muted)}.lesson-intro{margin-bottom:0;color:var(--ink-2)}.lesson-intro .article-body{font-size:calc(14px * var(--text-scale))}.lesson-updated{margin:-6px 0 18px;font-size:12px;color:var(--muted);white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lesson-footnotes{margin:24px 0 0;padding-top:12px;border-top:1px solid var(--hairline);font-size:13px;color:var(--ink-2)}.lesson-footnotes h2{font-size:14px;margin:0 0 6px}.lesson-footnotes ol{margin:0;padding-left:1.5em}.lesson-footnotes li{margin:2px 0}.lesson-guide{margin:14px 0 20px;padding:12px 15px;border:1px solid var(--hairline);border-left:3px solid var(--accent);border-radius:7px;background:var(--surface);font-size:13px;line-height:1.6}.lesson-guide>h2{margin:0 0 7px;font-size:13px;font-weight:700;letter-spacing:.02em}.lesson-guide dl{margin:0}.lesson-guide dt{margin-top:7px;color:var(--muted);font-size:12px;font-weight:650}.lesson-guide dt:first-child{margin-top:0}.lesson-guide dd{margin:1px 0 0}.lesson-guide ol,.lesson-guide ul{margin:2px 0;padding-left:1.25em}.lesson-guide li{margin:2px 0}.lesson-guide-note{color:var(--ink-2)}.lesson-reference-note{display:block;margin-top:2px}.lesson-nav{display:flex;justify-content:space-between;gap:16px;margin-top:24px;padding-top:12px;border-top:1px solid var(--hairline);font-size:14px}.news-list,.site-page-list{list-style:none;padding:0;margin:28px 0;border-top:1px solid var(--hairline)}.news-list li,.site-page-list li{padding:18px 0;border-bottom:1px solid var(--hairline)}.site-page-list li>a{font-size:18px;font-weight:700}.site-page-list p{margin:8px 0 0;color:var(--ink-2);line-height:1.8}.news-list li{display:grid;grid-template-columns:max-content max-content minmax(0,1fr);align-items:baseline;grid-gap:10px 20px;gap:10px 20px}.news-list time,.news-meta{color:var(--ink-2);font-size:14px}.news-meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px 20px}.news-category{display:inline-block;padding:2px 8px;border:1px solid var(--hairline);border-radius:4px;color:var(--ink-2);font-size:12px}@media (max-width:600px){.news-list li{grid-template-columns:max-content 1fr}.news-list .news-category{justify-self:start}.news-list li>a{grid-column:1/-1}}.article-body>:first-child{margin-top:0}.article-body p{margin:12px 0}.article-body ol,.article-body ul{margin:6px 0;padding-left:1.4em}.article-body p:has(+:is(ul,ol,.enumerate)){margin-bottom:6px}.article-body :is(ul,ol,.enumerate)+p{margin-top:6px}.article-body li,.article-body li>ol,.article-body li>ul{margin:0}.article-body :is(em,strong){font-weight:700}.article-body em{font-style:normal}.article-body code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.88em;background:var(--page);border:1px solid var(--hairline);border-radius:4px;padding:.08em .35em}.article-body pre{overflow-x:auto;background:var(--page);border:1px solid var(--hairline);border-radius:6px;padding:.75rem .9rem;margin:1.1em 0;line-height:1.55}.article-body pre code{display:block;background:none;border:0;border-radius:0;padding:0;font-size:.85em}.article-body h1{font-size:calc(18px * var(--text-scale))}.article-body h2{display:flex;align-items:baseline;gap:.55em;font-size:calc(20px * var(--text-scale));font-weight:650;letter-spacing:.01em;margin:42px 0 12px;padding:0 0 5px;border-bottom:1px solid var(--hairline);scroll-margin-top:16px}.article-body>h2:first-child{margin-top:42px}.article-body .article-heading-number{flex:none;min-width:1.4em;color:inherit;font:inherit;letter-spacing:inherit}.article-body .article-heading-text{min-width:0}.article-body h3{display:flex;align-items:baseline;gap:.5em;font-size:calc(16px * var(--text-scale));font-weight:650;color:var(--ink-2);margin:28px 0 8px}.article-body blockquote{margin:16px 0;padding:6px 14px;border-left:3px solid var(--accent);background:var(--page);color:var(--ink-2)}.article-body table{width:100%;max-width:100%;margin:18px 0;border:1px solid var(--hairline);border-spacing:0;border-radius:8px;font-size:.94em}@media (max-width:640px){.article-body table{display:block;overflow-x:auto;width:max-content;max-width:100%}}.article-body td,.article-body th{padding:8px 10px;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);vertical-align:top}.article-body td:not([align]),.article-body th:not([align]){text-align:left}.article-body td:last-child,.article-body th:last-child{border-right:0}.article-body tbody tr:last-child>:is(th,td){border-bottom:0}.article-body thead th{background:color-mix(in srgb,var(--page) 72%,var(--surface));color:var(--ink-2);font-weight:650}.article-body .pitfall{margin-top:30px;padding-top:4px;border-top:1px solid var(--article-warning)}.article-body .pitfall>h2{display:flex;align-items:center;gap:7px;font-size:calc(13px * var(--text-scale));font-weight:650;letter-spacing:.03em;color:var(--article-warning);margin:14px 0 6px}.article-body .pitfall>h2:before{content:"⚠";font-size:calc(12px * var(--text-scale));color:var(--article-warning)}.article-body .pitfall :is(p,li){color:var(--ink-2)}:root{--article-marker-height:0.32em;--article-marker-drop:0.08em}.article-body .mblock{--mblock-color:var(--article-assertion);--mblock-tint:var(--article-assertion-tint);margin:18px 0;padding:10px 12px 10px 14px;border-left:3px solid var(--mblock-color);border-radius:0 5px 5px 0;background:color-mix(in srgb,var(--mblock-tint) 40%,transparent)}.article-body .mblock>:first-child{margin-top:0}.article-body .mblock>:last-child{margin-bottom:0}.article-body .mblock>p:first-child>strong:first-child{color:var(--ink);margin-right:.75em;padding:0;background:none}.article-body .mblock--example{--mblock-color:var(--article-example);--mblock-tint:var(--article-example-tint)}.article-body .mblock--remark{--mblock-color:var(--article-remark);--mblock-tint:var(--article-remark-tint)}.article-body :is(.mblock--warning,.mblock--remark[id*=warning i]){--mblock-color:var(--article-warning);--mblock-tint:var(--article-warning-tint)}.article-body .mblock--proof{margin:12px 0 18px;padding:0;border-left:none;border-radius:0;background:none}.article-body .mblock--proof>p:first-child>strong:first-child{color:var(--ink)}.article-body :is(.mblock--proof,.mblock--example,.mblock--remark){font-size:calc(14px * var(--text-scale))}.article-body .mblock--formula{border-left-width:2px;background:none}.article-body .mblock+.mblock{margin-top:12px}.article-body .mblock+.mblock--proof{margin-top:8px}.article-body .mblock-claim-group{--claim-indent:14px;--claim-top:2px;margin:12px 0;padding:var(--claim-top) 0 2px var(--claim-indent);border-left:2px solid var(--claim-rule,rgba(128,128,128,.45))}.article-body .mblock+.mblock.mblock--claim,.article-body .mblock.mblock--claim{margin:0;padding:0;border-left:none;border-radius:0;background:none}.article-body .mblock-claim-group>.mblock.mblock--claim{margin:calc(-1 * var(--claim-top)) 0 0 calc(-1 * var(--claim-indent));padding:4px 8px 4px var(--claim-indent);border-radius:0 5px 5px 0;background:var(--claim-tint,transparent)}.article-body .mblock-claim-group>.mblock.mblock--proof{margin:9px 0 0}.article-body .mblock-claim-group p+p{margin-top:9px;margin-bottom:9px}.article-body .mblock--problem{--mblock-color:var(--article-problem,var(--article-example));--mblock-tint:var(--article-problem-tint,var(--article-example-tint));font-size:calc(14px * var(--text-scale))}.article-body .mblock--solution{margin:12px 0 18px;padding:0;border-left:none;border-radius:0;background:none;font-size:calc(14px * var(--text-scale))}.article-body .mblock--solution>summary{cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:-moz-fit-content;width:fit-content}.article-body .mblock--solution>summary>strong:first-child{margin-right:.75em}.article-body .mblock--problem+.mblock--solution{margin-top:8px}.article-body .mblock-equation{align-items:center;display:grid;grid-gap:.5rem;gap:.5rem;grid-template-columns:minmax(0,1fr) auto;margin:1.25rem 0;scroll-margin-top:16px}.article-body .mblock-equation>.katex-display{margin:0;overflow-x:auto;overflow-y:hidden}.article-body .mblock-equation__tag{font-style:normal;white-space:nowrap}.article-body .mblock-align{margin:1.25rem 0}.article-body .mblock-align>.katex-display{margin:0;overflow-x:auto;overflow-y:hidden}.article-body .mblock-align__tag{scroll-margin-top:16px}.article-body :is(.mblock--proof,.mblock--solution){display:flow-root}.article-body .proof-qed{float:right;margin-left:12px;color:var(--ink-2);font-style:normal}.article-body .proof-qed-line{margin:6px 0 0;text-align:right}.article-body .proof-qed-line .proof-qed{float:none;margin-left:0}.article-body .mblock[id]{scroll-margin-top:16px}.article-body :is(.mblock-ref,.mblock-ref-pair,.mblock-ref-error){margin-inline:.2em}.article-body :is(.mblock-ref,.mblock-ref-pair,.mblock-ref-error).mblock-ref--flush-start{-webkit-margin-start:0;margin-inline-start:0}.article-body :is(.mblock-ref,.mblock-ref-pair,.mblock-ref-error).mblock-ref--flush-end{-webkit-margin-end:0;margin-inline-end:0}.article-body .mblock-ref-pair .mblock-ref{margin-inline:0}.article-body .mblock-ref-pair{font-style:normal}.article-body .mblock-ref-error{color:var(--danger);font-style:normal;font-weight:600}.article-body .defined-term{font-style:normal;font-weight:max(var(--body-weight),var(--body-weight-min));scroll-margin-top:16px}.article-body .defined-term__japanese{font-weight:700;padding:0 .06em var(--article-marker-drop);background:linear-gradient(transparent calc(100% - var(--article-marker-height)),var(--article-marker) calc(100% - var(--article-marker-height)));-webkit-box-decoration-break:clone;box-decoration-break:clone}.article-body .defined-term__english{color:var(--ink-2);font-size:.9em;font-weight:max(var(--body-weight),var(--body-weight-min))}.article-body .enumerate>ol{--enumerate-indent:2.2em;counter-reset:enumerate-item;list-style:none;padding-left:var(--enumerate-indent)}.article-body .enumerate>ol:has(>li:nth-child(10)),.article-body :is(.enumerate--roman,.enumerate--Roman)>ol{--enumerate-indent:2.8em}.article-body .enumerate>ol>li{position:relative;counter-increment:enumerate-item}.article-body .enumerate>ol>li:before{position:absolute;left:calc(-1 * var(--enumerate-indent));white-space:nowrap;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;content:"(" counter(enumerate-item,decimal) ")"}.article-body .enumerate--alphabetic>ol>li:before{content:"(" counter(enumerate-item,lower-alpha) ")"}.article-body .enumerate--Alphabetic>ol>li:before{content:"(" counter(enumerate-item,upper-alpha) ")"}.article-body .enumerate--roman>ol>li:before{content:"(" counter(enumerate-item,lower-roman) ")"}.article-body .enumerate--Roman>ol>li:before{content:"(" counter(enumerate-item,upper-roman) ")"}.article-body .enumerate>ol>li[id]{scroll-margin-top:16px}.article-body .mblock--column{border-left-color:var(--unlock);background:var(--column-tint);font-size:calc(14px * var(--text-scale))}.article-body .mblock--column>p:first-child>strong:first-child{color:var(--unlock)}.article-body .mblock--notation,.article-body .mblock--situation{border:1px solid var(--border);border-left:3px solid var(--ink-2);border-radius:6px;background:var(--surface)}.article-body .mblock--notation>p:first-child>strong:first-child,.article-body .mblock--situation>p:first-child>strong:first-child{color:var(--ink)}.article-body .footnotes{margin-top:24px;padding-top:8px;border-top:1px solid var(--hairline);font-size:calc(13px * var(--text-scale));color:var(--muted)}.article-body .mblock:not(.mblock--column,.mblock--situation,.mblock--notation)>:is(p,summary):first-child>strong:first-child{color:color-mix(in srgb,var(--mblock-color) var(--label-role-mix,0%),var(--label-role-base,var(--ink)))}.article-body .mblock:is(.mblock--proof,.mblock--solution)>:is(p,summary):first-child>strong:first-child{color:var(--label-plain,var(--ink))}.article-body .mblock.mblock--solution>summary:hover>strong:first-child{color:var(--mblock-color)}.test-intro{margin-top:8px}.test-intro-actions{display:flex;align-items:center;gap:10px;margin-top:10px}.test-running{margin-top:8px}.test-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.test-title{font-weight:700;font-size:14px}.test-desc{font-size:13px;color:var(--ink-2);margin:6px 0 10px}.test-last{font-size:12px;color:var(--muted)}.test-last.passed{color:var(--accent)}.test-marks{display:flex;gap:8px;margin-top:6px}.mark-correct.active{border-color:var(--accent);color:var(--accent)}.mark-wrong.active{border-color:var(--ink-2);color:var(--ink-2)}.btn:disabled{opacity:.5;cursor:not-allowed}.problem-set{margin:12px 0 4px;padding:0;width:100%;min-width:0}.problem-set+.problem-set{margin-top:16px;padding-top:14px;border-top:1px solid var(--hairline)}.problem-set-header{display:flex;justify-content:space-between;align-items:center;gap:8px;min-width:0;flex-wrap:wrap}.problem-set-title{min-width:0;flex:1 1 14rem;font-size:13px;font-weight:600;color:var(--ink-2)}.problem-set-hint{margin:3px 0 0;color:var(--muted);font-size:11px}.problem-list{margin:8px 0 0;padding-left:20px;min-width:0}.problem{position:relative;padding:10px 0}.problem+.problem{border-top:1px solid var(--hairline)}.problem-prompt{margin:0;font-size:14px;overflow-wrap:anywhere}.problem-quick-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;min-width:0}.problem-quick-row .problem-prompt{flex:1 1 auto;min-width:0}.problem-explain-button{flex:none;white-space:nowrap}.problem-set--cards .problem{padding:7px 0}.problem-set--cards .tex-display{margin:3px 0 0;padding:0 0 3px}.tex-display{display:block;margin:6px 0;padding:2px 0 6px}.tex-display,.tex-inline{max-width:100%;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin}.tex-inline{display:inline-block;vertical-align:middle}.problem-answer{margin-top:8px;display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;min-width:0;font-size:14px}.problem-answer-label{font-size:12px;font-weight:700;color:var(--accent)}.problem-answer-prose{overflow-wrap:anywhere;font-size:14px;color:var(--ink)}.problem-note{margin:7px 0 0;color:var(--ink-2);font-size:13px;line-height:1.65}.problem-note-label{margin-right:6px;color:var(--muted);font-size:12px;font-weight:700}.problem-solution{margin:10px 0 4px;padding:10px 12px;min-width:0;overflow-wrap:anywhere;border-left:2px solid var(--hairline);background:var(--surface);font-size:14px;line-height:1.7}.problem-solution>h3{margin:0 0 5px;color:var(--accent);font-size:12px;font-weight:700}.problem-solution>ol{margin:0;padding-left:1.35em}.problem-solution li{margin:4px 0}.problem-step-title{margin-right:5px}.problem-loading,.problem-missing{font-size:13px;color:var(--muted)}.problem-modal{position:fixed;z-index:1000;inset:0;display:grid;place-items:center;padding:20px;background:var(--modal-scrim)}.problem-modal-panel{display:flex;width:min(680px,100%);max-height:min(82vh,760px);flex-direction:column;overflow:hidden;border:1px solid var(--hairline);border-radius:12px;background:var(--surface);color:var(--ink);box-shadow:0 18px 60px color-mix(in srgb,var(--shadow-color) 24%,transparent)}.problem-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:16px 18px 12px;border-bottom:1px solid var(--hairline)}.problem-modal-kicker{margin:0 0 2px;color:var(--muted);font-size:11px}.problem-modal-header h2{margin:0;font-size:19px}.problem-modal-close{flex:none;width:34px;height:34px;border:1px solid var(--border);border-radius:50%;background:var(--surface);color:var(--ink-2);cursor:pointer;font:inherit;font-size:24px;line-height:1}.problem-modal-close:focus-visible,.problem-modal-close:hover{border-color:var(--accent);color:var(--accent)}.problem-modal-body{min-width:0;overflow-y:auto;padding:16px 18px 20px}.problem-modal-prompt{margin:0 0 8px;font-size:15px;overflow-wrap:anywhere}.problem-modal-answer{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;margin-top:10px;padding:10px 12px;border-radius:7px;background:var(--thm-tint);font-size:15px}.problem-modal-body .problem-note{margin-top:10px}.problem-modal-body .problem-solution{margin-top:14px}.breadcrumb{font-size:13px;margin-bottom:8px}.figure{margin:18px 0;padding:12px 14px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface)}.figure-title{font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:8px}.figure-canvas-wrap{width:100%}.figure-canvas{display:block;width:100%;border-radius:6px;touch-action:pan-y}.figure-controls{gap:8px;margin-top:10px}.figure-control,.figure-controls{display:flex;flex-direction:column}.figure-control{gap:2px;font-size:12px;color:var(--ink-2)}.figure-control-value{color:var(--accent);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:600}.figure-control input[type=range]{width:100%;accent-color:var(--accent);height:28px}.figure-caption{font-size:12px;color:var(--muted);margin-top:8px}.figure-island:empty{display:block;min-height:320px}.snake-trace-island{margin:22px 0}.snake-trace,.snake-trace-fallback{margin:0;padding:14px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface);color:var(--ink)}.snake-trace-island:not(.is-enhanced)>.snake-trace-root{height:0;overflow:hidden;visibility:hidden}.snake-trace-island.is-enhanced>.snake-trace-fallback{display:none}.snake-trace-title{margin:0 0 10px;color:var(--ink-2);font-size:.9rem;font-weight:650;line-height:1.5}.snake-trace-fallback img,.snake-trace-image{display:block;width:100%;min-width:620px;height:auto;background:#fff}.snake-trace-image-wrap{border:1px solid var(--hairline);border-radius:7px;background:#fff;overflow-x:auto;overscroll-behavior-inline:contain}.snake-trace-image{animation:snake-trace-crossfade .18s ease-out}@keyframes snake-trace-crossfade{0%{opacity:0}to{opacity:1}}.snake-trace-controls{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px}.snake-trace-buttons{display:flex;flex-wrap:wrap;gap:7px}.snake-trace-buttons button{min-height:36px;padding:6px 11px;border:1px solid var(--hairline);border-radius:7px;background:var(--page);color:var(--ink);font:inherit;font-size:.82rem;line-height:1.25;cursor:pointer}.snake-trace-buttons button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.snake-trace-buttons button:focus-visible{outline:3px solid color-mix(in srgb,var(--accent) 35%,transparent);outline-offset:2px}.snake-trace-buttons button:disabled{cursor:not-allowed;opacity:.5}.snake-trace-step{flex:0 0 auto;color:var(--ink-2);font-size:.82rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:650}.snake-trace-description{display:grid;grid-template-columns:minmax(6em,auto) minmax(0,1fr);grid-gap:10px;gap:10px;margin-top:11px;padding:10px 12px;border-left:3px solid var(--accent);background:var(--thm-tint);color:var(--ink-2);font-size:.9rem;line-height:1.7}.snake-trace-description strong{color:var(--ink)}.snake-trace-caption,.snake-trace-motion-note{margin:9px 0 0;color:var(--muted);font-size:.8rem;line-height:1.6}@media (max-width:560px){.snake-trace,.snake-trace-fallback{padding:10px}.snake-trace-controls{align-items:flex-start;flex-direction:column}.snake-trace-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}.snake-trace-buttons button:last-child{grid-column:1/-1}.snake-trace-description{grid-template-columns:1fr;gap:2px}}@media (prefers-reduced-motion:reduce){.snake-trace-image{animation:none}}@media print{.snake-trace-controls,.snake-trace-motion-note{display:none}}.canvas-island{margin:22px 0}.canvas-figure{margin:0;padding:14px;border:1px solid var(--hairline);border-radius:10px;background:var(--surface);color:var(--ink)}.canvas-island:not(.is-enhanced)>.canvas-figure-root{height:0;overflow:hidden;visibility:hidden}.canvas-island.is-enhanced>.canvas-figure--fallback{display:none}.canvas-figure-title{margin:0 0 10px;color:var(--ink-2);font-size:.9rem;font-weight:650;line-height:1.5}.canvas-figure-canvas{--canvas-axis-x:var(--article-warning);--canvas-axis-y:var(--article-example);--canvas-axis-z:var(--article-assertion);display:block;width:100%;aspect-ratio:1.5;border:1px solid var(--hairline);border-radius:7px;background:var(--surface);touch-action:pan-y}.canvas-figure-canvas:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.canvas-figure-alt{margin:0;padding:12px;border:1px solid var(--hairline);border-radius:7px;color:var(--ink-2);font-size:.85rem;line-height:1.75}.canvas-figure-controls{display:flex;flex-wrap:wrap;gap:7px;margin-top:12px}.canvas-figure-controls button{min-height:36px;padding:6px 13px;border:1px solid var(--hairline);border-radius:7px;background:var(--page);color:var(--ink);font:inherit;font-size:.82rem;line-height:1.25;cursor:pointer}.canvas-figure-controls button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.canvas-figure-controls button:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.canvas-figure-controls button:disabled{cursor:not-allowed;opacity:.5}.canvas-figure-spin{-webkit-margin-start:9px;margin-inline-start:9px}.canvas-figure-readout{display:flex;flex-wrap:wrap;gap:6px 18px;margin:11px 0 0;padding:10px 12px;border-left:3px solid var(--accent);background:var(--thm-tint);color:var(--ink-2);font-size:.82rem;line-height:1.6}.canvas-figure-readout-item{display:flex;gap:6px;align-items:baseline}.canvas-figure-readout dt{margin:0}.canvas-figure-readout dd{margin:0;color:var(--ink);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;font-weight:650}.canvas-figure-message:empty{display:none}.canvas-figure-message{margin:9px 0 0;color:var(--ink-2);font-size:.8rem;line-height:1.6}.canvas-figure-caption,.canvas-figure-hint{margin:9px 0 0;color:var(--muted);font-size:.8rem;line-height:1.7}@media (max-width:560px){.canvas-figure{padding:10px}.canvas-figure-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.canvas-figure-controls button:nth-child(odd):last-child{grid-column:1/-1}.canvas-figure-spin{-webkit-margin-start:0;margin-inline-start:0}.canvas-figure-readout{flex-direction:column;gap:2px}}@media print{.canvas-figure-controls,.canvas-figure-hint{display:none}}.tikzcd-diagram{align-items:center;color:var(--ink);display:flex;gap:.5rem;margin:1.25rem 0;overflow-x:auto;padding:.25rem}.tikzcd-diagram>svg text{fill:currentColor}.tikzcd-diagram>svg{display:block;height:auto;margin-inline:auto;max-width:100%}.tikzcd-tag{flex:none}.article-body .katex{font-size:1.2em}.article-body :not(.katex-display)>.katex{margin-inline:.35em}.article-body .katex.katex--flush-start{-webkit-margin-start:0;margin-inline-start:0}.article-body .katex.katex--flush-end{-webkit-margin-end:0;margin-inline-end:0}.article-body .katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0;margin:10px 0}.article-body .katex-display>.katex{font-size:1.1em}:root{--frame-edge:color-mix(in srgb,var(--ink) 45%,transparent)}.reader-dock{position:fixed;z-index:40;display:flex;flex-direction:column;align-items:center;padding:3px;border:1.5px solid var(--frame-edge);border-radius:13px;background:var(--surface);box-shadow:0 4px 14px color-mix(in srgb,var(--shadow-color,#000) 18%,transparent);touch-action:none;-moz-user-select:none;user-select:none;-webkit-user-select:none;cursor:-webkit-grab;cursor:grab}.reader-dock:active{cursor:-webkit-grabbing;cursor:grabbing}.reader-dock.is-folding{justify-content:flex-end}.reader-dock-btn--close .icon-menu,.reader-dock.is-folding .reader-dock-btn--close .icon-close{display:none}.reader-dock.is-folding .reader-dock-btn--close .icon-menu{display:block;width:20px;height:20px}.reader-dock.is-folding .reader-dock-btn--close{flex:none;color:var(--ink)}.reader-dock{transition:border-radius .18s ease,box-shadow .18s ease}.reader-dock.is-folding{border-radius:10px;box-shadow:0 2px 8px color-mix(in srgb,var(--shadow-color,#000) 16%,transparent)}.reader-dock-btn{display:grid;place-items:center;width:44px;height:44px;padding:0;border:0;border-radius:10px;background:none;color:var(--ink-2);cursor:inherit}.reader-dock-btn:hover,.reader-dock-btn[aria-expanded=true]{background:color-mix(in srgb,var(--ink) 8%,transparent);color:var(--ink)}.reader-dock-sep{width:26px;height:1px;margin:1px 0;background:var(--hairline)}.reader-dock-icon{width:24px;height:24px;fill:currentColor}.reader-dock-text{font-weight:700;line-height:1;color:currentColor}.reader-dock-text--small{font-size:15px}.reader-dock-text--standard{font-size:18px}.reader-dock-text--large{font-size:22px}.reader-dock-text--xlarge{font-size:16px;letter-spacing:-.04em}.theme-swatch.reader-dock-swatch{width:26px;height:26px;border-radius:7px}.reader-dock-icon--stroke{fill:var(--surface);stroke:currentColor;stroke-width:1.8;stroke-linecap:round}.reader-panel{position:fixed;z-index:41;width:min(360px,calc(100vw - 32px));overflow-y:auto;overscroll-behavior:contain;padding:14px 16px 16px;border:1.5px solid var(--frame-edge);border-radius:14px;background:var(--surface);color:var(--ink);box-shadow:0 12px 40px color-mix(in srgb,var(--shadow-color,#000) 22%,transparent)}.reader-section+.reader-section{margin-top:14px;padding-top:12px;border-top:1px solid var(--hairline)}.reader-section-title{margin:0 0 8px;color:var(--ink-2);font-size:12px;font-weight:600}.reader-segment{display:grid;grid-template-columns:repeat(4,1fr);padding:3px;border-radius:10px;background:color-mix(in srgb,var(--ink) 7%,var(--surface))}.reader-segment-opt{min-height:36px;border:0;border-radius:8px;background:none;color:var(--ink-2);font:inherit;cursor:pointer}.reader-segment-opt--small{font-size:12px}.reader-segment-opt--standard{font-size:14px}.reader-segment-opt--large{font-size:17px}.reader-segment-opt--xlarge{font-size:19px}.reader-segment-opt[aria-checked=true]{background:var(--surface);color:var(--ink);font-weight:600;box-shadow:0 1px 3px color-mix(in srgb,var(--shadow-color,#000) 18%,transparent)}.reader-themes{display:flex;flex-direction:column;gap:2px}.reader-themes .theme-opt{min-height:44px;font-size:15px;gap:12px}.reader-themes .theme-swatch{width:22px;height:22px;border-radius:6px}.reader-themes .theme-swatch,.theme-swatch.reader-dock-swatch{box-shadow:inset 0 0 0 1.5px color-mix(in srgb,var(--ink) 38%,transparent)}.reader-panel .share-panel{--share-slot:54px;--share-disc:40px;--share-gap-x:2px;gap:10px}.reader-panel .share-targets{row-gap:8px}.reader-panel .share-target-logo{width:20px;height:20px}.reader-panel .share-copy,.reader-panel .share-x{font-size:13px}@media print{.reader-dock,.reader-panel{display:none}}.reader-dock.is-dragging{cursor:-webkit-grabbing;cursor:grabbing;box-shadow:0 10px 28px color-mix(in srgb,var(--shadow-color,#000) 28%,transparent)}.reader-dock.is-collapsed,.reader-dock.is-tucked{box-shadow:0 2px 8px color-mix(in srgb,var(--shadow-color,#000) 16%,transparent)}.reader-dock.is-collapsed{padding:2px;border-radius:10px}.reader-dock.is-collapsed .reader-dock-btn{width:32px;height:32px;border-radius:7px;color:var(--ink)}.reader-dock.is-collapsed .reader-dock-icon{width:20px;height:20px}.reader-dock.is-tucked{padding:0}.reader-dock--r.is-tucked{border-right:0;border-radius:10px 0 0 10px}.reader-dock--l.is-tucked{border-left:0;border-radius:0 10px 10px 0}.reader-dock-btn.reader-dock-tab{position:relative;width:10px;height:76px;border-radius:inherit;color:var(--ink-2)}.reader-dock-tab:before{content:"";position:absolute;top:0;bottom:0}.reader-dock--r .reader-dock-tab:before{left:-30px;right:0}.reader-dock--l .reader-dock-tab:before{right:-30px;left:0}.reader-dock-tab-icon{width:9px;height:9px;flex:none;fill:currentColor}@media (hover:none){.article-body .mblock[id]{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}}.share-dialog{-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.article-body .mblock[id]{transition:box-shadow .3s ease}.article-body .mblock[id].is-pressing{box-shadow:inset 0 0 0 999px color-mix(in srgb,var(--ink) 7%,transparent)}@media (min-width:641px){body{font-size:17px}h1{font-size:28px}h2{font-size:24px}h3{font-size:18px}.article-body{font-size:calc(16px * var(--text-scale))}:is(.lesson-before,.lesson-page)>h1{font-size:28px}.article-body h1{font-size:calc(18px * var(--text-scale))}.article-body h2{font-size:calc(21px * var(--text-scale))}.article-body h3{font-size:calc(16px * var(--text-scale))}.article-body :is(.mblock--proof,.mblock--solution,.mblock--example,.mblock--remark),.lesson-intro .article-body,:is(.unit-page,.lesson-before)>.unit-summary{font-size:calc(15px * var(--text-scale))}.lesson-problems>h2,.worked-examples>h2{font-size:18px}.lesson-nav,.problem-group-prompt,.problem-prompt{font-size:15px}.worked-examples-lead{font-size:14px}}@media (max-width:640px){.site-main{padding:16px 16px calc(24px + env(safe-area-inset-bottom))}.site-footer{padding:16px 12px}.roadmap-cards{display:block;gap:0}.unit-card{padding:5px 2px;border:none;border-radius:0;background:linear-gradient(to right,var(--polish-color) calc(var(--polish, 0) * 100%),transparent 0)}.unit-card-title{color:var(--link)}.lesson-tail{width:100%;margin-left:26px}.problem-set{margin-left:0;width:100%}.btn{padding:8px 14px;min-height:40px}.drill-answer-btn,.problem-set-actions .btn{min-height:36px}.drill-grid{grid-template-columns:1fr}.example-quick-row,.problem-quick-row{align-items:flex-start;flex-direction:column;gap:6px}.problem-modal{padding:8px}.problem-modal-panel{max-height:92vh;border-radius:10px}.problem-modal-body,.problem-modal-header{padding-left:14px;padding-right:14px}.lesson-nav{flex-direction:column;gap:10px}.pager-row{grid-template-columns:1fr;gap:8px}.pager-next{order:1}.pager-center{order:2;max-width:none}.pager-prev{order:3}.pager-empty{display:none}.pager-center,.pager-next{text-align:left;align-items:flex-start}.pager-center{flex-direction:row;align-items:center;gap:8px}.pager-center .pager-kind{flex:none}.article-body{font-size:calc(14px * var(--text-scale));line-height:1.65}:is(.lesson-before,.lesson-page)>h1{font-size:23px;line-height:1.45}.article-body h2{font-size:calc(20px * var(--text-scale));line-height:1.5}.article-body h3{font-size:calc(16px * var(--text-scale))}.site-main{padding:16px 12px calc(24px + env(safe-area-inset-bottom))}.article-body .mblock{padding:8px 10px 8px 11px}.article-body :is(.mblock--proof,.mblock--solution,.mblock--example,.mblock--remark){padding:0;font-size:calc(13px * var(--text-scale))}.article-body :is(.mblock--example,.mblock--remark){padding:8px 10px 8px 11px}.article-body .mblock--solution{padding:0}.article-body .mblock-claim-group{--claim-indent:10px}.lesson-intro .article-body,:is(.unit-page,.lesson-before)>.unit-summary{font-size:calc(13px * var(--text-scale))}.article-body td,.article-body th{padding:7px 8px}:root[data-scene]{--scene-side-gap:10px}}@media (max-width:640px){:root[data-scene]:has(.lesson-after){--scene-side-gap:0px}:root[data-scene] .site-main{margin:var(--main-gap-top) var(--scene-side-gap) 0}:root[data-scene] :is(.site-main:not(:has(>.lesson-after)),.site-main>.lesson-page:has(~.lesson-after)){border-radius:14px;box-shadow:0 6px 22px var(--border);background:color-mix(in srgb,var(--surface) 94%,transparent)}:root[data-scene] .site-footer{margin-left:var(--scene-side-gap);margin-right:var(--scene-side-gap)}.lesson-tail{display:none}.lesson{flex-wrap:nowrap}}.app-scene{position:fixed;top:0;left:0;right:0;height:100lvh;z-index:-1;overflow:hidden;pointer-events:none;--scene-scale:1}.app-scene>*{transform:scale(var(--scene-scale));transform-origin:center}@media (min-width:900px){.app-scene{--scene-scale:1.2}}@media (min-width:1300px){.app-scene{--scene-scale:1.45}}@media (min-width:1800px){.app-scene{--scene-scale:1.7}}:root[data-scene]{background:var(--scene-floor,var(--page))}:root[data-scene] body{background:transparent}:root[data-scene] .site-header{background:color-mix(in srgb,var(--surface) 82%,transparent)}:root[data-scene] :is(.site-main:not(:has(>.lesson-after)),.site-main>.lesson-page:has(~.lesson-after)){background:color-mix(in srgb,var(--surface) 88%,transparent);border-radius:16px;box-shadow:0 10px 40px var(--border)}@media (max-width:1179.98px){:root[data-scene][data-scene][data-app-theme] :is(.site-main:not(:has(>.lesson-after)),.site-main>.lesson-page:has(~.lesson-after)){background:var(--surface)}}@media (max-width:640px){.app-scene.is-live .sm-off:not(.scatter *),.app-scene.is-scattered .scatter,.app-scene:not(.is-live) .sm-off{display:none}.app-scene.is-scattered *,.app-scene.is-scattered :after,.app-scene.is-scattered :before{animation-play-state:paused!important}}.scatter{position:absolute;inset:0;pointer-events:none}.theme-opt{display:flex;align-items:center;gap:10px;font:inherit;font-size:13px;color:var(--ink);padding:8px 10px;border:none;background:none;border-radius:8px;cursor:pointer;text-align:left;width:100%}.theme-opt:hover{background:var(--page)}.theme-opt[aria-checked=true]{color:var(--accent);font-weight:600}.theme-opt:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.theme-swatch{width:16px;height:16px;border-radius:5px;background:var(--theme-swatch);box-shadow:inset 0 0 0 1px var(--border);flex:none}.theme-swatch[data-theme-swatch=system]{--theme-swatch:var(--theme-swatch-system)}.theme-opt .check{margin-left:auto;opacity:0;color:var(--accent)}.theme-opt[aria-checked=true] .check{opacity:1}.theme-swatch[data-theme-swatch=light],:root[data-app-theme=light]{--page:#f9f9f7;--surface:#fcfcfb;--ink:#0b0b0b;--ink-2:#52514e;--muted:#898781;--hairline:#e1e0d9;--border:rgba(11,11,11,0.1);--accent:#2a78d6;--link:#1f6ec7;--link-hover:#15549b;--on-accent:#ffffff;--danger:#b42318;--modal-scrim:rgba(0,0,0,0.52);--shadow-color:#000000;--theme-swatch:#f9f9f7;--gauge-basic:#6da7ec;--gauge-advanced:#2a78d6;--gauge-applied:#184f95;--unlock:#1baf7a;--thm-tint:rgba(42,120,214,0.05);--column-tint:rgba(27,175,122,0.05);--article-assertion:#1769aa;--article-assertion-tint:#e7f2fc;--claim-tint:rgba(128,128,128,0.045);--article-example:#197546;--article-example-tint:#e7f6ec;--article-remark:#956600;--article-remark-tint:#fff6d2;--article-warning:#b53a35;--article-warning-tint:#ffeae8;--article-marker:#f4d45b}.theme-swatch[data-theme-swatch=dark],:root[data-app-theme=dark]{--page:#1d1e20;--surface:#26272a;--ink:#e8e7e2;--ink-2:#bcbbb5;--muted:#8c8b85;--hairline:#343536;--border:rgba(255,255,255,0.08);--accent:#5f97dc;--dark-scheme:1;--link:#8cbcf2;--link-hover:#b3d2f8;--on-accent:#10161e;--danger:#d98a84;--modal-scrim:rgba(0,0,0,0.6);--shadow-color:#000000;--theme-swatch:#1d1e20;--gauge-basic:#8fb4e8;--gauge-advanced:#5f97dc;--gauge-applied:#3f6fb0;--unlock:#63a68c;--thm-tint:rgba(95,151,220,0.12);--column-tint:rgba(99,166,140,0.12);--polish-fill:rgba(143,180,232,0.15);--polish-base:var(--gauge-basic);--article-assertion:#7ea9db;--article-assertion-tint:#303e50;--claim-tint:rgba(128,128,128,0.041);--article-example:#98c3ae;--article-example-tint:#2b3f2c;--article-remark:#d4bf85;--article-remark-tint:#3f3820;--article-warning:#d99a94;--article-warning-tint:#4e3232;--article-marker:#6f6538;--label-role-mix:50%;--label-role-base:#ffffff;--label-plain:color-mix(in srgb,var(--ink) 50%,#ffffff);--body-weight:300}:root:is([data-app-theme=dark],:not([data-app-theme])) body:before{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");background-size:160px 160px}:root[data-app-theme=dark] body:before{content:""}@media (prefers-color-scheme:dark){:root{--page:#1d1e20;--surface:#26272a;--ink:#e8e7e2;--ink-2:#bcbbb5;--muted:#8c8b85;--hairline:#343536;--border:rgba(255,255,255,0.08);--accent:#5f97dc;--dark-scheme:1;--link:#8cbcf2;--link-hover:#b3d2f8;--on-accent:#10161e;--danger:#d98a84;--modal-scrim:rgba(0,0,0,0.6);--shadow-color:#000000;--theme-swatch:#1d1e20;--gauge-basic:#8fb4e8;--gauge-advanced:#5f97dc;--gauge-applied:#3f6fb0;--unlock:#63a68c;--thm-tint:rgba(95,151,220,0.12);--column-tint:rgba(99,166,140,0.12);--polish-fill:rgba(143,180,232,0.15);--polish-base:var(--gauge-basic);--article-assertion:#7ea9db;--article-assertion-tint:#303e50;--article-example:#98c3ae;--article-example-tint:#2b3f2c;--article-remark:#d4bf85;--article-remark-tint:#3f3820;--article-warning:#d99a94;--article-warning-tint:#4e3232;--article-marker:#6f6538}:root:not([data-app-theme]) body:before{content:""}:root:not([data-app-theme]){--body-weight:300;--label-role-mix:50%;--label-role-base:#ffffff;--label-plain:color-mix(in srgb,var(--ink) 50%,#ffffff);--claim-tint:rgba(128,128,128,0.041)}}