/* Standalone pages and iframes: shared fonts and role sizes.
   Keep independent from Hugo templates; no homepage composition rules. */
@import url('https://fonts.googleapis.com/css2?family=Bodoni+Moda:ital,opsz,wght@0,6..96,400;1,6..96,400&family=Bodoni+Moda+SC:ital,opsz,wght@0,6..96,400;1,6..96,400&family=Noto+Serif+TC:wght@400;600&display=swap');
@import url('https://cdn.jsdelivr.net/npm/chiron-hei-hk-webfont/css/vf.css');
:root{--ws-weight-zh-air:200;--ws-weight-zh-standard:400;--ws-weight-zh-anchor:600;
 --ws-olive-layer-zh-weight:var(--ws-weight-zh-anchor);--ws-olive-speaker-name-weight:var(--ws-weight-zh-air);--ws-olive-folio-weight:400;
 --ws-type-display-en-sc:"Bodoni Moda SC", "Bodoni Moda", serif;
 --ws-type-scripture-reference-size:clamp(13px,.9vw + 8px,17px);
 --ws-type-scripture-reference-tracking:.015em;
 --ws-type-quote-en-size:clamp(19px,1vw + 13px,27px);
 --ws-realm-zh-size:clamp(36px,4.2vw,68px);
 --ws-realm-en-size:clamp(72px,10vw,160px);
 --ws-subject-zh-size:clamp(25px,2vw,38px);
 --ws-editorial-label-size:clamp(11px,.85vw,14px);
 --ws-editorial-label-tracking:.1em;
 --ws-realm-en-tracking:-.04em;
 --ws-realm-zh-tracking:.12em;
 --ws-size-hero:clamp(3rem,7vw + 1rem,9rem);
 --ws-size-cover:clamp(2.25rem,5vw + .5rem,6rem);
 --ws-size-h1:clamp(2rem,3.6vw + .5rem,4.5rem);
 --ws-size-h2:clamp(1.625rem,2.2vw + .5rem,2.75rem);
 --ws-size-h3:clamp(1.375rem,1.3vw + .5rem,1.875rem);
 --ws-size-nav:clamp(1rem,.4vw + .875rem,1.1875rem);
 --ws-size-card:clamp(1.25rem,1vw + .75rem,1.75rem);
 --ws-size-reading:clamp(1.0625rem,.5vw + 1rem,1.25rem);
 --ws-size-body:clamp(1rem,.35vw + .875rem,1.125rem);
 --ws-size-meta:clamp(.8125rem,.2vw + .75rem,.9375rem);
 --ws-size-control:clamp(1rem,.35vw + .875rem,1.125rem);
 --ws-size-library-title:var(--ws-size-card);
 --ws-type-display-en:"Bodoni Moda",serif;
 --ws-type-display-zh:"Chiron Hei HK WS",sans-serif;
 --ws-type-reading-zh:"Noto Serif TC",serif;
 --type-en:var(--ws-type-display-en);
 --type-zh:var(--ws-type-display-zh);
 --type-ui:var(--ws-type-display-zh);
 --type-zh-light:200;
 --type-zh-regular:400;
 --type-zh-strong:600;
}

/* Visual type-scale normalization — cross-surface semantic authority.
   Surface CSS may own geometry and placement; it must not invent a competing type scale. */
:root{
 --ws-type-scale-display-xl:clamp(4.5rem,8vw + 1rem,10rem);
 --ws-type-scale-display-lg:clamp(3.25rem,5.5vw + .75rem,7rem);
 --ws-type-scale-display-md:clamp(2.35rem,3.6vw + .65rem,4.75rem);
 --ws-type-scale-title-lg:clamp(2rem,2.6vw + .65rem,3.75rem);
 --ws-type-scale-title-md:clamp(1.55rem,1.7vw + .7rem,2.65rem);
 --ws-type-scale-title-sm:clamp(1.25rem,1vw + .75rem,1.8rem);
 --ws-type-scale-reading-lg:clamp(1.125rem,.45vw + 1rem,1.35rem);
 --ws-type-scale-reading:clamp(1rem,.3vw + .94rem,1.18rem);
 --ws-type-scale-ui:clamp(.875rem,.18vw + .84rem,1rem);
 --ws-type-scale-meta:clamp(.72rem,.12vw + .7rem,.84rem);
 --ws-type-scale-micro:clamp(.64rem,.08vw + .62rem,.75rem);
 --ws-type-leading-display:.9;
 --ws-type-leading-title:1.12;
 --ws-type-leading-reading:1.82;
 --ws-type-leading-ui:1.42;
 --ws-type-measure-reading:40em;
 --ws-size-hero:var(--ws-type-scale-display-xl);
 --ws-size-cover:var(--ws-type-scale-display-lg);
 --ws-size-h1:var(--ws-type-scale-title-lg);
 --ws-size-h2:var(--ws-type-scale-title-md);
 --ws-size-h3:var(--ws-type-scale-title-sm);
 --ws-size-nav:var(--ws-type-scale-ui);
 --ws-size-card:var(--ws-type-scale-title-sm);
 --ws-size-reading:var(--ws-type-scale-reading-lg);
 --ws-size-body:var(--ws-type-scale-reading);
 --ws-size-meta:var(--ws-type-scale-meta);
 --ws-size-control:var(--ws-type-scale-ui);
 --ws-subject-zh-size:var(--ws-type-scale-title-md);
 --ws-editorial-label-size:var(--ws-type-scale-meta);
}
:where(.ws-type-display-xl,[data-ws-type="display-xl"]){font-size:var(--ws-type-scale-display-xl);line-height:var(--ws-type-leading-display)}
:where(.ws-type-display-lg,[data-ws-type="display-lg"]){font-size:var(--ws-type-scale-display-lg);line-height:var(--ws-type-leading-display)}
:where(.ws-type-display-md,[data-ws-type="display-md"]){font-size:var(--ws-type-scale-display-md);line-height:.96}
:where(.ws-type-title-lg,[data-ws-type="title-lg"]){font-size:var(--ws-type-scale-title-lg);line-height:var(--ws-type-leading-title)}
:where(.ws-type-title-md,[data-ws-type="title-md"]){font-size:var(--ws-type-scale-title-md);line-height:var(--ws-type-leading-title)}
:where(.ws-type-title-sm,[data-ws-type="title-sm"]){font-size:var(--ws-type-scale-title-sm);line-height:1.18}
:where(.ws-type-reading,[data-ws-type="reading"]){font-size:var(--ws-type-scale-reading);line-height:var(--ws-type-leading-reading);max-width:var(--ws-type-measure-reading)}
:where(.ws-type-meta,[data-ws-type="meta"]){font-size:var(--ws-type-scale-meta);line-height:var(--ws-type-leading-ui)}
:where(.ws-type-air,[data-ws-weight="air"]){font-family:var(--ws-type-display-zh);font-weight:var(--ws-weight-zh-air)!important;font-synthesis:none}
:where(.ws-type-standard,[data-ws-weight="standard"]){font-weight:var(--ws-weight-zh-standard)!important;font-synthesis:none}
:where(.ws-type-anchor,[data-ws-weight="anchor"]){font-weight:var(--ws-weight-zh-anchor)!important;font-synthesis:none}

html{font-synthesis:none}


/* Sites family authority: family only; geometry remains owned by each surface. */
body.home,body.sites-surface{--serif:var(--ws-type-display-en);--zh:var(--ws-type-display-zh);--ww-en:var(--ws-type-display-en);--ww-zh:var(--ws-type-display-zh);}
body.home :where(h1,h2,h3,h4,.sites-home-nav,.sites-home-entry,.sites-home-section-head,.sites-layer-nav,.sites-layer-wordmark),
body.sites-surface :where(h1,h2,h3,h4,.sites-layer-nav,.sites-layer-wordmark,[class*="title-en"],[class*="label-en"],[lang^="en"]){font-family:var(--ws-type-display-en)!important;font-synthesis:none;}
body.home :where([lang^="zh"],.realm__zh),
body.sites-surface :where([lang^="zh"],.mersi-church,.sites-atlas-prologue){font-family:var(--ws-type-display-zh)!important;font-synthesis:none;}
body.sites-surface :where(.article-body,.reading-body,.longform,[data-reading="longform"]):lang(zh-Hant){font-family:var(--ws-type-reading-zh)!important;}

/* Editorial semantic roles: preserve source casing, never synthesize small caps. */
.ws-type-realm-zh{font-family:var(--ws-type-display-zh);font-size:var(--ws-realm-zh-size);font-weight:var(--ws-weight-zh-anchor);letter-spacing:var(--ws-realm-zh-tracking);line-height:1.08}
.ws-type-realm-en{font-family:var(--ws-type-display-en);font-size:var(--ws-realm-en-size);font-weight:400;letter-spacing:var(--ws-realm-en-tracking);line-height:.9}
.ws-type-subject-zh{font-family:var(--ws-type-display-zh);font-size:var(--ws-subject-zh-size);font-weight:var(--ws-weight-zh-air);line-height:1.12}
.ws-type-editorial-label{font-family:var(--ws-type-display-en-sc);font-size:var(--ws-editorial-label-size);font-weight:400;letter-spacing:var(--ws-editorial-label-tracking);font-variant-caps:normal;text-transform:none;font-synthesis:none}

/* Editorial italics: actual italic files, not skewed roman glyphs. */
.ws-type-italic-en,.ws-scripture-reference,.ws-scripture-reference :where(a,span,em,cite){font-family:var(--ws-type-display-en);font-style:italic;font-weight:400;font-synthesis:none}
.ws-scripture-reference{font-size:var(--ws-type-scripture-reference-size);letter-spacing:var(--ws-type-scripture-reference-tracking);font-variant-numeric:lining-nums tabular-nums;white-space:normal}
.ws-scripture-reference :where(sup){font:inherit;vertical-align:super;font-size:.75em}
.ws-type-quote-en{font-family:var(--ws-type-display-en);font-size:var(--ws-type-quote-en-size);font-style:italic;font-weight:400;line-height:1.42;font-synthesis:none}
.ws-type-editorial-label-italic{font-family:var(--ws-type-display-en-sc);font-style:italic;font-weight:400;font-synthesis:none}

/* Sitewide semantic weight roles, never bound to a single content category. */
.ws-type-air{font-family:var(--ws-type-display-zh);font-weight:var(--ws-weight-zh-air);font-synthesis:none}
.ws-type-standard{font-family:var(--ws-type-display-zh);font-weight:var(--ws-weight-zh-standard);font-synthesis:none}
.ws-type-anchor{font-family:var(--ws-type-display-zh);font-weight:var(--ws-weight-zh-anchor);font-synthesis:none}
