/**
 * Asset Flow public type system
 * Scope: body.public-theme only (theme4 marketing layout).
 * Loaded after Bootstrap. Does not apply to dashboard / admin.
 *
 * Scale (desktop): Hero/H1 40 · H2 32 · H3 24 · large 18 · body 16 · small 14 · caption/button 13
 * Extra: overline/kicker 11 (UI chrome — keeps badges from overflowing)
 */

.public-theme {
  --af-font: "Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --af-font-sans: var(--af-font);

  --af-fs-hero: clamp(1.75rem, 1.2rem + 2.5vw, 2.5rem);
  --af-fs-h1: var(--af-fs-hero);
  --af-fs-h2: clamp(1.5rem, 1.2rem + 1.4vw, 2rem);
  --af-fs-h3: clamp(1.25rem, 1.15rem + 0.5vw, 1.5rem);
  --af-fs-lg: 1.125rem;
  --af-fs-body: 1rem;
  --af-fs-sm: 0.875rem;
  --af-fs-caption: 0.8125rem;
  --af-fs-btn: 0.8125rem;
  --af-fs-overline: 0.6875rem;
  --af-fs-stat: clamp(1.75rem, 1.25rem + 2vw, 2.5rem);

  --af-fw-regular: 400;
  --af-fw-medium: 500;
  --af-fw-semibold: 600;
  --af-fw-bold: 700;

  --af-lh-hero: 1.15;
  --af-lh-heading: 1.25;
  --af-lh-body: 1.65;
  --af-lh-tight: 1.4;
  --af-lh-stat: 1.1;

  --af-ls-hero: -0.03em;
  --af-ls-heading: -0.02em;
  --af-ls-body: 0em;
  --af-ls-overline: 0.12em;
}

/* ── Base (overrides Bootstrap reboot inside public pages) ── */
.public-theme {
  font-family: var(--af-font);
  font-size: var(--af-fs-body);
  font-weight: var(--af-fw-regular);
  line-height: var(--af-lh-body);
  letter-spacing: var(--af-ls-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

.public-theme h1,
.public-theme .h1,
.public-theme .af-type-hero,
.public-theme .af-type-h1 {
  font-family: var(--af-font);
  font-size: var(--af-fs-hero);
  font-weight: var(--af-fw-bold);
  line-height: var(--af-lh-hero);
  letter-spacing: var(--af-ls-hero);
}

.public-theme h2,
.public-theme .h2,
.public-theme .af-type-h2 {
  font-family: var(--af-font);
  font-size: var(--af-fs-h2);
  font-weight: var(--af-fw-bold);
  line-height: var(--af-lh-heading);
  letter-spacing: var(--af-ls-heading);
}

.public-theme h3,
.public-theme .h3,
.public-theme .af-type-h3 {
  font-family: var(--af-font);
  font-size: var(--af-fs-h3);
  font-weight: var(--af-fw-semibold);
  line-height: var(--af-lh-heading);
  letter-spacing: var(--af-ls-heading);
}

.public-theme h4,
.public-theme h5,
.public-theme h6,
.public-theme .h4,
.public-theme .h5,
.public-theme .h6 {
  font-family: var(--af-font);
  font-weight: var(--af-fw-semibold);
  letter-spacing: var(--af-ls-heading);
  line-height: var(--af-lh-heading);
}

.public-theme h4,
.public-theme .h4 { font-size: var(--af-fs-lg); }
.public-theme h5,
.public-theme .h5 { font-size: var(--af-fs-body); }
.public-theme h6,
.public-theme .h6 { font-size: var(--af-fs-sm); }

.public-theme p,
.public-theme .af-type-body {
  font-family: var(--af-font);
  font-size: var(--af-fs-body);
  font-weight: var(--af-fw-regular);
  line-height: var(--af-lh-body);
  letter-spacing: var(--af-ls-body);
}

.public-theme .af-type-lg,
.public-theme .lead {
  font-family: var(--af-font);
  font-size: var(--af-fs-lg);
  font-weight: var(--af-fw-regular);
  line-height: var(--af-lh-body);
}

.public-theme small,
.public-theme .small,
.public-theme .af-type-sm {
  font-family: var(--af-font);
  font-size: var(--af-fs-sm);
  font-weight: var(--af-fw-regular);
  line-height: var(--af-lh-tight);
}

.public-theme .af-type-caption,
.public-theme figcaption {
  font-family: var(--af-font);
  font-size: var(--af-fs-caption);
  font-weight: var(--af-fw-medium);
  line-height: var(--af-lh-tight);
}

.public-theme .af-type-overline,
.public-theme .af-type-kicker {
  font-family: var(--af-font);
  font-size: var(--af-fs-overline);
  font-weight: var(--af-fw-semibold);
  letter-spacing: var(--af-ls-overline);
  line-height: var(--af-lh-tight);
  text-transform: uppercase;
}

.public-theme .af-type-btn,
.public-theme .btn {
  font-family: var(--af-font);
  font-size: var(--af-fs-btn);
  font-weight: var(--af-fw-semibold);
  letter-spacing: var(--af-ls-body);
  line-height: var(--af-lh-tight);
}

.public-theme label,
.public-theme .form-label {
  font-family: var(--af-font);
  font-size: var(--af-fs-sm);
  font-weight: var(--af-fw-medium);
}

.public-theme .form-control,
.public-theme .form-select {
  font-family: var(--af-font);
  font-size: var(--af-fs-sm);
}

/* Prices, stats, counters — lining figures so digits align */
.public-theme .af-type-num,
.public-theme .stat-number,
.public-theme .counter-number,
.public-theme .trust-num,
.public-theme .af-metric strong,
.public-theme [data-count],
.public-theme [data-target] {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1, "kern" 1;
  font-weight: var(--af-fw-bold);
  letter-spacing: var(--af-ls-heading);
  line-height: var(--af-lh-stat);
}

@media (max-width: 575.98px) {
  .public-theme .af-type-hero,
  .public-theme .af-type-h1,
  .public-theme h1 {
    overflow-wrap: anywhere;
    word-break: break-word;
  }
}

/* ── Role maps: known public headings/copy (font only, !important beats page <style>) ── */
.public-theme .banner-title,
.public-theme .ab-hero h1,
.public-theme .af-page-hero h1,
.public-theme .af-art-hero h1,
.public-theme .af-svc-hero h1,
.public-theme .pp-hero h1,
.public-theme .ftp-hero h1,
.public-theme .regsec-title,
.public-theme .blog-banner__title,
.public-theme .tc-hero__title,
.public-theme .pp-title,
.public-theme .ip-hero-title,
.public-theme .contact-title,
.public-theme .faq-head__title,
.public-theme .tst-head__title,
.public-theme .trust-title,
.public-theme .txn-title,
.public-theme .inv-hall-root .sp_site_title,
.public-theme .nl-root .sp_site_title.nl-title,
.public-theme .ft-feature-title.sp_site_title,
.public-theme .hiw-title.sp_site_title,
.public-theme .pf-sec-title,
.public-theme .af-ins-head h2 {
  font-family: var(--af-font) !important;
  font-size: var(--af-fs-hero) !important;
  font-weight: var(--af-fw-bold) !important;
  line-height: var(--af-lh-hero) !important;
  letter-spacing: var(--af-ls-hero) !important;
}

.public-theme .regsec-section-title,
.public-theme .tc-section__title,
.public-theme .pp-content h2,
.public-theme .ab-block-head h2,
.public-theme .pf-ov-title,
.public-theme .pf-calc-title,
.public-theme .ip-ref-title,
.public-theme .stats-title {
  font-family: var(--af-font) !important;
  font-size: var(--af-fs-h2) !important;
  font-weight: var(--af-fw-bold) !important;
  line-height: var(--af-lh-heading) !important;
  letter-spacing: var(--af-ls-heading) !important;
}

.public-theme .af-svc-card h2,
.public-theme .blog-card__title,
.public-theme .ab-card h3,
.public-theme .ab-value h3,
.public-theme .ab-sec h2,
.public-theme .pp-sec h2,
.public-theme .ftp-sec h2,
.public-theme .pp-content h3,
.public-theme .pp-card-title,
.public-theme .af-ins-body h3,
.public-theme .trust-card-title {
  font-family: var(--af-font) !important;
  font-size: var(--af-fs-h3) !important;
  font-weight: var(--af-fw-semibold) !important;
  line-height: var(--af-lh-heading) !important;
  letter-spacing: var(--af-ls-heading) !important;
}

.public-theme .af-page-kicker,
.public-theme .af-art-kicker,
.public-theme .af-svc-kicker,
.public-theme .ab-kicker,
.public-theme .pp-kicker,
.public-theme .ftp-kicker,
.public-theme .af-ins-kicker,
.public-theme .eyebrow-text,
.public-theme .faq-eyebrow__text,
.public-theme .tst-eyebrow__text,
.public-theme .trust-eyebrow__text,
.public-theme .txn-eyebrow__text,
.public-theme .blog-banner__etext,
.public-theme .tc-hero__eyebrow,
.public-theme .pp-eyebrow,
.public-theme .ft-feature-eyebrow,
.public-theme .stats-eyebrow,
.public-theme .afl-ft-h,
.public-theme .contact-subtitle,
.public-theme .contact-form-label,
.public-theme .contact-social-label {
  font-family: var(--af-font) !important;
  font-size: var(--af-fs-overline) !important;
  font-weight: var(--af-fw-semibold) !important;
  letter-spacing: var(--af-ls-overline) !important;
}

.public-theme .ab-lead,
.public-theme .ab-lead p,
.public-theme .pp-hero-lead,
.public-theme .ftp-hero-lead,
.public-theme .regsec-subtitle,
.public-theme .regsec-prose,
.public-theme .pp-sec p,
.public-theme .ftp-sec p,
.public-theme .af-art-body p,
.public-theme .af-svc-card p,
.public-theme .afl-ft-desc,
.public-theme .nl-root .sp_site_header p.nl-desc {
  font-family: var(--af-font) !important;
  font-size: var(--af-fs-body) !important;
  font-weight: var(--af-fw-regular) !important;
  line-height: var(--af-lh-body) !important;
}

.public-theme .af-page-crumb,
.public-theme .af-art-crumb,
.public-theme .af-svc-crumb,
.public-theme .afl-ft-nav li a,
.public-theme .afl-ft-pages li a,
.public-theme .af-nav-link,
.public-theme .contact-info-content p,
.public-theme .contact-social-link {
  font-family: var(--af-font) !important;
  font-size: var(--af-fs-sm) !important;
  font-weight: var(--af-fw-medium) !important;
}

.public-theme .af-btn-primary,
.public-theme .afl-ft-reg {
  font-family: var(--af-font) !important;
  font-size: var(--af-fs-btn) !important;
  font-weight: var(--af-fw-semibold) !important;
}

.public-theme .ftp-num,
.public-theme .pp-num,
.public-theme .af-type-num,
.public-theme .stat-number,
.public-theme .counter-number,
.public-theme .trust-num,
.public-theme .inv-stat-num,
.public-theme .af-metric strong {
  font-variant-numeric: tabular-nums;
  font-feature-settings: "tnum" 1;
}

.public-theme .stat-number,
.public-theme .counter-number,
.public-theme .trust-num,
.public-theme .inv-stat-num,
.public-theme .af-metric strong {
  font-size: var(--af-fs-stat) !important;
}
