/* ============================================================================
   TYPE SCALE PREVIEW (desktop only) — proposal, 16 Sep 2026
   One file, loaded last. At most three sizes per kind of text. Sizes are the
   values on a 16-inch MacBook Pro; below ~1280px wide they ease down, as the
   site already does. Phones (980px and below) are not affected at all.
   Not part of the live site.
   ============================================================================ */
@media (min-width:981px){
  :root{
    /* body text: 3 sizes */
    --ts-intro:   clamp(16px, 1.41vw, 18px);
    --ts-body:    clamp(15px, 1.25vw, 16px);
    --ts-small:   13.5px;
    /* section headings: 3 sizes */
    --ts-h2-lg:   clamp(42px, 4.7vw, 60px);
    --ts-h2:      clamp(30px, 3.44vw, 44px);
    --ts-h2-sm:   clamp(26px, 2.66vw, 34px);
    /* page headline: 1 size */
    --ts-h1:      clamp(40px, 4.38vw, 56px);
    /* card and step titles: 3 sizes */
    --ts-card-s:  clamp(18px, 1.56vw, 20px);
    --ts-card-m:  clamp(24px, 2.35vw, 30px);
    --ts-card-l:  clamp(32px, 3.44vw, 44px);
    /* labels and tags: 3 sizes */
    --ts-label:   11.5px;
    --ts-tag:     10.5px;
    --ts-pill:    12px;
    /* buttons and links */
    --ts-button:  15px;
    --ts-filter:  13.5px;
    /* figures */
    --ts-figure:  clamp(21px, 1.88vw, 24px);
  }

  /* ---- page headlines ---- */
  .sh h1, .th h1, .th-title, .in-hero h1, .ct-top h1{font-size:var(--ts-h1) !important;}

  /* ---- section headings: large ---- */
  .probs-head h2, .probs-list .probs-head h2,
  #trial h2, #trial.fin h2, #svc-final h2{font-size:var(--ts-h2-lg) !important;}

  /* ---- section headings: standard ---- */
  .knows-head h2, .wm-head h2, .evx-head h2, .redo-head h2, #redesigns h2,
  .wd-head h2, #svc-redesign .fl-head h2, .hb-head h2, .op-head h2,
  .tp-head h2, #ab-start h2{font-size:var(--ts-h2) !important;}
  .redo-head h2 .redo-hl{font-size:inherit !important;}

  /* ---- section headings: compact ---- */
  .bn-copy h2, #svc-dmaic .svcs-head h2, #svc-support .svcs-head h2,
  .cs-head h2, .in-latest-head h2, .in-cta h2{font-size:var(--ts-h2-sm) !important;}

  /* ---- card and step titles ---- */
  .redo-card h3, .knows-body h3, .knows-step h3, .hb-item h3, .op-card h3, .wm-cap h3,
  .dm-panel h3, .bn-card h4, .in-card h3{font-size:var(--ts-card-s) !important;}
  .prob-row h3, .ct-alt h3, .ct-form h2, .wd-pane h3, .tph-name, .evx-step h3,
  .sp-panel h3, .sp-copy h3, .in-feat h2{font-size:var(--ts-card-m) !important;}
  .fl-step h3, .csx h3{font-size:var(--ts-card-l) !important;}

  /* ---- body text: intro ---- */
  .redo-head-copy p, .probs-head p, .probs-list .probs-head p, .knows-head p, .wm-lede, .wm-base p, .evx-lede,
  .hb-intro, .wd-head > p, #svc-dmaic .svcs-head > p, #svc-support .svcs-head > p,
  .op-head > p, #svc-redesign .fl-head p, .sh-descriptor, .th-desc, .tp-head p,
  .cs-head > p, .in-lede, .ct-lede{font-size:var(--ts-intro) !important;}

  /* ---- body text: descriptions ---- */
  .redo-card p, .prob-row-body p:not(.prob-cost), .evx-card > p:not(.evx-note):not(.evx-qual),
  .evx-lead, .evx-ba p, .knows-body p, .wm-cap > p, .wm-enables p, .wd-pane p,
  .fl-lede, .fl-close, .dm-panel p, .dm-keeps p, .hb-text p, .op-card p,
  .sp-copy > p:not(.sp-qual), .fn-support, .fn-question, .fin-lede, .in-cta p,
  .tph-bio, .th-support, .csx-col-body > p:not(.csx-out):not(.csx-ba-d), .csx-flow,
  .csx-qual p, .ct-form-intro, .ct-alt p, .ct-info-grid p, .in-feat-excerpt, .in-excerpt,
  .bn-lede, .bn-list b{font-size:var(--ts-body) !important;}

  /* ---- body text: small ---- */
  .prob-cost, .evx-note, .evx-qual, .sp-qual, .sp-qual *, .op-scope, .bn-cards-close,
  .op-note p, .tph-role, .tph-label, .in-by, .in-count, .ct-note, .ct-field label,
  .th-caps, .th-caps li, #supportStage .sp-qual, .sp-qual-label, .ct-field > span, .csx-ba-d, .bn-list p, .bn-card p{font-size:var(--ts-small) !important;}

  /* ---- labels and tags ---- */
  .eyebrow, .svc-eyebrow, .why-label, .ct-kicker, .ct-alt h2, .csx-qual-label,
  .evx-row-t, .csx-kick, .csx-label, .sp-n{font-size:var(--ts-label) !important;}
  .evx-k, .wm-enables-label, .op-tag, .op-label, .svcs-note-label, .csx-ba-k,
  .in-feat-tag, .csx-ba-k{font-size:var(--ts-tag) !important;}
  .redo-pill, .csx-topic, .tph-tags li, .in-meta, .sp-count{font-size:var(--ts-pill) !important;}

  /* ---- buttons, links, filters ---- */
  .svc-cta, .evx-btn, .sh-link, .wd-more, .redo-more, .redo-cta, .fn-cta,
  .bn-toggle, .ct-alt-mail{font-size:var(--ts-button) !important;}
  .in-type, .in-pill, .in-read, .in-feat-link{font-size:var(--ts-filter) !important;}

  /* ---- selector lists ---- */
  .wd-t, .csb-t, .dm-step, .dm-step em{font-size:var(--ts-intro) !important;}
  #svc-redesign .fl-node em{font-size:var(--ts-body) !important;}
  .wd-s, .csb-type, .csb-topic{font-size:var(--ts-small) !important;}

  /* ---- numbers and figures ---- */
  .knows-n, .wm-n, .wd-n, .wd-pane-n, .bn-n, .hb-idx, .op-n, .fl-n, #svc-redesign .fl-node i{font-size:var(--ts-label) !important;}
  .csx-out{font-size:var(--ts-figure) !important;}
}

/* ---- all 39 blog articles ---- */
@media (min-width:981px){
  .art-head h1{font-size:var(--ts-h1) !important;}
  .art-stand, .art-body p, .art-body li, .art-body blockquote, .apn-title{font-size:var(--ts-intro) !important;}
  .art-body h2, .art-body h2 strong{font-size:var(--ts-card-m) !important;}
  .art-body h3, .rel-card h3{font-size:var(--ts-card-s) !important;}
  .art-cta h2{font-size:var(--ts-h2-sm) !important;}
  .art-cta p, .art-author strong, .art-table table{font-size:var(--ts-body) !important;}
  .art-author em, .art-hero figcaption, .art-body figcaption{font-size:var(--ts-small) !important;}
  .art-back{font-size:var(--ts-filter) !important;}
  .art-cta .hero-cta{font-size:var(--ts-button) !important;}
  .jr-cat, .apn-lbl, .art-rel h2, .rel-card-cat, .art-table thead th{font-size:var(--ts-label) !important;}
  .art-meta, .art-meta time, .art-meta span, .rel-card time{font-size:var(--ts-pill) !important;}
  .art-meta .jr-cat{font-size:var(--ts-label) !important;}
}

/* ---- production cards: a touch taller on short laptops, so the 16px
   descriptions never run past the card (seen at 1280x720) ---- */
@media (min-width:981px){
  .op-sec{--op-card-h:clamp(330px,40vh,410px) !important;}
}

/* ---- navigation and footer ---- */
@media (min-width:981px){
  #mainNav .nav-links a{font-size:var(--ts-button) !important;}
  .ftr .ftr-tag{font-size:var(--ts-label) !important;}
  .ftr .ftr-line a, .ftr .ftr-strong{font-size:var(--ts-card-s) !important;}
  .ftr .ftr-col > a, .ftr .ftr-social, .ftr .ftr-sub p{font-size:var(--ts-body) !important;}
  .ftr .ftr-arrow{font-size:var(--ts-pill) !important;}
  .ftr .ftr-bar span, .ftr .ftr-bar a, .ftr .footer-legal, footer p.wrap{font-size:var(--ts-small) !important;}
  /* the ticker (24px) already sits on the scale; the wordmark is an exception */
}

/* ---- Insights list controls ---- */
@media (min-width:981px){
  .in-sort select, #inSort, .in-search input, .in-page-num{font-size:var(--ts-filter) !important;}
  .csb-n{font-size:var(--ts-card-m) !important;}
}
