html[data-stack-page]{scroll-behavior:auto;scroll-padding-top:100px}
.stack-reader{--font:'Instrument Sans',sans-serif;--mono:'Martian Mono',monospace;--bg:#fafafa;--page-bg:#fafafa;--text:#232323;--muted:#656565;--line:#D7D7D7;font:400 16px/1.5 var(--font);background:var(--bg);color:var(--text);overflow:visible}
.j-skip{position:fixed;z-index:60;top:8px;left:8px;transform:translateY(-160%);padding:8px 16px;background:white}
.j-skip:focus{transform:none}.reader-layout:focus{outline:none}
.reader-layout{border-inline:1px solid var(--line)}
.reader-intro{display:grid;grid-template-columns:1.4fr 1fr;gap:80px;align-items:end;padding:40px;border-bottom:1px solid var(--line)}
.reader-eyebrow{margin:0 0 16px;font:400 12px/16px var(--mono);text-transform:uppercase;letter-spacing:.09em;color:var(--text)}
.reader-intro h1{margin:0;font:500 clamp(32px,3.2vw,48px)/1.07 var(--font);letter-spacing:-.045em}
.reader-intro__description{max-width:350px;margin:0 0 4px;justify-self:end;font-size:15px;line-height:1.6;color:var(--muted)}
.reader-scroll.is-scroll-ready{position:relative;height:var(--reader-run-height)}
.is-scroll-ready .reader-sticky{position:sticky;top:var(--reader-nav-height,60px);height:calc(100svh - var(--reader-nav-height,60px));display:flex;flex-direction:column;background:var(--bg)}
.is-scroll-ready .reader-stage{flex:1;min-height:0;height:auto}
.is-scroll-ready .reader-visual{height:100%;min-height:0;align-self:stretch}
.is-scroll-ready .reader-caption{flex:none}
@media(min-width:901px){.is-scroll-ready .reader-stage{flex:0 1 740px;margin-block:auto}}
.reader-stage{position:relative;min-height:680px;display:grid;grid-template-columns:180px minmax(0,1fr) 310px;align-items:center;padding:0 40px}
.reader-toc{z-index:3;align-self:center}.reader-toc ol{list-style:none;margin:0;padding:0}
.reader-toc li+li{margin-top:12px}
.reader-toc a{display:inline-block;padding:3px 0;font:400 12px/1.55 var(--mono);letter-spacing:-.015em;text-transform:uppercase;color:var(--muted);text-decoration:none;transition:color .18s}
.reader-toc a[aria-current],.reader-toc a:hover{color:#2C2C2C}
.reader-toc a[aria-current]{text-decoration:underline;text-decoration-color:var(--brand-orange-85);text-underline-offset:5px}
.reader-controls{display:flex;flex-direction:column;align-items:flex-start;gap:16px;margin-top:32px}
.reader-scroll-hint{margin:0;font:400 12px/1.7 var(--mono);text-transform:uppercase;letter-spacing:.02em;color:var(--muted)}
.reader-scroll-hint[hidden]{display:none}
.reader-visual{grid-column:2;grid-row:1;position:relative;height:680px;min-width:0}
.reader-visual__frame{position:absolute;inset:0 -34px}
.reader-visual canvas,.reader-poster{position:absolute;inset:0;width:100%;height:100%;object-fit:contain}
.reader-visual canvas{visibility:hidden}.reader-visual.is-ready canvas{visibility:visible}.reader-visual.is-ready .reader-poster{visibility:hidden}
.reader-leader,.reader-module-leader{display:none;position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible;z-index:2}
.reader-leader path{fill:none;stroke:#BABABA;stroke-width:1}.reader-leader circle{fill:#fafafa;stroke:#B1B1B1;stroke-width:1}
.reader-module-leader path{fill:none;stroke:var(--brand-orange-65);stroke-width:1}.reader-module-leader circle{fill:#F3F3F3;stroke:var(--brand-orange-65);stroke-width:1}
.reader-enhanced :is(.reader-leader,.reader-module-leader){display:block}
.reader-enhanced :is(.reader-leader,.reader-module-leader)[hidden]{display:none}
.reader-chapters{grid-column:3;grid-row:1;position:relative;z-index:3;min-width:0;padding-left:24px}
.reader-section{padding:32px 0;scroll-margin-top:100px}
.reader-section h2{margin:0 0 16px;font:400 12px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.025em;color:#474747}
.reader-description{font-size:13px;line-height:1.6;color:var(--muted);margin:0 0 24px}
.reader-components{list-style:none;padding:0;margin:0;display:grid;gap:18px}
.reader-components strong{display:block;font:400 12px/1.5 var(--mono);text-transform:uppercase;letter-spacing:.015em;color:#666666}
.reader-components span{display:block;margin-top:3px;font-size:14px;line-height:1.55;color:#666666}
.reader-mobile-detail{display:none}
.reader-module{display:block;width:100%;padding:0;text-align:inherit;background:none;border:0;border-radius:0;color:inherit;font:inherit;cursor:pointer}
.reader-module:disabled{cursor:default}
.reader-enhanced .reader-components{gap:5px}
.reader-enhanced .reader-components li{border:1px solid transparent;transition:border-color .18s,background-color .18s}
.reader-enhanced .reader-module{padding:7px 10px}
.reader-enhanced .reader-components li.is-active{border-color:var(--brand-orange-65);background:#F3F3F3}
.reader-enhanced .reader-components li:not(.is-active) .reader-module:hover strong{color:#232323}
.reader-enhanced .reader-components li:not(.is-active)>span{display:none}
.reader-enhanced .reader-components li.is-active strong{color:var(--text)}
.reader-enhanced .reader-components li.is-active>span{margin:2px 10px 12px;color:#666666}
.reader-enhanced .reader-section{padding:0;text-align:right}
.reader-enhanced .reader-section.is-offstage{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.reader-enhanced .reader-description{display:none}
.reader-enhanced .reader-chapters:has(#data:not(.is-offstage)):has(#models:not(.is-offstage)){display:grid;gap:20px}
.reader-enhanced .reader-chapters:has(#data:not(.is-offstage)):has(#models:not(.is-offstage)) h2{margin-bottom:8px}
.reader-overview{text-align:right}
.reader-overview[hidden]{display:none}
.reader-overview h2{font:500 22px/1.2 var(--font);letter-spacing:-.025em;margin:0 0 20px}
.reader-overview p{font-size:14px;line-height:1.7;color:var(--muted);margin:0 0 16px;text-wrap:pretty}
.reader-overview>span{display:block;font:400 12px/1.7 var(--mono);color:var(--muted);margin-top:24px}
.reader-caption{display:flex;justify-content:space-between;gap:24px;border-top:1px solid var(--line);padding:20px 40px;color:var(--muted);font:400 12px/1.6 var(--mono)}
.reader-icon-definitions{position:absolute;width:0;height:0;overflow:hidden}
.j-skip:focus-visible,.reader-layout :is(a,button):focus-visible{outline:2px solid var(--focus-ring,#1B1B1B);outline-offset:2px;border-radius:0}
.stack-reader .j-ownership{display:grid;grid-template-columns:1.2fr repeat(3,1fr);gap:32px;padding:48px 40px;border:1px solid var(--line)}
.stack-reader .j-ownership h2{font:500 32px/1.1 var(--font);letter-spacing:-.04em;margin:0}
.stack-reader .j-ownership h3{font:500 18px/24px var(--font);letter-spacing:-.025em;margin:0 0 12px}.stack-reader .j-ownership p{font-size:14px;color:var(--muted);margin:0}
html:not(.reader-enhanced) .reader-stage{grid-template-columns:220px 1fr}.reader-stage:has(.reader-visual:not(.is-ready)) :is(.reader-leader,.reader-module-leader){display:none}
html:not(.reader-enhanced) .reader-chapters{grid-column:1/-1;grid-row:2;display:grid;grid-template-columns:repeat(2,1fr);gap:0 48px;padding:0}
@media(min-width:1600px){.reader-stage,.reader-visual{min-height:700px;height:700px}}
@media(max-width:1150px) and (min-width:901px){
 .reader-stage{grid-template-columns:174px minmax(0,1fr) 286px}.reader-visual__frame{inset:0 -26px}.reader-chapters{padding-left:12px}.reader-intro{gap:48px}
}
/* Laptop-height screens show the whole assembled model in the first view. */
@media(min-width:901px) and (max-height:960px){.reader-intro{padding-block:32px}.reader-eyebrow{margin-bottom:12px}.reader-intro h1{font-size:clamp(32px,2.8vw,40px)}}
@media(min-width:901px) and (max-height:900px){.reader-intro{padding-block:24px}.reader-eyebrow{margin-bottom:8px}.reader-intro h1{font-size:clamp(32px,2.5vw,36px)}}
@media(max-width:900px){
 .reader-intro{grid-template-columns:1fr;gap:20px;padding:32px 24px}
 .reader-intro h1{font-size:36px}.reader-intro__description{max-width:430px;justify-self:start;margin:0;font-size:14px}
 .reader-stage{--stage-inset:24px;display:flex;flex-direction:column;align-items:stretch;padding:0 var(--stage-inset);min-height:0}
 .reader-visual{order:0;flex:none;width:100%;height:400px}.reader-visual__frame{inset:0}
 /* The contents rules run rail to rail, like the intro and caption rules. */
 .reader-toc{order:1;align-self:stretch;border-block:1px solid var(--line);margin-inline:calc(var(--stage-inset)*-1);padding:16px var(--stage-inset);display:flex;align-items:start;gap:16px}
 .reader-toc ol{display:flex;flex-wrap:wrap;gap:6px 14px}.reader-toc li+li{margin-top:0}.reader-toc a{font-size:11px;line-height:1.45}
 /* Touch targets extend into the gaps between links without moving them. */
 .reader-toc a{position:relative}.reader-toc a::after{content:'';position:absolute;inset:-3px -5px}
 .reader-controls{margin:0;flex-shrink:0;gap:8px}.reader-scroll-hint{font-size:10px;max-width:110px}
 .reader-chapters{order:2;min-height:250px;padding:24px 0 32px}
 .reader-enhanced .reader-section{text-align:left}
 .reader-overview{text-align:left}.stack-reader .reader-overview h2{font-size:22px;line-height:1.2}.reader-overview>span{margin-top:16px;font-size:11px}
 .reader-components{grid-template-columns:1fr 1fr;gap:18px 24px}
 .stack-reader .reader-section h2{color:#383838}.reader-components strong{color:#606060;font-size:11px}.reader-components span{font-size:14px;color:#666666}
 .reader-enhanced :is(.reader-leader,.reader-module-leader){display:none}
 .reader-caption{padding:16px 24px;font-size:11px;display:block}.reader-caption span{display:block}.reader-caption span+span{margin-top:6px}
 .stack-reader .j-ownership{grid-template-columns:1fr;padding:32px 24px}
 html:not(.reader-enhanced) .reader-chapters{display:block}.reader-section{scroll-margin-top:110px}
 .is-scroll-ready .reader-sticky{height:calc(100svh - var(--reader-nav-height,60px));max-height:none}
 .is-scroll-ready .reader-stage{justify-content:flex-start}
 .is-scroll-ready .reader-visual{height:min(30svh,250px);flex:none;align-self:auto}
 .is-scroll-ready .reader-toc{padding-block:12px;flex:none;gap:12px}
 .is-scroll-ready .reader-toc ol{gap:4px 12px}
 .is-scroll-ready .reader-chapters{min-height:0;flex:1;padding:14px 0 12px}
 .is-scroll-ready .reader-section h2{margin-bottom:8px}
 .is-scroll-ready .reader-components{gap:3px 10px}
 .is-scroll-ready .reader-module{padding:5px 6px}
 .is-scroll-ready .reader-components strong{font:500 12px/1.4 var(--font);text-transform:none;letter-spacing:0}
 .reader-enhanced .reader-components li>span{display:none}
 .reader-enhanced .reader-mobile-detail:not([hidden]){display:block;grid-column:1/-1;margin-top:12px;padding:10px;border-left:2px solid var(--brand-orange-65);background:#F3F3F3}
 .reader-mobile-detail strong{display:block;font:400 12px/1.45 var(--mono);text-transform:uppercase;color:var(--text)}
 .reader-mobile-detail p{margin:6px 0 0;font:400 14px/1.45 var(--font);color:#666666}
 .is-scroll-ready .reader-chapters:has(#data:not(.is-offstage)):has(#models:not(.is-offstage)){grid-template-columns:1fr 1fr;gap:12px 16px;align-content:start}
 .is-scroll-ready .reader-chapters:has(#data:not(.is-offstage)):has(#models:not(.is-offstage)) .reader-mobile-detail{margin-top:0}
 .is-scroll-ready .reader-chapters:has(#data:not(.is-offstage)):has(#models:not(.is-offstage)) .reader-components{grid-template-columns:1fr}
 .is-scroll-ready .reader-caption{padding-block:10px}
 .is-scroll-ready .reader-caption span+span{display:none}
 .is-scroll-ready .reader-overview h2{margin-bottom:10px}
 .is-scroll-ready .reader-overview p{margin-bottom:8px;line-height:1.6}
 .is-scroll-ready .reader-overview>span{margin-top:10px}
}
/* Phones match the shared 32px H2 line height in site-rails.css. */
@media(max-width:600px){.stack-reader .j-ownership h2{line-height:32px}}
@media(min-width:801px) and (max-width:900px){.reader-stage{--stage-inset:40px}.reader-intro,.reader-stage,.reader-caption{padding-inline:40px}.stack-reader .j-ownership{padding-inline:40px}}
@media(max-width:480px){.reader-intro{padding:28px 24px}.reader-intro h1{font-size:32px}.reader-stage{padding-inline:24px}.reader-visual{height:340px}.reader-components{gap:18px 16px}.reader-toc{display:block}.reader-controls{margin-top:16px;flex-direction:row;align-items:center;gap:20px}.is-scroll-ready .reader-controls{margin-top:10px;gap:14px}.is-scroll-ready .reader-scroll-hint{max-width:none}.is-scroll-ready .reader-chapters{padding-top:12px}.is-scroll-ready .reader-chapters:has(#data:not(.is-offstage)):has(#models:not(.is-offstage)){gap:10px}}
@media(max-width:360px){
 .is-scroll-ready .reader-visual{height:min(25svh,220px)}
 .is-scroll-ready .reader-toc{padding-block:8px}
 .is-scroll-ready .reader-toc a{font-size:11px;line-height:1.45;padding-block:2px}
 .is-scroll-ready .reader-toc ol{gap:3px 10px}
 .is-scroll-ready .reader-controls{margin-top:6px;gap:10px}
 .is-scroll-ready .reader-module{padding:4px}
 .reader-enhanced .reader-mobile-detail:not([hidden]){padding:10px}
 .reader-mobile-detail strong{display:none}
 .reader-mobile-detail p{margin-top:0}
}
/* The narrowest phones keep a 12px pinned inset so a complete plane fits. */
@media(max-width:340px){.is-scroll-ready .reader-stage{--stage-inset:12px}.is-scroll-ready .reader-stage,.is-scroll-ready .reader-caption{padding-inline:12px}.is-scroll-ready .reader-toc a{font-size:10px}}
/* Compact screens give the height left by the navigation and module text to the model. */
@media(max-width:900px) and (min-height:741px){.is-scroll-ready .reader-visual{height:min(calc(100svh - 610px),440px)}}
@media(max-width:900px) and (max-height:800px){.is-scroll-ready .reader-caption{display:none}}
@media(max-width:900px) and (min-height:741px) and (max-height:800px){.is-scroll-ready .reader-visual{height:calc(100svh - 560px)}}
@media(max-width:900px) and (max-height:740px){.is-scroll-ready .reader-visual{height:23svh}}
@media(max-width:900px) and (max-height:700px){.is-scroll-ready .reader-visual{height:19svh}}
@media(prefers-reduced-motion:reduce){.stack-reader *, .stack-reader *::before,.stack-reader *::after{scroll-behavior:auto!important;transition:none!important}}
/* Compact reader controls stay legible on phones. */
@media(max-width:900px){
 .reader-toc a,.reader-overview>span,.reader-components strong,.reader-caption{font-size:12px}
 .reader-scroll-hint{font-size:14px;line-height:20px}
 .stack-reader .reader-section h2,.stack-reader .is-scroll-ready .reader-section h2{font-size:12px;line-height:18px}
}
@media(max-width:340px){.is-scroll-ready .reader-toc a{font-size:12px}}
