/* Designable typography islands: scoped opt-out for artwork, not controls. */
/* Westside Design OS: one typography enforcement entrypoint.
   Scope by language of each text run, not the document's inherited language.
   Artwork inside marked designable zones is exempt; controls remain governed. */
:root{
 --ws-type-en:var(--ws-type-display-en,"Bodoni Moda",serif);
 --ws-type-zh:var(--ws-type-display-zh,"Chiron Hei HK WS",sans-serif);
}
body[data-ws-scope] :is(
 h1:not([data-ws-type-role="first-layer-title"]),h2:not([data-ws-type-role="first-layer-title"]),h3,h4,h5,h6,.sites-layer-title,.sites-layer-section-title,
 .section-atlas__title,.atlas-entry__title,.sites-church-title,
 .sites-church-heading,.sites-surface-title,.sites-editorial-title
):not([data-ws-typography-lock]):not(:where([data-ws-designable], [data-ws-designable] *)){
 font-family:var(--ws-type-zh)!important;
 font-weight:var(--ws-weight-air,200)!important;
 font-synthesis:none;
}
body[data-ws-scope] :is(
 h1,h2,h3,h4,h5,h6,.sites-layer-title,.sites-layer-section-title,
 .section-atlas__title,.atlas-entry__title,.sites-church-title,
 .sites-church-heading,.sites-surface-title,.sites-editorial-title
):not(:where([data-ws-designable], [data-ws-designable] *)) :is([lang="en"],[lang^="en-"],.ws-type-pair-en,.sites-layer-en,.editorial-en){
 font-family:var(--ws-type-en)!important;
 font-weight:400!important;font-synthesis:none;
}
body[data-ws-scope] :is(
 h1,h2,h3,h4,h5,h6,.sites-layer-title,.sites-layer-section-title,
 .section-atlas__title,.atlas-entry__title,.sites-church-title,
 .sites-church-heading,.sites-surface-title,.sites-editorial-title
):not(:where([data-ws-designable], [data-ws-designable] *)) :is([lang="zh"],[lang^="zh-"],.ws-type-pair-zh,.sites-layer-zh,.editorial-zh){
 font-family:var(--ws-type-zh)!important;
 font-weight:var(--ws-weight-air,200)!important;font-synthesis:none;
}
body[data-ws-scope] :is(
 .sites-layer-kicker,.sites-layer-eyebrow,.section-atlas__eyebrow,
 .editorial-kicker,.sites-layer-section-nav,.sites-layer-section-nav a,
 .sites-layer-header,.sites-layer-footer,.sites-editorial-meta
):not(:where([data-ws-designable], [data-ws-designable] *)) {
 font-family:var(--ws-type-zh);font-weight:var(--ws-weight-air,200);font-synthesis:none;
}
body[data-ws-scope] :is(
 .article-body,.prose,.reading-body,.sites-article-body
):not(:where([data-ws-designable], [data-ws-designable] *)) :is(p,li,blockquote):not(:where([data-ws-designable], [data-ws-designable] *)){
 font-family:var(--ws-type-reading-zh,"Noto Serif TC",serif);
}

/* The language attribute on the heading itself must win over the page language. */
body[data-ws-scope] :is(h1,h2,h3,h4,h5,h6)[lang="en"]:not(:where([data-ws-designable], [data-ws-designable] *)){
 font-family:var(--ws-type-en)!important;font-weight:var(--ws-weight-standard,400)!important;
}
body[data-ws-scope] :is(h1,h2,h3,h4,h5,h6)[lang="zh-Hant"]:not(:where([data-ws-designable], [data-ws-designable] *)){
 font-family:var(--ws-type-zh)!important;
}

/* Functional UI remains in the OS. A speaker poster can itself be a
   button: its art-directed lettering must NOT be normalized as UI. */
body[data-ws-scope] [data-ws-designable] :is(nav,nav *,button:not(.olive-speaker-card):not([data-ws-designable]),[role="button"]:not(.olive-speaker-card):not([data-ws-designable])){
 font-family:var(--ws-type-zh);
 font-synthesis:none;
}
body[data-ws-scope] [data-ws-designable] :is(nav,button:not(.olive-speaker-card):not([data-ws-designable]),[role="button"]:not(.olive-speaker-card):not([data-ws-designable]))[lang="en"]{
 font-family:var(--ws-type-en);
}

/* Explicit section identities are the heaviest Chinese display role.
   Never infer this from h1/h2: editorial headings remain independent. */
body[data-ws-scope] :is(.ws-section-name-zh,[data-ws-type-role="section-name"],.ws-surface-heading__zh):not(:where([data-ws-designable], [data-ws-designable] *)){
 font-family:var(--ws-type-zh)!important;
 font-weight:var(--ws-weight-section,900)!important;
 font-synthesis:none;
}

/* First-layer identities are editorial titles, not generic UI headings.
   Preserve the source italic emphasis and exact original font sizes. */
body[data-ws-scope="home"] .sites-home-realms .sites-home-realm > h2[lang="en"]{
 font-family:var(--ws-type-display-en,"Bodoni Moda",serif)!important;
 font-weight:400!important;
 font-synthesis:none;
}
body[data-ws-scope="home"] .sites-home-realms .sites-home-realm > h2[lang="en"] > em{
 font-family:inherit!important;
 font-weight:400!important;
 font-style:italic!important;
 font-synthesis:none;
}
