/* Portfolio typography. Load last; embedded project artwork is intentionally excluded. */
:root{
 --font-body:Inter,sans-serif;--font-display:var(--font-body);
 --type-title:clamp(2rem,3.5vw,2.5rem);--type-project:clamp(1.5rem,2.5vw,2rem);
 --type-section:clamp(1.375rem,2vw,1.5rem);--type-lead:clamp(1.125rem,1.8vw,1.25rem);
 --type-body:1rem;--type-caption:.875rem;--weight-body:400;--weight-heading:400;--weight-emphasis:500;
}
body,.portfolio-header{font-family:var(--font-body)!important}
.flow-copy,.ds-section,.clients-heading,.portfolio-footer,.page,.page-end,.ovalix-section p:not(.product-canvas *):not([aria-hidden="true"] *){font-family:var(--font-body)!important;font-weight:var(--weight-body)!important}
.flow-copy,.skill-copy p,.home-about-copy p,.portfolio-footer p,.page :is(.bio,.job p,.job-role,.role,.personal,.aside),.ovalix-section p:not(.product-canvas *):not([aria-hidden="true"] *){font-size:var(--type-body)!important;line-height:1.65!important;letter-spacing:0!important}
:where(h1,h2,h3,h4,[role="heading"]):not(.design-frame *):not(.product-canvas *):not(.walk-canvas *){font-family:var(--font-body)!important;font-weight:var(--weight-heading)!important;font-style:normal!important;text-align:left!important}
body :is(h1,.home-hero h1,.page h1.section-title),.ovalix-section [role="heading"][aria-level="1"]{font-size:var(--type-title)!important;line-height:1.2!important;letter-spacing:-.035em!important}
.flow-copy:is(h2,h3,h4),body :is(h2,h3,h4):where(:not(.design-frame *):not(.product-canvas *):not(.walk-canvas *)){font-size:var(--type-section)!important;line-height:1.35!important;letter-spacing:-.025em!important}
body .project-card .card-copy h3{font-size:var(--type-project)!important;line-height:1.25!important;letter-spacing:-.03em!important}
body .home-hero p.flow-copy,.home-about-copy .about-lead{font-size:var(--type-lead)!important;line-height:1.5!important;letter-spacing:-.01em!important}
.ovalix-section [role="heading"][aria-level="1"] p{font-size:var(--type-title)!important;line-height:1.2!important;letter-spacing:-.035em!important}
.ovalix-section [role="heading"][aria-level="2"]>p:last-child{font-size:var(--type-section)!important;line-height:1.35!important;letter-spacing:-.025em!important}
.ovalix-section [role="heading"][aria-level="2"]>p:first-child,.page .date,.page .aside,.footer-links{font-size:var(--type-caption)!important;line-height:1.5!important;letter-spacing:0!important}
body .page :is(.job h3,.aside h3,.small-heading){font-size:var(--type-body)!important;line-height:1.5!important;font-weight:var(--weight-emphasis)!important;letter-spacing:0!important}
.ds-button,.back-top,.art-tools button,.walk-controls button,.portfolio-header a{font-family:var(--font-body)!important;font-weight:var(--weight-body)!important;font-size:var(--type-body)!important;line-height:1.4!important;letter-spacing:0!important}
.logo-motion-toggle{font-size:var(--type-caption)!important}

body .portfolio-footer .footer-invitation h2{font-size:var(--type-project)!important;line-height:1.25!important}

/* Section labels carry slightly more emphasis than narrative titles. */
body.page-home #website h2:not(.design-frame *){font-weight:var(--weight-emphasis)!important}
