@font-face{font-family:Franklin;src:url('/assets/fonts/librefranklin.woff2') format('woff2');font-style:normal;font-weight:100 900;font-display:swap}
:root{--paper:#f2f2eb;--ink:#20352e;--muted:#55665b;--line:#b6c0b4;--accent:#254cc1;--wash:#e2e8db;--gutter:clamp(20px,4vw,64px);--gap:clamp(24px,4vw,64px)}
*{box-sizing:border-box}html{scroll-padding-top:24px}body{margin:0;background:var(--paper);color:var(--ink);font:400 16px/1.65 Franklin,sans-serif;-webkit-font-smoothing:antialiased}::selection{background:#d0ddbd;color:var(--ink)}a{color:inherit;text-underline-offset:5px;text-decoration-thickness:1px}a:hover{color:var(--accent)}a:focus-visible,summary:focus-visible,video:focus-visible{outline:3px solid var(--accent);outline-offset:5px}main:focus{outline:none}img{display:block;width:100%;height:auto}figure,p{margin:0}p+p{margin-top:1em}figure{min-width:0}figcaption,.source{font-size:13px;line-height:1.55;color:var(--muted)}figcaption{margin-top:12px}h1,h2,h3{margin:0;font-weight:400}h1,h2{font-family:Georgia,serif;letter-spacing:-.055em;line-height:1.02}h3{font-size:21px;line-height:1.3;letter-spacing:-.025em}svg{display:block;width:100%;height:auto}details{border-block:1px solid var(--line);margin-top:28px}summary{cursor:pointer;min-height:48px;padding:14px 0;color:var(--accent)}details[open]>summary{margin-bottom:20px}details>div,details>figure{padding-bottom:24px}.wrap{max-width:1600px;margin:auto;padding-inline:var(--gutter)}.skip{position:absolute;top:-100px;left:20px;background:var(--ink);color:var(--paper);padding:12px 20px;z-index:20}.skip:focus{top:12px;color:var(--paper)}.masthead{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:100px;border-bottom:1px solid var(--ink)}.home-link{font-size:25px;font-weight:600;letter-spacing:-.06em;text-decoration:none}.masthead nav{display:flex;gap:30px}.masthead nav a{display:flex;align-items:center;min-height:44px;text-decoration:none;font-size:14px}.masthead nav a:hover{text-decoration:underline}.eyebrow{font-size:12px;font-weight:600;line-height:1.5;letter-spacing:.07em;text-transform:uppercase}.introduction{display:flex;justify-content:space-between;gap:24px;padding:20px 0 35px;font-size:15px}.introduction a{white-space:nowrap}.home-feature{display:grid;grid-template-columns:1fr 1.05fr;gap:var(--gap);align-items:start}.feature-copy{padding-top:12px}.feature-copy h1{font-size:clamp(60px,6.7vw,104px);margin:25px 0}.deck{font-size:clamp(18px,1.5vw,23px);line-height:1.55;max-width:37ch}.project-link{display:flex;justify-content:space-between;align-items:center;border-block:1px solid var(--ink);padding-block:14px;margin-top:26px;font-size:21px;max-width:440px;text-decoration:none}.project-link span{font-size:28px}.opening-decision{margin-top:32px;max-width:33ch}.opening-decision p{font-size:17px;line-height:1.5;margin:9px 0}.opening-decision a{font-size:14px;color:var(--accent);display:inline-block;padding-block:8px}.hero-object{padding-top:12px}.hero-object figcaption{display:flex;justify-content:space-between;gap:20px}.work-notes{display:grid;grid-template-columns:1fr 1.4fr 1.4fr;gap:var(--gap);padding-block:26px;margin:50px 0 76px;border-block:1px solid var(--line)}.work-notes a{text-decoration:none}.work-notes a>span{font-size:20px;line-height:1.3;display:block}.work-notes small{display:block;font-size:14px;line-height:1.5;margin-top:10px}.work-notes a:hover>span{text-decoration:underline}.photographs{background:var(--ink);color:var(--paper);padding:40px var(--gutter) 65px;margin-inline:calc(-1 * var(--gutter))}.photographs header{display:flex;align-items:baseline;justify-content:space-between;gap:24px;margin-bottom:38px}.photographs h2{font-size:clamp(56px,7.5vw,112px)}.photographs header p{font-size:15px}.photographs figcaption{color:#bdcbbf;font-size:12px}.photo-colour{width:75%;margin-left:auto}.photo-pair{display:grid;grid-template-columns:1.25fr 1fr;gap:var(--gap);align-items:start;margin-top:46px}.photo-room{margin-top:0}.photo-building{width:68%;margin:90px 0 0 auto}.everyday{display:grid;grid-template-columns:1fr 3fr;gap:var(--gap);padding-block:52px 60px;border-bottom:1px solid var(--ink)}.everyday h2{font-size:clamp(29px,3.1vw,44px);letter-spacing:-.04em}.everyday p:not(.eyebrow){max-width:55ch;margin-top:18px}.contact{display:grid;grid-template-columns:1fr 1.5fr auto;gap:var(--gap);align-items:start;padding:45px 0 35px}.contact h2{font-size:clamp(35px,4vw,56px)}.contact .email{font-size:clamp(16px,1.6vw,23px);overflow-wrap:anywhere;display:inline-block;padding-block:5px}.contact nav{display:flex;gap:26px;margin-top:10px}.contact nav a{display:inline-flex;align-items:center;min-height:44px;font-size:14px}.contact>p{font-size:12px;color:var(--muted)}
/* Project: the scale changes with the kind of evidence. */
.case-heading{display:grid;grid-template-columns:1fr auto;align-items:baseline;gap:10px 25px;padding-block:25px 30px}.case-heading>a{grid-column:1/-1;font-size:13px;justify-self:start;padding-block:6px}.case-heading h1{font-family:Franklin,sans-serif;font-size:27px;font-weight:500;letter-spacing:-.04em}.case-heading>p{font-size:13px;color:var(--muted)}.case-opening{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--gap);align-items:start}.case-opening h2{font-size:clamp(48px,5.25vw,80px);margin:24px 0 28px}.case-opening .deck{margin-bottom:24px}.case-opening>div>p:last-child{max-width:45ch}.role{display:grid;grid-template-columns:1.25fr 1fr auto;gap:var(--gap);padding-block:28px;margin-top:36px;border-block:1px solid var(--line);font-size:14px}.role strong{display:block;margin-bottom:8px;font-weight:600}.role p+p{margin:0}.role>a{align-self:start;padding-block:8px;color:var(--accent)}.case-contents{display:flex;justify-content:space-between;gap:24px;padding-block:20px;font-size:14px}.case-contents>a{padding-block:8px}.display-section{padding-top:66px}.chapter-heading h2{font-size:clamp(42px,5.4vw,80px);margin-top:18px}.display-story{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);align-items:center;margin-top:42px}.prose{max-width:58ch}.lead{font-size:clamp(20px,1.8vw,26px);line-height:1.5}.prose .source{margin-top:25px}.orientation{background:var(--wash);padding:20px 30px 25px}.orientation svg{max-width:460px;margin:auto;color:var(--ink);fill:currentColor}.orientation .circle{fill:none;stroke:currentColor;stroke-width:1.5}.orientation .ticks{stroke:currentColor;stroke-width:2}.orientation .guide{stroke:var(--muted);stroke-width:1;fill:none}.orientation text{font:25px Franklin,sans-serif}.orientation .diagram-note{font-size:14px}.orientation figcaption{max-width:52ch}.request-response{display:grid;grid-template-columns:1fr 1.4fr;gap:24px var(--gap);margin-top:50px;border-top:1px solid var(--line);padding-top:26px}.request-response>p,.request-response>a{grid-column:2;max-width:58ch}.request-response>a{color:var(--accent);font-size:14px;justify-self:start}.signal{display:flex;gap:24px;align-items:center}.signal p{font-size:20px;line-height:1.4;margin-top:10px}.signal-arrow{font-size:30px}.research{margin-top:35px;max-width:800px}.research>div{max-width:65ch}.build-section{margin-top:80px;padding-top:36px;border-top:1px solid var(--ink)}.build-section .chapter-heading .lead{margin-top:24px}.build-evidence{display:grid;grid-template-columns:.9fr 1.15fr .75fr;gap:var(--gap);margin-top:38px;align-items:start}.cutaway img{background:#e7e7e5;padding:20px;max-height:420px;object-fit:contain}.build-copy{font-size:16px}.build-copy .source{margin-top:22px}.build-copy details img{max-height:500px;object-fit:contain}.film-evidence video{width:100%;aspect-ratio:372/662;display:block;background:var(--wash)}.evaluation{background:var(--wash);margin:80px calc(-1 * var(--gutter)) 0;padding:40px var(--gutter)}.evaluation-title{display:grid;grid-template-columns:1.25fr 1fr;gap:var(--gap);align-items:end;margin-top:22px}.evaluation-title h2{font-size:clamp(44px,5.5vw,80px)}.evaluation-columns{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);margin-top:40px}.evaluation-columns>div{border-top:1px solid var(--muted);padding-top:20px}.evaluation-columns h3{margin-bottom:16px}.evaluation-columns p{max-width:55ch}.next-evidence{max-width:68ch;margin-top:32px}.evaluation>.source{margin-top:22px}.project-source{display:grid;grid-template-columns:2fr 1fr 1fr;gap:var(--gap);padding-block:30px 50px;border-bottom:1px solid var(--ink);font-size:13px}.project-source a{align-self:start;padding-block:5px;color:var(--accent)}
@media(min-width:1450px){.feature-copy h1{margin-block:32px}.opening-decision{margin-top:42px}}
@media(max-width:1050px){.feature-copy h1{font-size:clamp(55px,7.6vw,80px)}.opening-decision{margin-top:20px}.hero-object figcaption{display:block}.hero-object figcaption span{display:block}.work-notes{grid-template-columns:1fr 1fr}.work-notes>.eyebrow{grid-column:1/-1}.contact{grid-template-columns:1fr 2fr}.contact>p{grid-column:1/-1}.role{grid-template-columns:1fr 1fr}.role>a{grid-column:1/-1}.build-evidence{grid-template-columns:1fr 1.3fr}.film-evidence{grid-column:1/-1;display:grid;grid-template-columns:220px 1fr;align-items:end;gap:25px}.film-evidence figcaption{max-width:30ch}.case-opening h2{font-size:clamp(42px,5.7vw,62px)}.request-response{grid-template-columns:1fr}.request-response>p,.request-response>a{grid-column:auto}.project-source{grid-template-columns:1fr 1fr}.project-source>p{grid-column:1/-1}}
@media(max-width:640px){body{font-size:16px}.masthead{min-height:90px;align-items:start;flex-direction:column;gap:4px;padding-block:16px 8px}.home-link{font-size:23px}.masthead nav{gap:26px}.masthead nav a{font-size:13px;min-height:38px}.introduction{display:block;padding:19px 0 25px;font-size:14px}.introduction a{display:inline-block;padding-top:9px}.home-feature{display:flex;flex-direction:column;gap:24px}.feature-copy{display:contents}.feature-copy>.eyebrow{order:0}.feature-copy h1{order:1;font-size:clamp(55px,14vw,78px);margin:0;line-height:.99}.feature-copy .deck{order:2;font-size:17px;max-width:none}.project-link{order:3;width:100%;margin:0;font-size:20px;padding-block:10px}.hero-object{order:4;padding:0;width:100%}.hero-object figcaption{display:flex;font-size:12px}.opening-decision{order:5;max-width:none;margin:0;border-left:2px solid var(--accent);padding-left:18px}.work-notes{grid-template-columns:1fr;gap:22px;margin:35px 0 45px;padding-block:22px}.work-notes>.eyebrow{grid-column:auto}.work-notes a>span{font-size:19px}.work-notes small{margin-top:5px}.photographs{padding-block:28px 35px}.photographs header{display:block;margin-bottom:25px}.photographs h2{font-size:clamp(42px,12vw,66px)}.photographs header p{margin-top:12px;font-size:14px}.photo-colour{width:100%}.photo-pair{grid-template-columns:1fr;gap:28px;margin-top:26px}.photo-building{width:73%;margin:0 0 0 auto}.everyday{grid-template-columns:1fr;gap:17px;padding-block:32px}.everyday h2{font-size:33px;max-width:19ch}.contact{grid-template-columns:1fr;gap:20px;padding-block:32px}.contact>p{grid-column:auto}.contact .email{font-size:16px}.contact nav{margin-top:8px}.case-heading{grid-template-columns:1fr;padding-block:20px 25px;gap:9px}.case-heading>a{grid-column:auto}.case-heading>p{font-size:12px}.case-opening{grid-template-columns:1fr;gap:25px}.case-opening h2{font-size:clamp(40px,10.8vw,60px);margin-block:19px 23px}.case-opening .deck{font-size:19px}.role{grid-template-columns:1fr;gap:22px;margin-top:25px;padding-block:23px}.role>a{grid-column:auto}.case-contents{flex-direction:column;gap:2px;padding-block:17px}.case-contents>a{min-height:44px}.display-section{padding-top:28px}.chapter-heading h2{font-size:clamp(37px,9.7vw,54px);margin-top:15px}.display-story{grid-template-columns:1fr;gap:25px;margin-top:27px}.lead{font-size:20px}.orientation{padding:14px 17px 20px}.request-response{margin-top:30px;gap:22px}.signal{gap:14px;align-items:start}.signal>div{flex:1}.signal .eyebrow{font-size:10px}.signal p{font-size:17px}.signal-arrow{font-size:23px;padding-top:16px}.research{margin-top:25px}.build-section{margin-top:45px;padding-top:28px}.build-section .chapter-heading .lead{font-size:19px}.build-evidence{grid-template-columns:1fr;gap:27px;margin-top:28px}.cutaway{max-width:300px}.film-evidence{grid-column:auto;grid-template-columns:1fr;gap:8px}.film-evidence video{max-width:280px}.film-evidence figcaption{max-width:40ch}.evaluation{margin-top:44px;padding-block:29px}.evaluation-title{grid-template-columns:1fr;gap:25px}.evaluation-title h2{font-size:clamp(40px,10.5vw,58px)}.evaluation-columns{grid-template-columns:1fr;gap:24px;margin-top:28px}.next-evidence{margin-top:25px}.project-source{grid-template-columns:1fr;gap:18px;padding-block:25px 32px}.project-source>p{grid-column:auto}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media print{.masthead nav,.skip,video,.case-contents{display:none}body{font-size:11pt;background:white;color:black}.wrap{padding:0}.photographs,.evaluation{margin-inline:0;background:none;color:inherit;padding-inline:0}.photographs figcaption{color:inherit}a{color:inherit}.contact{break-inside:avoid}}
/* Third pass: a shared opening, and a construction sequence with explicit evidence limits. */
.collection-intro{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--gap);align-items:end;padding:38px 0 32px}.collection-intro h1{font-size:clamp(36px,4.2vw,62px)}.collection-intro p{max-width:43ch;font-size:17px}.opening-pair{display:grid;grid-template-columns:1.1fr 1fr;gap:var(--gap);align-items:start}.opening-pair article{min-width:0}.image-link{display:block}.opening-photo{padding-top:54px}.pair-copy{padding-top:20px}.pair-copy h2{font-size:clamp(28px,3vw,43px);margin:10px 0 16px}.pair-copy h2 a{text-decoration:none}.pair-copy h2 a:hover{text-decoration:underline}.pair-copy>p:not(.eyebrow){max-width:45ch;font-size:16px}.decision-link{display:inline-block;margin-top:14px;padding-block:8px;color:var(--accent);font-size:14px}.opening-pair+.everyday{margin-top:38px;border-top:1px solid var(--line);border-bottom:0;padding-block:30px 42px}.photo-pair{margin-top:0}.photographs h2{font-size:clamp(42px,5vw,72px)}.photo-building{margin-top:35px}.display-story{grid-template-columns:1fr;margin-top:28px}.display-story .prose{max-width:68ch}.display-section .chapter-heading h2{font-size:clamp(35px,4vw,56px)}.decision-sequence{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin:30px 0 22px;padding:0;list-style:none;counter-reset:decision}.decision-sequence li{border-top:1px solid var(--ink);padding-top:18px;counter-increment:decision}.decision-sequence h3:before{content:counter(decision,decimal-leading-zero) ' / ';font-size:13px;color:var(--muted)}.decision-sequence p{margin-top:12px}.connection-story{max-width:850px;margin-top:35px}.connection-story>p{margin-top:15px;max-width:65ch}.connection-path{display:flex;flex-wrap:wrap;gap:12px 22px;padding:18px 0;margin:20px 0;list-style:none;border-block:1px solid var(--line);font-size:15px}.connection-path li:not(:last-child):after{content:' →';padding-left:18px;color:var(--accent)}.build-section{margin-top:45px}.evaluation-title h2{font-size:clamp(44px,5.5vw,80px)}
@media(max-width:640px){.collection-intro{grid-template-columns:1fr;gap:17px;padding:25px 0}.collection-intro h1{font-size:38px}.collection-intro p{font-size:15px}.opening-pair{grid-template-columns:1.12fr 1fr;gap:16px}.opening-photo{padding-top:0}.pair-copy{padding-top:14px}.pair-copy h2{font-size:25px;line-height:1.1;margin:9px 0 13px}.pair-copy .eyebrow{font-size:10px;letter-spacing:.025em}.pair-copy>p:not(.eyebrow){font-size:14px;line-height:1.55}.decision-link{font-size:13px}.opening-pair+.everyday{margin-top:25px;padding-block:25px 32px}.photo-building{margin-top:0}.decision-sequence{grid-template-columns:1fr;gap:19px;margin-top:25px}.decision-sequence li{padding-top:13px}.decision-sequence h3{font-size:20px}.decision-sequence p{margin-top:8px}.connection-path{display:grid;grid-template-columns:1fr 1fr;gap:16px;font-size:14px}.connection-path li:not(:last-child):after{padding-left:6px}.build-section{margin-top:26px}}
.opening-pair article{display:flex;flex-direction:column}.opening-pair .pair-copy{display:contents}.opening-pair .pair-copy>.eyebrow{order:0}.opening-pair .pair-copy>h2{order:1}.opening-pair .image-link{order:2}.opening-pair .pair-copy>p:not(.eyebrow){order:3;margin-top:16px}.opening-pair .decision-link{order:4}.opening-pair .pair-copy>h2{margin-block:9px 18px}

/* Paired subjects, full-width reading on phones. */
.thrust-story{margin-top:45px;padding-top:30px;border-top:1px solid var(--ink)}.thrust-story>.lead{max-width:52ch;margin-top:28px}.tradeoff-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);margin:30px 0}.tradeoff-pair>div{border-top:1px solid var(--line);padding-top:19px}.tradeoff-pair p{max-width:52ch;margin-top:13px}.tradeoff-reading{max-width:68ch}.thrust-story>.source{margin-top:22px}
@media(max-width:640px){.opening-pair{row-gap:12px}.opening-pair article,.opening-pair .pair-copy{display:contents}.opening-work .eyebrow{grid-column:1;grid-row:1}.opening-photo .eyebrow{grid-column:2;grid-row:1}.opening-work h2{grid-column:1;grid-row:2}.opening-photo h2{grid-column:2;grid-row:2}.opening-work .image-link{grid-column:1;grid-row:3}.opening-photo .image-link{grid-column:2;grid-row:3}.opening-pair .pair-copy>h2{margin:0 0 5px}.opening-pair .pair-copy>p:not(.eyebrow){grid-column:1/-1;grid-row:4;max-width:none;font-size:16px;margin-top:7px}.opening-pair .decision-link{grid-column:1/-1;grid-row:5;font-size:14px;margin-top:0}.tradeoff-pair{grid-template-columns:1fr;gap:22px}.thrust-story{margin-top:25px;padding-top:25px}.thrust-story>.lead{margin-top:23px}}

.construction-summary{max-width:65ch;margin-block:24px 16px}

/* Fifth pass: the one-arrow figure, the home dashboard, the photo viewer. */
.thrust-figure{margin:34px 0 30px}
.tf-defs{position:absolute;width:0;height:0;overflow:hidden}
.tf-panels{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}
.tf-panel{border-top:1px solid var(--line);padding-top:19px;min-width:0}
.tf-panel svg{max-width:470px;margin:14px 0 10px}
.tf-say{max-width:46ch;font-size:15px;line-height:1.55}
.tf-hull{fill:var(--wash);stroke:var(--ink);stroke-width:2}
.tf-centre,.tf-hub{fill:var(--ink)}
.tf-prop{fill:var(--paper);stroke:var(--ink);stroke-width:2}
.tf-push{stroke:var(--muted);stroke-width:5;stroke-linecap:round}
.tf-head-push{fill:var(--muted)}
.tf-sum{stroke:var(--accent);stroke-width:7;stroke-linecap:round}
.tf-head-sum{fill:var(--accent)}
.tf-turn{fill:none;stroke:var(--ink);stroke-width:3.5;stroke-linecap:round}
.tf-head-turn{fill:var(--ink)}
.tf-dial{fill:none;stroke:var(--ink);stroke-width:2}
.tf-tick{stroke:var(--ink);stroke-width:2}
.tf-panel text{font:20px Franklin,sans-serif;fill:var(--ink)}
.tf-panel .tf-lbl,.tf-panel .tf-none{fill:var(--muted)}
.tf-panel .tf-turnlbl{font-weight:600}
.tf-try{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px 16px;margin-top:18px;max-width:470px;font-size:14px}
.tf-try input{width:100%;min-height:44px;accent-color:var(--accent)}
.tf-try output{font-variant-numeric:tabular-nums;min-width:5ch;text-align:right}
.thrust-figure figcaption{max-width:68ch;margin-top:20px}

.home-making{display:grid;grid-template-columns:1fr 1.55fr;gap:var(--gap);align-items:start;margin-top:38px;padding-block:30px 46px;border-top:1px solid var(--line)}
.home-making h2{font-size:clamp(29px,3.1vw,44px);letter-spacing:-.04em;margin:10px 0 18px}
.home-making .making-copy>p:not(.eyebrow){max-width:48ch}
.home-making figure img{background:#000}
.home-making figcaption{max-width:62ch}
.coffee-note{margin-top:26px;padding-top:16px;border-top:1px solid var(--line);font-size:15px;max-width:48ch}
.coffee-note strong{font-weight:600}

a.photo-open{display:block;cursor:zoom-in}
a.photo-open:focus-visible{outline-color:var(--paper)}
.opening-photo a.photo-open:focus-visible{outline-color:var(--accent)}
.viewer{width:100vw;height:100vh;height:100dvh;max-width:none;max-height:none;margin:0;padding:56px 16px 16px;border:0;background:#121d19;color:var(--paper);overflow:hidden}
.viewer::backdrop{background:#121d19}
.viewer[open]{display:flex;align-items:center;justify-content:center}
.viewer img{width:auto;height:auto;max-width:100%;max-height:100%;object-fit:contain}
.viewer-close{position:absolute;top:8px;right:12px;min-width:48px;min-height:44px;padding:8px 14px;border:0;background:none;color:var(--paper);font:500 15px Franklin,sans-serif;cursor:pointer}
.viewer-close:hover{text-decoration:underline;text-underline-offset:5px}
.viewer-close:focus-visible{outline:3px solid var(--paper);outline-offset:2px}

@media(max-width:1050px){.home-making{grid-template-columns:1fr}}
@media(max-width:640px){.tf-panels{grid-template-columns:1fr;gap:28px}
.tf-panel svg{max-width:none}
.thrust-figure{margin:26px 0 22px}
.home-making{margin-top:25px;padding-block:25px 32px;gap:22px}
.viewer{padding:52px 8px 8px}
}
html:has(.viewer[open]){overflow:hidden;scrollbar-gutter:stable}
.viewer img{width:100%;height:100%;max-width:none;max-height:none}
.opening-pair+.home-making{margin-top:38px}
.nowrap{white-space:nowrap}

/* Sixth pass: the Dynafin drawings (blade path, washing, LED ring, set and actual, modes, vessel size). */
.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.machine{margin-top:70px;padding-top:36px;border-top:1px solid var(--ink)}
.machine .lead{max-width:44ch;margin-top:26px}
.machine-copy{max-width:66ch;margin-top:18px}
.blade-figure{margin:34px 0 0}
.bp-row{border-top:1px solid var(--line);padding-top:18px;margin-top:22px}
.bp-row svg{margin:10px 0 6px;overflow:visible}
.bp-say{max-width:66ch;font-size:15px;line-height:1.55}
.bp-path{fill:none;stroke:var(--muted);stroke-width:2;stroke-dasharray:6 6}
.bp-foil{fill:var(--paper);stroke:var(--ink);stroke-width:1.6}
.bp-now{fill:var(--ink)}
.bp-wheel{fill:none;stroke:var(--ink);stroke-width:2}
.bp-hub{fill:var(--ink)}
.bp-arm{stroke:var(--line);stroke-width:2}
.bp-move{stroke:var(--accent);stroke-width:4;stroke-linecap:round}
.bp-headfill{fill:var(--accent)}
.bp-lbl{font:19px Franklin,sans-serif;fill:var(--muted)}
.bp-path,.bp-foil,.bp-wheel,.bp-arm,.bp-move{vector-effect:non-scaling-stroke}
.blade-figure .tf-try{max-width:520px}
.blade-figure figcaption{max-width:72ch;margin-top:22px}

.washing{display:grid;grid-template-columns:minmax(0,470px) minmax(0,1fr);gap:20px var(--gap);align-items:start;margin-top:46px;padding-top:24px;border-top:1px solid var(--line)}
.wash-figure svg{max-width:470px}
.wash-figure text{font:20px Franklin,sans-serif;fill:var(--ink)}
.wash-figure .wash-lbl{font-weight:600}
.wash-figure .wash-sub{fill:var(--muted)}
.wash-zone{fill:rgba(37,76,193,.13);stroke:var(--accent);stroke-width:2;stroke-dasharray:5 5}
.wash-jet{stroke:var(--muted);stroke-width:3;stroke-linecap:round}
.wash-hit{stroke:var(--accent);stroke-width:3}
.wash-copy{max-width:52ch;padding-top:8px}
.wash-copy h3{margin-bottom:14px}

.ring-story{margin-top:56px;padding-top:26px;border-top:1px solid var(--line)}
.ring-figure{display:grid;grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:24px var(--gap);align-items:start}
.ring-figure figcaption{grid-column:1/-1;max-width:72ch}
.ring-draw svg{max-width:400px}
.rg-track{fill:none;stroke:var(--line);stroke-width:1.5}
.rg-led{fill:var(--paper);stroke:var(--line);stroke-width:2}
.rg-led.rg-g{fill:#3f7d52;stroke:#2c5a3a}
.rg-led.rg-r{fill:#b4492f;stroke:#86331f}
.rg-num{font:54px Georgia,serif;letter-spacing:-.04em;fill:var(--ink)}
.rg-sub{font:20px Franklin,sans-serif;fill:var(--muted)}
.rg-idx{font:15px Franklin,sans-serif;fill:var(--muted)}
.rg-say{font-size:15px;line-height:1.55;max-width:46ch;margin-top:10px}
.ring-code{max-width:56ch;padding-top:6px}
.ring-code h3{margin-bottom:14px}
.rg-log-label{margin-top:24px;color:var(--muted)}
.rg-log{margin:8px 0 0;padding:14px 16px;background:var(--ink);color:var(--paper);font:14px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;overflow-x:auto;white-space:pre-wrap;word-break:break-word}
.rg-count{font-size:14px;color:var(--muted);margin-top:10px}

.lag-figure{margin:0}
.lag-figure svg{max-width:560px;overflow:visible}
.lg-track{fill:var(--paper);stroke:var(--ink);stroke-width:2}
.lg-actual{fill:var(--ink)}
.lg-tick{stroke:var(--ink);stroke-width:2}
.lg-set{stroke:var(--accent);stroke-width:5;stroke-linecap:round}
.lag-figure text{font:18px Franklin,sans-serif;fill:var(--muted)}
.lag-figure .lg-setlbl{fill:var(--accent);font-weight:600}
.lag-figure .lg-actlbl{fill:var(--ink);font-weight:600}
.lg-say{font-size:15px;line-height:1.55;max-width:52ch;margin-top:8px}
.lg-try{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:16px;font-size:14px}
.lg-try span{margin-right:8px}
.lg-try button{min-width:64px;min-height:44px;padding:8px 14px;border:1px solid var(--ink);background:var(--paper);color:var(--ink);font:500 15px Franklin,sans-serif;cursor:pointer}
.lg-try button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.lg-try button:hover{border-color:var(--accent)}
.lg-try button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.request-response .lag-figure figcaption{max-width:56ch}

.modes-figure{margin-top:56px;padding-top:26px;border-top:1px solid var(--line);max-width:760px}
.modes-figure h3{margin-bottom:22px}
.modes-figure svg{overflow:visible}
.md-col,.md-rowlbl{font:17px Franklin,sans-serif;fill:var(--muted)}
.md-rowlbl{font-weight:600;letter-spacing:.04em;text-transform:uppercase;font-size:14px}
.md-split{stroke:var(--muted);stroke-width:1.5;stroke-dasharray:5 6}
.md-row{stroke:var(--line);stroke-width:1.5;stroke-dasharray:2 5}
.md-box{stroke-width:2}
.md-sub{fill:var(--paper);stroke:var(--muted)}
.md-main{fill:var(--wash);stroke:var(--ink)}
.md-stop{fill:var(--ink);stroke:var(--ink)}
.md-txt{font:19px Franklin,sans-serif;fill:var(--ink)}
.md-txt-inv{fill:var(--paper);font-weight:600}
.md-link{fill:none;stroke:var(--ink);stroke-width:2}
.md-headfill{fill:var(--ink)}
.modes-figure figcaption{max-width:64ch}

.size-figure{margin:34px 0 10px;padding-top:24px;border-top:1px solid var(--line)}
.size-figure h3{margin-bottom:22px}
.size-scale{display:grid;grid-template-columns:repeat(6,1fr);list-style:none;margin:0;padding:0 0 14px;position:relative;font-size:15px}
.size-scale::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--ink)}
.size-scale li{padding:10px 8px 12px;text-align:center;line-height:1.3}
.size-scale li.sz-in{background:var(--paper);box-shadow:inset 0 3px 0 var(--accent)}
.size-ends{display:grid;grid-template-columns:1fr 1.2fr 1fr;gap:20px var(--gap);margin-top:18px;font-size:15px;line-height:1.55}
.size-ends strong{display:block;font-weight:600;margin-bottom:4px}
.size-ends .sz-mid{text-align:center;color:var(--accent)}
.size-ends .sz-mid strong{color:var(--accent)}
.size-ends p:last-child{text-align:right}
.size-figure figcaption{margin-top:16px}

@media(max-width:900px){.washing,.ring-figure{grid-template-columns:1fr}.ring-draw svg,.wash-figure svg{max-width:400px}}
@media(max-width:640px){.machine{margin-top:48px}
.bp-lbl{font-size:24px}
.bp-foil{stroke-width:1.3}
.md-col{font-size:24px}
.md-rowlbl{font-size:19px}
.size-scale{grid-template-columns:1fr;padding:0 0 0 18px}
.size-scale::after{top:0;bottom:0;left:0;right:auto;width:2px;height:auto}
.size-scale li{text-align:left;padding:8px 10px}
.size-scale li.sz-in{box-shadow:inset 3px 0 0 var(--accent)}
.size-ends{grid-template-columns:1fr}
.size-ends .sz-mid,.size-ends p:last-child{text-align:left}
.md-txt{font-size:21px}
}

/* Collection restoration: the homepage selects, the work index keeps everything reachable. */
.featured-devices{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);padding:16px 0 48px;border-bottom:1px solid var(--line);margin-bottom:35px}.featured-devices article{min-width:0}.featured-devices h2{font-size:clamp(32px,3.5vw,52px);margin:9px 0 18px}.featured-devices h2 a{text-decoration:none}.device-image{display:block;background:var(--wash)}.device-image img{width:100%;height:clamp(240px,28vw,410px);object-fit:contain}.featured-devices article>p:last-child{max-width:46ch;margin-top:17px}.collection-overview{padding-block:48px 30px;border-top:1px solid var(--ink);margin-top:40px}.collection-heading{display:flex;align-items:end;justify-content:space-between;gap:24px;margin-bottom:28px}.collection-heading h2{font-size:clamp(32px,4vw,52px)}.collection-heading>a,.index-jump a{color:var(--accent);padding-block:10px}.project-index{list-style:none;margin:0;padding:0}.project-index li{border-top:1px solid var(--line)}.project-index a{display:grid;grid-template-columns:minmax(150px,1fr) 2fr 24px;gap:24px;padding:20px 0;text-decoration:none}.project-index a>span:first-child{font-size:20px}.project-index a:hover>span:first-child{text-decoration:underline;text-underline-offset:5px}.index-description{font-size:15px;max-width:64ch;color:var(--muted)}.project-index a>span:last-child{color:var(--accent)}.index-intro{padding:50px 0 35px}.index-intro h1{font-size:clamp(42px,6vw,82px);margin:20px 0 28px;max-width:18ch}.index-intro>p:last-child{font-size:20px;max-width:52ch}.index-jump{display:flex;flex-wrap:wrap;gap:8px 26px;border-block:1px solid var(--line);padding-block:16px}.index-group{padding-top:48px;scroll-margin-top:25px}.index-group h2{font-size:clamp(28px,3vw,42px);margin-bottom:25px}.collection-note{max-width:65ch;margin:50px 0;color:var(--muted);font-size:14px}.photo-collection-link{display:inline-block;color:inherit;padding-block:12px}.photographs header{align-items:end;gap:24px}.collection-intro p{max-width:48ch}
@media(max-width:640px){.featured-devices{gap:18px;padding-bottom:28px;margin-bottom:25px}.featured-devices .eyebrow{font-size:10px;letter-spacing:.02em}.featured-devices h2{font-size:30px;margin-bottom:12px}.device-image img{height:190px}.featured-devices article>p:last-child{font-size:14px;line-height:1.5}.collection-heading{display:block}.collection-heading>a{display:inline-block;margin-top:16px}.project-index a{grid-template-columns:1fr 20px;gap:8px 15px;padding-block:19px}.project-index .index-description{grid-column:1;grid-row:2}.project-index a>span:last-child{grid-column:2;grid-row:1}.collection-overview{margin-top:28px;padding-top:30px}.index-intro{padding-top:28px}.index-intro h1{font-size:43px}.index-jump{gap:2px 20px;font-size:14px}.index-group{padding-top:32px}.photo-collection-link{font-size:15px}.masthead nav{flex-wrap:wrap;gap:8px 22px}}

/* Seventh pass: Codex review fixes and the agreed hierarchy. */
.machine-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:24px var(--gap);align-items:start;margin-top:26px}
.machine-intro .lead{margin-top:0}
.machine-intro .blade-figure{margin:0}
.machine-intro .bp-row{margin-top:0}
.bp-row svg{max-width:640px}
.blade-explore{max-width:900px;margin-top:34px}
.blade-explore>div>p:first-child{max-width:66ch}
.blade-explore .bp-row{margin-top:18px}
.modes-story{margin-top:56px;padding-top:26px;border-top:1px solid var(--line);max-width:760px}
.modes-story>p{max-width:62ch;margin-top:12px}
.modes-story h3{margin-bottom:4px}
.modes-more .modes-figure{margin-top:0;padding-top:0;border-top:0}
.md-list{display:none;margin:0;padding-left:20px;line-height:1.55}
.md-list li+li{margin-top:8px}
.size-insight{max-width:66ch}
.size-more{margin-top:18px}
.size-more .size-scale{margin-top:4px}
.home-making{grid-template-areas:"head fig" "rest fig";grid-template-rows:auto 1fr}
.home-making .making-head{grid-area:head}
.home-making .making-rest{grid-area:rest;margin-top:1em}
.home-making>figure{grid-area:fig}
.home-making .making-copy>p:not(.eyebrow){max-width:48ch}
@media(max-width:1050px){.home-making{grid-template-areas:"head" "fig" "rest";grid-template-rows:auto}.home-making .making-rest{margin-top:0}}
@media(max-width:900px){.machine-intro{grid-template-columns:1fr}}
@media(max-width:640px){.modes-more svg{display:none}.md-list{display:block}}
/* pp- (project page) names, 5 November: the same rules as T1's, shared with Brailly; step G retires the t1- names. */
/* Eighth pass, 4 November 2026: T1 as the test case for the shared page language (docs/consolidation-plan.md).
   The product figure is T1's 3D model (/t1-model.js): drag to turn, lift the lid along its seam. Without
   WebGL the assembled render stays; without JavaScript the opened render follows it. The dial figure and the project page parts. */
.t1-opening,
.pp-opening{grid-template-columns:1fr 1.55fr;grid-template-rows:auto 1fr;grid-template-areas:"copy fig" "rest fig";row-gap:28px}.t1-opening-rest,.pp-opening-rest{align-self:start}.t1-opening-copy,.pp-opening-copy{grid-area:copy}.t1-opening .t1-model,.pp-opening .pp-figure{grid-area:fig}.t1-opening-rest,.pp-opening-rest{grid-area:rest;max-width:45ch;padding-bottom:10px}
.dial-figure [hidden]{display:none!important}
.dial-button{min-height:44px;padding:8px 16px;border:1px solid var(--ink);background:var(--paper);color:var(--ink);font:500 15px Franklin,sans-serif;cursor:pointer}
.dial-button:hover{border-color:var(--accent)}
.dial-button:focus-visible{outline:3px solid var(--accent);outline-offset:5px}
.dial-button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.t1-model{margin:0;min-width:0}
.t1-stage{position:relative;aspect-ratio:1600/1100;isolation:isolate}.t1-stage .poster{display:block;width:100%;height:100%;object-fit:contain}.t1-stage.ready .poster{display:none}
.t1-stage canvas{display:block;width:100%;height:100%;touch-action:pan-y;cursor:grab;outline-offset:-6px}.t1-stage canvas.held{cursor:grabbing}.t1-stage canvas:focus-visible{outline:3px solid var(--accent)}
.seam{position:absolute;width:56px;height:48px;transform:translate(-50%,-50%);background:transparent;border:0;padding:0;cursor:ns-resize;touch-action:none}.seam[hidden]{display:none}
.seam span{display:block;width:24px;height:6px;background:var(--accent);border:1px solid var(--paper);margin:auto;transition:width 160ms}.lid-hot .seam span,.seam:focus-visible span{width:34px}.seam:focus-visible{outline:3px solid var(--accent);outline-offset:0}
.t1-key-help{position:absolute;left:12px;right:12px;bottom:8px;display:none;margin:0;font-size:13px;pointer-events:none;background:var(--paper)}.t1-stage:has(:focus-visible) .t1-key-help{display:block}
.t1-model figcaption{max-width:62ch;margin-top:10px}.t1-hint{color:var(--ink)}
.t1-state{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);margin:0}
.t1-note{display:grid;grid-template-columns:150px 1fr;gap:6px 20px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line);min-height:6.2em}.t1-note p{margin:0}.t1-note-copy{font-size:15px;max-width:52ch}
.t1-model noscript img{display:block;margin-top:12px}
.t1-role,
.pp-role{grid-template-columns:1fr 1fr}
.t1-chapter,
.pp-chapter{margin-top:72px;padding-top:36px;border-top:1px solid var(--ink)}
.t1-hold{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap);margin-top:42px;align-items:start}
.t1-sub,
.pp-sub{margin:34px 0 12px}
.t1-states,
.pp-states,.t1-facts,.pp-facts{display:grid;grid-template-columns:max-content 1fr;gap:8px 22px;margin:0 0 18px;padding-top:14px;border-top:1px solid var(--line);font-size:15px}.t1-states dt,.pp-states dt,.t1-facts dt,.pp-facts dt{font-weight:600}.t1-states dd,.pp-states dd,.t1-facts dd,.pp-facts dd{margin:0}.t1-facts,.pp-facts{margin-top:28px}
.dial-figure{background:var(--wash);padding:24px 28px 26px}.dial-photo{position:relative;max-width:520px;margin:auto}.dial-photo img{display:block;width:100%;height:auto}.dial-photo .dial-light{position:absolute;aspect-ratio:1;background:url(/assets/t1/dial-light.webp) 0 0/100% 100% no-repeat;opacity:0;transition:opacity 160ms;pointer-events:none}.dial-figure[data-led="listen"] .dial-light{opacity:1}.dial-hit{position:absolute;border-radius:50%;cursor:grab;-webkit-tap-highlight-color:transparent}.dial-figure[data-led="listen"] .dial-hit{cursor:grabbing}
.dial-try{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;margin-top:18px}.dial-button{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}.dial-keys{font-size:13px;color:var(--muted);max-width:36ch}
.dial-log-label{margin-top:22px}
.dial-log{margin:8px 0 0;padding:12px 14px;border:1px solid var(--line);background:var(--paper);color:var(--ink);font:13px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;overflow-wrap:anywhere;min-height:4.4em}
.dial-say{font-size:15px;margin-top:10px;min-height:3.2em}
.t1-inside,
.pp-inside{display:grid;grid-template-columns:1fr 1.5fr;gap:var(--gap);margin-top:42px;align-items:start}
.t1-stills,
.pp-stills{display:grid;grid-template-columns:1fr 1fr;gap:28px var(--gap)}.t1-stills a,.pp-stills a{display:block}.t1-stills img,.pp-stills img{background:#e7e7e5}
.t1-test .prose{margin-top:30px}
.t1-source,
.pp-source{margin-top:72px;padding-block:24px;border-top:1px solid var(--line);font-size:13px;color:var(--muted);max-width:none}
.t1-related,
.pp-related{padding-block:36px 20px}.t1-related h2,.pp-related h2{font-family:Franklin,sans-serif;font-size:12px;letter-spacing:.07em;line-height:1.5;margin-bottom:14px}
@media(max-width:1050px){.t1-opening,.pp-opening{grid-template-columns:1fr 1.3fr}.t1-inside,.pp-inside{grid-template-columns:1fr}}
@media(max-width:720px){.t1-opening,.pp-opening{grid-template-columns:1fr;grid-template-areas:"copy" "fig" "rest";row-gap:22px}.t1-role,.pp-role,.t1-hold,.t1-stills,.pp-stills{grid-template-columns:1fr}.t1-stage{aspect-ratio:1/1.05;margin-inline:calc(-1 * var(--gutter))}.t1-note{grid-template-columns:1fr;min-height:9em}.t1-chapter,.pp-chapter{margin-top:48px;padding-top:28px}.t1-hold,.t1-inside,.pp-inside{margin-top:28px}.dial-figure{padding:18px 16px 20px;margin-inline:calc(-1 * var(--gutter) + 8px)}.t1-states,.pp-states,.t1-facts,.pp-facts{grid-template-columns:1fr;gap:2px 0}.t1-states dd,.pp-states dd,.t1-facts dd,.pp-facts dd{margin-bottom:8px}.t1-source,.pp-source{margin-top:48px}}
@media(prefers-reduced-motion:reduce){.dial-photo .dial-light,.seam span{transition:none}}
/* The viewer's sequence controls (5 November, photography): only shown for a sequence. */
.viewer-seq{position:absolute;left:0;right:0;bottom:8px;display:flex;justify-content:center;align-items:center;gap:18px}.viewer-seq[hidden]{display:none}
.viewer-seq button{min-width:48px;min-height:44px;border:0;background:none;color:var(--paper);font:500 20px Franklin,sans-serif;cursor:pointer}.viewer-seq button:focus-visible{outline:3px solid var(--paper);outline-offset:2px}
.viewer-count{margin:0;font-size:13px;color:#bdcbbf;min-width:5ch;text-align:center}
.viewer:has(.viewer-seq:not([hidden])){padding-bottom:60px}
.viewer img{touch-action:pan-y pinch-zoom}   /* a sideways swipe is the viewer's: next or previous photograph */
/* Small entries on /work/ (7 November 2026): an entry has its own anchor and stays on the page. */
.index-entry{display:grid;grid-template-columns:minmax(150px,1fr) 2fr 24px;gap:24px;padding:20px 0;border-top:1px solid var(--line);scroll-margin-top:25px}
.index-entry h3{font-size:20px;line-height:1.35;margin:0}
.index-entry:target h3{color:var(--accent)}
.entry-body{min-width:0}
.entry-body p{font-size:15px;max-width:64ch;margin:0 0 8px}
.entry-body .index-meta{font-size:13px;color:var(--muted);margin-bottom:6px}
.entry-body img{display:block;width:min(240px,100%);height:auto;margin:10px 0 8px;background:#e7e7e5}
.entry-link a{color:var(--accent)}
@media(max-width:640px){.index-entry{grid-template-columns:1fr;gap:8px;padding-block:19px}}
/* The Ask button in the masthead (step F, 7 November 2026; added by /site.js, the sheet's styles are in /ask.css). */
.masthead .ask-open{font:inherit;font-size:14px;color:var(--ink);background:none;border:0;padding:0;min-height:44px;cursor:pointer;text-decoration:underline;text-underline-offset:4px}
.masthead .ask-open:hover{color:var(--accent)}
.masthead .ask-open:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
@media(max-width:640px){.masthead .ask-open{font-size:13px;min-height:38px}}
/* Moved: the compatibility documents left in /collection/ (step G, 7 November 2026). */
.moved-body{padding:56px 0 80px;max-width:52rem}.moved-body h1{font-size:clamp(34px,4.4vw,56px);margin-bottom:18px}.moved-body p{font-size:19px}
.moved-list{list-style:none;margin:28px 0 0;padding:0;columns:2 260px;column-gap:var(--gap)}.moved-list li{break-inside:avoid;padding:6px 0;border-top:1px solid var(--line)}.moved-list li:target a{color:var(--accent)}
/* Folded from the pages (step G, 7 November 2026): every interactive or lead figure carries pp-figure. */
.pp-figure{margin:0;min-width:0}.pp-figure figcaption{max-width:62ch}
