/* Shared EN / BM / CN type scale. Loaded last on every marketing and legal page.
   Component roles stay identical across languages; CJK display text has its own
   measure so full phrases fit without shrinking reading text on small screens. */
:root {
  --type-reading: 1rem;
  --type-copy: .9375rem;
  --type-label: .8125rem;
  --type-nav: .9375rem;
  --type-page: clamp(2.75rem, 6vw, 5.5rem);
  --type-section: clamp(2rem, 4.8vw, 4rem);
  --type-panel: clamp(1.875rem, 3.3vw, 2.75rem);
  --type-card: clamp(1.5rem, 2.3vw, 2rem);
  --type-heading-leading: 1.08;
  --type-card-leading: 1.2;
}

:root:lang(zh) {
  --type-page: clamp(2rem, 4.4vw, 4rem);
  --type-section: clamp(1.75rem, 3.4vw, 2.75rem);
  --type-panel: clamp(1.625rem, 2.8vw, 2.25rem);
  --type-card: clamp(1.25rem, 2.1vw, 1.75rem);
  --type-heading-leading: 1.3;
  --type-card-leading: 1.4;
}

:root body[data-type-scale] { font-size: var(--type-reading); }
:root body[data-type-scale] :is(h1, h2, h3) { text-wrap: balance; }
:root body[data-type-scale] p { text-wrap: pretty; }

/* Reading copy: same rhythm in heroes, explanatory sections and legal pages. */
:root body[data-type-scale] :is(
  .guide-hero__copy > p:not(.guide-eyebrow),
  .games-page-hero__copy > p:not(.games-heading__eyebrow),
  .games-heading__intro > p, .games-directory__heading > p,
  .guide-section-heading > p, .guide-panel__copy, .guide-cta p:last-child,
  .vip-heading__copy > p, .vip-showcase__copy > p,
  .access-copy > p, .trust-heading > p, .editorial-intro > p,
  .editorial-panel p, .faq-intro > p, .faq-list details p,
  .trust-hub__intro > p, .final-cta p, .legal-hero p:not(.kicker), .legal-content p, .legal-content li
) {
  font-size: var(--type-reading);
  font-weight: 500;
  line-height: 1.8;
}

:root body[data-type-scale] :is(
  .guide-card p, .guide-logo-panel > div:first-child > p:last-child,
  .guide-steps p, .guide-checklist li, .help-topic p,
  .vip-benefit p, .trust-item p, .trust-hub-card p,
  .footer-brand p, .footer-contact-card p, .payment-types span, .journey b,
  .terms-list li, .games-page-note p
),
:root body[data-type-scale] .games-section .game-poster .game-panel__copy p,
:root body[data-type-scale] .games-directory .games-directory-card p {
  font-size: var(--type-copy);
  font-weight: 500;
  line-height: 1.75;
}

/* Preserve yellow accents and light legal-page backgrounds; brighten only
   muted reading copy sitting on dark cards. */
:root body[data-type-scale] :is(
  .guide-hero__copy > p:not(.guide-eyebrow), .guide-section-heading > p,
  .guide-card p, .guide-logo-panel > div:first-child > p:last-child,
  .guide-panel__copy, .guide-steps p, .help-topic p, .guide-cta p:last-child,
  .vip-benefit p, .trust-item p, .trust-hub-card p, .footer-contact-card p,
  .games-page-hero__copy > p:not(.games-heading__eyebrow),
  .games-heading__intro > p, .games-directory__heading > p, .games-page-note p
),
:root body[data-type-scale] .games-section .game-poster .game-panel__copy p,
:root body[data-type-scale] .games-directory .games-directory-card p { color: #cbd0cd; }

/* Small text remains secondary, never miniature. */
:root body[data-type-scale] :is(
  .guide-eyebrow, .section-kicker, .games-heading__eyebrow, .vip-kicker,
  .trust-hub__eyebrow, .vip-showcase__index, .vip-benefit > span,
  .games-directory-card__tag, .games-page-note > div > span,
  .games-page-hero__frame figcaption, .guide-card > span, .help-topic > span,
  .guide-hero__emblem > p, .guide-hero__emblem > small,
  .guide-trust-groups span, .guide-steps li > span,
  .trust-hub-card__topline, .trust-hub-card__topline span,
  .trust-hub__note, .vip-disclaimer, .footer-contact-card span,
  .footer-access-card__eyebrow, .footer-legal, .games-page-footer__legal,
  .games-page-hero__actions > span, .mobile-cta > span,
  .responsible-bar__inner, .hero-banner__eyebrow, .hero-banner__fineprint,
  .hero-count, .game-poster__number, .card-glow-toggle,
  .legal-notice, .age-mark, .kicker, .legal-aside p, .legal-footer__inner,
  .callout strong
) {
  font-size: var(--type-label);
  line-height: 1.6;
}
:root body[data-type-scale] :is(
  .hero-banner__fineprint, .vip-disclaimer, .footer-legal,
  .games-page-footer__legal, .games-page-hero__actions > span,
  .guide-hero__emblem > small, .trust-hub__note, .mobile-cta > span
) { color: #bfc6c1; font-weight: 500; }

/* Navigation and actions share readable labels and comfortable touch targets. */
:root body[data-type-scale] :is(
  .button, .hero-banner__cta, .guide-switcher a, .category-runway a,
  .guide-text-link, .games-directory-card__link, .media-link,
  .vip-text-link, .trust-hub-card__link, .games-page-note > a,
  .footer-link-group a, .games-page-footer__inner nav a, .games-page-back,
  .legal-aside a, .legal-footer a, .back-link, .text-action, .trust-help-links span
) { font-size: var(--type-nav); font-weight: 600; line-height: 1.5; }
:root body[data-type-scale] .games-section .game-poster .media-link,
:root body[data-type-scale] .games-directory .games-directory-card__link {
  font-size: var(--type-nav);
  line-height: 1.5;
}
:root body[data-type-scale] :is(.button, .hero-banner__cta, .guide-switcher a, .category-runway a) {
  min-height: 48px;
}
:root body[data-type-scale] :is(.desktop-nav a, .site-header .button--small) {
  font-size: .875rem;
  line-height: 1.5;
  min-height: 44px;
}
:root body[data-type-scale] .desktop-nav a { padding-inline: 10px; }
:root body[data-type-scale] .language-select select { font-size: .875rem; min-width: 34px; }
:root body[data-type-scale] :is(.category-runway a, .guide-switcher a) {
  flex-basis: 132px;
  min-width: max-content;
  padding: 13px 16px;
  white-space: nowrap;
}
:root body[data-type-scale] .category-runway__label { font-size: var(--type-label); line-height: 1.5; }
:root body[data-type-scale] .games-page-hero__actions { flex-wrap: wrap; }
:root body[data-type-scale] .guide-steps b { font-size: var(--type-reading); line-height: 1.5; }
:root body[data-type-scale] .faq-list summary { font-size: var(--type-reading); line-height: 1.65; }

/* Headings are consistent by role, not one size for every component. */
:root body[data-type-scale] :is(.guide-hero, .games-page-hero) h1 {
  font-size: var(--type-page);
  line-height: var(--type-heading-leading);
}
:root body[data-type-scale] :is(
  .section-heading, .games-heading, .vip-heading, .access-copy,
  .trust-heading, .editorial-intro, .faq-intro, .trust-hub__intro,
  .games-directory__heading, .guide-section-heading
) h2 { font-size: var(--type-section); line-height: var(--type-heading-leading); }
:root body[data-type-scale] :is(.guide-panel, .guide-cta, .games-page-note, .final-cta, .promotion-panel) h2,
:root body[data-type-scale] .guide-logo-panel h3 {
  font-size: var(--type-panel);
  line-height: var(--type-heading-leading);
}
:root body[data-type-scale] :is(.game-poster, .games-directory-card, .guide-card, .help-topic, .vip-benefit, .trust-hub-card) h3,
:root body[data-type-scale] .trust-licence__body h3 {
  font-size: var(--type-card);
  line-height: var(--type-card-leading);
}
:root body[data-type-scale] :is(.trust-item, .editorial-panel, .footer-contact-card) h3 {
  font-size: 1.125rem;
  line-height: 1.45;
}
:root:lang(zh) body[data-type-scale] :is(.guide-hero, .games-page-hero) h1,
:root:lang(zh) body[data-type-scale] main h2 { font-weight: 650; }
:root:lang(zh) body[data-type-scale] main h3 { font-weight: 600; }

/* The banner keeps its artwork-specific display scale; supporting text uses
   the same scale as the rest of the site, including the full legal notice. */
:root body[data-type-scale] .hero-banner__text { font-size: var(--type-copy); line-height: 1.65; }
:root body[data-type-scale] .hero-banner__cta { padding: 12px 18px; }

:root body[data-type-scale] main > .quick-path .quick-path__label {
  font-size: var(--type-label);
  line-height: 1.5;
}
:root body[data-type-scale] main > .quick-path b { font-size: var(--type-nav); line-height: 1.4; }
:root body[data-type-scale] main > .quick-path small {
  color: #bfc6c1;
  font-size: var(--type-label);
  line-height: 1.5;
  overflow-wrap: normal;
}
:root body[data-type-scale] main > .quick-path a { min-height: 88px; }

/* Footer cards grow with their copy instead of squeezing the words. */
:root body[data-type-scale] .footer-access-card strong { font-size: 1.625rem; line-height: 1.2; }
:root:lang(zh) body[data-type-scale] .footer-access-card strong { font-size: 1.375rem; line-height: 1.4; }
:root body[data-type-scale] .footer-access-card > span:not(.footer-access-card__eyebrow):not(.footer-access-card__action) {
  font-size: var(--type-label);
  line-height: 1.65;
}
:root body[data-type-scale] .footer-access-card__action {
  min-height: 44px;
  font-size: var(--type-label) !important;
  line-height: 1.5 !important;
}
:root body[data-type-scale] .footer-link-group h3 { font-size: 1.5rem; line-height: 1.35; }
:root body[data-type-scale] .footer-contact-card--support { grid-template-columns: 48px minmax(0, 1fr); }
:root body[data-type-scale] .footer-contact-card--support .button { grid-column: 2; justify-self: start; }

/* Legal pages retain their light reading surface and existing font family. */
:root body[data-type-scale] .legal-hero h1 { font-size: clamp(2.25rem, 5vw, 4.5rem); line-height: 1.15; }
:root body[data-type-scale] .legal-content h2 { font-size: clamp(1.625rem, 3vw, 2.25rem); line-height: 1.3; }
:root body[data-type-scale] .legal-content h3 { font-size: 1.25rem; line-height: 1.4; }

@media (max-width: 1200px) {
  :root body[data-type-scale] main > .quick-path { display: flex; overflow-x: auto; }
  :root body[data-type-scale] main > .quick-path a { flex: 1 0 195px; }
  :root body[data-type-scale] main > .quick-path .quick-path__label { flex: 0 0 118px; }
  :root body[data-type-scale] .footer-contact-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  :root body[data-type-scale] .footer-contact-card--support { grid-column: 1 / -1; }
}

@media (max-width: 1040px) {
  :root body[data-type-scale] .desktop-nav { display: none; }
  :root body[data-type-scale] .site-header .button--small { flex-shrink: 0; }
  :root body[data-type-scale] .game-poster--lead .game-panel__copy { display: block; }
  :root body[data-type-scale] .game-poster--lead .media-link { margin-top: 12px; }
}

@media (max-width: 760px) {
  :root { --type-page: clamp(2.75rem, 11vw, 4rem); --type-section: clamp(2rem, 9vw, 3rem); }
  :root:lang(zh) { --type-page: clamp(2rem, 8.4vw, 2.5rem); --type-section: clamp(1.75rem, 7.6vw, 2.25rem); }
  :root body[data-type-scale] .site-header .button--small { padding-inline: 12px; }
  :root body[data-type-scale] .mobile-cta > span { min-width: 0; line-height: 1.5; }
  :root body[data-type-scale] .mobile-cta > .button { flex: 0 0 auto; max-width: 60%; }
  :root body[data-type-scale] .responsible-bar__inner { flex-wrap: wrap; }
  :root body[data-type-scale] .games-page-hero__actions > span { flex-basis: 100%; }
  :root body[data-type-scale] .hero-banner__content { padding-bottom: 22px; }
  :root body[data-type-scale] .footer-contact-card--support { grid-template-columns: 36px minmax(0, 1fr); }
}

@media (max-width: 700px) {
  :root body[data-type-scale] .footer-contact-grid { grid-template-columns: 1fr; }
}
