/* Shared typography roles. Files are real Medium and Regular faces, without synthesis. */
:root{--font-heading:'Helvetica Now Display','Helvetica Neue',Arial,sans-serif;--font-copy:'Helvetica Now Display','Helvetica Neue',Arial,sans-serif}
.home-page main :is(h1,h2,h3),.about-page main :is(h1,h2,h3),
.case-page main :is(h1,h2,h3),.project-details :is(h1,h2,h3){
 font-family:var(--font-heading);font-weight:500;
}
/* Paragraphs keep their existing size/colour role; only their typeface changes. */
.home-page main p,.about-page main p,.case-page main p:not(.result-value),
.about-page .about-description,.about-page .experience-description,
.case-page .overview-copy,
.home-page main li,.about-page main li,.case-page main li,
.case-page .case-figure figcaption,
.case-page .case-facts,.case-page .case-facts :is(dt,dd),
.case-page .tags>span,.home-page .tags>span,
.case-page .case-sources,
.project-details .details-copy :is(p,li),
.project-details .details-intro,.project-details .details-meta,.project-details .details-team,
.footer-bottom,.gallery .gallery-caption,.gallery .gallery-project,.gallery .gallery-count{
 font-family:var(--font-copy);font-weight:500;
}
/* Numeric Impact highlights belong to the stronger display role. */
.case-page .result-value,.case-page .result-value .impact-counter-number{
 font-family:var(--font-heading);font-weight:500;
}

/* A compact shared scale: body and captions are one role, not separate sizes. */
:root{
 --type-body:18px;
 --type-card-title:var(--type-body);
 --type-small:14px;
 --type-subheading:24px;
 --type-intro:32px;
}
@media(max-width:650px){:root{--type-intro:28px;--type-section-title:32px}}
@media(min-width:1800px){:root{--type-body:20px}}
@media(min-width:1921px){:root{--type-subheading:28px;--type-intro:36px}}
/* Supporting text uses the body role consistently across every template. */
.home-page .home-section-description,
.home-page .project-description,.home-page .wide .project-description,
.home-page .project-copy h3,.home-page .wide .project-copy h3,
.about-page .experience-description,.about-page .experience-role,.about-page .experience-date,
.about-page .about-location,.about-page .award-row,
.about-page .about-expertise article>p,
.case-page .case-subtitle>p,.case-page .chapter-description,
.case-page .case-facts,.case-page .case-figure figcaption,.case-page .result-description,
.project-details .details-copy,.project-details .details-meta,.project-details .details-team,
.project-details .details-section p,.project-details .details-section li{
 font-size:var(--type-body);line-height:1.4;letter-spacing:-.01em;
}
/* Large introductions retain their own consistent hierarchy. */
.about-page .about-overview>.about-description,
.case-page .overview-copy,.case-page .overview-copy .intro,
.case-page .overview-copy .overview-details,.case-page .overview-copy>ul,
.project-details .details-intro{
 font-size:var(--type-intro);line-height:1.2;letter-spacing:-.025em;
}
/* Utility copy stays visibly secondary; controls keep their own existing scale. */
.footer-bottom,.gallery .gallery-caption,.gallery .gallery-caption p,
.gallery .gallery-project,.gallery .gallery-count,.case-page .tags>span,.home-page .tags>span{
 font-size:var(--type-small);line-height:1.4;
}

/* Right-column category introductions use a distinct, readable 22px size. */
.home-page .home-section-description{font-size:22px;line-height:1.4}

/* Selected supporting labels use Medium without changing the body scale. */
.about-page .about-location,.about-page .experience-role{
 font-family:var(--font-heading);font-weight:500;
}
/* Tags share one control-sized Medium style throughout the site. */
.home-page .tags>span,.case-page .tags>span,.project-details .tags>span,.ds .tags>span{
 font-family:var(--font-heading);font-size:var(--type-button);font-weight:500;line-height:1.4;
}
/* Project facts invert the caption hierarchy: grey Regular labels, dark Medium values. */
.case-page .case-facts dt,.project-details .details-meta dt{
 font-family:var(--font-copy);font-size:var(--type-card-title);font-weight:500;line-height:1.4;color:var(--muted);
}
.case-page .case-facts dd,.project-details .details-meta dd{
 font-family:var(--font-heading);font-size:var(--type-card-title);font-weight:500;line-height:1.4;color:var(--fg);
}
/* Detail chapters use an existing larger step, rather than a new heading size. */
.project-details .details-section h3{
 font-family:var(--font-heading);font-size:var(--type-intro);font-weight:500;line-height:1.2;letter-spacing:-.025em;
}

/* Expertise card titles match company names in Selected Experience. */
.about-page .about-expertise article h2{
 font-family:var(--font-heading);font-size:var(--type-subheading);
 font-weight:500;line-height:1.2;letter-spacing:-.02em;
}

/* Large About/case introductions move one face up: Regular -> Medium. */
.about-page .about-overview>.about-description,
.about-page .about-overview>.about-description p,
.case-page main .overview-copy,.case-page main .overview-copy p,
.case-page main .overview-copy li,
.project-details .details-copy .details-intro,.project-details .details-copy .details-intro p{
 font-family:var(--font-heading);font-weight:500;
}

/* Supporting body copy matches the grey Regular captions under project cards. */
.about-page .experience-role{color:var(--fg)}
.about-page .experience-description,
.case-page .chapter-description,.case-page .case-subtitle>p,
.project-details .details-section p,.project-details .details-section li{
 font-family:var(--font-copy);font-size:var(--type-card-title);font-weight:500;
 line-height:1.4;letter-spacing:-.01em;color:var(--muted);
}

/* The Regular display role continues from Home into page titles and footer links. */
.about-page main .about-heading h1,
.case-page main .case-heading h1,
.site-footer .footer-main-links .contact-heading{
 font-family:var(--font-copy);font-weight:500;line-height:1.12;letter-spacing:-.035em;
}

/* Back to top uses the same Medium control style as the header navigation. */
.site-footer .footer-bottom .back-top{
 font-family:var(--font-heading);font-size:var(--type-button);font-weight:500;
 line-height:1.4;letter-spacing:-.01em;color:var(--fg);
 transition:color .32s cubic-bezier(.22,.61,.36,1);
}
.site-footer .footer-bottom .back-top:is(:hover,:focus-visible){opacity:.4}
@media(max-width:650px){.site-footer .footer-bottom .back-top{font-size:13px}}
@media(max-width:380px){.site-footer .footer-bottom .back-top{font-size:12px}}
@media(prefers-reduced-motion:reduce){.site-footer .footer-bottom .back-top{transition:none}}

/* Copyright matches the Back to top size, with the quieter Regular role. */
.site-footer .footer-bottom>span{
 font-family:var(--font-copy);font-size:var(--type-button);font-weight:500;
 line-height:1.4;letter-spacing:-.01em;color:var(--muted);
}
@media(max-width:650px){.site-footer .footer-bottom>span{font-size:13px}}
@media(max-width:380px){.site-footer .footer-bottom>span{font-size:12px}}

/* Regular copy is primary ink; surfaces, images and hover colours retain their own tokens. */
body.home-page main p,body.about-page main p,body.case-page main p,
body.home-page main li,body.about-page main li,body.case-page main li,
body.case-page main .case-figure figcaption,
body.case-page main .case-facts dt,body.case-page main .case-facts dd,
body.case-page main .tags>span,body.home-page main .tags>span,
body.case-page main .case-sources,
body .project-details .details-copy :is(p,li),body .project-details .details-meta :is(dt,dd),
body .project-details .details-team :is(dt,dd),
body .site-footer .footer-bottom>span,
body.home-page main .home-promo .promo-accent{color:var(--fg)}

/* Explicit role selectors override older page-specific supporting-copy colours. */
body.home-page main .home-section-description,
body.home-page main .project-grid .project .project-description,
body.about-page main .about-expertise article>p,
body.about-page main .experience-description,
body.case-page main .case-subtitle>p,
body.case-page main .chapter-description,
body .project-details .details-copy .details-section :is(p,li){color:var(--fg)}
