/* Shared type roles. Loaded last so every page uses the same readable scale. */
:root{--type-body:1.125rem;--type-detail:1rem;--type-label:.9375rem;--type-meta:.875rem;--muted:#435664;--bronze:#805615}
body{font-size:var(--type-body);font-weight:500;line-height:1.8}
button,input,textarea,select{font-family:var(--sans)}
h1,h2,h3,html[lang=zh-CN] h1,html[lang=zh-CN] h2,html[lang=zh-CN] h3{font-weight:700}
h1,h2,h3{color:inherit;letter-spacing:-.025em}
html[lang=zh-CN] h1,html[lang=zh-CN] h2,html[lang=zh-CN] h3{letter-spacing:0}
h2,.home-page h2{font-size:clamp(2rem,2.8vw,2.75rem);line-height:1.25}
html[lang=zh-CN] h2,html[lang=zh-CN] .home-page h2{font-size:clamp(1.875rem,2.55vw,2.5rem);line-height:1.4}
.page-intro h1{font-size:clamp(2.375rem,3.6vw,3.5rem)}
html[lang=zh-CN] .page-intro h1{font-size:clamp(2.125rem,3.2vw,3.125rem)}
.page-intro>p,.page-intro-split p,.intro-editorial>p,.closing-grid p,.step p,.faq details p,.article-prose,.project-intro p{font-size:var(--type-body);line-height:1.8}

/* Primary navigation, actions and small headings remain substantial at all widths. */
.desktop-nav,.language,.button,.text-link,.credential-link,.journal-read,.contact-details .appointment-actions a{font-size:var(--type-detail);font-weight:700;letter-spacing:0}
.desktop-nav{gap:22px}
.button{min-height:54px;padding:15px 24px;line-height:1.45}
.text-link,.credential-link{line-height:1.6}
.mobile-nav a{font-size:1.125rem;font-weight:700}
.utility-bar,.utility-bar .wrap,.utility-bar a{font-size:var(--type-meta);font-weight:600;line-height:1.5}
.eyebrow,.project-info .eyebrow,.collection-card .eyebrow,.gallery-note .eyebrow,.video-copy .eyebrow{font-size:var(--type-label);font-weight:750;line-height:1.5;letter-spacing:.07em}
html[lang=zh-CN] .eyebrow{letter-spacing:.04em}
.quick-paths strong{font-size:1.1875rem;font-weight:750;line-height:1.5}
.quick-paths>a{gap:20px;min-height:102px;padding:27px 24px}
.quick-paths>a>span,.intro-points>div>span,.craft-details>div>span,.material-choice summary>span:first-child,.mood-controls button>span{font-size:var(--type-meta);font-weight:700}
.quick-paths svg{flex-shrink:0}

/* Accreditation: retain the original seal; present rating and detail as HTML text. */
.accreditation-strip{gap:24px;padding-block:28px;flex-wrap:wrap}
.accreditation-strip>div{flex:1 1 350px}
.accreditation-strip p:first-child{font-size:1.125rem;font-weight:700;line-height:1.55}
.accreditation-strip>div>p:last-child{font-size:var(--type-label);line-height:1.7;margin-top:7px}
.accreditation-strip .credential-link{flex:0 0 auto}
.accreditation-detail p{font-size:var(--type-detail)}
.video-copy>p{font-size:var(--type-body);font-weight:600;line-height:1.8}
.hero-caption,.video-toggle{font-size:var(--type-meta);font-weight:650;letter-spacing:.015em}
.video-copy h1,.video-copy h1 em{font-weight:750}

/* Services, materials, galleries and consultation details. */
.intro-points h3,html[lang=zh-CN] .intro-points h3,.step h3,html[lang=zh-CN] .step h3{font-size:1.375rem;font-weight:700;line-height:1.45}
.intro-points p,.craft-details p,.material-choice-body p,.material-kind,.care-note,.appointment-panel p,.inquiry-context,.form-help,.field-hint,.supplier-note,.care-source,.notice{font-size:var(--type-detail);line-height:1.75}
.craft-details h3,.inquiry-checklist h3{font-size:1.125rem;font-weight:700;line-height:1.5}
.faq summary{font-size:1.125rem;font-weight:700;line-height:1.65}
.mood-controls button,.material-jump a,.collection-nav a{font-size:var(--type-detail);font-weight:700;line-height:1.55}
.palette li,.material-feature figcaption,.material-feature figcaption>span,.material-feature figcaption>span:last-child,.breadcrumb,.fact-list dt{font-size:var(--type-meta);font-weight:600;line-height:1.65}
.project-info h3,.home-projects .project-info h3,.gallery-grid .project-info h3,.collection-card h3,html[lang=zh-CN] .project-info h3{font-size:1.625rem;font-weight:700;line-height:1.45}
.collection-card .project-info{align-items:flex-start}
.project-intro .project-region,.collection-footnote,.project-photo-grid figcaption,.wide-image figcaption,.edge-library-grid figcaption{font-size:var(--type-detail);line-height:1.75}
.project-intro figcaption,.photo-group-head>span,.photo-reference,.archive-photo-grid figcaption,.edge-library-grid small{font-size:var(--type-meta);line-height:1.7}
.edge-library-grid figcaption{font-weight:700}
.supplier-card strong{font-size:1.25rem;font-weight:700}
.supplier-card .supplier-type,.supplier-card .supplier-website{font-family:var(--sans);font-size:var(--type-detail);line-height:1.65}
.supplier-card .supplier-website{font-weight:700}
.area-overview,.area-links,.area-list{font-size:var(--type-detail)}
.field label{font-size:var(--type-detail);font-weight:700;line-height:1.6}
.field input,.field select,.field textarea{font-size:var(--type-detail);font-weight:500;line-height:1.6}
.contact-form legend{font-size:1.625rem;font-weight:700}

/* Reading pages and footer use the same hierarchy as the main pages. */
.journal-card h2,html[lang=zh-CN] .journal-card h2{font-family:var(--sans);font-size:clamp(1.5rem,2vw,1.875rem);font-weight:700;line-height:1.35}
.journal-card p{font-size:var(--type-body);line-height:1.75}
.blog-sidebar h2,.article-sidebar h2,html[lang=zh-CN] .blog-sidebar h2{font-family:var(--sans);font-size:1.125rem;font-weight:700}
.blog-sidebar nav>a,.article-sidebar li,.article-back,.journal-help p,.journal-help a,.article-context p{font-size:var(--type-detail);line-height:1.7}
.blog-sidebar nav>a,.article-back,.journal-help a{font-weight:650}
.journal-meta,.article-byline,.article-hero figcaption,.related-grid span{font-size:var(--type-meta);font-weight:600;line-height:1.65}
.article-prose strong{font-weight:750}
.article-table table{font-size:var(--type-detail)}
.article-table th{font-weight:700}
.footer h3{font-family:var(--sans);font-size:var(--type-detail);font-weight:750;line-height:1.5;letter-spacing:.045em}
.footer p,.footer-links{font-size:var(--type-detail);line-height:1.8}
.footer-links a{min-height:40px;font-weight:600}
.footer-bottom{font-size:var(--type-meta);font-weight:500;line-height:1.7}
.footer-links a,.footer-credit{overflow-wrap:anywhere}

@media(min-width:1300px) and (max-width:1399px){
 .desktop-nav,.nav-actions>.button{display:none}
 .menu-toggle{display:inline-block}
 .nav-actions>.appointment-link{display:inline-flex}
 .mobile-nav.is-open{display:flex;flex-direction:column;position:absolute;left:0;right:0;top:92px;background:var(--paper);padding:15px var(--gutter) 25px;border-bottom:1px solid var(--line);box-shadow:0 20px 30px #102a4310;max-height:calc(100dvh - 92px);overflow-y:auto}
 .mobile-nav a{padding:13px 0;border-bottom:1px solid var(--line)}
}
@media(max-width:850px){
 :root{--type-body:1.0625rem}
 .quick-paths>a{gap:14px;padding-inline:16px}
 .quick-paths strong{font-size:1.0625rem}
 .accreditation-strip>div{flex-basis:280px}
 .accreditation-strip .credential-link{margin-left:0}
}
@media(max-width:600px){
 h2,.home-page h2{font-size:2rem}
 html[lang=zh-CN] h2,html[lang=zh-CN] .home-page h2{font-size:1.875rem}
 .page-intro h1{font-size:2.25rem}
 html[lang=zh-CN] .page-intro h1{font-size:2rem}
 .intro-points h3,html[lang=zh-CN] .intro-points h3,.step h3,html[lang=zh-CN] .step h3{font-size:1.25rem}
 .quick-paths>a{padding:22px 0;min-height:78px;gap:20px}
 .quick-paths strong{font-size:1.125rem}
 .accreditation-strip{grid-template-columns:minmax(0,1fr);gap:16px}
 .accreditation-strip .bbb-seal{max-width:150px;width:150px}
 .accreditation-strip .credential-link{grid-column:1}
 .accreditation-strip p:first-child{font-size:1.0625rem}
 .video-copy .hero-actions{gap:14px}
 .hero-credential{gap:12px;padding:12px}
 .hero-credential-rating{padding-left:12px}
 .hero-bottom{gap:10px}
 .hero-caption:before{display:none}
 .video-toggle{min-width:0;padding:10px;gap:7px}
 .project-photo-grid figcaption{display:block}
 .photo-reference{display:block;margin-bottom:3px}
 .project-info h3,.home-projects .project-info h3,.gallery-grid .project-info h3,.collection-card h3,html[lang=zh-CN] .project-info h3{font-size:1.5rem}
 .collection-nav a{padding:10px 13px}
 .footer-top{gap:30px}
}
