/* Legibility floors — site-wide, loaded LAST.
   PRP's audience is largely 40+. Before this pass 63–69% of the text on the
   home, product and catalog pages was under 14px — most of it uppercase
   monospace labels between 7px and 11px — and the grey used for secondary text
   sat at 3.4–3.6:1 contrast. The typeface is now Atkinson Hyperlegible
   (prototype.css tokens) and --ink-3 is #5E6E85 (≥4.8:1); this file raises
   the sizes.

   Rules:
   - reading copy 15–16px; interface text and labels 14px;
   - uppercase labels lose most of their tracking — wide letter-spacing on
     capitals is what made the old labels hard to read, not just their size;
   - nothing is set below 13px, and 13px only where a data chip must fit a
     170px phone card.

   Every selector here matches the specificity of the rule it replaces, so it
   wins by being later rather than by !important. Source rules are cited so a
   future edit knows what it is overriding. */

/* ---------------------------------------------------------- site chrome */
.tick { font-size: 14px; letter-spacing: .05em; }                          /* prototype:51  .67rem */
@media (max-width: 720px) { .tick { font-size: 13px; letter-spacing: .03em; } } /* :518 .58rem, nowrap */
.hnav a { font-size: 15px; }                                                /* :73   .87rem */
.btn { font-size: 15px; }                                                   /* :104  .88rem */

/* eyebrow labels */
.lab { font-size: 14px; letter-spacing: .08em; }                            /* :42/:616 .64–.68rem, .17–.18em */
.pdp-tier-head > span { font-size: 14px; letter-spacing: .04em; }           /* :948  .65rem */

/* ---------------------------------------------------------- home cards */
.card .bs { font-size: 13px; letter-spacing: .06em; }                       /* :224  .56rem */
.card .st { font-size: 14px; letter-spacing: .01em; }                       /* :227  .66rem */
.mini { font-size: 13px; letter-spacing: .04em; }                           /* :229  .6rem  */
.card .pr small { font-size: 14px; letter-spacing: 0; }                     /* :234  .58rem */
@media (max-width: 720px) { .card .st { font-size: 13px; } }               /* :545  .56rem */

/* flip-card back face */
.bkbody p { font-size: 15px; line-height: 1.6; }                            /* :248  .78rem */
.bkspec dt { font-size: 13px; letter-spacing: .03em; }                      /* :251  .6rem  */
.bkspec dd { font-size: 14px; }                                             /* :252  .68rem */

/* record / stats grids */
.rgrid dt { font-size: 13px; letter-spacing: .06em; }                       /* :280  .58rem */
.rgrid dd { font-size: 16px; }                                              /* :281  .86rem */
.ctastats dt { font-size: 13px; letter-spacing: .06em; }                    /* :345  .6rem  */

/* ------------------------------------------------------------- product */
.pdp-variant-options small { font-size: 14px; }                             /* :378  .58rem */
.fbt .sug .pr { font-size: 14px; }                                          /* :459  .78rem */
.refs { font-size: 15px; }                                                  /* :408  .85rem */
.vhint, .vhint button { font-size: 14px; }                                  /* :266–267 .68rem */
.pdp-context-note, .pdp-policy, .tb-card p { font-size: 15px; line-height: 1.6; }
.bulk-note { font-size: 14px; }

/* --------------------------------------------------- store (store.css) */
.prp-card-cat { font-size: 13px; letter-spacing: .06em; }
.prp-card-purity { font-size: 13px; letter-spacing: .02em; }
.prp-chip { font-size: 13px; letter-spacing: .02em; }
.woocommerce ul.products li.product .price .from,
.woocommerce ul.products li.product .price small { font-size: 14px; }
.prp-card-coa { font-size: 14px; }
.prp-rail-note { font-size: 14px; }
.prp-rail-lbl { font-size: 13px; }
.prp-opt { font-size: 15px; }
.prp-opt-n { font-size: 13px; }
.prp-fig-l { font-size: 13px; letter-spacing: .08em; }
.prp-shop-lede { font-size: 16px; }
.prp-meter-say { font-size: 15px; }
.prp-meter-ends { font-size: 13px; }
.prp-nudge-t span { font-size: 15px; }
@media (max-width: 599px) {
  .prp-card-cat, .prp-chip { font-size: 13px; }
  .prp-card-coa { font-size: 14px; }
  .woocommerce ul.products li.product .price .from,
  .woocommerce ul.products li.product .price small { font-size: 13px; }
}

/* ----------------------------------------------- checkout (checkout.css) */
.woocommerce-checkout .prp-step .form-row label { font-size: 14px; }
.woocommerce-checkout .prp-step .form-row .description { font-size: 14px; }
.woocommerce-checkout .prp-step input[type="text"],
.woocommerce-checkout .prp-step input[type="email"],
.woocommerce-checkout .prp-step input[type="tel"],
.woocommerce-checkout .prp-step select { font-size: 16px; }                  /* 16px also stops iOS zoom-on-focus */
.prp-step-sub { font-size: 14px; }
.prp-step-summary { font-size: 15px; }
.prp-err { font-size: 14px; }
.prp-cohdr-steps li { font-size: 14px; }
.prp-cohdr-sec strong { font-size: 14px; }
.prp-cohdr-sec span span { font-size: 13px; }
.prp-sum-name { font-size: 15px; }
.prp-sum-var { font-size: 14px; }
.prp-sum-row { font-size: 15px; }
.prp-ship-opt { font-size: 15px; }
.prp-ship-eta { font-size: 13px; letter-spacing: .02em; }
.prp-free-t { font-size: 14px; }
.prp-free-t strong { font-size: 15px; }
.prp-trust-t strong { font-size: 15px; }
.prp-trust-t span { font-size: 14px; }
.prp-agree { font-size: 14px; }
.woocommerce-checkout .prp-step .prp-b2b__attest label { font-size: 15px; }
.prp-b2b__legal > summary { font-size: 14px; }
.prp-b2b__legal p { font-size: 14px; }
.prp-b2b__more > summary { font-size: 15px; }
.prp-b2b__more-opt { font-size: 14px; }

/* ======================================================= second pass
   Traced to the exact rule that sizes each element (headless Chrome,
   2026-09-12), after the first pass left these under 14px. */

/* mobile menu sheet — descriptions were 9.6px with wide tracking */
.msheet nav a span { font-size: 14px; letter-spacing: .01em; }

/* small buttons outrank the .btn floor above */
.btn.sm { font-size: 14px; }

/* trust strip (px rule on .ts-item, inherited by .ts-txt) */
.ts-item, .ts-txt { font-size: 14px; }

/* shipping rates line */
.ship-rates span { font-size: 14px; }

/* cart toast */
.cart-toast b { font-size: 15px; }
.cart-toast button { font-size: 14px; }

/* product spec table */
.specs dt { font-size: 13px; letter-spacing: .04em; }
.specs .r dd, .specs dd { font-size: 15px; }
.tb-stat { font-size: 13px; letter-spacing: .03em; }
.pdp-bulk-entry-copy small { font-size: 14px; }

/* FAQ category tag inside the question */
.faq-question small { font-size: 13px; letter-spacing: .04em; }

/* home: section counters, proof grid, service card, bulk builder */
.shead .idx { font-size: 13px; letter-spacing: .06em; }
.proofnum, .proofgrid small { font-size: 13px; }
.svc-ch small { font-size: 14px; }
.svc-rating span { font-size: 14px; }
.bulk-facts dd { font-size: 14px; }
.bulk-pricebox small { font-size: 14px; }
.bulk-record span { font-size: 13px; }

/* home flip cards — back-face header */
.bkhd span { font-size: 13px; }

/* home orbit (rotating featured vials) — 7.7–9.9px before */
.orbit-card .oc-foot small, .orbit-card .oc-foot strong { font-size: 13px; }
.orbit-info .oi-spec span { font-size: 13px; }
.orbit-info .oi-price span { font-size: 13px; }

/* hero (hero.css) */
.prp-hero__eyebrow { font-size: 14px; letter-spacing: .08em; }            /* hero:85   .72rem, .18em */
.prp-hero__cta { font-size: 15px; letter-spacing: .04em; }                /* hero:116  .82rem */
.prp-origin { font-size: 14px; letter-spacing: .04em; }                   /* hero:145  .78rem */
.prp-hero__compliance { font-size: 13px; letter-spacing: .08em; }         /* hero:168  .66rem, .16em */
.prp-hero__trust-item { font-size: 14px; letter-spacing: .04em; }         /* hero:243  .76rem */
.prp-rating small { font-size: 14px; }                                    /* hero:166  .8rem */
@media (max-width: 720px) {
  /* hero:332 .7rem — this row scrolls sideways inside its own strip */
  .prp-hero__trust-item { font-size: 13px; }
}

/* A lot code is the proof and must not be truncated. At 13px
   "LOT GLP3R10-2603-2703" is 182px — wider than a 170px phone catalog card —
   and it pushed the whole catalog 14px sideways. Let it wrap at its own space
   or hyphens instead. */
@media (max-width: 599px) {
  .prp-chip { white-space: normal; overflow-wrap: anywhere; line-height: 1.3; max-width: 100%; }
}

/* ======================================================= third pass
   Labels that were set to 13px go to 14px. 13px is kept ONLY for data chips
   that must fit a 170px phone catalog card (.prp-chip, .prp-card-purity,
   .mini, and the phone-width .prp-card-cat). */
.bkspec dt, .rgrid dt, .ctastats dt, .specs dt { font-size: 14px; }
.tb-stat, .faq-question small, .shead .idx, .proofnum, .proofgrid small,
.bulk-record span, .bkhd span, .card .bs, .prp-fig-l, .prp-ship-eta,
.prp-rail-lbl, .prp-opt-n, .prp-meter-ends, .prp-hero__compliance,
.prp-cohdr-sec span span { font-size: 14px; }
.orbit-card .oc-foot small, .orbit-card .oc-foot strong,
.orbit-info .oi-spec span, .orbit-info .oi-price span { font-size: 14px; }
@media (max-width: 720px) {
  .tick, .prp-hero__trust-item { font-size: 14px; }
  .card .st { font-size: 14px; }
}

/* orbit hints inherited 8–9px from their containers */
.orbit-counter span, .orbit-cue span { font-size: 14px; letter-spacing: .04em; }

/* product price tiers — prototype:952/386/953 (.66rem / .6rem / .75rem) */
.tier .q { font-size: 15px; }
.tier .sv { font-size: 14px; letter-spacing: .03em; }
.tier .e { font-size: 15px; }

/* checkout summary — missed in the first pass (checkout.css:238/289) */
.prp-sum-n { font-size: 14px; }
.prp-sum-cur { font-size: 13px; }

/* ======================================================= flip cards
   Measured worst case after the larger type (all 20 home cards, 2026-09-12):
   the back face needed 250px of hidden scrolling at 320px, 207px at 390,
   163px at 599, 112px at 768 and 56–79px on desktop — and at phone widths
   the FRONT was already 8–54px taller than its box.

   prototype.css's ≤700px block was written for a two-up phone grid ("a single
   column of 17 full-width cards is an endless scroll"). The home grid is now
   one column 283–551px wide, but that block still stacks the back-face buttons
   (124–175px of footer) and puts every spec label on its own line above its
   value. Undo both, let the image area absorb spare height instead of leaving
   a blank band above the price, and size --cardh from the measurements. */

/* spare height enlarges the product render, not the gap above the price */
.card .art { flex: 1 1 278px; }

@media (max-width: 700px) {
  .bkfoot { flex-direction: row; gap: .5rem; }
  .bkfoot .btn { flex: 1 1 0; min-width: 0; padding-inline: .6rem; }
  .bkspec div { display: flex; align-items: baseline; justify-content: space-between; gap: .75rem; }
  .bkspec dt { white-space: nowrap; margin-bottom: 0; }
  .bkspec dd { text-align: right; overflow-wrap: anywhere; min-width: 0; }
  .card { --cardh: 540px; }
}
@media (max-width: 360px) { .card { --cardh: 580px; } }
@media (min-width: 701px) and (max-width: 1023px) { .card { --cardh: 650px; } }
@media (min-width: 1024px) { .card { --cardh: 610px; } }

/* ======================================================= stragglers (1)
   Traced through the browser's own cascade (CSS.getMatchedStylesForNode). */

/* home CTAs: .btn.lg (prototype:113 .95rem / :650 .86rem) outranks .btn */
.btn.lg { font-size: 16px; }

/* catalog result count — woo.css:121 .72rem */
.woocommerce .woocommerce-result-count { font-size: 14px; }

/* orbit card lot line: #667B94 was 4.23:1 on its #F9FCFF card (prototype:859) */
.orbit-card .oc-foot small { color: var(--ink-3); }

/* ======================================================= stragglers (2) */

/* Phone card height. prototype.css ends with LITERAL heights —
   `.card{height:500px}` @≤680px (L1252) and `.card{height:475px}` @≤390px
   (L1271) — which ignore --cardh, so the --cardh values above only ever
   reached desktop. Set the height itself from the variable at phone widths. */
@media (max-width: 700px) { .card { height: var(--cardh); } }
@media (max-width: 360px) { .card { --cardh: 630px; } }

/* product references: .pdp-detail-grid .refs (prototype:977/1186, .76rem)
   outranks .refs */
.pdp-detail-grid .refs { font-size: 15px; }

/* home */
.catalog-scope { font-size: 14px; letter-spacing: .06em; }   /* prototype:723  .62rem */
.bulk-kicker { font-size: 14px; letter-spacing: .06em; }     /* prototype:1182 .66rem */
.faq-num { font-size: 14px; }                                /* 11.2px via a font: shorthand */

/* ======================================================= stragglers (3) */
.bulk-pricebox span { font-size: 14px; letter-spacing: .04em; }   /* prototype:1184 .61rem ("Per vial", "Order total") */
.lot, .lot .id { font-size: 14px; }                               /* PDP lot row — .id inherited 12px */
.buybar .nm span { font-size: 14px; }                             /* prototype:418  .64rem, sticky buy bar lot line */
.prp-rail-note-h { font-size: 15px; }                             /* store.css:90   12.5px */

/* ======================================================= stragglers (4) */
.prp-ship-cost, .prp-ship-cost .amount { font-size: 15px; }       /* shipping option price, 13.1px */
.bulk-field span { font-size: 14px; letter-spacing: .04em; }      /* bulk builder field label, 10.6px */
