:root{--paper:#f7f7f4;--ink:#20211f;--muted:#676962;--line:#c7c9c2;--red:#e43b28}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:110px}body{margin:0;padding:0 3.4%;background:var(--paper);color:var(--ink);font-family:'Berthold Helvetica','Akzidenz-Grotesk','Helvetica Neue',Helvetica,Arial,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;cursor:pointer}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:2px solid var(--red);outline-offset:6px}button{background:none;border:0}header{min-height:130px;display:flex;align-items:center;justify-content:space-between;border-bottom:0.5px solid var(--ink);position:relative;z-index:10}.wordmark{font-size:26px;font-weight:600;letter-spacing:-1.1px;line-height:1.05}.wordmark span{display:block}nav{display:flex;gap:38px;align-items:center;font-size:16px}nav>a,nav button{padding:20px 0}nav a:hover,nav button:hover{color:var(--red)}.plus{margin-left:10px;font-size:20px;font-weight:300}.small-arrow{font-size:13px}.project-nav{position:relative}#project-menu{position:absolute;right:-32px;top:55px;width:345px;background:var(--paper);border:0;padding:8px 22px;box-shadow:0 18px 30px #0000000c}#project-menu[hidden]{display:none}#project-menu>a{display:flex;align-items:center;gap:22px;padding:19px 0;border-bottom:0.5px solid var(--line)}#project-menu>a:last-child{border:0;justify-content:space-between;font-size:14px}#project-menu small{display:block;color:var(--muted);font-size:13px;margin-top:5px}.project-icon{font-size:36px;width:44px;text-align:center}.hero{display:grid;grid-template-columns:1fr 1fr;min-height:590px;border-bottom:0.5px solid var(--ink)}.intro{padding:65px 10% 60px 0}.eyebrow,.index{font-size:12px;letter-spacing:.045em;text-transform:uppercase;font-weight:400}.eyebrow{margin:0 0 44px}h1{font-weight:400;font-size:clamp(44px,5.1vw,82px);letter-spacing:-.055em;line-height:1.02;margin:0 0 30px}.intro-copy{max-width:370px;font-size:18px;line-height:1.5;letter-spacing:-.025em;color:#55574f}.text-link{display:inline-flex;gap:70px;border-bottom:0.5px solid var(--ink);padding:16px 0 8px;font-size:15px}.text-link:hover{color:var(--red);border-color:var(--red)}.network{position:relative;min-width:0;display:flex;flex-direction:column;padding:24px 0 22px 22px}/* Keep bitmap dimensions out of the flex/grid sizing calculation. */
.network-stage{position:relative;flex:1 1 0;min-height:440px;min-width:0}
.network-stage canvas{position:absolute;inset:0;display:block;width:100%;height:100%}
.network-caption{display:flex;align-items:center;justify-content:space-between;font:11px monospace;letter-spacing:.02em;color:var(--muted)}.network-caption button{font-size:12px;padding:9px 0}.section-heading{display:flex;align-items:baseline;justify-content:space-between;padding:26px 0 33px}.section-heading h2{font-size:26px;font-weight:400;letter-spacing:-.04em;margin:0}.section-heading>span{font:12px monospace;color:var(--muted)}.featured{display:grid;grid-template-columns:1fr 2fr;gap:30px}.project-copy{display:flex;flex-direction:column;padding:20px 30px 15px 0}.project-card h3{font-size:46px;font-weight:400;letter-spacing:-.05em;margin:35px 0 15px}.project-copy p{font-size:23px;line-height:1.2;margin:0}.project-bottom{display:flex;align-items:end;justify-content:space-between;margin-top:auto;padding-top:35px;font-size:14px;line-height:1.5;color:var(--muted)}.project-arrow{display:inline-block;font-size:32px;font-weight:300;transition:transform .25s,color .25s}.project-card:hover .project-arrow{transform:translate(4px,-4px);color:var(--red)}.image-wrap{overflow:hidden;background:#e9eae6}.image-wrap img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .65s cubic-bezier(.2,.6,.2,1)}.project-card:hover img{transform:scale(1.025)}.featured .image-wrap{aspect-ratio:1.75}.project-pair{display:grid;grid-template-columns:1fr 1fr;gap:28px;margin-top:55px}.project-pair .image-wrap{aspect-ratio:1.35}.project-pair img{object-fit:contain}.card-meta{display:flex;justify-content:space-between;padding-top:20px}.card-meta h3{font-size:34px;margin:15px 0 7px}.card-meta p{font-size:16px;color:var(--muted);margin:0}.journal-strip{border-top:0.5px solid var(--ink);border-bottom:0.5px solid var(--ink);margin:80px 0 0;padding:28px 0 32px;display:grid;grid-template-columns:1fr 2fr}.journal-strip .eyebrow{margin:7px 0}.journal-strip>a{font-size:32px;letter-spacing:-.035em;display:flex;justify-content:space-between;align-items:center}.journal-strip>a span{font-size:14px;letter-spacing:0}.journal-strip>a:hover{color:var(--red)}.contact{padding:80px 0 75px}.contact .eyebrow{margin-bottom:22px}.contact h2{font-size:clamp(50px,7vw,100px);font-weight:400;letter-spacing:-.06em;margin:0 0 32px}.email{font-size:clamp(17px,2.3vw,32px);letter-spacing:-.025em;border-bottom:0.5px solid var(--ink);padding-bottom:8px;display:inline-block;overflow-wrap:anywhere}.email span{margin-left:25px}.email:hover{color:var(--red)}.contact-links{display:flex;gap:40px;margin-top:35px;font-size:18px}footer{border-top:0.5px solid var(--ink);padding:23px 0 30px;display:flex;justify-content:space-between;gap:20px;font-size:12px;color:var(--muted)}.skip{position:fixed;left:20px;top:-80px;background:var(--ink);color:white;padding:15px;z-index:99}.skip:focus{top:10px}.detail-heading{padding:65px 0 55px;display:grid;grid-template-columns:1fr 1fr;gap:40px}.detail-heading h1{font-size:clamp(60px,9vw,130px);margin-bottom:16px}.detail-heading .eyebrow{margin-bottom:24px}.detail-heading h2{font-size:22px;font-weight:400;letter-spacing:-.03em}.detail-description{padding-top:40px}.detail-description p{font-size:20px;line-height:1.5;max-width:600px}.detail-meta{display:flex;gap:45px;margin-top:32px;font-size:14px;line-height:1.7}.detail-meta span{display:block;color:var(--muted);font-size:12px}.detail-hero{width:100%;max-height:750px;object-fit:cover;display:block;background:#e9eae6}.detail-body{display:grid;grid-template-columns:1fr 2fr;gap:40px;padding:70px 0;border-bottom:0.5px solid var(--ink)}.detail-body h2{font-size:28px;letter-spacing:-.03em;font-weight:400;margin:0}.detail-body p{max-width:720px;font-size:20px;line-height:1.5;margin:0 0 25px}.detail-body img{width:100%;max-height:700px;object-fit:contain;background:#eeefeb}.next-project{display:flex;justify-content:space-between;border-bottom:0.5px solid var(--ink);padding:40px 0;font-size:32px}.blog-empty{border-top:0.5px solid var(--ink);border-bottom:0.5px solid var(--ink);padding:70px 0 100px;margin-bottom:70px}.blog-empty h2{font-size:32px;font-weight:400}.blog-empty p{font-size:18px;max-width:500px;line-height:1.5;color:var(--muted)}@media(min-width:1700px){body{max-width:1800px;margin:auto}.hero{min-height:680px}}@media(max-width:800px){body{padding:0 5%}header{min-height:108px;align-items:start;padding-top:22px;gap:22px}.wordmark{font-size:22px}nav{gap:18px;font-size:14px;flex-wrap:wrap;justify-content:flex-end;max-width:260px}nav>a,nav button{padding:7px 0}.plus{margin-left:3px}.hero{grid-template-columns:1fr}.intro{padding:44px 0 15px}.eyebrow{margin-bottom:30px}h1{font-size:58px}.intro-copy{max-width:440px}.network{height:360px;padding:0 0 20px}.network-stage{min-height:280px}.network-caption{font-size:10px}.featured{grid-template-columns:1fr;gap:20px}.project-copy{padding:0;display:grid;grid-template-columns:1fr 1fr}.project-copy .index{grid-column:1/-1}.project-copy h3{margin:20px 0;font-size:38px}.project-copy p{margin-top:20px;font-size:20px}.project-bottom{grid-column:1/-1;padding:0}.project-bottom>span:first-child{display:none}.project-pair{gap:18px;margin-top:35px}.project-pair .image-wrap{aspect-ratio:.85}.card-meta h3{font-size:28px}.index{font-size:10px}.card-meta p{font-size:14px}.journal-strip{grid-template-columns:1fr;gap:25px;margin-top:55px}.journal-strip>a{font-size:26px}.contact{padding:55px 0}.contact-links{gap:20px}footer{flex-wrap:wrap}footer>span:nth-child(2){display:inline}.detail-heading{grid-template-columns:1fr;gap:0;padding:45px 0}.detail-description{padding-top:0}.detail-description p,.detail-body p{font-size:18px}.detail-body{grid-template-columns:1fr;gap:20px;padding:40px 0}.detail-meta{gap:25px}.next-project{font-size:25px}#project-menu{right:-110px;top:38px;width:min(320px,88vw)}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

/* Portfolio review: type hierarchy and fine separation rules. */
.intro h1{font-size:clamp(40px,4.15vw,68px);letter-spacing:-.05em;line-height:1.06}
.project-copy{padding-top:0}
.project-copy h3{margin:0 0 18px;line-height:1}
.project-copy p{max-width:350px;line-height:1.3}
.featured[href="/projects/series-w/"] .project-copy p{font-size:18.4px}
.detail-heading h2.series-w-subtitle{font-size:17.6px}
@media(max-width:800px){.featured[href="/projects/series-w/"] .project-copy p{font-size:16px}}
.project-copy .index{margin-top:25px}
.project-year{font-size:14px;margin-top:12px;color:var(--muted)}
.card-meta h3{margin:0 0 10px}
.card-meta .index{display:block;margin-top:20px}
@media(max-width:800px){
 .intro h1{font-size:clamp(32px,6.7vw,54px)}
 .project-copy{display:flex;flex-direction:column;align-items:flex-start}
 .project-copy h3{margin:0 0 16px}
 .project-copy p{margin:0;max-width:480px}
 .project-bottom{width:100%;padding-top:25px}
 .project-bottom>span:first-child{display:inline}
}

.password-form{margin:30px 0 18px;max-width:520px}
.password-form label{display:block;font-size:14px;margin-bottom:10px}
.password-row{display:flex;gap:12px}
.password-row input{min-width:0;flex:1;border:0.5px solid var(--line);border-radius:0;background:transparent;color:var(--ink);padding:13px;font:inherit;font-size:18px}
.password-row button{background:var(--ink);color:var(--paper);padding:13px 20px;font-size:15px;white-space:nowrap}
.password-row input:focus-visible{outline:2px solid var(--red);outline-offset:2px}
.password-error{color:#b32e20;font-size:15px!important;margin:12px 0 0}
.access-contact{font-size:15px!important}.access-contact a{border-bottom:0.5px solid}
.case-toolbar{display:flex;justify-content:space-between;gap:20px;align-items:baseline}
@media(max-width:420px){.password-row{flex-direction:column}.password-row button{align-self:flex-start}}

/* The work heading pins only within its own section. */
.work .section-heading{position:sticky;top:0;z-index:5;background:var(--paper)}
.project-pair img{object-fit:cover}
.project-pair a[href*="conic"] img{object-position:68% 68%}
.featured .project-copy{padding-bottom:0}
.featured .project-bottom{justify-content:flex-end;gap:20px;align-items:baseline;padding-bottom:0;line-height:1}
.featured .project-bottom .project-arrow{line-height:1}
.card-meta .project-year{display:block}
.project-pair .card-meta h3{font-size:clamp(24px,2.4vw,34px)}
.repair-comparison{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(160px,1fr);gap:32px;align-items:center}
.detail-body .repair-comparison img{background:transparent;max-height:430px}
.machine-facts{padding:0;margin:28px 0 0;list-style:none;font-size:16px;line-height:1.8}
.failure-chart{margin:35px 0 0;max-width:760px}
.detail-body .failure-chart img{background:white;max-height:none}
.failure-chart figcaption{margin-top:12px;font-size:12px;color:var(--muted)}
.manufacturing{padding:65px 0 70px;border-bottom:.5px solid var(--ink)}
.manufacturing-heading{display:flex;justify-content:space-between;gap:30px;align-items:baseline;margin-bottom:40px}
.manufacturing-heading h2{font-size:28px;font-weight:400;letter-spacing:-.03em;margin:0}
.manufacturing-heading>p{font-size:14px;color:var(--muted);margin:0}
.manufacturing-grid{display:grid;grid-template-columns:minmax(150px,1fr) minmax(0,3fr) minmax(0,2fr) minmax(150px,1fr);gap:20px;align-items:start}
.manufacturing-note{color:#94968f;transition:color .18s;margin-bottom:24px}
.manufacturing-note h3{font-size:15px;line-height:1.25;margin:0 0 8px;font-weight:500}
.manufacturing-note p{font-size:14px;line-height:1.45;margin:0}
.manufacturing-note.is-active{color:var(--ink)}
.annotated-image{position:relative;margin:0;min-width:0}
.annotated-image img{width:100%;height:auto;display:block}
.leader-lines{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}
.leader-lines polyline{stroke:var(--ink);stroke-width:.7px;vector-effect:non-scaling-stroke;fill:none}
.leader-lines polyline.is-active{stroke-width:1.5px}
.callout{position:absolute;left:var(--x);top:var(--y);transform:translate(-50%,-50%);width:40px;height:40px;padding:5px;display:grid;place-items:center;border-radius:50%;font-size:14px;line-height:1;font-weight:400}
.callout span{display:grid;place-items:center;width:26px;height:26px;border:.7px solid var(--ink);border-radius:50%;background:transparent}
.callout.is-active{font-weight:700}.callout.is-active span{border-width:1.5px}
.mould-description{margin-top:20px;color:var(--muted)}
.mould-description h3{font-size:18px;font-weight:500;margin:0 0 12px}
.mould-description p{font-size:14px;line-height:1.5;margin:0 0 18px}
@media(max-width:1100px){
 .manufacturing-grid{grid-template-columns:minmax(150px,1fr) minmax(0,2.4fr);gap:30px}
 .notes-left{grid-column:1;grid-row:1}.manufacturing-grid>.annotated-image{grid-column:2;grid-row:1}
 .notes-right{grid-column:1;grid-row:2}.mould-column{grid-column:2;grid-row:2}
}
@media(max-width:600px){
 .repair-comparison{grid-template-columns:1fr;gap:25px}.detail-body .repair-comparison img{max-height:340px}
 .manufacturing-heading{display:block}.manufacturing-heading>p{margin-top:15px}
 .manufacturing-grid{display:flex;flex-direction:column;gap:25px}
 .manufacturing-grid>.annotated-image{order:0;width:100%}.notes-left{order:1}.mould-column{order:2;width:100%}.notes-right{order:3}
 .manufacturing-note h3{font-size:16px}.manufacturing-note p{font-size:16px}
 .callout{width:44px;height:44px}
 .project-pair .card-meta h3{font-size:24px}
}

/* A single page-margin unit drives the layout gutters and section spacing. */
:root{--page-space:3.4vw}
body{padding-inline:var(--page-space)}
.hero{column-gap:var(--page-space)}
.intro{padding-right:0}
.network{padding-left:0}
.featured,.project-pair,.detail-heading,.detail-body,.repair-comparison,.manufacturing-grid{gap:var(--page-space)}
.featured .project-copy{padding-right:0}
.project-pair{margin-top:var(--page-space)}
.detail-heading,.detail-body,.manufacturing{padding-block:var(--page-space)}
.manufacturing-heading{margin-bottom:var(--page-space)}
.journal-strip{margin-top:var(--page-space);padding-block:var(--page-space);column-gap:var(--page-space)}
.contact{padding-block:var(--page-space)}
@media(max-width:800px){:root{--page-space:5vw}}

/* Homepage project links: a small standby-to-on indicator. */

/* Series W: stacked manufacturing rows and baseline-aligned repair graphic. */
.repair-comparison{align-items:end}
.detail-body .repair-comparison img{align-self:end;object-position:center bottom}
.manufacturing-grid{grid-template-columns:minmax(0,1fr) minmax(0,2fr)}
.notes-left{grid-column:1;grid-row:1}
.manufacturing-grid>.annotated-image{grid-column:2;grid-row:1}
.notes-right{grid-column:1;grid-row:2}
.mould-column{grid-column:2;grid-row:2}
.portfolio-download a{text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:.5px}
.portfolio-download a:hover{color:var(--red)}
.chart-scroll{overflow-x:auto;background:transparent}
.failure-bars{display:block;width:66.6667%;min-width:426.667px;height:auto}
.failure-bar{transform-box:fill-box;transform-origin:center bottom}
.failure-bars.is-prepared .failure-bar{transform:scaleY(0)}
.failure-bars.is-visible .failure-bar{transform:scaleY(1);transition:transform 1.15s cubic-bezier(.2,.65,.25,1);transition-delay:var(--bar-delay)}
@media(prefers-reduced-motion:reduce){.failure-bars.is-prepared .failure-bar{transform:none}.failure-bars.is-visible .failure-bar{transition:none}}
.detail-body>div{min-width:0}
.chart-scroll{max-width:100%}

.insights-comparison{grid-template-columns:minmax(0,1fr) minmax(0,1.25fr)}
.insights-comparison .failure-chart{margin:0;min-width:0;width:100%}
.insights-comparison .failure-bars{width:100%;min-width:0}
@media(max-width:600px){.insights-comparison{grid-template-columns:1fr}}

.project-icon img{display:block;width:32px;height:36px;object-fit:contain;margin:auto}
.insights-comparison{align-items:start}
.insights-comparison>div>p{margin-bottom:0}
.insights-comparison .failure-chart{height:auto;contain:none;display:block;align-self:start}
.insights-comparison .chart-scroll{overflow:visible}
.insights-comparison .failure-bars{display:block;height:auto;width:100%}
.case-study-hero{max-height:none;aspect-ratio:1.75;object-fit:cover;object-position:center}
.research-photo{display:block;height:auto;margin-top:var(--page-space)}
.single-output .annotated-image{align-self:start}
@media(max-width:600px){
 .insights-comparison .failure-chart{height:auto;contain:none}
 .insights-comparison .chart-scroll{flex:none}
 .insights-comparison .failure-bars{height:auto}
 .case-study-hero{aspect-ratio:1.3}
}

.output-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:var(--page-space);align-items:start}
.output-row+.output-row{margin-top:var(--page-space)}
.output-row>.annotated-image{grid-column:2;grid-row:1}
@media(max-width:600px){.output-row{display:flex;flex-direction:column}.output-row>.annotated-image{order:0;width:100%}.output-row>.manufacturing-notes{order:1}}

.insights-comparison{grid-template-columns:minmax(0,1.6fr) minmax(160px,1fr)}
.insights-comparison figcaption{text-align:right}
.drum-manufacturing .manufacturing-grid{align-items:start;grid-template-rows:auto 1fr;row-gap:24px}
.drum-manufacturing .notes-left{display:block;grid-column:1;grid-row:1}
.drum-manufacturing .mould-description{grid-column:1;grid-row:2;align-self:end;margin:0;color:var(--ink)}
.drum-manufacturing .mould-description p:last-child{margin-bottom:0}
.drum-manufacturing .annotated-image{align-self:start;grid-column:2;grid-row:1 / 3}
.load-path-heading{font-size:15px;font-weight:500;margin:12px 0}
.load-path-note{margin-bottom:10px}
@media(max-width:600px){.insights-comparison{grid-template-columns:1fr}.drum-manufacturing .notes-left{display:block}}
.project-icon img{mix-blend-mode:multiply;width:36px}
.network-caption{justify-content:flex-end;text-align:right}
.project-pair a[href="/projects/conic/"] .image-wrap img{object-fit:cover;object-position:right center}
.repair-comparison>div:first-child{align-self:start}
.detail-hero.conic-hero,.detail-hero.chip-locked-preview{height:auto;max-height:none;aspect-ratio:auto;object-fit:contain}
.chip-output .leader-lines polyline{stroke-width:.35px}
.chip-output .leader-lines polyline.is-active{stroke-width:.75px}
@media(max-width:1100px){
 .drum-manufacturing .manufacturing-grid{grid-template-rows:auto auto}
 .drum-manufacturing .annotated-image{grid-row:1}
 .drum-manufacturing .mould-description{grid-column:2;grid-row:2;align-self:start}
}
@media(max-width:600px){.drum-manufacturing .mould-description{order:2}}

/* The image/track bounds each sticky caption group, keeping the next section clear. */
.drum-manufacturing .sticky-notes-track{grid-column:1;grid-row:1;align-self:stretch;min-width:0}
@media(min-width:601px){
 .sticky-captions .manufacturing-notes.can-stick,
 .sticky-notes-track .manufacturing-notes.can-stick{position:sticky;top:24px;align-self:start}
 .drum-manufacturing .manufacturing-grid{grid-template-rows:minmax(max-content,1fr) auto}
}
@media(min-width:601px) and (max-width:1100px){
 .drum-manufacturing .manufacturing-grid{grid-template-rows:auto auto}
}
@media(max-width:600px){.drum-manufacturing .sticky-notes-track{order:1}}
