svg.construction .point-label{paint-order:stroke;stroke:var(--figure-bg);stroke-width:3.5px;stroke-linejoin:round}svg.construction .obj.broken{opacity:.32;stroke-dasharray:5 5!important}svg.construction .point-group.broken{opacity:.35}svg.construction .ghost{fill:none;stroke:var(--state-hint-ring);stroke-width:1.5;stroke-dasharray:6 5;opacity:.55}svg.construction .magnet-ring{fill:none;stroke:var(--state-hint-ring);stroke-width:1.75;opacity:.8;filter:drop-shadow(0 0 1.5px var(--state-hint-halo))}svg.construction .magnet-crossing{stroke-dasharray:3 3}svg.construction .magnet-curve{fill:var(--state-hint-ring);fill-opacity:.1}svg.construction .lit-halo{fill:none;stroke-width:8;stroke-linecap:round;stroke-opacity:.12;pointer-events:none}svg.construction .lit-ring{fill:none;stroke:var(--state-select);stroke-width:1.25;opacity:.7}svg.construction .point-chosen{stroke-width:1.6px}svg.construction .callout-hint circle:first-child{fill:none;stroke:var(--state-hint-ring);stroke-width:1.5;stroke-dasharray:2.6 2.4}svg.construction .callout-hint circle:last-child{fill:var(--state-hint-ring)}svg.construction .callout-hint{filter:drop-shadow(0 0 1.5px var(--state-hint-halo))}.ps-toolbar .tool kbd{font-family:var(--sans);font-size:10.5px;color:var(--muted);margin-left:5px;border:none;background:none;padding:0}.ps-toolbar .tool.active kbd{color:inherit;opacity:.7}.ps-toolbar .tool:disabled{opacity:.45;cursor:default}.ps-stage{display:flex;justify-content:center;width:100%}.ps-stage .freeplay-canvas{width:auto;height:auto;max-width:100%;aspect-ratio:auto;touch-action:none}.ps-stage .freeplay-canvas svg{width:auto;height:auto}.ps-canvas-overlay{position:absolute;top:8px;left:8px;right:8px;display:flex;gap:8px;align-items:flex-start;pointer-events:none}.ps-badge{font-family:var(--sans);font-size:12.5px;line-height:1.3;padding:5px 9px;border-radius:var(--radius-md);border:1px solid var(--border);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.ps-badge.warn{border-color:var(--state-retry-edge)}.ps-canvas-controls{position:absolute;right:8px;bottom:8px;display:flex;gap:6px}.ps-canvas-controls .tool{font-size:12.5px;padding:4px 10px;display:inline-flex;align-items:center;justify-content:center;background:color-mix(in srgb,var(--surface) 88%,transparent)}.ps-canvas-controls .icon-tool{padding:4px 7px}@media(pointer:coarse){.ps-toolbar .tool,.ps-canvas-controls .tool,.ps-actions .tool{min-height:44px;min-width:44px}.ps-toolbar .tool kbd{display:none}}@media(prefers-reduced-motion:reduce){svg.construction .magnet-ring{transition:none}}.ps-actions{margin-top:10px;justify-content:center}.ps-actions .ps-action-note{margin:0 0 0 6px}:root{--paper: #fbf9f3;--surface: #ffffff;--surface-hover: #f6f3eb;--ink: #1f1c17;--ink-soft: #4a463f;--muted: #786f60;--accent: #c14b4b;--accent-soft: #d97373;--highlight: #fef6dc;--border: #e1ddd2;--border-strong: #c8c2b3;--chip-bg: #f1ede1;--chip-ink: #675f51;--focus-ring: var(--ink);--state-select: var(--ink);--state-hint-ring: var(--ink);--state-hint-halo: #ffffff;--state-ok: #3f7a1e;--state-ok-bg: #edf4e4;--state-no: var(--ink);--state-retry-bg: #fbf0d9;--state-retry-edge: #a8740f;--figure-bg: var(--paper);--figure-ink: #1f1c17;--figure-soft: #888279;--figure-circle: #7d878c;--figure-accent: #c14b4b;--ref-0: #a51d24;--ref-1: #1f5aa6;--ref-2: #966600;--ref-3: #1f1c17;--ref-4: #00756b;--ref-5: #6b3fa0;--ref-6: #b04a00;--ref-7: #8e2c7a;--shadow-sm: 0 1px 2px rgba(28, 25, 20, .04);--shadow-md: 0 2px 10px rgba(28, 25, 20, .06);--shadow-lg: 0 12px 32px rgba(28, 25, 20, .12);--radius-sm: 4px;--radius-md: 8px;--radius-lg: 12px;--radius-pill: 999px;--fs-caption: 13px;--fs-body: 16px;--fs-prompt: 19px;--fs-title: 24px;--fs-display: 32px;--fw-regular: 400;--fw-strong: 600;--lh-tight: 1.25;--lh-body: 1.5;--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--dur-draw: .56s;--ease-out: cubic-bezier(.22, 1, .36, 1);--ease-in-out: cubic-bezier(.65, 0, .35, 1);--ease-settle: cubic-bezier(.34, 1.56, .64, 1);--rise: 16px;--rise-sm: 4px;--slide: 24px;--shake: 4px;--press-scale: .97;--settle-scale: 1.015;--serif: "KaTeX_Main", "Latin Modern Roman", Georgia, "Times New Roman", serif;--sans: "KaTeX_Main", "Latin Modern Roman", Georgia, serif;--mono: "SF Mono", "Menlo", monospace}:root[data-theme=dark]{--paper: #14130f;--surface: #1d1b16;--surface-hover: #25221b;--ink: #ebe5d8;--ink-soft: #b8b1a3;--muted: #a39d92;--accent: #e07474;--accent-soft: #ba5252;--highlight: #2a2620;--border: #2e2a23;--border-strong: #443f36;--chip-bg: #25221b;--chip-ink: #b3ada1;--focus-ring: var(--ink);--state-hint-halo: #0b0a08;--state-ok: #93c95a;--state-ok-bg: #1b2514;--state-retry-bg: #2b2311;--state-retry-edge: #d9a441;--figure-bg: #1a1812;--figure-ink: #ebe5d8;--figure-soft: #7a756c;--figure-circle: #6b6f72;--figure-accent: #e07474;--ref-0: #f2766b;--ref-1: #78a6f5;--ref-2: #e6c04a;--ref-3: #ebe5d8;--ref-4: #4cc0ad;--ref-5: #b597ec;--ref-6: #f0954a;--ref-7: #e48ad2;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .5);--shadow-md: 0 2px 10px rgba(0, 0, 0, .5);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .7)}@media(prefers-reduced-motion:reduce){:root{--rise: 0px;--rise-sm: 0px;--slide: 0px;--shake: 0px;--press-scale: 1;--settle-scale: 1;--ease-settle: var(--ease-out)}}@font-face{font-family:KaTeX_Main;src:url(/fonts/KaTeX_Main-Regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Main;src:url(/fonts/KaTeX_Main-Italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:KaTeX_Main;src:url(/fonts/KaTeX_Main-Bold.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:KaTeX_Main;src:url(/fonts/KaTeX_Main-BoldItalic.woff2) format("woff2");font-weight:700;font-style:italic;font-display:swap}*{box-sizing:border-box}html{-webkit-tap-highlight-color:transparent}html,body,#root{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--sans);transition:background-color var(--dur-base) var(--ease-out),color var(--dur-base) var(--ease-out)}body{min-height:100vh}button{font:inherit;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-md);padding:6px 12px;cursor:pointer;color:var(--ink);transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),opacity var(--dur-base) var(--ease-out),scale var(--dur-fast) var(--ease-out)}@media(hover:hover){button:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-hover)}}button:active:not(:disabled){scale:var(--press-scale)}button:disabled{opacity:.3;cursor:not-allowed}a:active:not(.btn-primary):not(.btn-quiet){opacity:.7}:focus{outline:none}:focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px}.tool.active:focus-visible,.icon-btn.primary:focus-visible,.btn-primary:focus-visible{outline-color:var(--focus-ring);box-shadow:inset 0 0 0 2px var(--paper)}.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}@media(pointer:coarse){.tool,.mode-chip,.segmented button,.icon-btn,.theme-toggle{min-height:44px}.icon-btn,.theme-toggle{min-width:44px}.mode-chip{display:inline-flex;align-items:center}}.landing{max-width:760px;margin:0 auto;padding:48px 24px 80px}.landing-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.landing-header h1{font-family:var(--serif);font-size:48px;margin:0;letter-spacing:-.02em}.landing-header .tagline{font-family:var(--serif);color:var(--muted);font-size:18px;line-height:1.5;max-width:60ch}.landing-section{margin-top:36px}.landing-section h2{font-family:var(--serif);font-size:22px;margin-bottom:12px}.theme-toggle{flex-shrink:0;width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;padding:0;border-radius:var(--radius-pill);font-size:16px;line-height:1}.viewer-header{margin-bottom:8px}.header-row{display:flex;justify-content:space-between;align-items:center;gap:16px}.header-row-left{display:flex;align-items:baseline;gap:14px;min-width:0;flex:1}.header-row-right{display:flex;align-items:center;gap:8px}.back-link{color:var(--muted);font-size:13px;text-decoration:none;white-space:nowrap}.back-link:hover{color:var(--ink)}.proposition-title{font-family:var(--serif);font-size:22px;margin:0;color:var(--accent)}.proposition-statement{font-family:var(--serif);font-size:15px;color:var(--ink-soft);margin:4px 0 0;line-height:1.4}.cite-chip{font-family:var(--sans);font-size:12px;color:var(--chip-ink);background:var(--chip-bg);padding:2px 8px;border-radius:var(--radius-pill);white-space:nowrap}.verify-badge{display:inline-flex;align-items:center;justify-content:center;width:1.05em;height:1.05em;margin-left:.4em;border-radius:50%;font-size:.82em;font-weight:700;line-height:1;vertical-align:baseline;cursor:help}.verify-badge.ok{color:var(--state-ok);background:var(--state-ok-bg)}.verify-badge.bad{color:#c5402f;background:color-mix(in srgb,#f85149 20%,transparent)}:root[data-theme=dark] .verify-badge.bad{color:#f7776a}@media(max-width:640px){.landing-header h1{font-size:36px}.proposition-title{font-size:20px}}.page{max-width:760px;margin:0 auto;padding:48px 24px 80px}.page-wide{max-width:960px}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}.page-header h1{font-family:var(--serif);font-size:40px;line-height:1.1;margin:8px 0 0;letter-spacing:-.02em}.page-back{font-size:14px;color:var(--muted);text-decoration:none}.page-back:hover{color:var(--accent)}.page-lede{font-family:var(--serif);font-size:18px;line-height:1.5;color:var(--ink-soft);max-width:60ch;margin:12px 0 0}.page-actions{display:flex;flex-wrap:wrap;gap:12px;margin:28px 0 0}.btn-primary,.btn-quiet{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:0 20px;border-radius:var(--radius-pill);font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-tight);text-decoration:none;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),box-shadow var(--dur-fast) var(--ease-out),scale var(--dur-fast) var(--ease-out)}.btn-primary:active:not(:disabled):not([aria-disabled=true]),.btn-quiet:active:not(:disabled):not([aria-disabled=true]){scale:var(--press-scale)}.btn-primary{background:var(--ink);border:1px solid var(--ink);color:var(--paper)}@media(hover:hover){.btn-primary:hover:not(:disabled):not([aria-disabled=true]){background:var(--ink-soft);border-color:var(--ink-soft);color:var(--paper)}}.btn-primary:disabled,.btn-primary[aria-disabled=true]{opacity:1;background:var(--surface-hover);border-color:var(--border);color:var(--muted);cursor:default}.btn-quiet{background:var(--surface);border:1px solid var(--border-strong);color:var(--ink)}@media(hover:hover){.btn-quiet:hover:not(:disabled):not([aria-disabled=true]){background:var(--surface-hover);border-color:var(--ink-soft)}}.btn-quiet:disabled,.btn-quiet[aria-disabled=true]{opacity:.45;cursor:default}.is-selected,.btn-quiet[aria-pressed=true],.btn-quiet[aria-selected=true],.btn-quiet[aria-checked=true]{background:var(--surface);border-color:var(--state-select);box-shadow:inset 0 0 0 1px var(--state-select);color:var(--ink)}@media(hover:hover){.is-selected:hover:not(:disabled),.btn-quiet[aria-pressed=true]:hover:not(:disabled){background:var(--surface-hover);border-color:var(--state-select)}}.feel-rise{animation:feelRise var(--dur-slow) var(--ease-out) both}.feel-fade{animation:feelFade var(--dur-base) var(--ease-out) both}.feel-slide{animation:feelSlide var(--dur-slow) var(--ease-out) both}.feel-shake{animation:feelShake var(--dur-slow) var(--ease-in-out) both}.feel-settle{transform-box:fill-box;transform-origin:center;animation:feelSettle var(--dur-slow) var(--ease-settle) both}@media(prefers-reduced-motion:reduce){:root .guided-kicker-icon,:root .home-chevron,:root .home-switch:after,:root .menu-switch:after,:root .principles-group>summary:after,:root .fact-caret{transition-property:color,background-color,border-color,opacity}}@keyframes feelRise{0%{opacity:0;transform:translateY(var(--rise))}to{opacity:1;transform:none}}@keyframes feelFade{0%{opacity:0}to{opacity:1}}@keyframes feelSlide{0%{opacity:0;transform:translate(var(--slide))}to{opacity:1;transform:none}}@keyframes feelShake{0%,to{transform:none}20%,60%{transform:translate(calc(-1 * var(--shake)))}40%,80%{transform:translate(var(--shake))}}@keyframes feelSettle{0%,to{transform:none}45%{transform:scale(var(--settle-scale))}}.page-toc{position:sticky;top:0;z-index:5;display:flex;flex-wrap:wrap;gap:8px;margin:24px -4px 0;padding:10px 4px;background:var(--paper);border-bottom:1px solid var(--border)}.page-toc a{display:inline-flex;align-items:center;gap:8px;min-height:36px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink);font-size:14px;text-decoration:none}.page-toc a:hover{border-color:var(--border-strong)}.page-toc-count{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}.principles-section{margin-top:40px;scroll-margin-top:72px}.principles-section h2{font-family:var(--serif);font-size:26px;margin:0}.principles-intro{margin:6px 0 0;font-family:var(--serif);font-size:15.5px;color:var(--muted)}.principles{list-style:none;margin:16px 0 0;padding:0}.principle{padding:18px 16px 20px;margin:0 -16px;border-top:1px solid var(--border);scroll-margin-top:72px;transition:background-color var(--dur-slow) var(--ease-out)}.principle:focus{outline:none}.principle.targeted{background:var(--highlight);border-top-color:transparent;border-radius:var(--radius-md)}.principle-name{margin:0 0 6px;font-family:var(--sans);font-size:12.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.principle-name a{color:inherit;text-decoration:none}.principle-name a:hover{text-decoration:underline}.principle-text{margin:0;max-width:64ch;font-family:var(--serif);font-size:18px;line-height:1.55;color:var(--ink)}.principle-gloss{margin:10px 0 0;max-width:64ch;padding-left:12px;border-left:2px solid var(--border-strong);font-family:var(--serif);font-size:15.5px;line-height:1.5;color:var(--ink-soft)}.principle-used{margin-top:12px;font-size:14px;color:var(--muted)}.principle-used summary{cursor:pointer;width:fit-content}.principle-used summary:hover{color:var(--ink)}.principle-used-list{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.cite-chip-wrap{display:inline-flex}.cite-chip-btn,.cite-chip-link{position:relative;display:inline-flex;align-items:center;font-family:var(--sans);font-size:12px;line-height:1.5;padding:1px 8px;border:1px solid transparent;border-radius:var(--radius-pill);background:var(--chip-bg);color:var(--chip-ink);text-decoration:none;white-space:nowrap;cursor:pointer}.cite-chip-btn:hover:not(:disabled),.cite-chip-link:hover{background:var(--chip-bg);border-color:var(--border-strong);color:var(--ink)}.cite-chip-btn.open,.cite-chip-btn.open:hover:not(:disabled){border-color:var(--state-select);color:var(--ink)}@media(pointer:coarse){.cite-chip-btn:after,.cite-chip-link:after{content:"";position:absolute;top:-10px;right:-4px;bottom:-10px;left:-4px}}.cite-pop{position:fixed;z-index:1000;display:flex;flex-direction:column;gap:6px;padding:12px 14px 14px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-lg);font-family:var(--serif);font-style:normal;font-weight:400;text-align:left;white-space:normal;color:var(--ink);animation:popIn var(--dur-base) var(--ease-out)}.cite-pop-kind{font-family:var(--sans);font-size:11.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}.cite-pop-text{font-size:15px;line-height:1.5;color:var(--ink)}.cite-pop-gloss{padding-left:10px;border-left:2px solid var(--border-strong);font-size:14px;line-height:1.45;color:var(--ink-soft)}.cite-pop-more{align-self:flex-start;margin-top:2px;font-size:13.5px;color:var(--accent);text-decoration:none}.cite-pop-more:hover{text-decoration:underline}@keyframes popIn{0%{opacity:0;transform:translateY(calc(-1 * var(--rise-sm)))}to{opacity:1;transform:none}}@media(pointer:coarse){.page-toc a{min-height:44px}.page-back{display:inline-flex;align-items:center;min-height:44px}}.route-note{position:fixed;top:max(12px,env(safe-area-inset-top));left:50%;z-index:900;transform:translate(-50%);display:flex;align-items:center;gap:14px;width:max-content;max-width:calc(100vw - 32px);padding:8px 8px 8px 16px;border-radius:var(--radius-lg);background:var(--ink);color:var(--paper);box-shadow:var(--shadow-lg);font-family:var(--serif);font-size:15px;line-height:1.4;animation:popIn var(--dur-base) var(--ease-out)}.route-note-close,.route-note-close:hover:not(:disabled){flex-shrink:0;min-height:36px;padding:0 14px;border:1px solid color-mix(in srgb,var(--paper) 45%,transparent);border-radius:var(--radius-pill);background:transparent;color:var(--paper)}.route-note-close:hover:not(:disabled){background:color-mix(in srgb,var(--paper) 12%,transparent)}@media(max-width:640px){.page{padding:28px 16px 64px}.page-header h1{font-size:32px}}.home{max-width:1080px;margin:0 auto;padding:8px 32px 72px}.home-bar{position:relative;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px}.home-wordmark{display:inline-flex;align-items:center;min-height:44px;font-family:var(--serif);font-size:var(--fs-title);font-weight:700;letter-spacing:-.01em;color:var(--ink);text-decoration:none;transition:color var(--dur-fast) var(--ease-out)}@media(hover:hover){.home-wordmark:hover{color:var(--ink-soft)}}.home-menu{position:relative}.home-menu-button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid transparent;border-radius:var(--radius-pill);background:transparent;color:var(--ink-soft)}@media(hover:hover){.home-menu-button:hover:not(:disabled){background:var(--surface-hover);border-color:transparent;color:var(--ink)}}.home-menu-button[aria-expanded=true],.home-menu-button[aria-expanded=true]:hover:not(:disabled){background:var(--surface);border-color:var(--state-select);color:var(--ink)}.home-menu-panel{position:absolute;top:calc(100% + 6px);right:0;width:248px;padding:6px;background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow-lg);animation:homeMenuIn var(--dur-base) var(--ease-out) both}@keyframes homeMenuIn{0%{opacity:0;transform:translateY(calc(-1 * var(--rise-sm)))}to{opacity:1;transform:none}}.home-menu-list{list-style:none;margin:0;padding:0}.home-menu-item{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;min-height:44px;padding:0 12px;border:0;border-radius:var(--radius-md);background:transparent;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-tight);color:var(--ink);text-align:left;text-decoration:none;transition:background-color var(--dur-fast) var(--ease-out)}@media(hover:hover){.home-menu-item:hover:not(:disabled){background:var(--surface-hover);border-color:transparent}}.home-menu-item[aria-current=page]{color:var(--muted)}.home-menu-settings{margin-top:6px;padding-top:6px;border-top:1px solid var(--border)}.home-switch{position:relative;flex-shrink:0;width:34px;height:20px;border-radius:var(--radius-pill);background:var(--border-strong);transition:background-color var(--dur-base) var(--ease-out)}.home-switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);transition:transform var(--dur-base) var(--ease-out)}.home-menu-switch[aria-checked=true] .home-switch{background:var(--ink)}.home-menu-switch[aria-checked=true] .home-switch:after{transform:translate(14px)}.home-main{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.12fr);grid-template-areas:"hero figure" "path figure";grid-template-rows:auto auto;align-content:center;column-gap:64px;min-height:calc(100vh - 140px)}.home-hero{grid-area:hero}.home-figure{grid-area:figure;align-self:center;margin:0}.home-path{grid-area:path;margin-top:40px}.home-hero h1{font-family:var(--serif);font-size:var(--fs-display);font-weight:700;line-height:var(--lh-tight);letter-spacing:-.015em;margin:0;max-width:20ch;text-wrap:balance}.home-lede{font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-soft);margin:12px 0 0}.home-cta{min-height:48px;min-width:220px;margin-top:24px;padding:0 28px;font-variant-numeric:tabular-nums}.home-figure-canvas{border:1px solid var(--border);border-radius:var(--radius-lg);overflow:hidden;background:var(--figure-bg)}.home-figure svg.construction{touch-action:auto!important}.home-path-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding-bottom:8px;border-bottom:1px solid var(--border)}.home-path-head h2{font-family:var(--serif);font-size:var(--fs-body);font-weight:700;margin:0}.home-count{font-size:var(--fs-caption);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.path{list-style:none;margin:0;padding:0}.path-row{display:flex;align-items:center;gap:14px;min-height:52px;padding:8px 8px 8px 4px;border-bottom:1px solid var(--border);color:var(--ink);text-decoration:none;transition:background-color var(--dur-fast) var(--ease-out)}@media(hover:hover){.path-row:hover{background:var(--surface-hover)}}.path-marker{flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;border:1.5px solid var(--border-strong);background:var(--paper);font-family:var(--serif);font-size:var(--fs-caption);color:var(--muted);font-variant-numeric:tabular-nums}.path-stop.walked .path-marker{border-color:var(--ink-soft);color:var(--ink-soft)}.path-stop.done .path-marker{border-color:var(--ink);background:var(--ink);color:var(--paper)}.path-stop.next .path-row{align-items:flex-start;padding-top:14px;padding-bottom:14px}.path-stop.next .path-marker{border:2px solid var(--state-select);color:var(--ink);font-weight:700}.path-text{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.path-stop.next .path-text{padding-top:3px}.path-name{font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-tight)}.path-stop:not(.next) .path-name{color:var(--ink-soft)}.path-id{font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;margin-right:2px}.path-gloss{font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-soft)}.home-chevron{flex-shrink:0;color:var(--muted);transition:transform var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}.path-stop.next .home-chevron{margin-top:6px}@media(hover:hover){.path-row:hover .home-chevron,.home-all:hover .home-chevron{color:var(--ink);transform:translate(var(--rise-sm))}}.home-all{display:inline-flex;align-items:center;gap:6px;min-height:44px;margin-top:8px;padding-right:8px;font-family:var(--serif);font-size:var(--fs-body);color:var(--ink);text-decoration:none}@media(hover:hover){.home-all:hover{text-decoration:underline;text-underline-offset:3px}}@media(max-width:900px){.home-main{grid-template-columns:minmax(0,1fr);grid-template-areas:"figure" "hero" "path";grid-template-rows:none;align-content:start;min-height:0;margin-top:8px}.home-hero{margin-top:24px}.home-path{margin-top:36px}}@media(max-width:640px){.home{padding:0 16px 48px}.home-bar{min-height:56px}.home-hero{margin-top:20px}.home-hero h1{font-size:var(--fs-title)}.home-lede{margin-top:6px}.home-cta{display:flex;width:100%;margin-top:20px}.home-path{margin-top:32px}}@media(prefers-reduced-motion:reduce){.home-switch,.home-switch:after{transition:none}}.page-wide:has(.bookmap){max-width:1200px}.bookmap{margin-top:24px}.bookmap-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.bookmap-legend{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;font-size:13px;color:var(--muted)}.bookmap-legend>span{display:inline-flex;align-items:center;gap:6px}.legend-shape{display:inline-block;width:12px;height:12px;border:1.5px solid var(--ink-soft);background:var(--surface)}.legend-shape.problem{border-radius:3px}.legend-shape.theorem{border-radius:50%}.legend-shape.done{background:var(--ink);border-color:var(--ink)}.legend-shape.walked{border-color:var(--ink);background:linear-gradient(90deg,var(--ink) 50%,var(--surface) 50%)}.bookmap-stage{margin-top:16px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--figure-bg);overflow:hidden}.bookmap-svg{display:block;width:100%;height:auto}.bm-edge{fill:none;stroke:var(--figure-soft);stroke-width:1;opacity:.45;transition:opacity .16s ease,stroke .16s ease}.bookmap-svg.has-focus .bm-edge{opacity:.08}.bookmap-svg.has-focus .bm-edge.on{stroke:var(--state-select);stroke-width:1.25;opacity:.55}.bm-node{cursor:pointer;outline:none}.bm-node .bm-shape{fill:var(--surface);stroke:var(--ink-soft);stroke-width:1.5;transition:opacity .16s ease}.bm-node.done .bm-shape{fill:var(--ink);stroke:var(--ink)}.bm-node.walked .bm-shape{stroke:var(--ink)}.bm-node .bm-half{fill:var(--ink);pointer-events:none}.bm-node text{font-family:var(--serif);font-size:13px;font-weight:700;fill:var(--ink);text-anchor:middle;dominant-baseline:central;pointer-events:none;font-variant-numeric:tabular-nums}.bm-node.done text{fill:var(--paper)}.bm-node.walked text{paint-order:stroke;stroke:var(--surface);stroke-width:3px}.bm-node .bm-ring{fill:none;stroke:transparent;stroke-width:3}.bm-node:focus-visible .bm-ring{stroke:var(--focus-ring)}@media(hover:hover){.bm-node:hover .bm-ring{stroke:var(--focus-ring)}}.bookmap-svg.has-focus .bm-node.dim{opacity:.22}.bm-node.ancestor .bm-shape{stroke:var(--state-select);stroke-width:2.25}.bm-node.selected .bm-shape{fill:var(--ink);stroke:var(--ink)}.bm-node.selected .bm-ring{stroke:var(--state-select);stroke-width:2}.bm-node.selected text{fill:var(--paper);stroke:none}.bm-node.selected .bm-half{display:none}.bookmap-detail{margin-top:16px;padding:18px 20px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);min-height:132px}.bookmap-detail h2{font-family:var(--serif);font-size:22px;margin:0}.bookmap-detail h2 .bm-detail-id{color:var(--accent);margin-right:8px}.bookmap-detail p{font-family:var(--serif);font-size:15.5px;line-height:1.5;color:var(--ink-soft);margin:6px 0 0;max-width:80ch}.bm-detail-grid{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:8px 14px;align-items:baseline;margin-top:14px;font-size:14px}.bm-detail-grid dt{color:var(--muted)}.bm-detail-grid dd{margin:0;display:flex;flex-wrap:wrap;gap:4px}.bm-detail-actions{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-top:14px}.bm-try{font:inherit;font-family:var(--serif);color:var(--accent);background:none;border:0;padding:0;text-decoration:underline;text-underline-offset:2px}.bm-try:hover:not(:disabled){background:none;color:var(--ink)}.home-credit{margin-top:40px;padding-top:16px;border-top:1px solid var(--border)}.home-credit p{margin:0 0 6px;max-width:66ch;font-family:var(--serif);font-size:14px;line-height:1.55;color:var(--ink-soft)}.home-credit a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.home-credit a:hover{text-decoration-thickness:2px}.about-link{display:inline-block;margin-top:12px;font-family:var(--serif);font-size:15px;color:var(--accent);text-decoration:none}.about-link:hover{text-decoration:underline}.about-section{margin-top:40px}.about-section h2{margin:0 0 12px;font-family:var(--serif);font-size:24px;line-height:1.25;color:var(--ink)}.about p,.about li,.about dd{font-family:var(--serif);font-size:16.5px;line-height:1.6;color:var(--ink-soft);max-width:66ch}.about p{margin:0 0 12px}.about ul{margin:0 0 12px;padding-left:1.2em;display:grid;gap:8px}.about strong{color:var(--ink);font-weight:600}.about a{color:var(--accent);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px}.about a:hover{text-decoration-thickness:2px}.about code{font-family:var(--mono);font-size:.86em;background:var(--chip-bg);color:var(--ink);padding:1px 6px;border-radius:4px}.about kbd{display:inline-block;min-width:1.6em;padding:0 6px;border:1px solid var(--border-strong);border-bottom-width:2px;border-radius:5px;background:var(--surface);font-family:var(--sans);font-size:.85em;line-height:1.5;text-align:center;color:var(--ink)}.about-terms{display:grid;gap:2px;margin:16px 0}.about-terms>div{display:grid;grid-template-columns:11em minmax(0,1fr);gap:16px;padding:12px 0;border-top:1px solid var(--border)}.about-terms>div:last-child{border-bottom:1px solid var(--border)}.about-terms dt{font-family:var(--serif);font-size:17px;font-weight:700;color:var(--ink)}.about-terms dd{margin:0}.chip-sample{font-family:var(--sans);font-size:13px;white-space:nowrap;padding:1px 8px;border-radius:var(--radius-pill);background:var(--chip-bg);color:var(--chip-ink)}.about-legend{display:flex;flex-wrap:wrap;gap:8px 24px;margin:0 0 14px;font-family:var(--serif);font-size:15.5px;color:var(--ink-soft)}.about-legend>span{display:inline-flex;align-items:center;gap:8px}.about-legend .verify-badge{margin:0;cursor:default}@media(max-width:640px){.about-terms>div{grid-template-columns:minmax(0,1fr);gap:4px}}.viewer{max-width:1320px;margin:0 auto;padding:16px 24px;overflow-x:clip}.figure-pane{position:relative;flex-shrink:0;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;background:var(--figure-bg);box-shadow:var(--shadow-sm)}.figure-pane svg{display:block}.figure-pane.is-movable svg{cursor:default}.step-card{display:flex;flex-direction:column;min-height:0}.step-meta{font-family:var(--sans);font-size:var(--fs-caption);letter-spacing:.06em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}.step-text{margin:0;font-family:var(--serif);font-size:var(--fs-prompt);line-height:1.45;color:var(--ink);text-wrap:pretty}.step-extras{display:flex;flex-wrap:wrap;align-items:center;gap:4px 16px;margin-top:10px}.step-macro{min-height:32px;font-size:var(--fs-caption)}.step-qed{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:14px 0 0;font-family:var(--serif)}.step-readout{display:flex;align-items:center;flex-wrap:wrap;gap:4px 8px;margin:12px 0 0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}.step-readout.is-ok svg{width:18px;height:18px;color:var(--state-ok)}.prose-ref{font-weight:var(--fw-strong);transition:color var(--dur-base) var(--ease-out)}.step-in{animation:feelSlide var(--dur-slow) var(--ease-out) both}.step-in-back{animation:viewerSlideBack var(--dur-slow) var(--ease-out) both}@keyframes viewerSlideBack{0%{opacity:0;transform:translate(calc(-1 * var(--slide)))}to{opacity:1;transform:none}}.reason-chip,.reason-chip:hover:not(:disabled){display:inline-flex;align-items:center;min-height:32px;margin-left:-2px;padding:0 2px;border:0;background:transparent;cursor:pointer}.reason-chip-pill{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border:1px solid transparent;border-radius:var(--radius-pill);background:var(--chip-bg);font-family:var(--sans);font-size:var(--fs-caption);line-height:1.4;color:var(--chip-ink);white-space:nowrap;transition:border-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out),scale var(--dur-fast) var(--ease-out)}@media(hover:hover){.reason-chip:hover .reason-chip-pill{border-color:var(--border-strong);color:var(--ink)}}.reason-chip:active .reason-chip-pill{scale:var(--press-scale)}.reason-chip[aria-expanded=true] .reason-chip-pill{border-color:var(--state-select);color:var(--ink)}.reason-chip-placed{padding-right:6px;border-right:1px solid var(--border-strong);font-style:italic}@media(pointer:coarse){.reason-chip,.reason-chip:hover:not(:disabled){min-height:44px}}.step-controls{display:flex;flex-direction:column;gap:12px}.step-progress{height:3px;border-radius:var(--radius-pill);background:var(--border);overflow:hidden}.step-progress span{display:block;height:100%;background:var(--ink);transform-origin:left center;transition:transform var(--dur-slow) var(--ease-out)}.step-buttons{display:flex;align-items:center;gap:10px}.step-buttons svg{width:18px;height:18px;flex-shrink:0}.step-list{padding:0 16px 0 14px}.step-prev{width:44px;padding:0}.step-primary{flex:1;min-height:48px;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}.step-primary svg{width:18px;height:18px}@media(min-width:901px){.viewer{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:calc(100vh - var(--lesson-header-h));height:calc(100dvh - var(--lesson-header-h));overflow:hidden}.viewer-body{display:flex;align-items:center;justify-content:center;gap:32px;min-width:0;min-height:0;height:100%}.step-column{display:flex;flex-direction:column;justify-content:space-between;gap:24px;width:420px;height:var(--fig)}.step-card{flex:1;overflow-y:auto;padding:8px 2px 2px}}@media(max-width:900px){.viewer{padding:4px 16px calc(96px + env(safe-area-inset-bottom))}.viewer-body{display:flex;flex-direction:column;align-items:center;max-width:560px;margin:0 auto}.figure-pane{position:sticky;top:env(safe-area-inset-top,0px);z-index:4}.figure-pane svg.construction{touch-action:pan-y!important}.figure-pane.is-movable svg.construction{touch-action:none!important}.step-column{width:var(--fig);max-width:100%}.step-card{padding:16px 2px 8px}.step-controls{position:fixed;left:0;right:0;bottom:0;z-index:30;gap:10px;padding:0 16px calc(12px + env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--border)}.step-progress{margin:0 -16px;border-radius:0}.step-buttons{width:100%;max-width:560px;margin:0 auto}.step-list{width:44px;padding:0}.step-list-label{display:none}}.bs-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;background:#14120e61;animation:feelFade var(--dur-base) var(--ease-out) both}.bs-panel{position:fixed;left:0;right:0;bottom:0;z-index:61;display:flex;flex-direction:column;max-width:640px;max-height:80vh;max-height:80dvh;margin:0 auto;padding-bottom:env(safe-area-inset-bottom);border:1px solid var(--border);border-bottom:0;border-radius:16px 16px 0 0;background:var(--surface);box-shadow:var(--shadow-lg);animation:feelRise var(--dur-slow) var(--ease-out) both}.bs-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 12px 10px 20px;border-bottom:1px solid var(--border)}.bs-title{min-width:0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}.bs-done{flex-shrink:0}.bs-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:16px 20px 24px}.proof-sheet{height:80vh;height:80dvh}.proof-sheet .bs-body{padding:4px 8px 24px}.reason-item+.reason-item,.reason-why+.reason-item,.reason-placed+.reason-item,.reason-placed+.reason-why{margin-top:20px}.reason-kind{margin:0 0 6px;font-family:var(--sans);font-size:var(--fs-caption);font-weight:var(--fw-strong);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.reason-text,.reason-why,.reason-placed{margin:0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}.reason-gloss{margin:8px 0 0;padding-left:12px;border-left:2px solid var(--border-strong);font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-soft)}.reason-placed{font-style:italic;color:var(--ink-soft)}.reason-more{display:inline-flex;align-items:center;min-height:44px;margin-top:8px;font-family:var(--serif);font-size:var(--fs-body);color:var(--ink);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--border-strong)}.reason-more:hover{text-decoration-color:var(--ink)}.reason-item .reason-more{margin-top:4px}.reason-item+.reason-more{margin-top:16px}.proof-list{list-style:none;padding:0;margin:0;font-family:var(--serif)}.proof-step{position:relative;border-bottom:1px solid var(--border);border-radius:var(--radius-sm);line-height:var(--lh-body);transition:background-color var(--dur-fast) var(--ease-out)}.proof-step.active{background:var(--highlight)}@media(hover:hover){.proof-step:hover:not(.active){background:var(--surface-hover)}}.proof-step-line{display:flex;align-items:center}.proof-step-main,.proof-step-main:hover:not(:disabled){display:flex;align-items:baseline;gap:12px;flex:1;min-width:0;min-height:44px;margin:0;padding:10px 12px;border:0;border-radius:var(--radius-sm);background:transparent;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);text-align:left;color:var(--ink);cursor:pointer}.proof-step-num{flex-shrink:0;min-width:1.6em;font-family:var(--sans);font-size:var(--fs-caption);font-variant-numeric:tabular-nums;color:var(--muted)}.proof-step-prose{flex:1;min-width:0}.proof-step-reason{flex-shrink:0;max-width:40%;font-family:var(--sans);font-size:var(--fs-caption);text-align:right;color:var(--chip-ink)}.proof-step.narrative .proof-step-main{font-style:italic;color:var(--muted)}.proof-step.macro .proof-step-main{font-weight:500}.proof-step.sub{border-bottom-style:dashed}.proof-step.sub .proof-step-main{color:var(--ink-soft)}.macro-toggle,.macro-toggle:hover:not(:disabled){position:relative;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:32px;height:44px;margin:0 -8px 0 0;padding:0;border:none;border-radius:var(--radius-sm);background:transparent;color:var(--muted)}.macro-toggle:hover:not(:disabled){color:var(--ink)}.macro-toggle svg{width:14px;height:14px}.setting-label{display:inline-block;margin-right:10px;font-family:var(--sans);font-size:var(--fs-caption);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.proof-step.check-failed .verify-badge{animation:checkFlash .9s ease-in-out 2}@keyframes checkFlash{50%{transform:scale(1.35)}}.end-mark{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 10px;margin:20px 12px 0;font-family:var(--serif)}.end-qed{font-size:var(--fs-prompt);font-weight:700;letter-spacing:.03em;color:var(--ink)}.end-gloss{font-size:var(--fs-body);font-style:italic;color:var(--ink-soft)}.context-strip{display:grid;gap:10px;margin:20px 12px 8px;padding-top:16px;border-top:1px solid var(--border)}.context-row{display:grid;grid-template-columns:86px minmax(0,1fr);gap:10px;align-items:baseline}.context-label{margin:0;font-family:var(--sans);font-size:var(--fs-caption);font-weight:var(--fw-strong);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.context-chips{display:flex;flex-wrap:wrap;gap:6px}.context-none,.context-note{font-family:var(--serif);font-size:var(--fs-body);color:var(--ink-soft)}.context-note{margin:-2px 0 0 96px}.context-strip a:not(.cite-chip){color:var(--ink)}@media(max-width:640px){.context-note{margin-left:0}}.construction .region{opacity:.17;transition:opacity .22s ease-out}.construction .region-active{opacity:.28}.construction .region-spot{opacity:.4}.construction .region-in{animation:feelFade var(--dur-slow) var(--ease-out) both}:root[data-theme=dark] .construction .region{opacity:.2}:root[data-theme=dark] .construction .region-active{opacity:.32}:root[data-theme=dark] .construction .region-spot{opacity:.44}.construction .angle-wedge{fill-opacity:.42;stroke-width:1.5;stroke-linejoin:round;animation:calloutAppear .28s ease-out forwards;opacity:0}.construction .wedge-spot{fill-opacity:.62}.construction .tick-marks line{stroke:var(--figure-ink);stroke-width:1.6;stroke-linecap:round}.construction .drag-halo{fill:none;stroke:var(--figure-ink);stroke-width:1.2;stroke-dasharray:2.5 3;opacity:.55}.figure-pane.is-dragging,.figure-pane.is-dragging .point-group{cursor:grabbing!important}.viewer .callout-segment,.viewer .callout-point{animation:calloutAppear .28s ease-out forwards}.viewer .obj.hinted,.viewer .hint-ring{animation-iteration-count:3}.case-note{position:absolute;left:8px;right:8px;top:8px;margin:0;padding:8px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);box-shadow:var(--shadow-md);font-family:var(--serif);font-size:var(--fs-caption);line-height:1.45;color:var(--ink);animation:feelFade var(--dur-base) var(--ease-out) both}.link-btn,.link-btn:hover:not(:disabled){padding:0;border:0;background:none;font:inherit;color:var(--ink);text-decoration:underline;text-underline-offset:2px;cursor:pointer}.viewer .prose-spotlight{display:inline}.ref-glyph{display:inline-block;width:1.65em;height:1.1em;vertical-align:-.18em;margin:0 .06em;overflow:visible}@media(prefers-reduced-motion:reduce){.construction .angle-wedge{animation:none;opacity:1}.step-progress span{transition:none}.proof-step.check-failed .verify-badge{animation:none}}.freeplay{max-width:1000px;margin:0 auto;padding:24px}.freeplay-toolbar{display:flex;gap:6px;margin-bottom:8px;flex-wrap:wrap;align-items:center}.tool{font-family:var(--sans);background:var(--surface);font-size:13px}.spacer{flex:1}.freeplay-status{font-family:var(--serif);color:var(--muted);font-size:14px;font-style:italic;margin-bottom:8px;min-height:1.4em}.freeplay-canvas{position:relative;width:600px;height:600px;max-width:100%;border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden;box-shadow:var(--shadow-sm)}.ps-status{margin:8px 0 4px;text-align:center;font-size:var(--fs-body)}.freeplay-toolbar.ps-toolbar.ps-tray{flex-wrap:wrap;overflow:visible;justify-content:center;gap:6px;margin:0}.ps-tray .ps-tool{position:relative;flex:0 1 78px;min-width:64px;min-height:54px;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;padding:6px 6px 5px;font-size:var(--fs-caption);line-height:1.15;color:var(--ink-soft)}.ps-tray .ps-tool svg{flex-shrink:0}.ps-tool-word{white-space:nowrap}.ps-tray .ps-tool.is-selected{color:var(--ink)}.ps-tray .ps-tool.is-hinted:after{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border:1.5px dashed var(--state-hint-ring);border-radius:calc(var(--radius-md) + 5px);pointer-events:none}.ps-tray .prop-tool{flex-basis:136px}.ps-tray .prop-tool .ps-tool-word{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;white-space:normal;text-align:center}.ps-tool-glyph{font-family:var(--serif);font-size:var(--fs-body);font-weight:600;line-height:22px}@media(max-width:900px){.ps-tray.has-props .prop-tool{flex-basis:78px}.ps-tray.has-props .prop-tool .ps-tool-word{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}}.ps-tray .ps-reset{margin-left:12px;color:var(--muted)}.ps-canvas-controls.ps-corner{align-items:center}.ps-canvas-controls.ps-corner .ps-corner-btn{width:36px;height:36px;min-width:0;padding:0;display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:var(--radius-pill);border-color:var(--border);background:var(--surface);color:var(--ink-soft);box-shadow:var(--shadow-sm)}.ps-canvas-controls.ps-corner .ps-cancel{width:auto;padding:0 14px 0 10px;font-size:var(--fs-caption);color:var(--ink)}@media(hover:hover){.ps-canvas-controls.ps-corner .ps-corner-btn:hover:not(:disabled){background:var(--surface-hover);border-color:var(--border-strong);color:var(--ink)}}@media(pointer:coarse){.ps-canvas-controls.ps-corner .ps-corner-btn{width:44px;height:44px}.ps-canvas-controls.ps-corner .ps-cancel{width:auto}}.ps-canvas-controls.ps-corner .ps-fit.is-nudged{position:relative;border-color:var(--state-select);box-shadow:inset 0 0 0 1px var(--state-select),var(--shadow-sm);color:var(--ink);animation:psNudge .56s var(--ease-out) 2}.ps-fit.is-nudged:after{content:"";position:absolute;top:3px;right:3px;width:7px;height:7px;border-radius:50%;background:var(--ink);box-shadow:0 0 0 1.5px var(--surface)}@keyframes psNudge{0%,to{scale:1}40%{scale:1.14}}.ps-stage .freeplay-canvas svg.ps-crossings{position:absolute;left:0;top:0;pointer-events:none}.ps-crossing{animation:feelFade var(--dur-slow) var(--ease-out) both}.ps-crossing-halo{fill:var(--figure-bg);opacity:.9}.ps-crossing-ring{fill:none;stroke:var(--state-hint-ring);stroke-width:1.5;stroke-dasharray:2.6 2.4}.ps-crossing-core{fill:var(--state-hint-ring)}@media(prefers-reduced-motion:reduce){.ps-canvas-controls.ps-corner .ps-fit.is-nudged{animation:none}}.guided-banner{display:flex;align-items:baseline;gap:14px;padding:12px 16px;margin-bottom:10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}.guided-progress{font-size:12.5px;color:var(--muted);white-space:nowrap}.guided-instruction{font-family:var(--serif);font-size:16px;line-height:1.45}.tool.prop-tool{font-style:italic}@media(max-width:640px){.freeplay-canvas{width:100%;aspect-ratio:1 / 1;height:auto}.freeplay-canvas svg{width:100%;height:100%}}.freeplay.guided{--guided-gap: 12px;display:flex;flex-direction:column;max-width:640px;margin:0 auto;padding:4px 16px 136px}.guided>.guided-prompt{order:1}.guided>.ps-stage{order:2}.guided>.guide-strip{order:3}.guided>.ps-toolbar{order:4}.guided>.guided-foot{order:5}.guided>.freeplay-status{display:none}.guided-prompt{position:relative;overflow-x:clip;overflow-clip-margin:4px}.guided-given{position:relative}.guided-kicker{display:inline-flex;align-items:center;gap:4px;max-width:100%;min-height:44px;margin:-10px 0 -8px -2px;padding:0 2px;border:0;background:none;font-family:var(--serif);font-size:var(--fs-body);color:var(--muted);text-align:left}.guided-kicker>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.guided-kicker-alt{display:none}@media(min-width:641px){.guided-kicker-name{display:none}.guided-kicker-alt{display:inline}}@media(hover:hover){.guided-kicker:hover:not(:disabled){background:none;color:var(--ink)}}.guided-kicker-icon{flex-shrink:0;transition:transform var(--dur-base) var(--ease-out)}.guided-given.open .guided-kicker-icon{transform:rotate(180deg)}.guided-given-panel{position:absolute;z-index:20;top:calc(100% + 4px);left:0;right:0;padding:12px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-md, 0 6px 24px rgba(0, 0, 0, .12))}.guided-given-panel p{margin:0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body)}.guided-given-panel p+p{margin-top:6px;color:var(--ink-soft)}.guided-ask{margin:4px 0 var(--guided-gap);min-height:2.6em;font-family:var(--serif);font-size:var(--fs-prompt);line-height:1.3;color:var(--ink);text-wrap:pretty}.guided-claim{font-weight:600;white-space:nowrap}.guided-ask-hint{color:var(--ink-soft)}.guided-result{font-weight:600}.guided-qed{display:inline-block;font-size:var(--fs-body);color:var(--ink-soft)}.guided .guide-strip{display:flex;align-items:center;flex-wrap:wrap;gap:0 12px;min-height:32px;margin:6px 0 0;padding:0;border:0;background:none;font-size:var(--fs-body)}.guided .guide-text{color:var(--ink-soft);font-family:var(--serif);font-weight:400}.guided .guide-strip .guide-doit,.guided-quiet{min-height:32px;margin-left:0;padding:0 2px;border:0;background:none;font-family:var(--serif);font-size:var(--fs-body);color:var(--ink);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px;white-space:nowrap;animation:feelFade var(--dur-base) var(--ease-out) both}@media(hover:hover){.guided .guide-strip .guide-doit:hover:not(:disabled),.guided-quiet:hover:not(:disabled){background:none;text-decoration-color:var(--ink)}}.guided>.ps-toolbar{flex-wrap:wrap;gap:8px;margin:8px 0 0}.guided .ps-canvas-controls .tool{font-size:var(--fs-caption);background:var(--surface)}.guided .hint-ring,.guided .obj.hinted,.guided .callout-point,.guided .callout-segment{animation-iteration-count:1,1}.guided .callout-point,.guided .callout-segment{animation-duration:.28s,1.2s}.guided .hint-ring,.guided .obj.hinted{animation-iteration-count:3}.guided-question-open>.ps-toolbar,.guided-sheet-open>.ps-toolbar{visibility:hidden}.guided-question-open>.ps-toolbar{display:none}.guided-tray{margin-top:var(--guided-gap)}.guided-choices{display:grid;gap:8px}.guided-choice{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:48px;padding:8px 16px;text-align:left;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-tight);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--ink)}.guided-choice-code{flex-shrink:0;font-family:var(--sans);font-size:var(--fs-caption);color:var(--muted)}@media(hover:hover){.guided-choice:hover:not(:disabled){border-color:var(--ink-soft);background:var(--surface-hover)}}.guided-choice.is-selected,.guided-choice.is-selected:hover:not(:disabled),.guided-letter.is-selected,.guided-letter.is-selected:hover:not(:disabled){background:var(--surface);border-color:var(--state-select);box-shadow:inset 0 0 0 1px var(--state-select)}.guided-choices.locked .guided-choice,.guided-letters.locked .guided-letter{cursor:default}.guided-choices.locked .guided-choice:not(.is-selected):not(.is-answer){opacity:.55}.guided-choice.is-answer{border-color:var(--state-ok);box-shadow:inset 0 0 0 1px var(--state-ok)}.guided-choice.is-answer .guided-choice-words:before{content:"✓ ";color:var(--state-ok)}.guided-letters{display:flex;flex-wrap:wrap;gap:8px}.guided-letter{min-width:44px;min-height:44px;padding:0 10px;font-family:var(--serif);font-style:italic;font-size:var(--fs-body);background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius-md);color:var(--ink)}.guided-miss{margin:0;padding:8px 12px;border-left:3px solid var(--state-retry-edge);background:var(--state-retry-bg);border-radius:0 var(--radius-sm) var(--radius-sm) 0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-tight);color:var(--ink);animation:feelShake var(--dur-slow) var(--ease-in-out) 1}.guided-dock-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.guided-dock-row>:empty{display:none}.guided-primary{flex:1;min-height:48px}.guided-quiet-group{display:flex;flex-wrap:wrap;gap:0 16px}.guided-sheet{display:grid;gap:10px;padding:14px 16px 16px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.guided-sheet.ok{border-color:color-mix(in srgb,var(--state-ok) 45%,var(--border));background:var(--state-ok-bg)}.guided-sheet.retry{border-color:color-mix(in srgb,var(--state-retry-edge) 45%,var(--border));background:var(--state-retry-bg)}.guided-verdict{display:flex;align-items:baseline;gap:8px;margin:0;font-family:var(--serif);font-size:var(--fs-body);font-weight:600;line-height:var(--lh-tight)}.guided-mark{flex-shrink:0;width:1em;text-align:center}.guided-sheet.ok .guided-mark{color:var(--state-ok)}.guided-sheet.shown .guided-mark{color:var(--muted)}.guided-sheet-text{margin:0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body)}.guided-verdict .guided-euclid{font-weight:400}.guided-euclid{font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}.guided-euclid-label{margin-right:2px;font-family:var(--sans);font-size:var(--fs-caption);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.guided-cites{display:inline-flex;flex-wrap:wrap;gap:6px;margin-left:6px;vertical-align:2px}.guided-sheet>.guided-cites{margin-left:0}.guided .cite-chip{font-size:var(--fs-caption)}.guided-note summary{cursor:pointer;min-height:32px;display:flex;align-items:center;font-size:var(--fs-caption);color:var(--ink-soft)}.guided-note p{margin:4px 0 0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-soft)}.guided-finished .freeplay-canvas:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:inset 0 0 0 2px var(--state-ok),inset 0 0 20px color-mix(in srgb,var(--state-ok) 22%,transparent);opacity:0;pointer-events:none;animation:guidedGlow 1.4s var(--ease-out) 1}.guided-finished .freeplay-canvas>svg.construction{transform-origin:center;animation:feelSettle var(--dur-slow) var(--ease-settle) .12s both}@keyframes guidedGlow{0%,to{opacity:0}35%{opacity:1}}@media(hover:none){.guided-letter:not(.is-selected):hover,.guided-choice:not(.is-selected):hover{background:var(--surface)}}@media(pointer:coarse){.guided .guide-strip,.guided .guide-strip .guide-doit,.guided-quiet,.guided-note summary{min-height:44px}}@media(max-width:900px){.guided-dock{position:fixed;z-index:30;left:0;right:0;bottom:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-top:1px solid var(--border)}.guided-dock>*{max-width:608px;margin:0 auto}.guided-sheet-open .guided-dock{padding-top:10px;border-top:0;background:none;-webkit-backdrop-filter:none;backdrop-filter:none}.guided-sheet{box-shadow:0 -6px 24px #00000014}.guided-dock:has(>.guided-sheet){padding:10px 0 0}.guided-dock>.guided-sheet{max-width:none;padding:14px max(16px,calc((100% - 608px)/2)) calc(12px + env(safe-area-inset-bottom));border-width:1px 0 0;border-radius:var(--radius-lg) var(--radius-lg) 0 0}.guided-sheet-open .guided-tray{display:none}}@media(min-width:901px){.freeplay.guided{display:grid;max-width:1180px;padding:12px 32px 32px;grid-template-columns:minmax(0,1fr) 380px;grid-template-areas:"stage prompt" "stage guide" "stage tools" "stage foot";grid-template-rows:auto auto auto 1fr;column-gap:40px;align-items:start}.guided>.guided-prompt{grid-area:prompt}.guided>.guide-strip{grid-area:guide;margin:0 0 4px}.guided>.ps-toolbar{grid-area:tools;margin:4px 0 0}.guided>.ps-stage{grid-area:stage;justify-content:flex-start}.guided>.guided-foot{grid-area:foot;align-self:stretch;display:flex;flex-direction:column;margin-top:16px}.guided>.guided-foot>.guided-dock{margin-top:auto}.guided-dock>.guided-dock-row{margin-bottom:17px}.guided-kicker{margin:0 0 2px;min-height:28px}.guided-tray{margin-top:0;margin-bottom:16px}}@media(prefers-reduced-motion:reduce){.guided-miss{animation:feelFade var(--dur-base) var(--ease-out) both}}.goal-claim{margin-right:12px;font-size:var(--fs-body)}.goal-claim.met{color:var(--state-ok)}.theorem-page .ps-toolbar:empty,.theorem-page .freeplay-status:empty{display:none}.builder{display:grid;gap:10px}.builder-modes{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--paper);justify-self:start}.builder-mode{min-height:32px;padding:0 14px;border:1px solid transparent;border-radius:var(--radius-pill);background:transparent;color:var(--ink-soft);font-family:var(--serif);font-size:var(--fs-body)}.builder-note{margin:0;font-size:var(--fs-caption);color:var(--muted)}.reason-scope-note{margin:0;padding:6px 10px;border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--ink-soft);font-family:var(--serif);font-size:var(--fs-caption)}.claim-kinds{display:flex;flex-wrap:wrap;gap:6px}.claim-kind{min-height:32px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font-family:var(--serif);font-size:var(--fs-body)}.builder-mode.is-selected,.claim-kind.is-selected,.palette-choice.is-selected,.pl-choice.is-selected{border-color:var(--state-select);box-shadow:inset 0 0 0 1px var(--state-select);color:var(--ink)}.claim-expr{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-height:48px;padding:8px 10px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--paper);font-family:var(--serif);font-size:var(--fs-body)}.claim-term{display:inline-flex;align-items:center;gap:2px}.claim-prefix,.claim-plus,.claim-rel,.claim-rights,.claim-unit{color:var(--ink-soft)}.claim-rel{padding:0 4px}.claim-rel-btn{min-width:32px;min-height:32px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-size:var(--fs-body)}.claim-unit{font-size:var(--fs-caption);font-style:italic}.slot{min-width:30px;height:34px;padding:0 4px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:var(--serif);font-size:var(--fs-body);line-height:1}.slot.empty{border-style:dashed;color:var(--muted)}.slot.filled{border-color:var(--border-strong);font-weight:600}.slot.armed{border:2px solid var(--state-select)}.claim-adjust{display:inline-flex;gap:4px}.mini{min-height:28px;padding:0 8px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink-soft);font-family:var(--serif);font-size:var(--fs-caption)}.mini.on{border-color:var(--state-select);color:var(--ink);font-weight:600}.letter-row{display:flex;flex-wrap:wrap;gap:4px}.letter{min-width:34px;min-height:34px;padding:0 6px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--ink);font-family:var(--serif);font-size:var(--fs-body);font-style:italic}.letter-clear{font-style:normal;font-size:var(--fs-caption);color:var(--muted)}.palette{display:grid;gap:6px}.palette-label,.palette-group-name{font-size:var(--fs-caption);color:var(--muted)}.palette-group{display:grid;grid-template-columns:7.5em 1fr;gap:6px;align-items:start}.palette-group-name{padding-top:5px}.palette-choices{display:flex;flex-wrap:wrap;gap:4px}.palette-choice{min-height:30px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);color:var(--ink);font-family:var(--serif);font-size:var(--fs-body);white-space:nowrap}.palette-readout{display:grid;align-content:start;gap:2px;height:6.8em;overflow-y:auto;padding:8px 10px;border-left:3px solid var(--border-strong);background:var(--paper);font-family:var(--serif);font-size:var(--fs-caption);line-height:1.4}.palette-readout-head{font-weight:600}.palette-readout-gloss,.palette-readout-empty{color:var(--muted)}.wlog{display:flex;gap:8px;align-items:flex-start;font-size:var(--fs-caption);color:var(--ink-soft)}.wlog input{margin-top:3px}.builder-actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.feedback{padding:8px 12px;border-radius:var(--radius-md);font-family:var(--serif);font-size:var(--fs-body);line-height:1.45}.feedback-error{border:1px solid var(--state-retry-edge);background:var(--state-retry-bg);color:var(--ink)}.feedback-ok{border:1px solid var(--state-ok);border-left-width:4px;background:var(--state-ok-bg)}.feedback-info{border:1px solid var(--border-strong);color:var(--ink-soft)}.missing-list{margin:6px 0 0;padding-left:1.3em}.missing-list li{margin-bottom:2px}.hint-card p,.win-card p,.alt-card p{margin:6px 0 0;font-family:var(--serif);font-size:var(--fs-body);line-height:1.45}.hint-card-head{display:flex;align-items:center;justify-content:space-between}.hint-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.alt-card{margin-top:10px;padding:10px 12px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--surface)}.alt-card a{display:inline-block;margin-top:8px;color:var(--ink)}.compare{margin-top:10px}.compare summary{cursor:pointer;font-family:var(--serif);font-size:var(--fs-body)}.compare-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:8px}.compare h3{margin:0 0 4px;font-size:var(--fs-caption);font-weight:600;color:var(--muted)}.compare ol{margin:0;padding-left:1.4em;font-family:var(--serif);font-size:var(--fs-caption);line-height:1.4}.compare li{margin-bottom:4px}.compare-cite{margin-left:6px;color:var(--muted)}.reason-facts ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:4px;font-size:var(--fs-body)}.reason-empty{margin:6px 0 0;color:var(--muted);font-size:var(--fs-caption)}.fact-row{display:flex;align-items:baseline;gap:6px;width:100%;min-height:28px;padding:0;border:none;background:none;color:inherit;font:inherit;text-align:left;cursor:pointer}.fact-caret{flex:none;color:var(--muted);font-size:var(--fs-caption);transition:transform var(--dur-base) var(--ease-out)}.fact-caret.open{transform:rotate(90deg)}.fact-text{font-family:var(--serif)}.fact-cite{margin-left:auto;padding-left:8px;color:var(--muted);font-size:var(--fs-caption);white-space:nowrap}.fact-why{margin:4px 0 6px 17px;padding-left:10px;border-left:2px solid var(--border);color:var(--muted);font-size:var(--fs-caption)}.fact-why ul{list-style:disc;display:block;margin:2px 0 0;padding-left:1.2em;font-size:var(--fs-caption)}.fact-why li{font-family:var(--serif);color:var(--ink-soft)}.fact-why-head,.fact-why-lost{font-style:italic}.completion-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,420px);column-gap:32px;align-items:start}.completion-figure{position:sticky;top:12px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--figure-bg);box-shadow:var(--shadow-sm)}.completion-figure svg{display:block}.completion-figure.is-won svg{transform-origin:center;animation:feelSettle var(--dur-slow) var(--ease-settle) both}.completion-panel{display:grid;gap:16px;align-content:start;font-family:var(--serif)}.completion-goal{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;margin:0;font-size:var(--fs-prompt)}.completion-goal-label{font-size:var(--fs-caption);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.pl-lines{display:grid;gap:2px;margin:0;padding:0;list-style:none}.pl-line{display:grid;grid-template-columns:1.4em minmax(0,1fr) auto;gap:8px;align-items:baseline;padding:8px 10px;border:1px solid transparent;border-radius:var(--radius-md);font-size:var(--fs-body);line-height:1.4;transition:background-color var(--dur-base) var(--ease-out),border-color var(--dur-base) var(--ease-out)}.pl-setup{display:block;padding-left:10px;color:var(--ink-soft);font-style:italic}.pl-num{color:var(--muted);font-size:var(--fs-caption)}.pl-sub{display:block;color:var(--ink-soft);font-size:var(--fs-caption)}.pl-cite{color:var(--muted);white-space:nowrap}.pl-line.is-asking{border-color:var(--border-strong);background:var(--surface)}.pl-line.is-answered .pl-cite{color:var(--ink);animation:feelFade var(--dur-base) var(--ease-out) both}.pl-blank{display:inline-flex;align-items:center;justify-content:center;min-width:2.6em;padding:0 6px;border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--muted)}.pl-blank.is-asking{border:2px dashed var(--state-hint-ring);color:var(--ink)}.pl-ask{display:grid;gap:10px;scroll-margin-bottom:16px}.pl-prompt{margin:0;font-size:var(--fs-prompt);line-height:1.3}.pl-choices{display:grid;gap:8px}.pl-choice{display:flex;align-items:baseline;gap:10px;min-height:48px;padding:10px 14px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);color:var(--ink);font-family:var(--serif);font-size:var(--fs-body);text-align:left;cursor:pointer;transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out),scale var(--dur-fast) var(--ease-out)}@media(hover:hover){.pl-choice:hover:not(:disabled){background:var(--surface-hover)}}.pl-choice:active:not(:disabled){scale:var(--press-scale)}.pl-choice:disabled{opacity:1;cursor:default}.pl-choice:disabled:not(.is-right){color:var(--muted)}.pl-choice-words{flex:1}.pl-choice-code{color:var(--muted);white-space:nowrap}.pl-choice.is-missed{border-style:dashed;color:var(--ink-soft)}.pl-choice.is-right{border-color:var(--state-ok);box-shadow:inset 0 0 0 1px var(--state-ok);background:var(--state-ok-bg);color:var(--ink)}.pl-tick{color:var(--state-ok);font-weight:600}.pl-sheet{padding:10px 14px;border:1px solid var(--border-strong);border-radius:var(--radius-md);font-size:var(--fs-body);line-height:1.45}.pl-sheet p{margin:0}.pl-sheet p+p{margin-top:4px}.pl-sheet-retry{border-color:var(--state-retry-edge);background:var(--state-retry-bg)}.pl-sheet-ok{border-color:var(--state-ok);background:var(--state-ok-bg)}.pl-verdict{font-weight:600}.pl-link{margin-top:6px;min-height:32px;padding:0;border:none;background:none;color:var(--ink);font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.pl-actions{display:flex}.pl-actions .btn-primary{flex:1;min-height:48px}.pl-win{padding:14px 16px;border:1px solid var(--state-ok);border-left-width:4px;border-radius:var(--radius-md);background:var(--surface)}.pl-win p{margin:6px 0 0;font-size:var(--fs-body);line-height:1.45}.pl-win .verdict-head{margin:0}.pl-note{color:var(--muted)}.pl-win .verdict-mark{background:var(--state-ok)}@media(pointer:coarse){.slot,.letter,.claim-kind,.builder-mode,.palette-choice,.claim-rel-btn,.mini,.pl-link{min-height:44px}.slot{min-width:38px}.letter{min-width:44px}}@media(max-width:900px){.theorem-page .mode-layout>.ps-stage{position:sticky;top:0;z-index:3;padding:4px 0;background:var(--paper)}.palette-group{grid-template-columns:1fr;gap:2px}.compare-cols{grid-template-columns:1fr}.completion-layout{grid-template-columns:minmax(0,1fr);row-gap:12px}.completion-figure{top:0;z-index:3;border-radius:0;border-width:0 0 1px;margin:0 -16px;box-shadow:none}}.pl-line.is-veiled .pl-claim{color:var(--muted)}:root{--lesson-header-h: 60px}.lesson-header{position:relative;box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;column-gap:16px;max-width:1180px;height:var(--lesson-header-h);margin:0 auto;padding:0 24px}.lesson-header-start{display:flex;align-items:center;gap:4px;min-width:0}.lesson-exit,.lesson-more{display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;width:44px;height:44px;padding:0;border:0;border-radius:var(--radius-pill);background:transparent;color:var(--ink-soft);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),transform var(--dur-fast) var(--ease-out)}.lesson-exit{margin-left:-10px}.lesson-more{margin-right:-10px}@media(hover:hover){.lesson-exit:hover,.lesson-more:hover{background:var(--surface-hover);color:var(--ink)}}.lesson-exit:active,.lesson-more:active{background:var(--surface-hover);transform:scale(.94)}.lesson-title{min-width:0;margin:0;overflow:hidden;font-family:var(--serif);font-size:var(--fs-body);font-weight:var(--fw-regular);line-height:var(--lh-tight);color:var(--ink-soft);white-space:nowrap;text-overflow:ellipsis}.lesson-title-id{font-weight:var(--fw-strong);color:var(--ink)}.lesson-header-end{display:flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.lesson-count{font-size:var(--fs-caption);color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap}.lesson-progress{position:absolute;left:24px;right:24px;bottom:0;height:3px;border-radius:var(--radius-pill);background:var(--border);overflow:hidden}.lesson-progress>span{display:block;height:100%;background:var(--ink);transform-origin:left center;transition:transform var(--dur-slow) var(--ease-out)}.route-note{top:calc(var(--lesson-header-h) + 8px)}.stage-strip{display:inline-flex;gap:2px;padding:2px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--paper)}.stage{display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:36px;padding:0 16px;border-radius:var(--radius-pill);font-family:var(--serif);font-size:var(--fs-body);line-height:1;color:var(--ink-soft);text-decoration:none;white-space:nowrap;transition:background-color var(--dur-fast) var(--ease-out),color var(--dur-fast) var(--ease-out)}@media(hover:hover){a.stage:not(.is-current):hover{background:var(--surface-hover);color:var(--ink)}}a.stage:not(.is-current):active{background:var(--surface-hover)}.stage.is-current{background:var(--surface);box-shadow:inset 0 0 0 1.5px var(--state-select);color:var(--ink)}.stage.is-unavailable{color:var(--muted);opacity:.6;cursor:default}.stage.is-done:after,.stage.is-walked:after{font-size:var(--fs-caption);line-height:1}.stage.is-done:after{content:"✓";color:var(--state-ok)}.stage.is-walked:after{content:"◐";color:var(--muted)}@media(pointer:coarse){.stage{min-height:44px}}@media(max-width:640px){:root{--lesson-header-h: 56px}.lesson-header{grid-template-columns:auto auto minmax(0,1fr);column-gap:4px;padding:0 16px}.lesson-title{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.stage-strip{gap:0}.stage{padding:0 10px}.lesson-progress{left:16px;right:16px}}@media(max-width:359px){.stage{padding:0 8px}.lesson-count{display:none}}@media(prefers-reduced-motion:reduce){.lesson-progress>span{transition:none}.lesson-exit:active,.lesson-more:active{transform:none}}.lesson-stage{animation:feelFade var(--dur-slow) var(--ease-out) both}.lesson-chapter{margin:0 0 2px;font-family:var(--sans);font-size:var(--fs-caption);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.lesson-canvas.is-draggable{touch-action:none;cursor:grab}.lesson-canvas.is-draggable:active{cursor:grabbing}.lesson-qed{margin:0;font-family:var(--serif);font-size:var(--fs-body);color:var(--ink-soft)}.lesson-euclid summary{list-style:none;gap:6px;width:fit-content;font-family:var(--serif);font-size:var(--fs-body);color:var(--ink);text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px}.lesson-euclid summary::-webkit-details-marker{display:none}.lesson-euclid summary:after{content:"";width:6px;height:6px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform var(--dur-base) var(--ease-out)}.lesson-euclid[open] summary:after{transform:translateY(1px) rotate(-135deg)}.lesson-euclid summary:hover{text-decoration-color:currentColor}@media(prefers-reduced-motion:reduce){.lesson-euclid summary:after{transition:none}}.lesson-readout{display:grid;gap:6px;margin:0;padding:0;list-style:none}.lesson-readout li{display:flex;align-items:baseline;gap:8px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);font-family:var(--serif);font-size:var(--fs-body);font-variant-numeric:tabular-nums;line-height:var(--lh-tight);color:var(--ink);transition:border-color var(--dur-base) var(--ease-out)}.lesson-readout li.is-ok{border-color:color-mix(in srgb,var(--state-ok) 45%,var(--border))}.lesson-readout-mark{flex-shrink:0;width:1em;text-align:center;color:var(--muted)}.lesson-readout li.is-ok .lesson-readout-mark{color:var(--state-ok)}.lesson-next{margin:0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink)}.lesson-next-id{font-weight:600}.lesson-finished .freeplay-canvas{position:relative}.lesson-finished .freeplay-canvas:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;box-shadow:inset 0 0 0 2px var(--state-ok),inset 0 0 20px color-mix(in srgb,var(--state-ok) 22%,transparent);opacity:0;pointer-events:none;animation:guidedGlow 1.4s var(--ease-out) 1}.lesson-finished .freeplay-canvas>svg.construction{transform-origin:center;animation:feelSettle var(--dur-slow) var(--ease-settle) .12s both}.lesson-skip{max-width:1180px;margin:0 auto;padding:0 32px 24px;text-align:right}@media(max-width:900px){.lesson-skip{position:fixed;z-index:30;left:0;right:0;bottom:0;max-width:none;display:flex;justify-content:center;align-items:center;min-height:72px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:color-mix(in srgb,var(--paper) 92%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-top:1px solid var(--border)}.lesson-skip .guided-quiet{min-height:48px}.challenge-page.is-won~.lesson-skip,.challenge-page.hints-open~.lesson-skip,.challenge-page:has(.ch-feedback:not(:empty))~.lesson-skip{display:none}}@media(prefers-reduced-motion:reduce){.lesson-finished .freeplay-canvas:after{animation-duration:var(--dur-slow)}}.lesson-quiet-link{display:inline-flex;align-items:center;flex-shrink:0}.guided-dock-row>.lesson-quiet-link+.guided-primary{flex:1}.guided-ask .guided-claim{display:inline-block;max-width:100%;white-space:normal}.lesson-chapter:empty{display:none}@media(max-width:900px){.lesson-stage .guided-prompt{min-height:calc(3 * 1.3 * var(--fs-prompt) + 16px)}.lesson-stage .lesson-chapter{height:18px;margin:0;overflow:hidden;line-height:18px;white-space:nowrap;text-overflow:ellipsis}.lesson-stage .guided-ask{min-height:0}.lesson-stage .challenge-page .ch-goal{min-height:75px;margin-bottom:8px}}@media(min-width:901px){.lesson-stage .challenge-page{max-width:1180px;padding:12px 32px 32px}.lesson-stage .challenge-page .mode-layout{grid-template-columns:minmax(0,1fr) 380px;column-gap:40px}.lesson-stage .challenge-page .ch-panel{align-self:end}}.lesson-win-body{margin-top:0;align-items:center}@media(max-width:900px){.lesson-stage .challenge-page.is-won .ps-status{visibility:hidden}}.mode-page{max-width:1240px;margin:0 auto;padding:16px 24px 32px}.mode-statement{max-width:80ch;margin:0 0 12px;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-soft)}.mode-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(340px,420px);grid-template-areas:"goal goal" "tools panel" "status panel" "stage panel";grid-template-rows:auto auto auto 1fr;column-gap:24px;align-items:start}.mode-layout>.mode-goal{grid-area:goal}.mode-layout>.ps-toolbar{grid-area:tools}.mode-layout>.freeplay-status{grid-area:status}.mode-layout>.ps-stage{grid-area:stage}.mode-layout>.mode-panel{grid-area:panel;position:sticky;top:12px;max-height:calc(100vh - 24px);overflow-y:auto;overscroll-behavior:contain;overflow-anchor:none}.mode-goal{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:10px 14px;margin-bottom:10px;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);box-shadow:var(--shadow-sm)}.mode-goal-label{font-size:12.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.mode-goal-text{flex:1;min-width:12em;margin:0;font-family:var(--serif);font-size:16.5px;line-height:1.4}.mode-goal-uses{margin:0;font-size:13.5px;color:var(--muted)}.mode-panel{display:grid;gap:12px;align-content:start}.mode-panel>section{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface);padding:12px 14px}.mode-panel h2{margin:0;font-family:var(--serif);font-size:15px;font-weight:600}.verdict-head{display:flex;align-items:center;gap:8px;font-weight:600;font-size:16.5px!important}.verdict-mark{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:50%;background:var(--ref-4);color:var(--surface);font-size:14px}.mode-panel>.win-card{border-color:var(--ref-4)!important;border-left-width:4px!important;background:var(--highlight)!important}.verdict-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px!important}.verdict-links .btn-primary,.verdict-links .btn-quiet{min-height:40px;font-size:15px}.deform-replay{max-width:100%;border:1px solid var(--border);border-radius:var(--radius-md);background:var(--figure-bg);overflow:hidden}.deform-replay svg{display:block;width:100%;height:100%}.hint-card-head{display:flex;align-items:center;justify-content:space-between;gap:8px}@media(max-width:900px){.mode-page{padding:12px 16px 24px}.mode-layout{grid-template-columns:minmax(0,1fr);grid-template-areas:"goal" "tools" "status" "stage" "panel";grid-template-rows:none}.mode-layout>.mode-panel{position:static;max-height:none;overflow:visible;margin-top:12px}}@media(max-width:640px){.mode-statement{font-size:var(--fs-caption)}.mode-goal{gap:8px 12px;padding:8px 12px}}.challenge-page{max-width:1120px}.challenge-page .mode-layout{grid-template-columns:minmax(0,1fr) 360px;grid-template-areas:"stage goal" "stage tools" "stage status" "stage panel";grid-template-rows:auto auto auto 1fr;column-gap:32px}.challenge-page .ch-goal{grid-area:goal}.challenge-page .ch-panel{grid-area:panel}.ch-goal{display:flex;align-items:center;gap:12px;margin-bottom:12px}.ch-goal-text{flex:1;min-width:0;margin:0;font-family:var(--serif);font-size:var(--fs-prompt);line-height:1.3;color:var(--ink)}.goal-thumb{flex:none;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--figure-bg)}.goal-thumb-given{stroke:var(--ink-soft);stroke-width:1;stroke-linecap:round}.goal-thumb-goal{stroke:var(--ink);stroke-width:1.75;stroke-linecap:round}.goal-thumb-tick{stroke:var(--ink);stroke-width:1;stroke-linecap:round}.goal-thumb-point{fill:var(--ink-soft)}.goal-thumb-target{fill:var(--ink)}.ch-hint-btn{flex:none;display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:1px solid var(--border-strong);border-radius:50%;background:var(--surface);color:var(--ink);font-family:var(--sans);font-size:var(--fs-body);font-weight:600;cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out),border-color var(--dur-fast) var(--ease-out),scale var(--dur-fast) var(--ease-out)}@media(hover:hover){.ch-hint-btn:hover{background:var(--surface-hover)}}.ch-hint-btn:active{scale:var(--press-scale)}.ch-hint-btn.is-selected{border-color:var(--state-select);box-shadow:inset 0 0 0 1px var(--state-select)}.ch-panel{display:grid;gap:10px;align-content:start;margin-top:4px}.ch-check{justify-self:start}.ch-feedback:empty{display:none}.ch-sheet{--rise: 12px;padding:14px 16px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-md);font-size:var(--fs-body);line-height:1.45}.ch-sheet p{margin:0}.ch-near{border-color:var(--state-retry-edge);background:var(--state-retry-bg)}.ch-near-joins{border-color:var(--border);background:var(--surface)}.ch-near-head{font-weight:600}.ch-near-sub{margin-top:2px!important}.ch-why{margin-top:10px}.ch-why-figure{margin:10px 0 0}.ch-why-figure figcaption{margin-top:8px;font-size:var(--fs-caption);color:var(--muted)}.ch-hints-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:-6px -8px 0 0}.ch-hints-title{margin:0;font-family:var(--sans);font-size:var(--fs-caption);font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.ch-sheet-close{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border:0;border-radius:50%;background:transparent;color:var(--muted);font-size:var(--fs-prompt);line-height:1;cursor:pointer}@media(hover:hover){.ch-sheet-close:hover{background:var(--surface-hover);color:var(--ink)}}.ch-rungs{margin:0;padding:0;list-style:none;font-family:var(--serif)}.ch-rungs li+li{margin-top:10px}.ch-rung-label{display:block;font-family:var(--sans);font-size:var(--fs-caption);color:var(--muted)}.ch-more{margin-top:12px}.ch-win{border-color:var(--state-ok);border-left-width:4px;background:var(--state-ok-bg)}.ch-win-head{display:flex;align-items:center;gap:8px;font-weight:600}.ch-ok-mark{display:inline-flex;align-items:center;justify-content:center;flex:none;width:24px;height:24px;border-radius:50%;background:var(--state-ok);color:var(--surface);font-size:var(--fs-caption)}.ch-win-body{display:grid;grid-template-columns:auto minmax(0,1fr);gap:12px;align-items:start;margin-top:10px}.ch-win-body p{font-family:var(--serif)}.ch-win-earned{margin-top:10px!important;font-weight:600}.ch-win-links{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px!important}.challenge-page .deform-replay{flex:none}.challenge-page .freeplay-canvas:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;pointer-events:none;box-shadow:inset 0 0 0 2px var(--state-ok),inset 0 0 24px color-mix(in srgb,var(--state-ok) 30%,transparent);opacity:0;transition:opacity var(--dur-base) var(--ease-out)}.challenge-page.is-won .freeplay-canvas:after{opacity:.45;animation:chGlow 1.1s var(--ease-out) both}.challenge-page.is-won .freeplay-canvas>svg.construction{transform-origin:center;animation:feelSettle var(--dur-slow) var(--ease-settle) .12s both}@keyframes chGlow{0%{opacity:0}30%{opacity:1}to{opacity:.45}}.challenge-page .callout-point circle:first-child{r:10px;stroke:var(--state-hint-ring);stroke-width:1.75px;stroke-dasharray:4 3}.challenge-page .callout-point circle:last-child{display:none}.challenge-page .callout-point{filter:drop-shadow(0 0 1.5px var(--state-hint-halo))}@media(prefers-reduced-motion:no-preference){.challenge-page .callout-point{animation:calloutAppear var(--dur-base) var(--ease-out) forwards}}@media(max-width:900px){.challenge-page .mode-layout{grid-template-columns:minmax(0,1fr);grid-template-areas:"goal" "stage" "tools" "status" "panel";grid-template-rows:none}.challenge-page .mode-layout>.ps-toolbar.ps-tray{margin-top:10px}.challenge-page .ch-panel{position:sticky;bottom:0;z-index:5;padding-bottom:max(8px,env(safe-area-inset-bottom))}.ch-sheet{box-shadow:var(--shadow-lg)}}@media(max-width:640px){.ch-goal{gap:10px;margin-bottom:10px}}.home.book{max-width:880px}.book-head{margin-top:28px}.book-head h1{font-family:var(--serif);font-size:var(--fs-display);line-height:var(--lh-tight);letter-spacing:-.015em;margin:0}.book-lede{font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-soft);margin:8px 0 0}.book-lede .home-count{font-size:inherit;color:var(--ink)}.book-legend{display:flex;flex-wrap:wrap;gap:4px 18px;margin:10px 0 0;font-size:var(--fs-caption);color:var(--muted)}.book-legend>span{display:inline-flex;align-items:center;gap:6px}.book-toc button{display:inline-flex;align-items:center;min-height:36px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface);font-family:var(--serif);font-size:var(--fs-caption);color:var(--ink)}@media(pointer:coarse){.book-toc button{min-height:44px}}.status-dot{flex-shrink:0;display:inline-block;width:10px;height:10px;border-radius:50%;border:1.5px solid var(--border-strong)}.status-dot.done{background:var(--ink);border-color:var(--ink)}.status-dot.walked{border-color:var(--ink);background:linear-gradient(90deg,var(--ink) 50%,transparent 50%)}.book-chapter{margin-top:40px;scroll-margin-top:72px}.book-chapter-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 14px;padding-bottom:10px}.book-chapter-head h2{font-family:var(--serif);font-size:var(--fs-title);line-height:var(--lh-tight);margin:0}.book-range{font-size:var(--fs-caption);color:var(--muted);font-variant-numeric:tabular-nums}.book-blurb{flex-basis:100%;margin:4px 0 0;font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-soft);padding-right:max(0px,calc(100% - 68ch))}.book-rows{list-style:none;margin:0;padding:0;border-top:1px solid var(--border)}.book-row{display:grid;grid-template-columns:10px 44px minmax(0,1fr);align-items:start;gap:14px;padding:14px 10px;border-bottom:1px solid var(--border);color:inherit;text-decoration:none;transition:background-color var(--dur-fast) var(--ease-out)}@media(hover:hover){.book-row:hover{background:var(--surface-hover)}}.book-row .status-dot{margin-top:7px}.book-num{font-family:var(--serif);font-size:var(--fs-body);font-weight:700;line-height:var(--lh-body);font-variant-numeric:tabular-nums}.book-text{display:flex;flex-direction:column;gap:2px;min-width:0}.book-name{font-family:var(--serif);font-size:var(--fs-body);font-weight:700;line-height:var(--lh-body)}.book-enunciation{font-family:var(--serif);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--ink-soft);max-width:72ch}.toolbox{list-style:none;margin:4px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.toolbox li{display:flex}.tool-tile{flex:1;display:flex;flex-direction:column;gap:3px;min-height:44px;padding:10px 12px;border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--muted);text-decoration:none;transition:border-color var(--dur-fast) var(--ease-out),background-color var(--dur-fast) var(--ease-out)}@media(hover:hover){.tool-tile:hover{border-color:var(--ink-soft);background:var(--surface-hover)}}.tool-tile.earned{border:1px solid var(--ink);background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.tool-tile-id{display:inline-flex;align-items:center;gap:5px;font-family:var(--serif);font-size:var(--fs-body);font-weight:700}.tool-tile-name{font-family:var(--serif);font-size:var(--fs-caption);line-height:1.3;flex:1}.tool-tile-state{font-size:var(--fs-caption)}.tool-tile.earned .tool-tile-state{color:var(--ink-soft)}@media(max-width:640px){.book-head{margin-top:16px}.book-head h1{font-size:var(--fs-title)}.book-chapter-head h2{font-size:var(--fs-prompt)}.book-row{grid-template-columns:10px 40px minmax(0,1fr);gap:10px;padding:14px 4px}.book-enunciation{display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.toolbox{grid-template-columns:repeat(2,minmax(0,1fr))}}.bookmap-all{font-size:15px}.bm-node{transition:opacity var(--dur-base) var(--ease-out)}.bookmap-svg.is-path:not(.has-focus) .bm-node.ghost{opacity:.25}@media(hover:hover){.bookmap-svg.is-path:not(.has-focus) .bm-node.ghost:hover{opacity:.7}}.bookmap-svg.is-path:not(.has-focus) .bm-node.ghost:focus-visible{opacity:1}.bookmap-svg.is-path:not(.has-focus) .bm-edge{opacity:.06}.bookmap-svg.is-path:not(.has-focus) .bm-edge.lead{opacity:.55}.bookmap-svg.is-path .bm-node.next .bm-ring{stroke:var(--state-hint-ring);stroke-width:1.5;stroke-dasharray:4 3}.legend-shape.next{border:1.5px dashed var(--state-hint-ring);background:transparent}.principles-section h2.principles-used-h{font-size:var(--fs-title)}.principles-rest{margin-top:48px}.principles-rest-h{margin:0 0 8px;font-family:var(--sans);font-size:var(--fs-caption);font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.principles-group{border-top:1px solid var(--border);scroll-margin-top:24px}.principles-group:last-child{border-bottom:1px solid var(--border)}.principles-group>summary{display:flex;align-items:center;gap:12px;min-height:56px;padding:0 4px;list-style:none;cursor:pointer;font-family:var(--serif);font-size:var(--fs-prompt);color:var(--ink);border-radius:var(--radius-md);transition:background-color var(--dur-fast) var(--ease-out)}.principles-group>summary::-webkit-details-marker{display:none}.principles-group>summary:after{content:"";width:8px;height:8px;margin-right:6px;border-right:1.5px solid var(--ink-soft);border-bottom:1.5px solid var(--ink-soft);rotate:45deg;translate:0 -2px;transition:rotate var(--dur-base) var(--ease-out),translate var(--dur-base) var(--ease-out)}.principles-group[open]>summary:after{rotate:225deg;translate:0 2px}@media(hover:hover){.principles-group>summary:hover{background:var(--surface-hover)}}.principles-group>summary:active{background:var(--surface-hover)}.principles-group-title{flex:1}.principles-group-count{font-family:var(--sans);font-size:var(--fs-caption);color:var(--muted);font-variant-numeric:tabular-nums}.principles-group[open]>.principles-intro{margin-top:0}.principles-group[open]>.principles{margin-bottom:8px}@media(prefers-reduced-motion:reduce){.principles-group>summary:after{transition:none}}@media(pointer:coarse){.principle-name a{display:inline-block;padding:14px 8px 14px 0;margin:-14px 0}.principle-used summary{padding:13px 8px 13px 0;margin:-13px 0}}.bookmap-svg.is-path .bm-node.next.selected .bm-ring{stroke:var(--state-select);stroke-width:2;stroke-dasharray:none}.menu-title{display:flex;align-items:baseline;gap:8px;min-width:0;line-height:var(--lh-tight)}.menu-title-id{font-weight:var(--fw-strong);color:var(--ink)}.menu-title-name{color:var(--ink-soft)}.lesson-menu,.menu-group{display:flex;flex-direction:column}.menu-group+.menu-group{margin-top:6px;padding-top:6px;border-top:1px solid var(--border)}.menu-sheet{max-width:440px}.menu-sheet .bs-body{padding:8px 8px 16px}.menu-item,.menu-item:hover:not(:disabled){display:flex;align-items:center;gap:14px;width:100%;min-height:52px;padding:0 12px;border:0;border-radius:var(--radius-md);background:transparent;font-family:var(--serif);font-size:var(--fs-body);text-align:left;text-decoration:none;color:var(--ink);cursor:pointer;transition:background-color var(--dur-fast) var(--ease-out)}@media(hover:hover){.menu-item:hover:not(:disabled){background:var(--surface-hover)}}.menu-item:active:not(:disabled){background:var(--surface-hover)}.menu-item:disabled{color:var(--muted);cursor:default}.menu-item>svg,.menu-item>.style-swatch{width:20px;height:20px;flex-shrink:0;color:var(--ink-soft)}.menu-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:56px;padding:0 12px 0 46px;font-family:var(--serif);font-size:var(--fs-body);color:var(--ink)}.menu-seg{display:inline-flex;gap:4px}.menu-seg .btn-quiet{min-width:52px;padding:0 10px;font-variant-numeric:tabular-nums}.menu-switch{position:relative;flex-shrink:0;width:36px;height:22px;margin-left:auto;border-radius:var(--radius-pill);border:1px solid var(--border-strong);background:var(--surface-hover);transition:background-color var(--dur-base) var(--ease-out)}.menu-switch:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:var(--surface);box-shadow:var(--shadow-sm);transition:transform var(--dur-base) var(--ease-out)}.menu-switch.on{background:var(--ink);border-color:var(--ink)}.menu-switch.on:after{transform:translate(14px)}.style-swatch{display:inline-block;border-radius:50%;background:conic-gradient(var(--ref-0) 0 33%,var(--ref-1) 0 66%,var(--ref-2) 0);box-shadow:0 0 0 1px var(--border-strong)}.menu-item[aria-checked=false] .style-swatch{background:var(--figure-soft)}.obj.line,.point{transition:filter .18s ease,stroke-width .18s ease}.obj.appearing.line,.obj.appearing.arc{stroke-dasharray:var(--draw-length);stroke-dashoffset:var(--draw-length)}.obj.appearing.line{animation:drawStroke calc(.78s * var(--anim-mult, 1)) cubic-bezier(.4,0,.2,1) forwards}.obj.appearing.arc{animation:drawStroke calc(1.08s * var(--anim-mult, 1)) cubic-bezier(.4,0,.2,1) forwards}.lit-halo.drawing{stroke-dasharray:var(--draw-length);stroke-dashoffset:var(--draw-length)}.lit-halo.drawing.line{animation:drawStroke calc(.78s * var(--anim-mult, 1)) cubic-bezier(.4,0,.2,1) forwards}.lit-halo.drawing.arc{animation:drawStroke calc(1.08s * var(--anim-mult, 1)) cubic-bezier(.4,0,.2,1) forwards}@keyframes drawStroke{to{stroke-dashoffset:0}}.instrument{pointer-events:none}.compass{transform-box:view-box;transform-origin:var(--ox) var(--oy);animation:instrumentSpin var(--inst-dur) linear forwards,instrumentLife var(--inst-dur) ease-out forwards}.straightedge{animation:instrumentLife var(--inst-dur) ease-out forwards}.ruler-nib{transform-box:view-box;animation:nibSlide var(--inst-dur) linear forwards}@keyframes instrumentSpin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes nibSlide{0%{transform:translate(var(--ax),var(--ay))}to{transform:translate(var(--bx),var(--by))}}.compass-leg{stroke:var(--figure-ink);stroke-width:2.4;stroke-linecap:round;opacity:.5}.compass-hinge,.compass-pivot{fill:var(--figure-ink);opacity:.62}.compass-nib,.ruler-nib{fill:var(--figure-ink);filter:drop-shadow(0 0 2px var(--figure-bg))}.ruler-body{fill:var(--figure-soft);fill-opacity:.07;stroke:var(--figure-soft);stroke-opacity:.22;stroke-width:1}.ruler-edge{stroke:var(--figure-soft);stroke-width:1.2;stroke-opacity:.5;stroke-linecap:round}@keyframes instrumentLife{0%{opacity:0}14%{opacity:1}78%{opacity:1}to{opacity:0}}.callout-angle:not(.callout-spotlight){stroke-dasharray:var(--draw-length);stroke-dashoffset:var(--draw-length);animation:drawStroke calc(.44s * var(--anim-mult, 1)) ease-out forwards}.obj.appearing.point-group .point{opacity:0;animation:pointAppear calc(.42s * var(--anim-mult, 1)) ease-out forwards}.obj.appearing.point-group .point-label{opacity:0;animation:labelFade calc(.3s * var(--anim-mult, 1)) ease-out calc(.18s * var(--anim-mult, 1)) forwards}@keyframes pointAppear{0%{opacity:0;filter:drop-shadow(0 0 0 currentColor)}30%{opacity:1;filter:drop-shadow(0 0 6px currentColor)}to{opacity:1;filter:drop-shadow(0 0 0 currentColor)}}@keyframes labelFade{to{opacity:1}}.callout-segment,.callout-point{opacity:0;animation:calloutAppear .28s ease-out forwards,calloutPulse 1.8s ease-in-out .28s infinite}@keyframes calloutAppear{to{opacity:1}}@keyframes calloutPulse{0%,to{stroke-opacity:.7}50%{stroke-opacity:.85}}.obj.hinted{--hint-glow: color-mix(in srgb, var(--state-hint-ring) 45%, transparent);filter:drop-shadow(0 0 1.5px var(--state-hint-halo)) drop-shadow(0 0 2px var(--hint-glow));animation:objHint 1.3s ease-in-out infinite}@keyframes objHint{0%,to{filter:drop-shadow(0 0 1.5px var(--state-hint-halo)) drop-shadow(0 0 2px var(--hint-glow))}50%{filter:drop-shadow(0 0 1.5px var(--state-hint-halo)) drop-shadow(0 0 4px var(--hint-glow))}}.hint-ring{stroke:var(--state-hint-ring);stroke-width:1.75;stroke-dasharray:3 2.5;filter:drop-shadow(0 0 1.5px var(--state-hint-halo));animation:hintRing 1.4s ease-out infinite}@keyframes hintRing{0%{r:7px;opacity:.9}to{r:17px;opacity:0}}.callout-spotlight{animation:calloutAppear .2s ease-out forwards,spotlightStroke calc(.85s * var(--anim-mult, 1)) ease-in-out;filter:drop-shadow(0 0 4px currentColor)}g.callout-spotlight{animation:calloutAppear .2s ease-out forwards,spotlightGlow calc(.85s * var(--anim-mult, 1)) ease-in-out}@keyframes spotlightStroke{0%{stroke-width:3.5;stroke-opacity:1}35%{stroke-width:7;stroke-opacity:1}to{stroke-width:3.5;stroke-opacity:.85}}@keyframes spotlightGlow{0%{filter:drop-shadow(0 0 1px currentColor)}35%{filter:drop-shadow(0 0 9px currentColor)}to{filter:drop-shadow(0 0 3px currentColor)}}.prose-spotlight{display:inline-block;animation:proseSpotlight calc(.85s * var(--anim-mult, 1)) ease-in-out;transform-origin:center}@keyframes proseSpotlight{0%{transform:scale(1);text-shadow:none}35%{transform:scale(1.18);text-shadow:0 0 12px currentColor}to{transform:scale(1);text-shadow:none}}@media(prefers-reduced-motion:reduce){.obj.appearing.line,.obj.appearing.arc,.obj.appearing.point-group .point,.obj.appearing.point-group .point-label,.callout-segment,.callout-angle,.callout-point,.callout-spotlight,g.callout-spotlight,.prose-spotlight,.lit-halo.drawing{animation:none;stroke-dasharray:none;stroke-dashoffset:0;opacity:1;transform:none;filter:none;text-shadow:none}.obj.hinted,.hint-ring{animation:none}.obj.hinted{filter:drop-shadow(0 0 1.5px var(--state-hint-halo)) drop-shadow(0 0 3px var(--hint-glow))}.hint-ring{opacity:.9}.instrument{display:none}}
