:root{--bg:#fbfaf7;--fg:#1c1b19;--muted:#5d5a54;--line:#e3e0d8;--card:#fff;--accent:#1d4ed8;--grid:#e9e6de;--axis:#9b968b;--c-a:#2563eb;--c-b:#ea580c;--c-proj:#16a34a;--c-i:#16a34a;--c-j:#dc2626;--c-v:#7c3aed;--maxw:40rem;--widew:60rem}@media (prefers-color-scheme:dark){:root{--bg:#15161a;--fg:#e8e6e1;--muted:#a29e95;--line:#2e3037;--card:#1c1e23;--accent:#8ab4ff;--grid:#26282e;--axis:#5d6068;--c-a:#6ea8ff;--c-b:#ff9a5c;--c-proj:#4ade80;--c-i:#4ade80;--c-j:#f87171;--c-v:#c4a5ff}.astro-code,.astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important;font-style:var(--shiki-dark-font-style)!important;font-weight:var(--shiki-dark-font-weight)!important}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;overflow-x:clip}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--bg);color:var(--fg);margin:0;font:1.0625rem/1.7 system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}@media (width>=48rem){body{font-size:1.125rem}}p,li,dd,blockquote,figcaption{text-wrap:pretty}a{color:var(--accent);text-underline-offset:2px}h1,h2,h3{text-wrap:balance;line-height:1.25}h1{margin:0 0 .75rem;font-size:clamp(1.9rem,4vw,2.5rem)}code,kbd,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}:not(pre)>code{background:color-mix(in srgb, var(--fg) 8%, transparent);border-radius:4px;padding:.1em .3em;font-size:.9em}.skip{position:absolute;left:-999px}.skip:focus{z-index:10;background:var(--card);padding:.5rem 1rem;top:1rem;left:1rem}.site-header,main,.site-footer{max-width:64rem;margin:0 auto;padding-inline:1.25rem}.site-header{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;padding-block:.5rem;display:flex}.brand,.site-header nav a,.pager a{padding-block:.5rem;display:inline-block}.brand{color:var(--fg);font-weight:700;text-decoration:none}.site-header nav{flex-wrap:wrap;gap:1.25rem;display:flex}.site-header nav a{text-decoration:none}main{padding-block:2rem 3rem}main>*{max-width:var(--maxw);margin-inline:auto}.site-footer{border-top:1px solid var(--line);color:var(--muted);padding-block:1rem 2rem;font-size:.9rem}.lead{color:var(--muted);font-size:1.15rem}.eyebrow{color:var(--muted);margin:0 0 .25rem;font-size:.9rem}.muted{color:var(--muted)}.prose h2,.prose h3{scroll-margin-top:1.5rem}.prose h2{margin:2.75rem 0 .75rem;font-size:1.5rem}.prose h3{margin:2rem 0 .5rem;font-size:1.15rem}.prose table{border-collapse:collapse;font-variant-numeric:tabular-nums;margin:1.25rem 0;font-size:.95rem;display:block;overflow-x:auto}.prose th,.prose td{border-bottom:1px solid var(--line);text-align:left;vertical-align:top;padding:.4rem .75rem}.prose th{border-bottom-width:2px}.prose blockquote{border-left:4px solid var(--accent);background:var(--card);margin:1.5rem 0;padding:.6rem 1rem}.prose li+li{margin-top:.35rem}pre.astro-code{border:1px solid var(--line);border-radius:8px;margin:1.25rem 0;padding:1rem;font-size:.85rem;line-height:1.55;overflow-x:auto}@media (width>=64rem){.prose pre.astro-code{width:min(var(--widew), 100vw - 2.5rem);margin-left:calc(50% - min(var(--widew) / 2, 50vw - 1.25rem))}}.katex-display{padding-block:.25rem;overflow:auto hidden}.widget{width:min(var(--widew), 100vw - 2.5rem);margin:2rem 0 2rem calc(50% - min(var(--widew) / 2, 50vw - 1.25rem));border:1px solid var(--line);background:var(--card);border-radius:12px;padding:1rem}.widget-body{grid-template-columns:minmax(0,1fr) minmax(15rem,24rem);align-items:start;gap:1.25rem;display:grid}.widget-pair{grid-template-columns:1fr 1fr;gap:1rem;display:grid}@media (width<=50rem){.widget-body{grid-template-columns:1fr}}@media (width<=36rem){.widget-pair{grid-template-columns:1fr}}.widget-stage{aspect-ratio:1;width:100%;max-width:30rem;margin:0 auto}.widget-wide .widget-side{margin-top:1rem}.stage-title{text-align:center;margin:0 0 .25rem;font-size:.9rem;font-weight:600}.widget-fallback{color:var(--muted);margin:0;padding:1rem;font-size:.9rem}.widget figcaption{max-width:36rem;margin:0 0 .75rem;font-size:1rem}.widget figcaption>:first-child{margin-top:0}.widget figcaption>:last-child{margin-bottom:0}.readout{grid-template-columns:auto 1fr;gap:.2rem .75rem;margin:0;font-size:.9rem;display:grid}.readout dt{color:var(--muted);white-space:nowrap}.readout dd{font-variant-numeric:tabular-nums;overflow-wrap:anywhere;margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace}.readout-note{background:color-mix(in srgb, var(--accent) 9%, transparent);border-radius:8px;margin:.75rem 0;padding:.5rem .75rem;font-size:.93rem}.widget-buttons{flex-wrap:wrap;gap:.4rem;display:flex}.widget:not(.ready) .widget-buttons{display:none}button{border:1px solid var(--line);background:var(--bg);color:var(--fg);font:inherit;cursor:pointer;touch-action:manipulation;border-radius:999px;padding:.35rem .75rem;font-size:.85rem}button:hover:not(:disabled){border-color:var(--accent)}button:disabled{opacity:.45;cursor:default}summary{touch-action:manipulation}@media (pointer:coarse){button{min-height:2.75rem;padding-inline:.9rem}.quiz summary{padding-block:.6rem}}.plane{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;width:100%;height:100%;display:block}.grid line{stroke:var(--grid);stroke-width:1px}.grid line.axis{stroke:var(--axis);stroke-width:1.5px}.c-a{--c:var(--c-a)}.c-b{--c:var(--c-b)}.c-proj{--c:var(--c-proj)}.c-i{--c:var(--c-i)}.c-j{--c:var(--c-j)}.c-v{--c:var(--c-v)}.c-v-ghost{--c:var(--muted)}.arrow line{stroke:var(--c);stroke-width:3px;stroke-linecap:round}.arrow polygon{fill:var(--c)}.arrow.c-proj line{stroke-width:7px;opacity:.6}.arrow.c-proj polygon{opacity:.6}.arrow.c-v-ghost line{stroke-width:2px;stroke-dasharray:5 5}.label{fill:color-mix(in srgb, var(--c) 75%, var(--fg));text-anchor:middle;paint-order:stroke;stroke:var(--card);stroke-width:4px;font:600 15px system-ui,sans-serif}.handle{cursor:grab;outline:none}.handle.active{cursor:grabbing}.handle .hit{fill:#0000}.handle .knob{fill:var(--c);stroke:var(--card);stroke-width:2px}.handle .ring{fill:none;stroke:var(--fg);stroke-width:2px;opacity:0}.handle:focus-visible .ring{opacity:1}.guide{stroke:var(--c-b);stroke-opacity:.4;stroke-width:1.5px;stroke-dasharray:6 6}.perp{stroke:var(--muted);stroke-width:1.5px;stroke-dasharray:3 4}.warped line{stroke:var(--c-v);stroke-opacity:.3;stroke-width:1px}.unit-square{fill:var(--c-v);fill-opacity:.14}.step{stroke:var(--c);stroke-width:2.5px;stroke-dasharray:6 4}.null-line{stroke:var(--c-j);stroke-width:3px;stroke-opacity:.75}.fiber{stroke:var(--c-v);stroke-width:1.5px;stroke-dasharray:4 5}.fiber-dots circle{fill:var(--c-v);fill-opacity:.55}.origin-dot{fill:var(--c-j)}.fill-null{fill:var(--c-j);fill-opacity:.08}.fill-col{fill:var(--c-a);fill-opacity:.08}.col-line{stroke:var(--c-a);stroke-width:6px;stroke-opacity:.35}.quiz{border:1px solid var(--line);background:var(--card);border-radius:10px;margin:1rem 0;padding:.75rem 1rem}.quiz-n{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;margin:0;font-size:.8rem;font-weight:700}.quiz ul{padding-left:1.1rem;list-style:none}.quiz summary{color:var(--accent);cursor:pointer}.toc{border:1px solid var(--line);background:var(--card);border-radius:10px;margin-top:1.5rem;font-size:.95rem}.toc summary{cursor:pointer;padding:.6rem 1rem;font-weight:600}.toc ol{margin:0;padding:0 1rem .75rem 2.25rem}.toc li+li{margin-top:.2rem}.toc-side{display:none}@media (width>=90rem){.toc{display:none}.toc-side{top:5rem;left:calc(50% + var(--widew) / 2 + 2rem);width:min(18rem, 50% - var(--widew) / 2 - 3.5rem);max-height:calc(100vh - 7rem);font-size:.875rem;line-height:1.45;display:block;position:fixed;overflow-y:auto}.toc-side p{color:var(--muted);margin:0 0 .5rem;font-weight:600}.toc-side ol{margin:0;padding:0;list-style:none}.toc-side li+li{margin-top:.45rem}.toc-side a{color:var(--muted);text-decoration:none}.toc-side a:hover{color:var(--accent)}}.hero{padding-block:1rem 1.5rem}.cards{gap:.75rem;padding:0;list-style:none;display:grid}.cards a{border:1px solid var(--line);background:var(--card);color:var(--fg);border-radius:12px;gap:.15rem;padding:1rem 1.15rem;text-decoration:none;display:grid}.cards a:hover{border-color:var(--accent)}.card-n{color:var(--muted);font-size:.8rem}.card-t{color:var(--accent);font-size:1.15rem;font-weight:700}.card-d{color:var(--muted);font-size:.95rem}.sources{border-top:1px solid var(--line);color:var(--muted);margin-top:3rem;padding-top:1rem;font-size:.92rem}.sources h2{font-size:1.05rem}.pager{justify-content:space-between;gap:1rem;margin-top:2rem;display:flex}.map td:first-child{font-variant-numeric:tabular-nums}
