:root{--bg:#e8e3d8;--panel:#f2eee5;--ink:#17191a;--muted:#62615c;--line:#aaa497;--accent:#765466;--glow:rgba(118,84,102,.18);font-family:Inter,system-ui,sans-serif;color-scheme:light}html[data-palette=oxide]{--bg:#191a18;--panel:#22231f;--ink:#e7dfcf;--muted:#bdb4a5;--line:#6d675d;--accent:#d58a64;--glow:rgba(183,110,75,.2);color-scheme:dark}html[data-palette=violet]{--bg:#111014;--panel:#19171e;--ink:#e9e4eb;--muted:#99929f;--line:#45404b;--accent:#9a7bb2;--glow:rgba(154,123,178,.22);color-scheme:dark}html[data-palette=high-contrast]{--bg:#000;--panel:#000;--ink:#fff;--muted:#ddd;--line:#fff;--accent:#fff;--glow:transparent;color-scheme:dark}*{box-sizing:border-box}html{background:var(--bg);color:var(--ink);scroll-behavior:smooth}body{margin:0;line-height:1.55;background:linear-gradient(115deg,var(--glow),transparent 30rem)}.moire{position:fixed;inset:0;pointer-events:none;opacity:.1;background:repeating-linear-gradient(104deg,transparent 0 17px,var(--ink) 18px,transparent 19px 35px);mask-image:linear-gradient(to bottom,#000,transparent 38%);z-index:-1}main{width:min(1180px,calc(100% - 40px));margin:auto}.hero{min-height:92svh;display:flex;flex-direction:column;justify-content:center;padding:32px 0 64px}.register{position:absolute;top:24px;left:max(20px,calc((100vw - 1180px)/2));right:max(20px,calc((100vw - 1180px)/2));display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:8px;font:600 10px ui-monospace,monospace;letter-spacing:.12em;color:var(--muted)}.signal,.eyebrow{color:var(--accent)}.eyebrow{font:600 11px ui-monospace,monospace;letter-spacing:.16em;text-transform:uppercase}.lede{font-size:clamp(1.05rem,2vw,1.35rem);max-width:640px;color:var(--muted)}.actions{display:flex;gap:12px;margin-top:26px}.actions a,.lab-callout>a{border:1px solid var(--line);padding:11px 16px;text-decoration:none;font:600 12px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.08em}.primary{background:var(--ink);color:var(--bg)!important;border-color:var(--ink)!important}.palette{display:flex;align-items:center;gap:6px;margin-top:48px;font:10px ui-monospace,monospace;text-transform:uppercase;color:var(--muted)}.palette button{background:transparent;color:var(--ink);border:1px solid var(--line);min-width:30px;height:28px;font:600 10px ui-monospace,monospace}.palette button[aria-pressed=true]{background:var(--accent);color:var(--bg);border-color:var(--accent)}section{border-top:1px solid var(--line);padding:80px 0}.section-head{display:grid;grid-template-columns:1fr 2fr;align-items:end}.section-head h2,.lab-callout h2{font-size:clamp(2rem,5vw,4rem);letter-spacing:-.045em;line-height:.95;margin:0}.section-copy{max-width:650px;margin:24px 0 44px;color:var(--muted)}.grid{display:grid;grid-template-columns:repeat(12,1fr);gap:12px}.card{grid-column:span 4;min-height:210px;border:1px solid var(--line);background:var(--panel);padding:20px;display:flex;flex-direction:column}.card:before{content:attr(data-index);font:10px ui-monospace,monospace;color:var(--accent)}.card h3{font-size:1.15rem;line-height:1.2;margin:32px 0 auto}.card .links{display:flex;gap:14px;margin-top:24px}.card a{font:600 11px ui-monospace,monospace;text-transform:uppercase;color:var(--ink);text-underline-offset:4px}.lab-callout{display:flex;justify-content:space-between;align-items:end;gap:40px}.lab-callout>div{max-width:650px}.lab-callout p:not(.eyebrow){color:var(--muted)}footer{border-top:1px solid var(--line);padding:32px 0 60px;display:flex;justify-content:space-between;gap:40px;font-size:.85rem}footer p{color:var(--muted);margin:.25em 0}details{max-width:520px;text-align:right}summary{cursor:pointer;font:11px ui-monospace,monospace;text-transform:uppercase;color:var(--muted)}pre{text-align:left;white-space:pre-wrap;font:10px ui-monospace,monospace;color:var(--muted)}@media(max-width:720px){main{width:calc(100% - 28px)}.register span:nth-child(2){display:none}.hero{min-height:82svh;padding-top:80px}.actions{flex-wrap:wrap}.section-head{display:block}.card{grid-column:1/-1;min-height:160px}section{padding:56px 0}.lab-callout{display:block}.lab-callout>a{display:inline-block;margin-top:20px}footer{display:block}details{text-align:left;margin-top:30px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.moire{display:none}}
/* Interaction/accessibility hardening */
a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.palette button{min-width:44px;min-height:44px}.actions a,.lab-callout>a{min-height:44px;display:inline-flex;align-items:center}.card a{min-height:44px;display:inline-flex;align-items:center}.card{overflow-wrap:anywhere}@media(any-pointer:coarse){.card a,.actions a,.lab-callout>a{min-height:48px;padding-block:12px}.palette button{min-width:48px;min-height:48px}.card .links{gap:8px;flex-wrap:wrap}}@media(max-width:360px){main{width:calc(100% - 20px)}.register{left:10px;right:10px}.palette{flex-wrap:wrap}}@media(min-width:721px) and (max-width:1024px){.card{grid-column:span 6}.hero{min-height:78svh}}@media(min-width:1600px){main{width:min(1320px,calc(100% - 80px))}.register{left:max(40px,calc((100vw - 1320px)/2));right:max(40px,calc((100vw - 1320px)/2))}}@media(horizontal-viewport-segments:2){main{width:auto;margin:0;padding-left:max(20px,env(viewport-segment-left 0 0));padding-right:max(20px,calc(100vw - env(viewport-segment-right 1 0)))}.hero h1,.hero .lede,.actions,.palette{max-width:calc(env(viewport-segment-width 0 0) - 40px)}.grid{column-gap:calc(env(viewport-segment-left 1 0) - env(viewport-segment-right 0 0) + 12px)}.card{grid-column:span 6}}@media(vertical-viewport-segments:2){.hero{min-height:env(viewport-segment-height 0 0)}section{scroll-margin-top:env(viewport-segment-top 0 1)}}@media(forced-colors:active){.moire{display:none}.primary{forced-color-adjust:auto}}

.skip-link{position:fixed;left:12px;top:12px;z-index:100;background:var(--ink);color:var(--bg);padding:12px 16px;transform:translateY(-160%);font:600 12px ui-monospace,monospace}.skip-link:focus{transform:none}.eyebrow,.signal{font-weight:700}.signal:before{content:"● ";}.card a:focus-visible,.actions a:focus-visible,.lab-callout>a:focus-visible{box-shadow:0 0 0 5px var(--bg),0 0 0 8px var(--accent)}@media(prefers-contrast:more){:root{--line:var(--ink);--muted:var(--ink);--glow:transparent}.moire{display:none}.card{border-width:2px}.eyebrow,.signal{color:var(--ink)}}@media(prefers-color-scheme:dark){html:not([data-palette]){--bg:#111014;--panel:#19171e;--ink:#e9e4eb;--muted:#b5aeb9;--line:#5c5662;--accent:#b397c8;--glow:rgba(154,123,178,.22);color-scheme:dark}}
.case-study{margin-bottom:72px;padding:28px;border:1px solid var(--line);background:var(--panel)}.case-grid{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:clamp(28px,6vw,88px);margin-top:24px}.case-grid h2{font-size:clamp(2.2rem,5vw,4.8rem);letter-spacing:-.055em;line-height:.92;margin:.2em 0}.case-copy>p{font-size:1.05rem;color:var(--muted);margin-top:0}.case-label,dt{font:700 10px ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}dl{margin:28px 0 0}dl>div{border-top:1px solid var(--line);padding:12px 0}dd{margin:5px 0 0;color:var(--muted)}.status-dot{display:inline-block;width:.65em;height:.65em;border-radius:50%;background:var(--accent);margin-right:.4em}.status-dot:after{content:''}@media(max-width:720px){.case-study{padding:18px;margin-bottom:48px}.case-grid{display:block}.case-copy{margin-top:28px}}

.case-kicker,.card-meta{font:600 10px/1.4 ui-monospace,monospace;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.case-kicker{margin-top:18px}.card-meta{margin:14px 0 0}.card h3+.card-meta{margin-top:18px}.card .links{border-top:1px solid var(--line);padding-top:12px}.card a:first-child{text-decoration-thickness:1px}.card a:last-child{color:var(--accent)}

.settings{margin-top:34px;width:max-content;max-width:100%;border:1px solid var(--line);background:var(--panel)}.settings>summary{list-style:none;cursor:pointer;padding:11px 14px;font:700 11px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.08em}.settings>summary::-webkit-details-marker{display:none}.settings>summary:after{content:' +';color:var(--accent)}.settings[open]>summary:after{content:' −'}.settings .palette{margin:0;padding:10px 12px 12px;border-top:1px solid var(--line);flex-wrap:wrap}.settings .palette span{width:100%;margin-bottom:4px}.settings .palette button{width:auto;padding:0 12px}.notebook-reader{max-width:920px;margin:0 auto;padding:72px 0}.notebook-reader header{border-bottom:1px solid var(--line);padding-bottom:28px;margin-bottom:32px}.notebook-reader .back{font:700 11px ui-monospace,monospace;text-transform:uppercase}.notebook-content{background:var(--panel);border:1px solid var(--line);padding:clamp(18px,4vw,48px);overflow:hidden}.notebook-content img,.notebook-content svg{max-width:100%;height:auto}.notebook-content pre{overflow:auto;max-width:100%;padding:14px;border:1px solid var(--line)}

.nb-markdown{max-width:74ch;margin:0 auto 2rem}.nb-markdown h1,.nb-markdown h2,.nb-markdown h3{max-width:none;letter-spacing:-.025em;line-height:1.12;margin:1.6em 0 .55em}.nb-markdown h1{font-size:2rem}.nb-markdown h2{font-size:1.55rem}.nb-markdown h3{font-size:1.2rem}.nb-markdown p{margin:0 0 1em}.nb-markdown code{font-family:ui-monospace,monospace;font-size:.9em;border:1px solid var(--line);padding:.08em .3em}.nb-code{margin:2rem 0;border:1px solid var(--line);background:var(--bg)}.nb-cell-head{display:flex;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--line);font:700 10px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.nb-code>pre{margin:0;border:0;padding:18px;font-size:12px;line-height:1.55}.nb-output{display:block;margin:0;border:0;border-top:1px solid var(--line);padding:18px;background:var(--panel);max-width:100%;overflow:auto}.nb-image{text-align:center}.nb-image img{max-width:100%;height:auto}.nb-html{overflow:auto}.nb-html table{border-collapse:collapse;width:100%;font-size:.85rem}.nb-html th,.nb-html td{border:1px solid var(--line);padding:8px;text-align:left}@media(max-width:720px){.notebook-reader{padding:36px 0}.notebook-content{padding:14px}.nb-code>pre,.nb-output{padding:12px;font-size:11px}}

body{padding-top:58px}.topbar{position:fixed;z-index:90;top:0;left:0;right:0;height:58px;background:color-mix(in srgb,var(--bg) 94%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100vw - 1180px)/2));}.wordmark{font:800 12px ui-monospace,monospace;letter-spacing:.08em;text-decoration:none;color:var(--ink)}.wordmark span{font-weight:500;color:var(--muted)}.menu-toggle{border:1px solid var(--line);background:var(--panel);color:var(--ink);min-height:40px;padding:0 14px;font:700 11px ui-monospace,monospace;text-transform:uppercase}.site-menu{position:fixed;z-index:89;top:58px;right:max(20px,calc((100vw - 1180px)/2));width:min(420px,calc(100vw - 28px));border:1px solid var(--line);border-top:0;background:var(--panel);padding:18px;box-shadow:0 18px 50px var(--glow)}.site-menu nav{display:grid}.site-menu nav a{padding:13px 4px;border-bottom:1px solid var(--line);color:var(--ink);text-decoration:none;font:700 12px ui-monospace,monospace;text-transform:uppercase}.site-menu .palette{margin:18px 0 0}.hero .register{top:82px}.evergreen{margin:0 0 64px;padding:26px;border:1px solid var(--accent);background:var(--panel)}.evergreen h2{font-size:clamp(2rem,5vw,4rem);margin:.2em 0}.evergreen p:not(.eyebrow){max-width:60ch;color:var(--muted)}.evergreen .primary{display:inline-flex;padding:11px 16px;text-decoration:none;font:700 11px ui-monospace,monospace;text-transform:uppercase;margin-top:10px}@media(max-width:720px){.topbar{padding:0 14px}.wordmark span{display:none}.site-menu{right:14px}.hero .register{top:76px}}

.atlas-actions{display:flex;gap:14px;align-items:center;flex-wrap:wrap}.atlas-actions>a:not(.primary){color:var(--ink);font:700 11px ui-monospace,monospace}.atlas-home{font:700 11px ui-monospace,monospace;text-transform:uppercase;color:var(--ink)}.atlas-page{padding:0 0 80px}.atlas-hero{min-height:68svh;display:flex;flex-direction:column;justify-content:center}.atlas-index{position:sticky;top:58px;z-index:40;display:flex;gap:4px;padding:8px 0;background:var(--bg);border-block:1px solid var(--line);overflow:auto}.atlas-index a{white-space:nowrap;padding:8px 12px;color:var(--ink);text-decoration:none;font:700 10px ui-monospace,monospace;text-transform:uppercase}.atlas-panel{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.5fr);gap:clamp(24px,6vw,80px);align-items:start}.atlas-panel h2{font-size:clamp(2rem,5vw,4rem);line-height:.95;letter-spacing:-.04em}.atlas-panel aside{border-left:1px solid var(--line);padding-left:20px;color:var(--muted)}#sphere-canvas{width:100%;height:auto;aspect-ratio:3/2;border:1px solid var(--line);background:var(--panel);touch-action:pan-y}.atlas-help{font:10px ui-monospace,monospace;color:var(--muted)}.atlas-panel table{width:100%;border-collapse:collapse;font-size:.82rem}.atlas-panel th,.atlas-panel td{padding:8px;border-bottom:1px solid var(--line);text-align:left}.atlas-panel label{display:flex;justify-content:space-between;font:700 11px ui-monospace,monospace;text-transform:uppercase}.atlas-panel input[type=range]{width:100%;min-height:44px}.vector-viz{--tangent:.7;--vector-length:min(34%,100px);height:240px;border:1px solid var(--line);position:relative;background:var(--panel);margin-top:16px}.radial-vector,.tangent-vector{position:absolute;left:50%;top:50%;transform-origin:left center;height:3px;background:var(--ink)}.radial-vector{width:calc(var(--vector-length) * (1 - var(--tangent)));transform:rotate(-35deg)}.tangent-vector{width:calc(var(--vector-length) * var(--tangent));background:var(--accent);transform:rotate(-125deg)}.meter-group>div{display:grid;grid-template-columns:130px 1fr 90px;gap:12px;align-items:center;margin:18px 0;font:700 11px ui-monospace,monospace;text-transform:uppercase}.meter-group meter{width:100%;height:28px}.atlas-footer{display:flex;justify-content:space-between;border-top:1px solid var(--line);padding-top:28px}.atlas-footer a{color:var(--ink);font:700 11px ui-monospace,monospace;text-transform:uppercase}@media(max-width:720px){.atlas-hero{min-height:56svh}.atlas-panel{display:block}.atlas-panel aside{border-left:0;border-top:1px solid var(--line);padding:20px 0 0;margin-top:28px}.atlas-index{margin-inline:-14px;padding-inline:14px}.meter-group>div{grid-template-columns:1fr}.atlas-footer{display:grid;gap:18px}}

.trajectory{--horizon:3;height:220px;border:1px solid var(--line);background:var(--panel);position:relative;overflow:hidden;margin-top:16px}.trajectory-task,.trajectory-nuisance{position:absolute;left:8%;right:8%;top:35%;height:4px;transform-origin:left center}.trajectory-task{background:var(--accent);transform:scaleX(var(--task-gain,.941192))}.trajectory-nuisance{top:68%;background:var(--muted);transform:scaleX(var(--nuisance-gain,.343))}.trajectory-task:after,.trajectory-nuisance:after{content:'';position:absolute;right:-6px;top:-4px;width:12px;height:12px;border-radius:50%;background:inherit}.trajectory-legend{display:flex;justify-content:space-between;gap:20px;margin-top:8px;font:600 10px ui-monospace,monospace;color:var(--muted)}.evidence-map{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:8px;align-items:center;margin:24px 0}.evidence-map button{min-height:52px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:700 11px ui-monospace,monospace;text-transform:uppercase}.evidence-map button[aria-pressed=true]{background:var(--ink);color:var(--bg)}.evidence-detail{min-height:130px;border-left:3px solid var(--accent);padding:18px;background:var(--panel)}.evidence-detail strong{font:700 11px ui-monospace,monospace;text-transform:uppercase}@media(max-width:520px){.evidence-map{grid-template-columns:1fr}.evidence-map>span{transform:rotate(90deg);text-align:center}.trajectory-legend{display:grid}}

.architecture-flow{display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;gap:7px;align-items:center;margin:24px 0}.architecture-flow button,.ledger-grid button{min-height:58px;border:1px solid var(--line);background:var(--panel);color:var(--ink);font:700 11px ui-monospace,monospace;text-transform:uppercase}.architecture-flow button[aria-pressed=true],.ledger-grid button[aria-pressed=true]{background:var(--ink);color:var(--bg)}.ledger-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:24px 0}.ledger-grid button{padding:12px;text-align:left}.ledger-grid strong,.ledger-grid small{display:block}.ledger-grid small{margin-top:7px;font-size:9px;line-height:1.35;font-weight:500}@media(max-width:720px){.architecture-flow{grid-template-columns:1fr}.architecture-flow>span{transform:rotate(90deg);text-align:center}.ledger-grid{grid-template-columns:1fr 1fr}}@media(max-width:380px){.ledger-grid{grid-template-columns:1fr}}

.reproduce{display:grid;grid-template-columns:minmax(0,.75fr) minmax(0,1.25fr);gap:clamp(28px,6vw,80px);align-items:start}.reproduce h2{font-size:clamp(2.4rem,6vw,5rem);line-height:.92;letter-spacing:-.05em}.reproduce p{max-width:62ch;color:var(--muted)}.repro-flow{grid-column:2;display:grid;grid-template-columns:1fr auto 1fr auto 1fr auto 1fr;gap:8px;align-items:center}.repro-flow span{border:1px solid var(--line);background:var(--panel);padding:18px 12px;min-height:64px;display:grid;place-items:center;text-align:center;font:700 10px ui-monospace,monospace;text-transform:uppercase}.repro-status{grid-column:2;font:600 10px ui-monospace,monospace;text-transform:uppercase;border-left:3px solid var(--accent);padding-left:12px}@media(max-width:720px){.reproduce{display:block}.repro-flow{grid-template-columns:1fr;margin-top:24px}.repro-flow b{transform:rotate(90deg);text-align:center}.repro-status{margin-top:22px}}

.repro-download{grid-column:2;display:flex;align-items:center;gap:14px;flex-wrap:wrap}.repro-download span{font:600 10px ui-monospace,monospace;text-transform:uppercase;color:var(--muted)}.repro-download a[aria-disabled=true]{opacity:.5;cursor:not-allowed}.repro-download a[aria-disabled=false]{box-shadow:0 0 24px var(--glow)}@media(max-width:720px){.repro-download{margin-top:22px}}

.package-info{grid-column:2;border:1px solid var(--line);background:var(--panel)}.package-info summary{cursor:pointer;padding:12px 14px;font:700 10px ui-monospace,monospace;text-transform:uppercase}.package-info>p,.package-info dl{margin:0;padding:0 14px 14px}.package-info dl{display:grid;grid-template-columns:max-content 1fr;gap:6px 14px;font-size:.78rem}.package-info dt{font:700 9px ui-monospace,monospace;text-transform:uppercase;color:var(--muted)}.package-info dd{margin:0;overflow-wrap:anywhere}@media(max-width:720px){.package-info{margin-top:22px}}

.primary-nav{display:flex;align-items:center;gap:20px}.primary-nav a{color:var(--muted);text-decoration:none;font:700 10px ui-monospace,monospace;text-transform:uppercase;letter-spacing:.08em}.primary-nav a:hover,.primary-nav a[aria-current=page]{color:var(--ink)}.landing-links{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border:1px solid var(--line);padding:0}.landing-links>a{background:var(--bg);padding:clamp(22px,4vw,48px);color:var(--ink);text-decoration:none}.landing-links span{font:700 10px ui-monospace,monospace;color:var(--accent)}.landing-links h2{font-size:clamp(2rem,5vw,4rem);margin:.25em 0}.landing-links p{color:var(--muted);max-width:34ch}.index-page>header{min-height:48svh;display:flex;flex-direction:column;justify-content:center}@media(max-width:760px){.primary-nav{display:none}.landing-links{grid-template-columns:1fr}}

/* Notebook syntax: nbconvert/Pygments token classes mapped onto each site palette. */
:root{--syn-comment:#58645c;--syn-keyword:#7a365e;--syn-name:#1d4e63;--syn-string:#6a5522;--syn-number:#78502f;--syn-operator:#5b5368;--syn-error:#9c2f2f}html[data-palette=oxide]{--syn-comment:#a69c8b;--syn-keyword:#e99a76;--syn-name:#9fc7c2;--syn-string:#d8bf82;--syn-number:#dca87d;--syn-operator:#c9b6d3;--syn-error:#ff9a91}html[data-palette=violet]{--syn-comment:#9e98a5;--syn-keyword:#c79be0;--syn-name:#8fc6d2;--syn-string:#d5c28d;--syn-number:#d8a98c;--syn-operator:#c1b0cf;--syn-error:#ff9aab}html[data-palette=high-contrast]{--syn-comment:#fff;--syn-keyword:#fff;--syn-name:#fff;--syn-string:#fff;--syn-number:#fff;--syn-operator:#fff;--syn-error:#fff}.notebook-content pre,.notebook-content code{font-family:ui-monospace,SFMono-Regular,Consolas,"Liberation Mono",monospace}.notebook-content .highlight{background:var(--panel);border:1px solid var(--line);overflow:auto}.notebook-content .highlight pre{margin:0;padding:18px;tab-size:4}.notebook-content .c,.notebook-content .ch,.notebook-content .cm,.notebook-content .cp,.notebook-content .cpf,.notebook-content .c1,.notebook-content .cs{color:var(--syn-comment);font-style:italic}.notebook-content .k,.notebook-content .kc,.notebook-content .kd,.notebook-content .kn,.notebook-content .kp,.notebook-content .kr,.notebook-content .kt{color:var(--syn-keyword);font-weight:650}.notebook-content .n,.notebook-content .na,.notebook-content .nb,.notebook-content .bp,.notebook-content .nc,.notebook-content .nd,.notebook-content .ne,.notebook-content .nf,.notebook-content .fm,.notebook-content .nn,.notebook-content .nt,.notebook-content .nv{color:var(--syn-name)}.notebook-content .s,.notebook-content .sa,.notebook-content .sb,.notebook-content .sc,.notebook-content .dl,.notebook-content .sd,.notebook-content .s2,.notebook-content .se,.notebook-content .sh,.notebook-content .si,.notebook-content .sx,.notebook-content .sr,.notebook-content .s1,.notebook-content .ss{color:var(--syn-string)}.notebook-content .m,.notebook-content .mb,.notebook-content .mf,.notebook-content .mh,.notebook-content .mi,.notebook-content .il,.notebook-content .mo{color:var(--syn-number)}.notebook-content .o,.notebook-content .ow{color:var(--syn-operator)}.notebook-content .err{color:var(--syn-error);text-decoration:underline}.notebook-content .p{color:var(--ink)}.notebook-content .w{color:var(--muted)}

.program-preview{padding-block:clamp(60px,10vw,130px)}.program-preview>h2{font-size:clamp(2.6rem,7vw,6rem);line-height:.92;letter-spacing:-.05em;margin:.15em 0 .7em}.program-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}.program-grid article{background:var(--bg);padding:clamp(20px,3vw,36px)}.program-grid span{font:700 9px ui-monospace,monospace;color:var(--accent);letter-spacing:.12em}.program-grid h3{font-size:clamp(1.4rem,3vw,2.2rem);line-height:1;margin:.5em 0}.program-grid p{color:var(--muted)}.program-grid a{color:var(--ink);font:700 10px ui-monospace,monospace;text-transform:uppercase}@media(max-width:720px){.program-grid{grid-template-columns:1fr}}

.proof-line,.orientation{max-width:72ch;border-left:3px solid var(--accent);padding:10px 14px;background:var(--panel);color:var(--muted)}.proof-line{margin:8px 0 24px;font-size:.92rem}.proof-line strong,.orientation strong{color:var(--ink)}.orientation{margin:0 0 28px}.orientation a{color:var(--ink);font-weight:700}@media(max-width:760px){.topbar .menu-toggle{display:block}.site-menu{max-height:calc(100svh - 64px);overflow:auto}}

/* Reader markup comes from nbconvert, inside the shared Portfolio shell. */
.notebook-content main{width:auto;margin:0}.notebook-content .jp-MarkdownCell{max-width:74ch;margin:0 auto 2rem}.notebook-content h1{font-size:clamp(1.65rem,4vw,2rem);line-height:1.15;max-width:none;letter-spacing:-.025em}.notebook-content h2{font-size:1.55rem;line-height:1.2;letter-spacing:-.025em;margin:1.6em 0 .6em}.notebook-content a,.notebook-reader .back,.notebook-reader header a{color:var(--ink);text-underline-offset:3px}.notebook-content .highlight pre{font-size:.8125rem;line-height:1.6;white-space:pre;overflow:auto}.notebook-content .jp-OutputArea-output{max-width:100%;overflow:auto}.notebook-content table{border-collapse:collapse;font-size:.875rem}.notebook-content th,.notebook-content td{padding:8px;border:1px solid var(--line);text-align:left}.notebook-content [tabindex]:focus-visible,#sphere-canvas:focus-visible,input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.atlas-panel{scroll-margin-top:112px}
@media(max-width:360px){.atlas-index{margin-inline:-10px;padding-inline:10px}}
/* Rotated connectors must not span an entire mobile column over its buttons. */
.evidence-map>span,.architecture-flow>span,.repro-flow>b{justify-self:center;width:24px;height:24px;text-align:center;pointer-events:none}
html{scroll-padding-top:70px}.atlas-page :is(button,input,canvas){scroll-margin-top:120px;scroll-margin-bottom:24px}
.notebook-content .highlight pre,.notebook-content .jp-OutputArea-output pre{overflow:visible}
/* Keep the first action near the introduction, including on shorter screens. */
.hero{min-height:0;padding:76px 0 56px}.hero .lede{max-width:54ch;margin:16px 0}.hero .actions{margin-top:8px}.proof-line a{color:var(--ink);white-space:normal;text-underline-offset:3px}.card-question{font-size:.95rem;color:var(--muted);margin:16px 0 auto}.card h3{margin-bottom:0}.card .links{flex-wrap:wrap}.package-info{text-align:left}.package-info [hidden]{display:none}.notebook-content img{max-width:100%;height:auto}.notebook-content .jp-OutputArea-output{margin-block:12px 28px}.notebook-reader [tabindex="-1"]{scroll-margin-top:80px}
@media(max-width:720px){.hero{padding-top:64px}.hero .lede{font-size:1.05rem}.hero .actions{margin-top:4px}}

.atlas-panel aside a,.actions a:not(.primary){color:var(--ink);text-underline-offset:3px}

/* 07 / Long measure: upright narrow type, a common edge, one quiet rule. */
@font-face{
  font-family:"Portfolio Long Measure";
  src:url("/assets/fonts/long-measure/NimbusSansNarrow-Regular.woff2") format("woff2");
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
.page-title,.notebook-reader>header h1{
  font-family:"Portfolio Long Measure","Arial Narrow",sans-serif;
  font-size:clamp(3rem,6.8vw,6.2rem);
  font-weight:400;
  font-style:normal;
  font-synthesis:none;
  line-height:1.02;
  letter-spacing:-.025em;
  color:var(--ink);
  border-left:1px solid var(--accent);
  padding-left:clamp(14px,2vw,22px);
  margin:.18em 0 .3em;
  max-width:22ch;
  overflow-wrap:break-word;
}
.page-title{text-transform:lowercase}
.hero .page-title{line-height:.96}
.notebook-reader>header h1{
  font-size:clamp(2.4rem,5.5vw,4.8rem);
  max-width:26ch;
  line-height:1.08;
}
.program-preview>h2,.atlas-panel h2,.reproduce h2{
  font-family:"Portfolio Long Measure","Arial Narrow",sans-serif;
  font-weight:400;
  font-synthesis:none;
  letter-spacing:-.025em;
  line-height:1.08;
}
@media(max-width:720px){
  .page-title{font-size:clamp(2.8rem,12.5vw,3.5rem)}
  .notebook-reader>header h1{font-size:clamp(2.1rem,9vw,2.6rem)}
}
@media(min-width:721px) and (max-height:800px){
  .hero{padding-top:56px}
  .hero .page-title{font-size:clamp(3.5rem,6.1vw,5.4rem)}
}

/* Appearance has two independent axes. Its controls stay consistent in every style. */
.appearance{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px;text-align:left}
.appearance fieldset{min-width:0;margin:0;padding:0;border:0;display:grid;gap:6px;align-content:start}
.appearance legend{float:none;width:100%;margin:0 0 9px;padding:0;font:700 11px ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.appearance button{min-width:0;width:100%;min-height:46px;height:auto;display:flex;align-items:center;gap:10px;margin:0;padding:10px 11px;text-align:left;background:var(--bg);border:1px solid var(--line);color:var(--ink);font:600 12px/1.3 ui-monospace,monospace;text-transform:none;letter-spacing:0;cursor:pointer}
.appearance button[aria-pressed=true]{background:var(--ink);color:var(--bg);border-color:var(--ink)}
.appearance button:hover{border-color:var(--accent)}
.appearance>p{grid-column:1/-1;margin:4px 0 0;color:var(--muted);font-size:.75rem;line-height:1.5}
.site-menu .appearance .palette{margin:0}
.style-mark,.palette-mark{display:block;flex:0 0 18px;width:18px;height:18px;position:relative;pointer-events:none}
.mark-orbit{border:1px solid currentColor;border-radius:50%;transform:rotate(-30deg) scaleY(.55)}
.mark-register{background:linear-gradient(currentColor,currentColor) center/100% 1px no-repeat;border-left:1px solid currentColor;border-right:1px solid currentColor}
.mark-overprint{border:1px solid currentColor;box-shadow:3px 3px 0 -1px var(--bg),3px 3px 0 currentColor;transform:scale(.75)}
.mark-hinge{border-left:1px solid currentColor;background:linear-gradient(currentColor,currentColor) left center/70% 1px no-repeat}
.palette-mark{border:1px solid currentColor;border-radius:50%;background:linear-gradient(90deg,var(--swatch-bg) 50%,var(--swatch-ink) 50%)}
.swatch-nacre{--swatch-bg:#e8e3d8;--swatch-ink:#765466}
.swatch-oxide{--swatch-bg:#191a18;--swatch-ink:#d58a64}
.swatch-violet{--swatch-bg:#111014;--swatch-ink:#9a7bb2}
.swatch-contrast{--swatch-bg:#000;--swatch-ink:#fff}
.site-menu{width:min(440px,calc(100vw - 28px));max-height:calc(100svh - 68px);overflow:auto}
.menu-toggle{min-height:44px}
@media(max-width:720px){.site-menu nav{grid-template-columns:1fr 1fr;column-gap:14px}.appearance{gap:10px}.appearance button{padding-inline:9px}}
@media(max-width:360px){.site-menu{padding:14px}.appearance button{font-size:11px;gap:7px}}

/* Shared reading contract: expressive framing; stable prose, data, and code. */
.page-title,.notebook-reader>header h1{position:relative;isolation:isolate;width:fit-content;max-width:min(22ch,100%)}
.notebook-reader>header h1{max-width:min(26ch,100%)}
.title-line{display:block;position:relative;max-width:100%}
.title-accent{color:var(--accent)}
.primary-nav a{position:relative;min-height:44px;display:inline-flex;align-items:center}
.actions a{position:relative}
.card,.program-grid article,.evidence-detail,.package-info{position:relative}
.card .links{padding-top:14px;border-top:1px solid var(--line)}
.notebook-content blockquote{margin-inline:0;border-left:2px solid var(--accent);padding-left:18px;color:var(--muted)}
.notebook-content blockquote strong{color:var(--ink)}
.notebook-content h2{scroll-margin-top:90px}
html[data-style] .moire{display:none}
input[type=range]{accent-color:var(--accent)}

/* D / Orbit: spatial contours, curved corners, and a point at the section edge. */
html[data-style=orbit] .page-title:before,html[data-style=orbit] .notebook-reader>header h1:before{content:'';position:absolute;z-index:-1;inset:22% 4% 20% 29%;border:1px solid var(--accent);border-radius:50%;transform:rotate(-22deg);pointer-events:none;opacity:.7}
html[data-style=orbit] .notebook-reader>header h1:before{transform:rotate(-12deg);opacity:.4}
html[data-style=orbit] .page-title .title-accent{width:fit-content;background:var(--bg);padding-right:.07em}
html[data-style=orbit] :is(.card,.program-grid article){border-radius:0 28px 0 0}
html[data-style=orbit] .program-grid{gap:12px;background:none;border:0}
html[data-style=orbit] .program-grid article{border:1px solid var(--line)}
html[data-style=orbit] :is(.orientation,.proof-line,.evidence-detail){border-left:2px solid var(--accent);border-radius:0 18px 0 0}
html[data-style=orbit] :is(.program-preview>h2,.atlas-panel h2,.reproduce h2){border-left:1px solid var(--accent);padding-left:18px}
html[data-style=orbit] .atlas-panel aside{border-radius:24px 0 0 0}
html[data-style=orbit] .primary-nav a[aria-current]:after{content:'';position:absolute;bottom:5px;left:calc(50% - 3px);width:6px;height:6px;border-radius:50%;background:var(--accent)}
html[data-style=orbit] .actions a{border-radius:0 15px 0 0}
html[data-style=orbit] .notebook-content{border-radius:0 28px 0 0}
html[data-style=orbit] .notebook-content h2{border-bottom:1px solid var(--line);padding-bottom:.35em}
html[data-style=orbit] .notebook-content h2:after{content:'';display:inline-block;width:5px;height:5px;margin-left:10px;vertical-align:middle;border-radius:50%;background:var(--accent)}
html[data-style=orbit] .package-info{border-radius:0 18px 0 0}

/* E / Register: an editorial grid, split ink, and aligned record-like rows. */
html[data-style=register] .title-accent{background:linear-gradient(to bottom,var(--ink) 0 51%,var(--accent) 51%);background-clip:text;-webkit-background-clip:text;color:var(--accent);-webkit-text-fill-color:transparent}
html[data-style=register] .page-title .title-accent{width:fit-content;max-width:calc(100% - .15em);margin-left:.15em}
html[data-style=register] .page-title .title-accent:after{content:'';position:absolute;z-index:-1;left:-.15em;right:0;top:51%;height:1px;background:var(--accent);pointer-events:none}
html[data-style=register] .topbar{border-bottom:2px solid var(--accent);backdrop-filter:none;background:var(--bg)}
html[data-style=register] .primary-nav{gap:0}
html[data-style=register] .primary-nav a{padding-inline:14px;border-left:1px solid var(--line)}
html[data-style=register] .primary-nav a[aria-current]{box-shadow:inset 0 -3px var(--accent)}
html[data-style=register] .program-grid{gap:0}
html[data-style=register] .program-grid article+article{border-left:1px solid var(--line)}
html[data-style=register] :is(.orientation,.proof-line){border:1px solid var(--line);border-left:5px solid var(--accent)}
html[data-style=register] :is(.program-preview>h2,.atlas-panel h2,.reproduce h2){border-top:1px solid var(--accent);padding-top:.22em}
html[data-style=register] .atlas-panel aside{border-left:0;border-top:3px solid var(--accent);padding:16px 0 0}
html[data-style=register] .evidence-detail{border-left:0;border-top:3px solid var(--accent)}
html[data-style=register] .repro-flow{gap:0}
html[data-style=register] .notebook-content h2{border-top:1px solid var(--accent);padding-top:.5em}
html[data-style=register] .notebook-content blockquote{border:1px solid var(--line);border-left:4px solid var(--accent);padding:12px 16px}
@media(min-width:900px){
  html[data-style=register] #notebook-list{display:block;border-top:1px solid var(--line)}
  html[data-style=register] #notebook-list .card{display:grid;grid-template-columns:34px minmax(220px,1fr) minmax(230px,1.25fr);gap:12px 24px;min-height:0;padding:24px 16px;border:0;border-bottom:1px solid var(--line);background:transparent}
  html[data-style=register] #notebook-list .card:before{grid-column:1;grid-row:1/4;padding-top:4px}
  html[data-style=register] #notebook-list .card h3{grid-column:2;grid-row:1/3;margin:0;align-self:start}
  html[data-style=register] #notebook-list .card-question{grid-column:3;grid-row:1;margin:0}
  html[data-style=register] #notebook-list .card-meta{grid-column:3;grid-row:2;margin:0}
  html[data-style=register] #notebook-list .links{grid-column:3;grid-row:3;margin:0;padding:0;border:0}
}

/* B / Overprint: offset plates and doubled seams, confined to display surfaces. */
html[data-style=overprint] .page-title .title-accent{color:var(--accent);text-shadow:1.5px -1px 0 var(--ink)}
html[data-style=overprint] .notebook-reader>header h1 .title-accent{color:var(--accent);text-shadow:.6px -.4px 0 var(--ink)}
html[data-style=overprint] .topbar{box-shadow:0 3px 0 var(--bg),0 4px 0 var(--line);background:var(--bg);backdrop-filter:none}
html[data-style=overprint] :is(.card,.package-info){box-shadow:3px 3px 0 var(--bg),4px 4px 0 var(--accent)}
html[data-style=overprint] .grid{gap:20px}
html[data-style=overprint] .program-grid{gap:20px;background:none;border:0}
html[data-style=overprint] .program-grid article{border:1px solid var(--line);box-shadow:3px 3px 0 var(--bg),4px 4px 0 var(--accent)}
html[data-style=overprint] .card:before{border-bottom:3px double var(--accent);align-self:flex-start;padding-bottom:5px}
html[data-style=overprint] :is(.program-preview>h2,.atlas-panel h2,.reproduce h2){color:var(--accent);border-bottom:3px double var(--line);padding-bottom:.18em}
html[data-style=overprint] .atlas-panel aside{border-left:3px double var(--accent)}
html[data-style=overprint] :is(.proof-line,.orientation,.evidence-detail){border-left:3px double var(--accent);box-shadow:2px 2px 0 var(--line)}
html[data-style=overprint] .actions a.primary{box-shadow:3px 3px 0 var(--bg),4px 4px 0 var(--accent)}
html[data-style=overprint] .primary-nav a[aria-current]{text-decoration:underline double var(--accent);text-underline-offset:5px}
html[data-style=overprint] .notebook-content{border:3px double var(--line)}
html[data-style=overprint] .notebook-content h2{border-bottom:3px double var(--line);padding-bottom:.25em}
html[data-style=overprint] .notebook-content blockquote{border-left:3px double var(--accent)}

/* A / Hinge: an open margin, displaced emphasis, and sparse side-mounted rules. */
html[data-style=hinge] .page-title .title-accent{margin-left:.3em;max-width:calc(100% - .3em)}
html[data-style=hinge] .page-title .title-accent:before{content:'';position:absolute;width:.22em;left:-.28em;top:.52em;height:2px;background:var(--accent);pointer-events:none}
html[data-style=hinge] .page-title .title-line:last-child{margin-left:.08em}
html[data-style=hinge] .topbar .wordmark{border-left:2px solid var(--accent);padding-left:10px}
html[data-style=hinge] .primary-nav a[aria-current]{border-left:2px solid var(--accent);padding-left:9px}
html[data-style=hinge] :is(.card,.program-grid article){border:0;border-left:2px solid var(--accent);border-bottom:1px solid var(--line);background:transparent;padding-left:24px}
html[data-style=hinge] .program-grid{gap:28px;background:none;border:0}
html[data-style=hinge] :is(.program-preview>h2,.atlas-panel h2,.reproduce h2){padding-left:24px;border-left:2px solid var(--accent)}
html[data-style=hinge] :is(.proof-line,.orientation,.evidence-detail){background:transparent;border-left:2px solid var(--accent);padding-left:24px}
html[data-style=hinge] .atlas-panel aside{border-left:2px solid var(--accent);padding-left:24px}
html[data-style=hinge] .notebook-content{background:transparent;border:0;border-left:1px solid var(--line)}
html[data-style=hinge] .notebook-content h2{border-left:2px solid var(--accent);padding-left:14px}
html[data-style=hinge] .notebook-content blockquote{margin-left:14px}
html[data-style=hinge] .package-info{background:transparent;border:0;border-left:2px solid var(--accent)}
@media(min-width:900px){html[data-style=hinge] #notebook-list .card{grid-column:span 6}}

/* Small displays and reading aids take precedence over decorative marks. */
@media(max-width:720px){
  html[data-style] .page-title{font-size:clamp(2.55rem,11.8vw,3.5rem)}
  html[data-style=hinge] .page-title .title-accent{margin-left:.16em;max-width:calc(100% - .16em)}
  html[data-style=register] .program-grid article+article{border-left:0;border-top:1px solid var(--line)}
  html[data-style=orbit] .atlas-panel aside{border-radius:0}
  html[data-style=overprint] .atlas-panel aside{border-left:0;border-top:3px double var(--accent)}
  html[data-style=hinge] .atlas-panel aside{border-top:0}
  html[data-style=overprint] .page-title .title-accent{text-shadow:1px -.5px 0 var(--ink)}
}
html[data-palette=high-contrast] .title-accent{color:var(--ink);background:none;-webkit-text-fill-color:currentColor;text-shadow:none!important}
@media(forced-colors:active){
  .title-accent{color:CanvasText!important;background:none!important;-webkit-text-fill-color:currentColor!important;text-shadow:none!important}
  .page-title:before,.page-title .title-accent:before,.page-title .title-accent:after,.notebook-reader>header h1:before{display:none}
  .appearance button[aria-pressed=true]{outline:2px solid Highlight;outline-offset:-3px}
}
@media print{
  .topbar,.moire{display:none}body{padding-top:0;background:none}
  .page-title:before,.page-title .title-accent:before,.page-title .title-accent:after,.notebook-reader>header h1:before{display:none}
  .title-accent{color:var(--ink)!important;background:none!important;-webkit-text-fill-color:currentColor!important;text-shadow:none!important}
  .notebook-content{border:0!important;background:none!important}
}
