*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:calc(var(--header-height) + var(--space-8))}body{margin:0;background:var(--color-background);color:var(--color-text);font-family:var(--font-family);font-size:var(--font-body);line-height:var(--line-body);letter-spacing:var(--tracking-body);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}img{display:block;max-width:100%}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:var(--weight-heading)}h2{font-size:var(--font-h2);line-height:var(--line-heading);letter-spacing:var(--tracking-heading)}h3{font-size:var(--font-h3);line-height:var(--line-heading);letter-spacing:var(--tracking-heading)}::selection{color:var(--color-primary);background:var(--color-accent)}:focus-visible{outline:3px solid var(--color-focus);outline-offset:var(--space-2)}[hidden]{display:none!important}.container{max-width:var(--container-width);padding-inline:var(--space-page);margin-inline:auto}.section{padding-block:var(--space-section)}.label,.section-label{font-size:var(--font-label);line-height:1.4;letter-spacing:var(--tracking-label)}.section-label{display:flex;gap:var(--space-6);align-items:baseline}.section-label>span{color:var(--color-muted)}.muted{color:var(--color-muted)}:is(h1,h2,h3) .muted,:is(h1,h2,h3) .outline-word{color:inherit;-webkit-text-stroke:0}.lead{font-size:var(--font-lead);line-height:var(--line-lead);letter-spacing:var(--tracking-heading)}.skip-link{position:fixed;top:var(--space-4);left:var(--space-4);padding:var(--space-4);z-index:var(--z-focus);background:var(--color-background);transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}
.site-header{height:var(--header-height);display:flex;align-items:center;gap:var(--space-8);position:sticky;top:0;z-index:var(--z-header);background:var(--color-background);border-bottom:var(--border)}.brand{display:flex;align-items:center;min-height:var(--touch-target)}.brand img{width:8.75rem;height:auto}.brand-caption{font-size:var(--font-small);line-height:1.25;letter-spacing:var(--tracking-body)}.site-header nav{display:flex;gap:var(--space-6);align-items:center;margin-left:auto;font-size:var(--font-ui)}.site-header nav a{display:flex;align-items:center;min-height:var(--touch-target);transition:font-weight var(--transition)}.site-header nav a:hover{font-weight:var(--weight-bold)}.nav-contact{margin-left:var(--space-6);gap:var(--space-3)}.contact-dot{width:var(--space-3);height:var(--space-3);border-radius:var(--radius-round);background:var(--color-accent);transition:transform var(--transition)}.nav-contact:hover .contact-dot{transform:scale(1.3)}.menu-toggle{display:none;background:none;border:0;min-height:var(--touch-target)}.mobile-nav{position:fixed;max-height:calc(100dvh - var(--header-height));overflow-y:auto;top:var(--header-height);inset-inline:0;padding:var(--space-8) var(--space-page);background:var(--color-background);z-index:var(--z-menu);border-bottom:var(--border)}.mobile-nav a{display:block;padding-block:var(--space-3);font-size:var(--font-h3)}
.hero{position:relative;isolation:isolate;padding-top:var(--space-12);min-height:calc(100svh - var(--header-height));display:flex;flex-direction:column;overflow:hidden}.hero-meta{display:flex;justify-content:space-between;padding-bottom:var(--space-16)}.hero h1{font-size:var(--font-h1);line-height:var(--line-display);letter-spacing:var(--tracking-display);font-weight:var(--weight-thin);position:relative;z-index:var(--z-content);padding-bottom:var(--space-16)}.weight-word{display:inline-grid;isolation:isolate;font-weight:var(--weight-bold);transition:font-weight var(--duration-weight) var(--ease)}.weight-word:hover{font-weight:var(--weight-thin)}.signal{position:absolute;right:7%;top:18%;width:var(--signal-size);aspect-ratio:1;border-radius:var(--radius-round);background:var(--color-accent);filter:blur(var(--blur));opacity:.88;z-index:-1;transform:scaleY(.78) rotate(-20deg)}.hero-bottom{display:grid;grid-template-columns:var(--heading-grid);gap:var(--grid-gap);align-items:end;margin-bottom:var(--space-16)}.hero-bottom>p:nth-child(2){max-width:37ch;font-size:var(--font-body-large);line-height:1.4}.hero-bottom>.text-link{justify-self:end}.hero-note{color:var(--color-muted)}.text-link{display:inline-flex;flex-direction:column;gap:var(--space-2);min-height:var(--touch-target);font-size:var(--font-ui);font-weight:var(--weight-ui);justify-content:center}.link-line{display:block;height:var(--border-width);width:100%;background:currentColor;transform-origin:left;transition:transform var(--transition)}.text-link:hover .link-line{transform:scaleX(.65)}.hero-index{border-top:var(--border);padding-block:var(--space-6);margin-top:auto;display:flex;justify-content:space-between;color:var(--color-muted)}.intro{display:grid;grid-template-columns:3fr 9fr;gap:var(--grid-gap)}.intro h2{font-size:clamp(2.5rem,4.3vw,4rem)}.intro-columns{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);margin-top:var(--space-12)}.intro-columns>p:last-child{color:var(--color-muted);max-width:var(--text-width)}
@media(min-width:72rem){.hero{min-height:48rem}}@media(max-width:72rem){.brand-caption{display:none}.site-header nav{gap:var(--space-4)}.hero-meta{padding-bottom:var(--space-12)}.hero-bottom{grid-template-columns:2fr 5fr 3fr}.hero-note{display:none}.hero-bottom>p:nth-child(2){grid-column:1/3}.hero-bottom>.text-link{grid-column:3}.intro{grid-template-columns:1fr}.intro-content{margin-top:var(--space-8)}}
@media(max-width:48rem){:root{--header-height:5rem;--grid-columns:4}.site-header nav{display:none}.site-header{justify-content:space-between}.brand img{width:7rem}.menu-toggle{display:flex;gap:var(--space-4);align-items:center}.hero{padding-top:var(--space-8);min-height:calc(90svh - var(--header-height))}.hero-meta{font-size:var(--font-small);padding-bottom:var(--space-16)}.hero-meta>span:last-child{display:none}.hero h1{font-size:clamp(3rem,11.6vw,5.5rem);padding-bottom:var(--space-12);line-height:1.03}.signal{right:-10%;top:15%;width:80%;opacity:.65}.hero-bottom{grid-template-columns:1fr;gap:var(--space-8);margin-bottom:var(--space-12)}.hero-bottom>p:nth-child(2){grid-column:auto;font-size:var(--font-body-large);max-width:30ch}.hero-bottom>.text-link{grid-column:auto;justify-self:start}.hero-index>span:last-child{display:none}.intro-columns{grid-template-columns:1fr;gap:var(--space-6)}.intro h2{font-size:clamp(2rem,7.5vw,3rem)}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation:none!important;transition:none!important}.weight-word:hover{font-weight:var(--weight-bold)}}
.problems{background:var(--color-primary);color:var(--color-inverse)}.problems-heading{display:grid;grid-template-columns:3fr 6fr 3fr;gap:var(--grid-gap);align-items:start;margin-bottom:var(--space-16)}.problems .section-label>span{color:var(--color-accent)}.problems-heading h2{font-size:clamp(2.5rem,5.6vw,5rem)}.problems-heading>p:last-child{align-self:end;color:#bfc0c5;font-size:var(--font-small)}.outline-word{color:inherit}.problem-row{display:grid;grid-template-columns:1fr 5fr 6fr;gap:var(--grid-gap);padding-block:var(--space-8);border-top:var(--border-width) solid var(--color-border-inverse)}.problem-row>span{color:var(--color-accent)}.problem-row>p{font-size:var(--font-body-large);max-width:25ch;color:#bfc0c5}.problem-row h3{font-size:var(--font-body-large);font-weight:var(--weight-ui);letter-spacing:var(--tracking-body);margin-bottom:var(--space-3)}.problem-row>div>p{color:#bfc0c5;max-width:44ch;font-size:var(--font-body)}
.work-heading{display:grid;grid-template-columns:3fr 6fr 3fr;gap:var(--grid-gap);align-items:start;margin-bottom:var(--space-16)}.work-heading>p:last-child{align-self:end;font-size:var(--font-body);color:var(--color-muted)}.projects{display:grid;grid-template-columns:7fr 5fr;gap:var(--space-12)}.project-2{padding-top:var(--space-48)}.project-image{position:relative;display:block;overflow:hidden;background:var(--color-surface);aspect-ratio:16/11}.project-2 .project-image{aspect-ratio:4/5}.project-image img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-reveal) var(--ease)}.project-image:hover img{transform:scale(var(--project-scale))}.project-chip{position:absolute;left:var(--space-6);top:var(--space-6);font-size:var(--font-small);background:var(--color-background);color:var(--color-primary);padding:var(--space-2) var(--space-3)}.project-view{position:absolute;right:var(--space-6);bottom:var(--space-6);background:var(--color-background);color:var(--color-primary);padding:var(--space-3) var(--space-4);font-size:var(--font-small);opacity:0;transform:translateY(var(--space-2));transition:opacity var(--transition),transform var(--transition)}.project-image:hover .project-view,.project-image:focus-visible .project-view{opacity:1;transform:translateY(0)}.project-meta{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-4);margin-top:var(--space-6);border-bottom:var(--border);padding-bottom:var(--space-4)}.project-meta h3{font-size:var(--font-body-large);font-weight:var(--weight-ui)}.project-meta>span{font-size:var(--font-small);color:var(--color-muted)}.project-title{font-size:var(--font-h3);line-height:1.12;letter-spacing:var(--tracking-heading);margin-block:var(--space-6) var(--space-4)}.project-description{max-width:var(--text-width);color:var(--color-muted)}.clients{margin-top:var(--space-section);display:grid;grid-template-columns:3fr 3fr 3fr 3fr;align-items:center;gap:var(--grid-gap);border-block:var(--border);padding-block:var(--space-8)}.clients a{justify-self:center}.clients img{width:9rem;height:6rem;object-fit:contain}.client-note{font-size:var(--font-small);color:var(--color-muted);justify-self:end}.services{padding-top:0}.services-heading{display:grid;grid-template-columns:3fr 9fr;gap:var(--grid-gap)}.services-heading>p:last-child{grid-column:2;max-width:50ch;margin-top:var(--space-6);color:var(--color-muted)}.service-list{margin-top:var(--space-16)}.service{border-top:var(--border)}.service:last-child{border-bottom:var(--border)}.service summary{display:grid;grid-template-columns:1fr 7fr 3fr 1fr;align-items:center;gap:var(--grid-gap);list-style:none;cursor:pointer;padding-block:var(--space-8);min-height:var(--touch-target)}.service summary::-webkit-details-marker{display:none}.service-number,.service-tag{font-size:var(--font-small);color:var(--color-muted)}.service summary h3{font-weight:var(--weight-regular);transition:font-weight var(--transition)}.service summary:hover h3,.service[open] h3{font-weight:650}.service-toggle{justify-self:end;position:relative;width:var(--space-6);height:var(--space-6)}.service-toggle::before,.service-toggle::after{content:'';position:absolute;inset:50% 0 auto;height:var(--border-width);background:currentColor;transition:transform var(--transition)}.service-toggle::after{transform:rotate(90deg)}.service[open] .service-toggle::after{transform:rotate(0)}.service-body{display:grid;grid-template-columns:6fr 5fr;gap:var(--space-12);margin-left:8.33%;padding-bottom:var(--space-8);color:var(--color-muted)}.service-body>p{max-width:var(--text-width)}.service-body ul{padding:0;margin:0;list-style:none}.service-body li{padding-block:var(--space-1)}
.approach{position:relative;isolation:isolate;overflow:hidden;background:var(--color-surface)}.approach-grid{position:relative;display:grid;grid-template-columns:3fr 9fr;gap:var(--grid-gap)}.approach h2{font-size:clamp(2.5rem,5.6vw,5rem);font-weight:var(--weight-thin)}.approach-bottom{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-12);margin-top:var(--space-16)}.approach-bottom>div>p:first-child{color:var(--color-muted)}.approach-signature{font-size:var(--font-small);margin-top:var(--space-6)}.approach-bottom .text-link{margin-top:var(--space-6)}.approach-signal{position:absolute;left:-18%;bottom:-40%;width:var(--signal-size);aspect-ratio:1;background:var(--color-accent);border-radius:var(--radius-round);filter:blur(var(--blur));opacity:.5;z-index:-1}.journal-heading{display:flex;align-items:end;justify-content:space-between;gap:var(--space-6);margin-bottom:var(--space-16)}.journal-heading h2{margin-top:var(--space-8)}.news-row{border-top:var(--border)}.news-row:last-child{border-bottom:var(--border)}.news-row a{display:grid;grid-template-columns:1fr 2fr 8fr 1fr;gap:var(--grid-gap);align-items:start;padding-block:var(--space-8)}.news-row time,.news-number,.news-read{font-size:var(--font-small);color:var(--color-muted)}.news-row h3{font-size:clamp(1.5rem,2.6vw,2.5rem);max-width:34ch;transition:font-weight var(--transition),transform var(--transition)}.news-row a:hover h3{font-weight:650;transform:translateX(var(--space-2))}.news-read{justify-self:end;color:var(--color-primary);border-bottom:var(--border-width) solid currentColor}
.contact{background:var(--color-accent);padding-bottom:var(--space-16)}.contact-heading{display:flex;justify-content:space-between;gap:var(--space-8);margin-bottom:var(--space-16)}.contact .section-label>span{color:var(--color-primary)}.contact h2{font-size:clamp(3rem,9.7vw,9.5rem);font-weight:var(--weight-thin);letter-spacing:var(--tracking-display);line-height:1.02}.contact h2 a{font-weight:var(--weight-bold)}.contact-bottom{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-8);margin-top:var(--space-16);padding-top:var(--space-8);border-top:var(--border-width) solid var(--color-primary)}.contact-bottom>div{justify-self:end;display:flex;flex-direction:column;gap:var(--space-3)}.contact-bottom .text-link{font-size:var(--font-h3);align-self:start}.footer{display:flex;gap:var(--space-8);align-items:center;justify-content:space-between;padding-block:var(--space-12)}.footer img{width:12rem;height:auto}.footer nav{display:flex;gap:var(--space-6);font-size:var(--font-small)}.footer nav a{display:flex;align-items:center;min-height:var(--touch-target)}.footer nav a:hover{text-decoration:underline;text-underline-offset:var(--space-1)}
.weight-word{white-space:nowrap}.weight-word[data-word]{font-weight:var(--weight-bold)}.weight-word[data-word]::after{content:attr(data-word);visibility:hidden;font-weight:var(--weight-bold);grid-area:1/1;pointer-events:none}.weight-word>span{grid-area:1/1;transition:font-weight var(--duration-weight) var(--ease);font-weight:var(--weight-bold)}.weight-word:hover>span{font-weight:var(--weight-thin)}.weight-word.is-entering>span{animation:weight-in var(--duration-weight) var(--ease) both}.hero .weight-word{margin-left:.08em}@keyframes weight-in{from{font-weight:var(--weight-thin)}to{font-weight:var(--weight-bold)}}[data-reveal].is-entering{animation:reveal var(--duration-reveal) var(--ease) both}@keyframes reveal{from{opacity:.4;transform:translateY(var(--reveal-offset))}to{opacity:1;transform:translateY(0)}}
@media(max-width:72rem){.problems-heading,.work-heading{grid-template-columns:1fr 2fr}.problems-heading>p:last-child,.work-heading>p:last-child{grid-column:2}.projects{gap:var(--space-8)}.project-meta{display:block}.project-meta>span{display:block;margin-top:var(--space-2)}.services-heading,.approach-grid{grid-template-columns:1fr}.services-heading>p:last-child{grid-column:auto}.services-heading h2,.approach h2{margin-top:var(--space-8)}.service summary{grid-template-columns:1fr 8fr 3fr 1fr}.service-tag{font-size:var(--font-small)}.news-row a{grid-template-columns:1fr 3fr 8fr}.news-read{display:none}.footer{flex-wrap:wrap}.footer nav{margin-left:auto}}
@media(max-width:48rem){.problems-heading,.work-heading{grid-template-columns:1fr;gap:var(--space-8);margin-bottom:var(--space-12)}.problems-heading>p:last-child,.work-heading>p:last-child{grid-column:auto}.problem-row{grid-template-columns:1fr 11fr;gap:var(--space-6)}.problem-row>div{grid-column:2}.problem-row>p{font-size:var(--font-body)}.problem-row h3{font-size:var(--font-body-large)}.projects{grid-template-columns:1fr;gap:var(--space-16)}.project-2{padding-top:0}.project-2 .project-image{aspect-ratio:4/3}.project-view{display:none}.project-chip{left:var(--space-4);top:var(--space-4)}.project-meta{display:flex;flex-wrap:wrap;gap:var(--space-2)}.project-meta>span{margin:0}.clients{grid-template-columns:1fr 1fr;gap:var(--space-6);padding-block:var(--space-8)}.clients>p:first-child{grid-column:1/-1}.clients a{justify-self:start}.client-note{display:none}.clients img{width:8rem;height:5rem}.service-list{margin-top:var(--space-12)}.service summary{grid-template-columns:1fr 9fr 1fr;padding-block:var(--space-6);gap:var(--space-3)}.service summary h3{font-size:clamp(1.2rem,5vw,1.75rem)}.service-tag{display:none}.service-body{grid-template-columns:1fr;gap:var(--space-6);margin-left:0}.approach-bottom{grid-template-columns:1fr;gap:var(--space-8);margin-top:var(--space-12)}.approach-signal{left:-65%;bottom:-35%;opacity:.3}.journal-heading{display:block;margin-bottom:var(--space-12)}.journal-heading>.text-link{margin-top:var(--space-6)}.news-row a{grid-template-columns:1fr 5fr;gap:var(--space-4)}.news-row time{grid-column:2}.news-row h3{grid-column:2;font-size:var(--font-body-large)}.contact-heading{display:block;margin-bottom:var(--space-12)}.contact-heading>p:last-child{margin-top:var(--space-6)}.contact h2{font-size:clamp(2.3rem,9vw,4.25rem)}.contact-bottom{grid-template-columns:1fr;gap:var(--space-8);margin-top:var(--space-12)}.contact-bottom>div{justify-self:start}.footer{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6)}.footer img{width:9rem}.footer>span{justify-self:end;font-size:var(--font-small)}.footer nav{grid-column:1/-1;flex-wrap:wrap;margin:0;justify-content:space-between;gap:var(--space-4)}}
@media(prefers-reduced-motion:reduce){.weight-word:hover>span{font-weight:var(--weight-bold)}[data-reveal].is-entering{animation:none}.project-image:hover img,.news-row a:hover h3{transform:none}}
.journal-page h1,.article-header h1{font-size:var(--font-h2);line-height:var(--line-heading);letter-spacing:var(--tracking-heading);font-weight:var(--weight-heading);margin-top:var(--space-8);max-width:19ch;overflow-wrap:anywhere}.journal-intro{font-size:var(--font-lead);max-width:var(--text-width);margin-block:var(--space-8) var(--space-16);color:var(--color-muted)}.news-status{font-size:var(--font-small);color:var(--color-muted);margin-top:var(--space-6)}.news-status:empty{display:none}.news-button{border:var(--border-width) solid var(--color-primary);border-radius:var(--radius);padding:var(--space-4) var(--space-6);background:var(--color-background);color:var(--color-primary);margin-top:var(--space-6);min-height:var(--touch-target);transition:background var(--transition),color var(--transition)}.news-button:hover{background:var(--color-primary);color:var(--color-inverse)}.news-button:disabled{color:var(--color-disabled);cursor:wait}.article-header{margin-top:var(--space-16);padding-bottom:var(--space-12);border-bottom:var(--border)}.article-header h1{max-width:24ch;font-size:clamp(2.5rem,5.8vw,5.5rem)}.article-meta{display:flex;gap:var(--space-6);margin-top:var(--space-8);font-size:var(--font-small);color:var(--color-muted)}.article-image{margin-block:var(--space-12);max-width:100%}.article-image img{max-height:36rem;width:100%;object-fit:contain;background:var(--color-surface)}.article-body{max-width:68ch;margin:var(--space-16) auto;font-size:var(--font-body-large);line-height:var(--line-body);overflow-wrap:anywhere}.article-body>*+*{margin-top:var(--space-6)}.article-body h2,.article-body h3,.article-body h4{font-size:var(--font-h3);margin-top:var(--space-12);line-height:var(--line-lead)}.article-body img{height:auto;max-width:100%}.article-body a{text-decoration:underline;text-underline-offset:var(--space-1)}.article-body blockquote{margin-inline:0;padding-left:var(--space-6);border-left:var(--space-1) solid var(--color-accent)}.article-body pre{overflow:auto;background:var(--color-surface);padding:var(--space-6);font-size:var(--font-body)}.article-body table{display:block;max-width:100%;overflow:auto;border-collapse:collapse;font-size:var(--font-body)}.article-body th,.article-body td{border:var(--border);padding:var(--space-3)}.article-contact{border-top:var(--border);padding-top:var(--space-8);display:flex;justify-content:space-between;gap:var(--space-6);font-size:var(--font-lead)}@media(max-width:48rem){.article-header{margin-top:var(--space-12)}.article-body{margin-block:var(--space-12);font-size:var(--font-body-large)}.article-contact{display:block}.article-contact .text-link{margin-top:var(--space-4)}.journal-page h1{font-size:clamp(2rem,8vw,3rem)}}

/* Editorial reference register: original white artwork on the page surface. */
.site-header{max-width:none;padding-inline:max(var(--space-page),calc((100vw - var(--container-width))/2 + var(--space-page)))}
.brand img{width:var(--brand-width)}
.client-references{margin-top:var(--space-section);color:var(--color-text)}
.client-heading{display:grid;grid-template-columns:1fr 2fr;gap:var(--space-8);align-items:start;padding-bottom:var(--space-12)}
.client-heading h3{font-size:var(--font-lead);max-width:24ch}
.client-logos{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-top:var(--border)}
.client-logos li{display:flex;align-items:center;justify-content:center;min-width:0;height:var(--logo-row-height);border-bottom:var(--border);padding:var(--space-6) var(--space-4)}
.client-logos img{width:var(--client-optical-width,var(--logo-width));height:auto;max-width:100%;max-height:var(--logo-max-height);object-fit:contain;filter:brightness(0);opacity:.8}
.client-logos li:nth-child(2){--client-optical-width:var(--logo-emblem)}
.client-logos li:nth-child(3),.client-logos li:nth-child(7){--client-optical-width:var(--logo-small)}
.client-logos li:nth-child(5),.client-logos li:nth-child(6){--client-optical-width:var(--logo-wide-width)}
.client-logos li:nth-child(9){--client-optical-width:var(--logo-round)}
.client-logos li:nth-child(10){--client-optical-width:var(--logo-emblem)}
.client-logos li:nth-child(11){--client-optical-width:var(--logo-small)}
@media(max-width:72rem){.client-logos{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:48rem){.brand img{width:var(--brand-width-mobile)}.client-heading{grid-template-columns:1fr;gap:var(--space-6);padding-bottom:var(--space-8)}.client-logos{grid-template-columns:repeat(2,minmax(0,1fr))}.client-logos li{height:var(--logo-row-height-mobile)}}
.news-copy{min-width:0}.news-copy.has-image{display:grid;grid-template-columns:var(--news-image-width) minmax(0,1fr);gap:var(--space-6);align-items:center}.news-thumbnail{width:100%;height:auto;aspect-ratio:var(--news-image-ratio);object-fit:cover;background:var(--color-surface)}
@media(max-width:72rem){.news-copy.has-image{grid-template-columns:var(--space-32) minmax(0,1fr)}}@media(max-width:48rem){.news-copy{grid-column:2}.news-copy.has-image{grid-template-columns:1fr;gap:var(--space-4)}.news-copy h3{grid-column:auto}.news-thumbnail{max-width:100%}}

/* Shared variable-type language, with bold-width reservation for stable line breaks. */
.motion-word{display:inline-grid;vertical-align:baseline;white-space:nowrap}
.motion-word::after{content:attr(data-text);grid-area:1/1;font-weight:var(--heading-hover-weight);visibility:hidden;pointer-events:none}
.motion-ink{grid-area:1/1;font-weight:var(--heading-rest,var(--weight-heading));transition:font-weight var(--duration-weight) var(--ease)}
h1.heading-seen .motion-ink,h2.heading-seen .motion-ink,h3.heading-seen .motion-ink{animation:heading-weight var(--duration-weight) var(--ease) backwards}
@keyframes heading-weight{from{font-weight:var(--weight-thin)}to{font-weight:var(--heading-rest,var(--weight-heading))}}
@media(hover:hover){h1:hover .motion-ink,h2:hover .motion-ink,h3:hover .motion-ink{font-weight:var(--heading-hover-weight)}}
h1:focus-within .motion-ink,h2:focus-within .motion-ink,h3:focus-within .motion-ink{font-weight:var(--heading-hover-weight)}
.hero .weight-word{display:inline;font-weight:inherit;white-space:normal;margin-left:0}
.hero .weight-word .motion-ink{--heading-rest:var(--weight-bold)}
.hero .signal{background:none;filter:none;transform:translate3d(calc(var(--pointer-x,0)*var(--hero-travel)),calc(var(--pointer-y,0)*var(--hero-travel)),0);transition:transform var(--duration-reveal) var(--ease)}
.hero .signal::before{content:'';position:absolute;inset:0;border-radius:inherit;background:var(--color-accent);filter:blur(var(--blur));transform:scaleY(.78) rotate(-20deg);animation:hero-arrive var(--duration-hero) var(--ease) both}
@keyframes hero-arrive{from{opacity:.3;transform:translate3d(-12%,8%,0) scale(.7) rotate(-35deg)}to{opacity:1;transform:translate3d(0,0,0) scaleY(.78) rotate(-20deg)}}
@media(prefers-reduced-motion:reduce){.hero .signal{transform:none}h1 .motion-ink,h2 .motion-ink,h3 .motion-ink{animation:none!important;transition:none!important}}

/* Supersede the original single-word treatment with the shared heading system. */
.weight-word{display:inline;white-space:normal}
.weight-word>.motion-word{display:inline-grid;font-weight:inherit;transition:none}
.weight-word .motion-ink,.contact h2 a .motion-ink{--heading-rest:var(--weight-bold)}
@media(hover:hover){.weight-word:hover .motion-ink,.contact h2 a:hover .motion-ink{font-weight:var(--weight-thin)}}
@media(prefers-reduced-motion:reduce){.motion-ink{font-weight:var(--heading-rest,var(--weight-heading))!important}}

/* Two heading axes: page edge and the shared content column. */
h1,h2,h3{text-align:left;min-width:0}
.hero h1{font-size:var(--font-display)}
.journal-page h1,.article-header h1{font-size:var(--font-h1);line-height:var(--line-heading);letter-spacing:var(--tracking-heading)}
.intro h2,.problems-heading h2,.work-heading h2,.services-heading h2,.approach h2,.journal-heading h2,.contact h2,.article-body h2{font-size:var(--font-h2);line-height:var(--line-heading);letter-spacing:var(--tracking-heading);font-weight:var(--weight-heading)}
.problem-row h3,.project-meta h3,.client-heading h3,.service summary h3,.news-row h3,.article-body h3{font-size:var(--font-h3);line-height:var(--line-heading);letter-spacing:var(--tracking-heading);font-weight:var(--weight-heading)}
.intro,.problems-heading,.work-heading,.services-heading,.approach-grid,.client-heading,.journal-heading{display:grid;grid-template-columns:var(--heading-grid);gap:var(--grid-gap);align-items:start}
.intro>.section-label,.problems-heading>.section-label,.work-heading>.section-label,.services-heading>.section-label,.approach-grid>.section-label,.client-heading>.label,.journal-heading>.section-label{grid-column:var(--heading-label-column)}
.intro-content,.problems-heading>h2,.work-heading>h2,.services-heading>h2,.approach-grid>div:not(.approach-signal),.client-heading>h3,.journal-heading>h2{grid-column:var(--heading-content-column);margin-top:0}
.problems-heading>p:last-child,.work-heading>p:last-child,.services-heading>p:last-child,.journal-heading>.text-link{grid-column:var(--heading-content-column);margin-top:var(--space-4);justify-self:start;max-width:var(--text-width)}
.client-heading h3{max-width:none}
.contact h2{max-width:24ch}
.project-meta{flex-wrap:wrap}
.article-body{text-align:left;margin-inline:0}
.motion-word{max-width:100%;white-space:normal;overflow-wrap:anywhere}
@media(max-width:48rem){
 :root{--heading-label-column:1 / -1;--heading-content-column:1 / -1}
 .hero h1{font-size:clamp(3rem,11.6vw,5.5rem)}
 .intro,.problems-heading,.work-heading,.services-heading,.approach-grid,.client-heading,.journal-heading{row-gap:var(--space-8)}
 .intro-content,.services-heading h2,.approach h2{margin-top:0}
 .problems-heading>p:last-child,.work-heading>p:last-child,.services-heading>p:last-child,.journal-heading>.text-link{grid-column:1/-1;margin-top:0}
 .news-row h3{grid-column:2}
 .news-copy h3{grid-column:auto}
}

/* Natural font metrics: no hidden bold copy adding space after every word. */
h1,h2,h3{font-kerning:normal;font-optical-sizing:auto;font-feature-settings:"kern" 1,"liga" 1;word-spacing:normal;text-wrap:balance}
.motion-word,.weight-word>.motion-word{display:inline;white-space:normal}
.motion-word::after{content:none}
.motion-ink{display:inline}
.intro h2,.problems-heading h2,.work-heading h2,.services-heading h2,.approach h2,.journal-heading h2,.contact h2,.article-body h2{line-height:var(--line-h2)}
.problem-row h3,.project-meta h3,.client-heading h3,.service summary h3,.news-row h3,.article-body h3{letter-spacing:var(--tracking-h3);line-height:var(--line-h3)}
.hero h1{text-wrap:initial;letter-spacing:var(--tracking-display)}
.news-row a:hover h3{transform:none}
@media(max-width:48rem){.hero h1{font-size:var(--font-display-mobile)}}

/* Portfolio pages use the same editorial axes and image treatment. */
.portfolio-actions{margin-top:var(--space-8)}
.portfolio-grid{row-gap:var(--space-24)}
.project-placeholder{display:flex;align-items:center;justify-content:center;height:100%;font-size:var(--font-h3);padding:var(--space-8)}
.case-intro{max-width:var(--text-width);font-size:var(--font-lead);line-height:var(--line-lead);margin-block:var(--space-8);color:var(--color-muted)}
.case-hero{margin-block:var(--space-12) var(--space-section);background:var(--color-surface)}
.case-hero img{width:100%;max-height:80svh;object-fit:contain}
.case-story{max-width:var(--text-width);margin-left:calc(25% + var(--grid-gap)/4);font-size:var(--font-body-large)}
.case-story h2{font-size:var(--font-h2);line-height:var(--line-h2);margin-top:var(--space-16);margin-bottom:var(--space-6)}
.case-story p+p{margin-top:var(--space-6)}
.case-story img{width:100%;height:auto;margin-block:var(--space-8)}
.case-films{display:grid;gap:var(--space-12);margin-top:var(--space-section)}
.case-films figure{aspect-ratio:var(--project-video-ratio);width:100%;min-width:0;overflow:hidden;background:var(--color-primary)}
.case-films video{width:100%;height:100%;aspect-ratio:var(--project-video-ratio);max-height:none;object-fit:contain;background:var(--color-primary);display:block}
.case-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-8);margin-top:var(--space-section);align-items:start}
.case-gallery img{width:100%;height:auto}
.case-gallery .project-logo-study{grid-column:1/-1;background:var(--color-surface);padding:var(--space-16);display:flex;justify-content:center}
.project-logo-study img{width:var(--space-48);max-height:var(--space-48);object-fit:contain}
.case-footer{border-top:var(--border);padding-top:var(--space-8);margin-top:var(--space-section);display:flex;justify-content:space-between;gap:var(--space-8)}
@media(max-width:48rem){.case-story{margin-left:0}.case-gallery{grid-template-columns:1fr}.case-footer{flex-direction:column}.case-intro{font-size:var(--font-body-large)}.case-gallery .project-logo-study{padding:var(--space-8)}}

/* One explicit heading primitive across all landing-page sections. */
h2.section-title{font-size:var(--font-h2);font-weight:var(--weight-heading);line-height:var(--line-h2);letter-spacing:var(--tracking-heading);text-align:left}
h2.section-title .motion-ink{--heading-rest:var(--weight-heading)}
@media(hover:hover){h2.section-title:hover .motion-ink{font-weight:var(--heading-hover-weight)}}

/* Scroll entrance reserves the final layout size; scaling stays on the compositor. */
@media(prefers-reduced-motion:no-preference){
 h1[data-motion-ready],h2[data-motion-ready],h3[data-motion-ready]{transform-origin:left top;transform:scale(var(--heading-reveal-scale));transition:transform var(--duration-heading-grow) var(--ease)}
 h1.heading-seen,h2.heading-seen,h3.heading-seen{transform:scale(1)}
}

/* Shared vertical axes: all spans include the same twelve-column gutters. */
.hero-bottom>:nth-child(1){grid-column:1/4}.hero-bottom>:nth-child(2){grid-column:4/9}.hero-bottom>:nth-child(3){grid-column:9/-1}
@media(max-width:48rem){.hero-bottom{grid-template-columns:1fr}.hero-bottom>:nth-child(n){grid-column:1/-1}}
