/* Portfolio type contract. 14px is the deliberate utility-text exception.
   rem preserves browser font preferences; px equivalents assume 16px root. */
:root{--type-h1:3.5rem;--type-h2:2.5rem;--type-h3:2rem;--type-h4:1.5rem;--type-h5:1.25rem;--type-h6:1rem;--type-body:1rem;--type-lead:1.25rem;--type-label:.875rem;--type-caption:.75rem;--type-display:3.5rem}
@media(max-width:1023px){:root{--type-h1:3rem;--type-h2:2rem;--type-h3:1.75rem;--type-display:3rem}}
@media(max-width:700px){:root{--type-h1:2.25rem;--type-h2:1.75rem;--type-h3:1.5rem;--type-h4:1.25rem;--type-h5:1.25rem;--type-display:2.25rem}}
html{font-size:100%}body{font-size:var(--type-body)}
body h1{font-size:var(--type-h1)!important;line-height:1.14!important;letter-spacing:-.045em!important}
body h2{font-size:var(--type-h2)!important;line-height:1.2!important}
body h3{font-size:var(--type-h3)!important;line-height:1.25!important}
body h4{font-size:var(--type-h4)!important;line-height:1.3!important}
body h5{font-size:var(--type-h5)!important;line-height:1.4!important}
body h6{font-size:var(--type-h6)!important;line-height:1.5!important}
body h1 :is(span,em,strong),body h2 .chapter-statement{font-size:inherit!important;line-height:inherit!important}
/* Roles are explicit: display banners, section kickers, UI labels. */
body :is(.chapter-kicker,.related-work>h2,.result-label,.chapter-tags,.fm-problem-kicker,.fb-kicker,.ai-kicker,.ns-kicker,.sub-kicker){font-size:var(--type-label)!important;line-height:1.5!important}
body :is(.prose,.prose p,.prose li,.copy p,.copy li,.decision-context p,.about-story p,.about-body,.about-body p,.fm-problem-panel p,.walk-panel .prose,.walk-panel .prose p){font-size:var(--type-body)!important;line-height:1.75!important}
body :is(.hero-bottom>p,.about-description,.about-role,.explore-description){font-size:var(--type-body)!important;line-height:1.75!important}
body :is(.media-caption,figcaption,.walk-caption,.related-category,.project-type,.section-meta,.slide-status){font-size:var(--type-label)!important;line-height:1.5!important}
body :is(.desktop-nav a,.nav-pill,.nav-resume,.nav-link,.related-card p,.text-link){font-size:var(--type-body)!important}
body .related-card h3{font-size:var(--type-h4)!important}
body .related-card p{line-height:1.6!important}
body footer.site-footer .footer-title{font-size:var(--type-display)!important;line-height:1.14!important}
body footer.site-footer :is(.footer-email,.footer-cta){font-size:var(--type-body)!important}
body footer.site-footer :is(.footer-eyebrow,.footer-call,.footer-bottom){font-size:var(--type-label)!important}
body :is(.walk-panel h4,.fm-problems h4){font-size:var(--type-h4)!important}
body .fm-problem-tabs button{font-size:var(--type-label)!important}
/* Avoid text clipping after standardizing sizes. */
body :is(h1,h2,h3,h4,h5,h6){overflow-wrap:break-word}
@media(max-width:700px){body .header{gap:8px}body .header .wordmark{font-size:1rem}body .fm-problem-tabs{gap:4px}body .fm-problem-tabs button{padding:8px}body .fm-problem-panel{min-height:320px}}
body :is(.hero-experience,.hero-subtitle,.about-summary,.project-subtitle,.explore-intro>p){font-size:var(--type-body)!important;line-height:1.75!important}
body :is(.about-eyebrow,.explore-eyebrow,.wiki-kicker,.fm-kicker,.footer-kicker,.reel-eyebrow){font-size:var(--type-label)!important;line-height:1.5!important}
@media(max-width:700px){:root{--type-h5:1rem;--type-h6:.875rem}}
