/* ==========================================================================
   CANONICAL TYPOGRAPHY SYSTEM
   Source of truth: TYPOGRAPHY.md
   Loaded last so shared typography roles remain consistent across templates.
   ========================================================================== */
:root{
  --type-display:50px;
  --type-page-title:40px;
  --type-section-title:24px;
  --type-subheading:19px;
  --type-card-title:15px;
  --type-article-card-title:14px;
  --type-lead:16px;
  --type-body:15px;
  --type-article-body:14px;
  --type-body-small:13px;
  --type-ui:13px;
  --type-nav:15px;
  --type-search:14px;
  --type-toc:14px;
  --type-meta:12px;
  --type-label:11px;
  --type-footer:12px;

  --leading-display:.98;
  --leading-page-title:1.06;
  --leading-section:1.15;
  --leading-subheading:1.25;
  --leading-lead:1.5;
  --leading-body:1.65;
  --leading-small:1.45;
  --leading-ui:1.35;
}

body{
  font-size:var(--type-body);
  line-height:var(--leading-body);
}

/* Global chrome — exactly the same on every page. */
.nav{
  font-size:var(--type-nav);
  line-height:1.25;
  font-weight:700;
  letter-spacing:0;
}
.top-search input{
  font-size:var(--type-search);
  line-height:var(--leading-ui);
  letter-spacing:0;
}
.breadcrumbs{
  font-size:var(--type-meta);
  line-height:var(--leading-ui);
}
.footer-brand p,
.footer-row>div:not(:first-child){
  font-size:var(--type-footer);
  line-height:var(--leading-small);
}
.footer-row b,
.footer-row>div:not(:first-child)>b{
  font-size:var(--type-ui);
  line-height:var(--leading-ui);
  font-weight:700;
}
.footer-bottom{
  font-size:var(--type-label);
  line-height:var(--leading-small);
}

/* Homepage hierarchy — keep the approved composition, normalize text roles. */
.hero h1{
  font-size:var(--type-display);
  line-height:var(--leading-display);
  font-weight:900;
}
.hero-copy>p{
  font-size:var(--type-lead);
  line-height:1.35;
}
.big-search input,
.big-search button,
.picker-row select,
.picker-row>button{
  font-size:var(--type-ui);
}
.chips small,
.chips button,
.hero-points p,
.hero-points p b,
.hero-points p span{
  font-size:var(--type-meta);
  line-height:var(--leading-ui);
}
.section-title h2,
.picker h2,
.principles h2,
.trust-heading h2,
.frequent-questions-head h2{
  font-size:var(--type-section-title);
  line-height:var(--leading-section);
  font-weight:900;
}
.section-title>a{
  font-size:var(--type-meta);
  line-height:var(--leading-ui);
  font-weight:700;
}
.category h3,
.article-card h3,
.comparisons h3,
.how-step b,
.how-flow .how-step b,
.principle b,
.trust-item b,
.frequent-questions-grid b,
.recommend-placeholder b{
  font-size:var(--type-card-title);
  line-height:1.25;
  font-weight:700;
}
.category p,
.article-card p,
.comparisons p,
.how-step p,
.how-flow .how-step p,
.principle p,
.trust-item p,
.trust-heading p,
.trust-opinion p,
.frequent-questions-head p,
.recommend-placeholder p,
.picker-left>p{
  font-size:var(--type-body-small);
  line-height:var(--leading-small);
}
.picker-row label b{
  font-size:var(--type-meta);
  line-height:var(--leading-ui);
}
.picker-row label i{
  font-size:var(--type-ui);
}
.trust-heading>span,
.trust-opinion span,
.frequent-questions-head>span,
.frequent-questions-grid small,
.compare-type,
#comparisons .compare-type,
.article-img>b,
.recommend>span{
  font-size:var(--type-label);
  line-height:1.2;
}
.trust-opinion b{
  font-size:var(--type-card-title);
  line-height:1.25;
}
.recommend h3{
  font-size:var(--type-subheading);
  line-height:1.2;
}
.recommend ul{
  font-size:var(--type-body-small);
  line-height:var(--leading-small);
}

/* Shared page title system: archives, search, service pages, project, article. */
.archive-visual-hero h1,
.search-head h1,
.standard-page-hero h1,
.project-hero h1,
.article-hero h1{
  font-size:var(--type-page-title);
  line-height:var(--leading-page-title);
  font-weight:900;
  letter-spacing:-.75px;
}
.archive-visual-hero p,
.archive-hero p,
.standard-page-hero p,
.project-hero p,
.article-dek{
  font-size:var(--type-lead);
  line-height:var(--leading-lead);
}
.archive-visual-hero>div>span,
.search-head>span,
.standard-page-hero>span,
.project-hero-copy>span,
.project-values article span,
.project-section-head>span,
.contact-main>span,
.project-contact-strip span,
.archive-sidebar>span,
.archive-side-box>span,
.archive-cta-box>span,
.article-kicker,
.article-section-heading>span,
.article-side-card>span,
.article-summary>div>span,
.article-related-card small{
  font-size:var(--type-label);
  line-height:1.2;
  font-weight:900;
}

/* Archive + search cards. */
.archive-card-body h2,
.search-result-body h2{
  font-size:var(--type-card-title);
  line-height:1.25;
}
.archive-card-body p,
.search-result-body p,
.archive-cta-box p,
.archive-sidebar a small{
  font-size:var(--type-body-small);
  line-height:var(--leading-small);
}
.archive-card-meta,
.search-result-meta,
.search-results-summary,
.archive-card-body small,
.search-result-body small{
  font-size:var(--type-meta);
  line-height:var(--leading-ui);
}
.archive-sidebar a b,
.archive-side-box a{
  font-size:var(--type-ui);
  line-height:var(--leading-ui);
}
.archive-empty b{
  font-size:var(--type-subheading);
  line-height:var(--leading-subheading);
}
.archive-empty p{
  font-size:var(--type-body);
  line-height:var(--leading-body);
}

/* Project, contacts and ordinary service pages. */
.project-values h2,
.project-method-grid h3,
.contact-notes b{
  font-size:var(--type-card-title);
  line-height:1.25;
}
.project-values p,
.project-method-grid p,
.contact-notes p{
  font-size:var(--type-body-small);
  line-height:var(--leading-small);
}
.project-section-head h2,
.project-contact-strip h2{
  font-size:var(--type-section-title);
  line-height:var(--leading-section);
}
.project-section-head p,
.project-contact-strip p,
.contact-main p{
  font-size:var(--type-body);
  line-height:var(--leading-body);
}
.contact-main h2{
  font-size:var(--type-section-title);
  line-height:var(--leading-section);
}
.project-contact-strip>a,
.primary-button{
  font-size:var(--type-ui);
  line-height:var(--leading-ui);
}
.standard-page-content,
.service-info-content{
  font-size:var(--type-body);
  line-height:var(--leading-body);
}
.standard-page-content h2,
.service-info-content h2{
  font-size:var(--type-section-title);
  line-height:var(--leading-section);
}
.standard-page-content h3{
  font-size:var(--type-subheading);
  line-height:var(--leading-subheading);
}

/* Article: same scale as the rest of the site, never a separate micro-system. */
.article-meta span{
  font-size:var(--type-meta);
  line-height:var(--leading-ui);
}
.article-toc>strong,
.article-toc-head strong{
  font-size:var(--type-lead);
  line-height:1.25;
  font-weight:700;
}
.article-toc-list a{
  font-size:var(--type-toc);
  line-height:1.55;
  letter-spacing:0;
  font-weight:500;
}
.article-side-card li,
.article-side-method p,
.article-side-method a{
  font-size:var(--type-meta);
  line-height:var(--leading-small);
}
.article-summary p{
  font-size:var(--type-body);
  line-height:var(--leading-body);
}
.article-section-heading h2{
  font-size:var(--type-section-title)!important;
  line-height:var(--leading-section);
}
.article-section-heading p{
  font-size:var(--type-body-small);
  line-height:var(--leading-small);
}
.article-choice-card h3,
.article-tool-card h3{
  font-size:var(--type-article-card-title);
  line-height:1.25;
}
.article-choice-card p,
.article-tool-card>p{
  font-size:var(--type-body-small);
  line-height:var(--leading-small);
}
.article-choice-card a,
.article-tool-card li{
  font-size:var(--type-meta);
  line-height:var(--leading-small);
}
.article-step-number{
  font-size:var(--type-meta);
}
.article-step-card h3{
  font-size:var(--type-article-card-title);
  line-height:1.25;
}
.article-step-card p{
  font-size:var(--type-meta);
  line-height:var(--leading-small);
}
.article-body .entry-content{
  font-size:var(--type-article-body);
  line-height:var(--leading-body);
}
.article-body .entry-content h2{
  font-size:var(--type-section-title);
  line-height:var(--leading-section);
}
.article-body .entry-content h3{
  font-size:var(--type-subheading);
  line-height:var(--leading-subheading);
}
.article-body .entry-content .wp-block-table table{
  font-size:var(--type-meta);
  line-height:var(--leading-small);
}
.article-buy-box h2{
  font-size:var(--type-section-title)!important;
  line-height:var(--leading-section);
}
.article-buy-box p,
.article-faq details p{
  font-size:var(--type-body-small);
  line-height:var(--leading-small);
}
.article-faq summary{
  font-size:var(--type-card-title);
  line-height:1.3;
}
.article-related-card b{
  font-size:var(--type-article-card-title);
  line-height:1.25;
}
.article-related-card span{
  font-size:var(--type-meta);
  line-height:var(--leading-ui);
}


@media(max-width:600px){
  :root{
    --type-display:36px;
    --type-page-title:30px;
    --type-section-title:22px;
    --type-subheading:18px;
    --type-card-title:14px;
    --type-article-card-title:13px;
    --type-lead:15px;
    --type-body:15px;
    --type-body-small:12.5px;
    --type-ui:13px;
    --type-nav:14px;
    --type-search:13px;
    --type-toc:14px;
    --type-meta:11.5px;
    --type-label:10.5px;
    --type-footer:11.5px;
  }

  .hero h1{
    line-height:1.02;
  }
  .article-choice-card h3,
  .article-tool-card h3,
  .article-step-card h3{
    font-size:var(--type-article-card-title);
  }
  .article-step-card p{
    font-size:var(--type-body-small);
  }
}
