/* HealthViber storefront
 *
 * The look is healthviber.com's: navy text on white and a pale blue-grey, one
 * strong blue for anything you can press, cyan for the few figures the page
 * wants you to notice, serif headings, Lato for everything else, and cards
 * drawn with a hairline rather than a shadow.
 *
 * The class names are the ones every template on this store already uses, so a
 * page restyles by this file alone. The old token names are kept too, mapped to
 * the new palette, because templates carry a fair number of inline styles that
 * refer to them — `color:var(--teal-900)` still means "the heading colour" and
 * now resolves to navy. New code should use the plain names in the first block.
 *
 * Two rules are enforced here rather than left to discipline:
 *
 *  - Every multi-column grid uses repeat(auto-fit, minmax(...)) or an explicit
 *    breakpoint, NEVER a bare repeat(N, 1fr). Plain 1fr tracks inherit
 *    min-width:auto, refuse to shrink below their content and push past the
 *    container, which is a real horizontal-overflow bug on a phone.
 *  - The focus ring is 3px solid blue at 2px offset and is never removed.
 */

:root {
  /* healthviber.com's palette */
  --navy:#415479;        /* headings and body text */
  --navy-deep:#34446a;   /* dark surfaces */
  --blue:#197ed0;        /* buttons, links, eyebrows, the footer */
  --blue-dark:#1468ad;
  --cyan:#01cce3;        /* the figures that are meant to stand out */
  --sky:#ebf6ff;         /* pale blue fills */
  --sky-line:#d5ecff;
  --mist:#f1f3f8;        /* alternate section ground */
  --hair:#c6cfe1;        /* every border */
  --muted:#5d6e8e;       /* secondary text: 5.0:1 on white, 4.6:1 on --mist */
  --coral:#d14d4d;       /* "the usual way", and anything that went wrong */
  --coral-soft:#fdeeee;
  --mint-ok:#1f9e78;     /* "the HealthViber way" */
  --white:#fff;

  /* The names the templates already use, mapped onto the palette above. */
  --teal-900:var(--navy); --teal-800:var(--navy-deep); --teal-700:var(--blue); --teal-600:var(--blue);
  --teal-100:var(--sky-line); --teal-050:var(--mist);
  --ink:var(--navy); --soft:var(--muted); --line:var(--hair);
  --amber:var(--cyan); --amber-dark:var(--blue); --amber-soft:var(--sky);
  --kraft:var(--mist); --kraft-light:#f8f9fd;
  --rose:var(--coral); --rose-soft:var(--coral-soft);
  --paper:var(--white); --mint:#d5e6f7; --mint-dim:#aebfdc;

  --fd:'Source Serif 4', Georgia, 'Times New Roman', serif;   /* headings */
  --fb:'Lato', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --fm:var(--fb);   /* labels and figures: Lato too, the site has no monospace */

  --wrap:1344px; --wrap-prose:1344px; --wrap-faq:1244px;
  --r:20px;
  --shadow-card:none;
  --shadow-lift:0 30px 60px -30px rgba(65,84,121,.28);
  --dash:1px solid var(--hair);
}

*,*::before,*::after { margin:0; padding:0; box-sizing:border-box }
/* scroll-padding-top is what keeps an anchor from landing underneath the
   header, which is sticky and carries the nav with it. Generous rather than
   exact: landing slightly low is unnoticeable, landing under the header is not. */
html { scroll-behavior:smooth; scroll-padding-top:150px; -webkit-text-size-adjust:100% }
@media (max-width:900px) { html { scroll-padding-top:120px } }
body { font-family:var(--fb); background:var(--white); color:var(--navy);
       font-size:17px; line-height:1.65; -webkit-font-smoothing:antialiased }
img { max-width:100%; display:block }
a { color:var(--blue); text-decoration:none }
a:hover { color:var(--blue-dark) }
button,input,select,textarea { font-family:inherit; font-size:inherit; color:inherit }
button { cursor:pointer; border:none; background:none }
p, li, h1, h2, h3 { text-wrap:pretty }

/* Never remove this. It has to be visible everywhere. */
:focus-visible { outline:3px solid var(--blue); outline-offset:2px; border-radius:4px }
/* On the blue and navy surfaces the blue ring would vanish into the ground. */
.util :focus-visible, .ft :focus-visible, .tile--dark :focus-visible, .found :focus-visible,
.receipt__h :focus-visible, .finder__h :focus-visible { outline-color:#fff }

/* The browser's own [hidden] rule is display:none at specificity (0,1,0), and so
 * is every class below that sets display — .pcard, .crow, .empty. Author styles
 * win ties against the UA sheet, so without this those elements ignore [hidden]
 * and every filter, search and empty state renders as if nothing were hidden.
 * !important is the correct tool: [hidden] is not a style, it is a statement
 * that the element is not part of the page. */
[hidden] { display:none !important }

.visually-hidden { position:absolute !important; width:1px; height:1px; overflow:hidden;
                   clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap }

.wrap { max-width:var(--wrap); margin:0 auto; padding-left:24px; padding-right:24px }
.wrap-prose { max-width:var(--wrap-prose); margin:0 auto; padding-left:24px; padding-right:24px }
.sec { padding:110px 0 }
.sec--tint, .sec--kraft { background:var(--mist) }
.sec--dark, .sec--darker { background:var(--navy); color:#fff }
.sec--amber { background:var(--mist) }
.sec--flush-top { padding-top:20px }
.mono { font-family:var(--fm) }
.eyebrow { font-family:var(--fb); font-size:.8rem; font-weight:700; letter-spacing:.01em;
           text-transform:uppercase; color:var(--blue); display:inline-block }
.sec--dark .eyebrow, .sec--darker .eyebrow { color:var(--cyan) }
h1,h2,h3,h4 { font-family:var(--fd); font-weight:700; line-height:1.18; color:var(--navy);
              font-optical-sizing:auto; letter-spacing:-.005em }
h2 { font-size:clamp(1.9rem,3.2vw,3rem) }
.sec--dark h2, .sec--darker h2, .sec--dark h3, .sec--darker h3 { color:#fff }
/* The collection page titles itself with an h1 — it is that page's subject. */
.sec-head h1 { font-size:clamp(1.9rem,3.2vw,3rem) }
.sec--dark .sec-head h1, .sec--darker .sec-head h1 { color:#fff }
.sec-head { margin-bottom:48px; max-width:780px }
.sec-head .eyebrow { margin-bottom:14px }
.dek { color:var(--navy); margin-top:18px; font-size:1.06rem }
.sec--dark .dek, .sec--darker .dek { color:var(--mint) }
/* Most of healthviber.com's section heads sit centred over their content. */
.sec-head--center { margin-left:auto; margin-right:auto; text-align:center; max-width:760px }

/* ── buttons ─────────────────────────────────────────────────────────────────
 * One shape: a pill, with an arrow after the label. The arrow is drawn by CSS
 * rather than typed into each label, so a button that is a <button> and one
 * that is an <a> look the same, and a screen reader does not read "right
 * arrow" at the end of every one. .btn--plain drops it. */
.btn { display:inline-flex; align-items:center; justify-content:center; gap:14px;
       font-family:var(--fb); font-weight:700; font-size:1.06rem; line-height:1.2;
       min-height:58px; padding:14px 32px; border-radius:99px; text-align:center;
       border:1px solid transparent; transition:background .16s ease-out, color .16s ease-out, border-color .16s ease-out }
.btn::after { content:''; flex:none; width:22px; height:14px; background:currentColor;
              -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 14'%3E%3Cpath d='M0 7h20M14 1l6 6-6 6' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
                      mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 14'%3E%3Cpath d='M0 7h20M14 1l6 6-6 6' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.btn--plain::after, .btn:disabled::after { display:none }
.btn:disabled { opacity:.7; cursor:default }
/* Primary. Both old names map here: the storefront's primary button was dark
   and its secondary amber, and on this design both are the one blue. */
.btn--dark, .btn--amber, .btn--blue { background:var(--blue); color:#fff }
.btn--dark:hover, .btn--amber:hover, .btn--blue:hover { background:var(--blue-dark); color:#fff }
/* Secondary: hairline outline, navy label. */
.btn--ghost { background:#fff; border-color:var(--hair); color:var(--navy) }
.btn--ghost:hover { border-color:var(--blue); color:var(--blue) }
/* The product card's add to cart: outlined in blue. */
.btn--line { background:#fff; border-color:var(--blue); color:var(--blue) }
.btn--line:hover { background:var(--blue); color:#fff }
.btn--cyan { background:var(--cyan); color:#fff }
.btn--sm { min-height:48px; padding:10px 24px; font-size:.98rem }
.btn--full { display:flex; width:100% }
.textlink { display:inline-flex; align-items:center; font-weight:700; color:var(--blue) }

/* ── utility bar + header ────────────────────────────────────────────────────
 * The header's rows are the storefront's own — the client asked for this menu
 * to stay — drawn in healthviber.com's colours: the blue bar across the top, a
 * white bar with the logo, then the category row and the claims strip. */
.util { background:var(--blue); color:#fff; font-size:.95rem }
.util .wrap { display:flex; align-items:center; gap:22px; flex-wrap:wrap; min-height:48px;
              padding-top:6px; padding-bottom:6px }
.util__tag { font-weight:400 }
.util__mid { margin-left:auto; display:flex; align-items:center; gap:24px; flex-wrap:wrap }
.util__ic { display:inline-flex; align-items:center; gap:9px }
.util__ic svg { width:18px; height:18px; flex:none }
.util__sep { display:none }
.util a { color:#fff } .util a:hover { color:#fff; text-decoration:underline }
.util a.on-dark { color:#fff; font-weight:400 }
.util__acct { margin-left:auto; display:flex; align-items:center; gap:4px }
.util a.util__pill { color:#fff; border:1px solid rgba(255,255,255,.45); padding:4px 15px;
                     border-radius:99px; margin-left:6px }
.util a.util__pill:hover { background:rgba(255,255,255,.12); text-decoration:none }

.hdr { position:sticky; top:0; z-index:80; background:#fff; border-bottom:1px solid var(--mist) }
.hdr__row { display:flex; align-items:center; gap:28px; padding-top:18px; padding-bottom:18px }
.wordmark { flex:none; display:block; line-height:0 }
.wordmark img { height:42px; width:auto }
.search { flex:1; max-width:520px; display:flex; align-items:center; border:1px solid var(--hair);
          border-radius:99px; background:#fff; overflow:hidden }
.search:focus-within { border-color:var(--blue) }
.search input { flex:1; border:none; padding:12px 22px; font-size:.95rem; background:transparent; outline:none; min-width:0; color:var(--navy) }
.search input::placeholder { color:#8b98b4 }
.search button { background:var(--blue); color:#fff; padding:12px 24px; font-weight:700; font-size:.95rem;
                 /* Its own right radius rather than relying on the pill clipping it:
                    overflow:hidden clips to the padding box, which on a 99px radius
                    sits inside the border and leaves a pale sliver on the curve. */
                 border-radius:0 99px 99px 0; align-self:stretch }
.hdr__links { display:flex; align-items:center; gap:24px; margin-left:auto; flex:none }
.hdr__links a { font-size:1rem; font-weight:700; color:var(--navy) }
.hdr__links a:hover { color:var(--blue) }
.cartpill { display:flex; align-items:center; gap:10px; background:#fff;
            border:1px solid var(--hair); border-radius:99px; padding:9px 18px;
            font-weight:700; color:var(--navy) }
.cartpill:hover { border-color:var(--blue) }
.cartpill b { background:var(--blue); color:#fff; font-size:.78rem;
              min-width:24px; height:24px; border-radius:99px; display:inline-flex;
              align-items:center; justify-content:center; padding:0 6px }
.nav { border-top:1px solid var(--mist); background:#fff }
.nav .wrap { display:flex; align-items:center; gap:4px; flex-wrap:wrap }
/* Tighter than it reads. The eleven links plus the shipping note have to share
   one row with nothing wrapping onto a line of its own. */
.nav a { padding:13px 9px; font-size:.95rem; font-weight:700; color:var(--navy) }
.nav a:hover { color:var(--blue) }
.nav a.is-strong { color:var(--navy) }
.nav a.is-offer { color:var(--blue) }
.nav__ship { margin-left:auto; font-size:.86rem; font-weight:700; color:var(--blue); padding:13px 0 }

/* The claims strip: healthviber.com's checkmark band under the header. */
.ticker { background:var(--mist); color:var(--navy) }
.ticker .wrap { display:flex; gap:12px 46px; justify-content:center; flex-wrap:wrap;
                font-size:.95rem; padding-top:13px; padding-bottom:13px }
.ticker .wrap span { display:inline-flex; align-items:center; gap:10px }
.ticker .wrap span::before { content:''; width:13px; height:10px; flex:none; background:var(--blue);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 10'%3E%3Cpath d='M1 5.2l3.6 3.3L12 1' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 13 10'%3E%3Cpath d='M1 5.2l3.6 3.3L12 1' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }

/* ── hero ────────────────────────────────────────────────────────────────── */
.hero .wrap { padding-top:32px; padding-bottom:0;
              display:grid; grid-template-columns:minmax(0,1.62fr) minmax(0,1fr); gap:24px; align-items:stretch }
.hero__card { background:#fff; border:1px solid var(--hair); border-radius:var(--r);
              padding:48px; display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,.9fr);
              gap:0 8px; align-items:end }
.hero__main { grid-column:1 / -1; justify-self:start; margin-bottom:34px }
.hero__card h1 { margin:0 }
.hero__pill { display:inline-flex; align-items:center; gap:12px; background:var(--sky);
              border:1px solid var(--sky-line); border-radius:99px; padding:10px 22px;
              font-size:.95rem; font-weight:700; text-transform:uppercase; color:var(--blue) }
.hero__pill::before { content:''; width:8px; height:8px; border-radius:50%; background:var(--cyan); flex:none }
.hero__card h1 { font-size:clamp(2.4rem,4vw,3.75rem); line-height:1.08 }
.hero__lede { color:var(--navy); font-size:1.1rem; margin-top:40px }
.hero__cta { display:grid; gap:16px; margin-top:44px; justify-items:stretch }
.hero__more { border-top:1px solid var(--hair); margin-top:32px; padding-top:28px; font-size:.98rem }
.hero__more a { font-weight:700; color:var(--navy); text-decoration:underline; text-underline-offset:3px }
.hero__more a::after, .textlink::after { content:''; display:inline-block; width:20px; height:13px; margin-left:12px;
  vertical-align:middle; background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 14'%3E%3Cpath d='M0 7h20M14 1l6 6-6 6' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 22 14'%3E%3Cpath d='M0 7h20M14 1l6 6-6 6' fill='none' stroke='%23000' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.pricetag { background:#fff; border-radius:var(--r); transform:rotate(3deg); position:relative;
            box-shadow:0 30px 60px -20px rgba(65,84,121,.3); margin:0 0 28px 20px; overflow:visible; align-self:end }
.pricetag__top { background:var(--blue); color:#fff; border-radius:var(--r) var(--r) 0 0; padding:26px 26px 22px }
.pricetag__k { font-size:.82rem; font-weight:700; text-transform:uppercase; color:var(--sky-line) }
.pricetag__t { font-family:var(--fd); font-weight:700; font-size:1.9rem; line-height:1.15; color:#fff; margin-top:8px }
.pricetag__body { padding:26px 26px 58px }
.pricetag__n { font-family:var(--fd); font-weight:700; font-size:4.2rem; line-height:1; color:var(--navy) }
.pricetag__u { font-family:var(--fd); font-weight:600; font-size:1.45rem; color:var(--navy); margin-top:4px }
.pricetag__rule { border-top:1px solid var(--hair); margin:18px 0 0 }
.pricetag__math { font-family:var(--fd); font-size:1.02rem; color:var(--navy); margin-top:16px }
.stamp { position:absolute; bottom:-22px; left:50%; transform:translateX(-50%) rotate(-3deg);
         background:var(--cyan); color:var(--navy-deep); font-weight:700; font-size:1.1rem; padding:16px 32px;
         border-radius:99px; white-space:nowrap }
.hero__side { display:grid; grid-template-rows:auto auto; gap:24px }
.tile { border-radius:var(--r); padding:40px 32px; display:flex; flex-direction:column; justify-content:space-between }
.tile--dark { background:var(--navy); color:#fff }
.tile--dark h3, .tile--care h3 { font-size:clamp(1.8rem,2.6vw,2.5rem); line-height:1.15; margin:22px 0 22px }
.tile--dark h3 { color:#fff }
.tile--dark p { color:#fff; font-size:1rem }
.tile--care { background:var(--sky); border:1px solid var(--sky-line) }
.tile--care p { color:var(--navy); font-size:1rem }
.tile__k { font-size:.88rem; font-weight:700; text-transform:uppercase }
.tile--dark .tile__k { color:var(--cyan) } .tile--care .tile__k { color:var(--navy) }
.counter { display:flex; align-items:baseline; gap:8px; margin-top:34px }
.counter b { font-family:var(--fd); font-size:3.6rem; line-height:1; font-weight:700; color:var(--cyan) }
.counter span { font-size:1.1rem; font-weight:700; color:#fff }
.bar { height:8px; border-radius:99px; background:var(--sky-line); margin:18px 0 32px; overflow:hidden }
.bar i { display:block; height:100%; background:var(--blue); border-radius:99px }

/* ── claims strip (Tested · Made · Priced · Reviewed · Cancelled) ───────────── */
.claims { background:var(--mist); margin-top:24px }
.claims .wrap { display:flex; flex-wrap:wrap; justify-content:space-between; gap:18px 0;
                padding-top:32px; padding-bottom:32px }
.claims__i { flex:1 1 auto; text-align:center; padding:6px 22px; border-left:1px solid var(--hair) }
.claims__i:first-child { border-left:0; padding-left:0 }
.claims__i:last-child { padding-right:0 }
.claims__k { font-size:.88rem; font-weight:700; text-transform:uppercase; color:var(--blue) }
.claims__t { font-family:var(--fd); font-weight:700; font-size:1.25rem; color:var(--navy); margin-top:8px; line-height:1.3; white-space:nowrap }
@media (max-width:1100px) { .claims__i { flex:1 1 30% } .claims__t { white-space:normal } }
@media (max-width:560px) { .claims__i, .claims__i:first-child, .claims__i:last-child { flex:1 1 45%; padding:4px 8px } .claims__t { font-size:1.08rem } }

/* ── generic card grids ──────────────────────────────────────────────────── */
.cards { display:grid; gap:24px; grid-template-columns:repeat(auto-fit,minmax(min(260px,100%), 1fr)) }
.cards--3 { grid-template-columns:repeat(auto-fit,minmax(min(300px,100%), 1fr)) }
.cards--2 { grid-template-columns:repeat(auto-fit,minmax(min(420px,100%), 1fr)) }
/* Four across or two by two — never three-and-a-stranded-one, which is what
   auto-fit gives a four-item grid at tablet widths. */
.cards--4 { grid-template-columns:repeat(4,minmax(0,1fr)) }
@media (max-width:980px) { .cards--4 { grid-template-columns:repeat(2,minmax(0,1fr)) } }
@media (max-width:560px) { .cards--4 { grid-template-columns:minmax(0,1fr) } }
/* Three across, explicitly, for sections whose count is fixed at a multiple of
   three (the journey's six, the bundle page's benefits). */
.cards--trio { grid-template-columns:repeat(3,minmax(0,1fr)) }
@media (max-width:900px) { .cards--trio { grid-template-columns:repeat(2,minmax(0,1fr)) } }
@media (max-width:560px) { .cards--trio { grid-template-columns:minmax(0,1fr) } }
.cards--6 { grid-template-columns:repeat(6,minmax(0,1fr)) }
@media (max-width:1100px) { .cards--6 { grid-template-columns:repeat(3,minmax(0,1fr)) } }
@media (max-width:560px) { .cards--6 { grid-template-columns:repeat(2,minmax(0,1fr)) } }
/* A single-message band: copy on the left, one action on the right. */
.cta-band { background:#fff; border:1px solid var(--hair); border-radius:var(--r);
            padding:32px; display:flex; align-items:center; justify-content:space-between; gap:26px; flex-wrap:wrap }
.cta-band > div { flex:1 1 420px }
.cta-band .dek { margin-bottom:0 }

.card { background:#fff; border:1px solid var(--hair); border-radius:var(--r); overflow:hidden;
        display:flex; flex-direction:column }
.sec--tint .card, .sec--kraft .card { background:transparent }
.card__b { padding:32px }
.card h3 { font-size:1.55rem; margin-bottom:14px; line-height:1.25 }
.card p { font-size:1rem; color:var(--navy) }
.card .eyebrow { font-size:1rem; margin-bottom:20px }
.card__img { aspect-ratio:924/560; overflow:hidden; border-bottom:1px solid var(--hair) }
.card__img img { width:100%; height:100%; object-fit:cover }
.imgbed { background:var(--mist); overflow:hidden }
.imgbed img { width:100%; height:100%; object-fit:cover }
.card--link { color:inherit; transition:border-color .16s ease-out }
.card--link:hover { border-color:var(--blue); color:inherit }

/* The quote bar: a centred note under a section, with healthviber.com's
   curved blue rule across its top. */
.quotebar { position:relative; margin:48px 50px 0; padding:38px 48px 0; text-align:center;
            font-size:1.06rem; color:var(--navy) }
.quotebar::before { content:''; position:absolute; left:0; right:0; top:0; height:18px;
                    border:4px solid var(--blue); border-bottom:0; border-radius:18px 18px 0 0 }
.quotebar h3, .quotebar h4 { font-family:var(--fb); font-size:1.45rem; font-weight:700; margin-bottom:22px }
.quotebar b { font-weight:700 }
.quotebar i, .quotebar em { color:var(--blue); font-weight:700 }

/* ── product grid ────────────────────────────────────────────────────────── */
.toolbar { display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-bottom:48px }
.pill { border:1px solid var(--hair); background:#fff; border-radius:99px;
        padding:12px 30px; font-size:1rem; font-weight:400; color:var(--navy); line-height:1.4 }
.pill:hover { border-color:var(--blue) }
.pill[aria-pressed="true"] { background:var(--blue); border-color:var(--blue); color:#fff }
.toolbar__r { margin-left:auto; display:flex; align-items:center; gap:14px }
.count { font-size:.92rem; color:var(--muted); font-weight:700 }
.sortsel { border:1px solid var(--hair); border-radius:99px; padding:11px 16px; font-size:.95rem; background:#fff; color:var(--navy) }

.pcard { background:#fff; border:1px solid var(--hair); border-radius:var(--r);
         display:flex; flex-direction:column; overflow:hidden }
.pcard__k { background:var(--blue); padding:18px 16px; display:flex; align-items:center; justify-content:space-between; gap:10px }
.pcard__kt { font-size:1.06rem; font-weight:700; text-transform:uppercase; color:#fff; line-height:1.2 }
.punch { width:20px; height:20px; border-radius:99px; border:1.5px solid #fff; flex:none }
.pcard__img { height:220px; position:relative; display:block }
.pcard__img img { width:100%; height:100%; object-fit:contain; padding:22px 22px 6px }
.badge { position:absolute; top:16px; left:16px; background:var(--navy); color:#fff;
         font-size:.88rem; padding:5px 12px; border-radius:99px; z-index:1 }
.pcard__b { padding:20px 24px 24px; display:flex; flex-direction:column; flex:1 }
.pcard__t { font-family:var(--fd); font-weight:700; font-size:1.55rem; color:var(--navy); line-height:1.25 }
.pcard__t a { color:inherit }
.pcard__s { font-size:1.02rem; color:var(--navy); margin-top:14px }
.pricerow { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:22px }
.price { font-family:var(--fd); font-weight:700; font-size:2.1rem; color:var(--navy); line-height:1 }
.unitchip { font-size:.95rem; color:var(--navy); background:var(--sky); border:1px solid var(--sky-line);
            border-radius:6px; padding:4px 12px; line-height:1.5; flex:1 1 auto; max-width:max-content }
/* The working line: no number without the arithmetic that produced it. */
.working { font-size:.95rem; color:var(--navy); text-align:center;
           border-top:1px solid var(--hair); border-bottom:1px solid var(--hair);
           padding:16px 0; margin:18px 0 20px }
.bullets { list-style:none; display:grid; gap:14px; margin-bottom:24px }
.bullets li { font-size:1.02rem; color:var(--navy); display:flex; gap:14px; align-items:flex-start; line-height:1.55 }
.bullets li::before, .ticks li::before { content:''; width:16px; height:12px; margin-top:.4em; flex:none; background:var(--blue);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.verdictchip { font-size:.95rem; color:var(--navy); text-align:center; display:block;
               background:var(--sky); border:1px solid var(--sky-line); border-radius:6px;
               padding:12px 14px; margin-bottom:24px }
.pcard__cta { margin-top:auto }
.empty { border:1px dashed var(--hair); border-radius:var(--r); padding:48px 24px; text-align:center; grid-column:1/-1 }
.empty b { font-family:var(--fd); font-size:1.4rem; color:var(--navy); display:block; margin-bottom:6px }

/* ── collection rails ("More ways to support your everyday health") ──────── */
.rails { border-top:1px solid var(--hair) }
.rail { border-bottom:1px solid var(--hair); padding:48px 0 }
.rail__h { display:flex; align-items:center; gap:18px; margin-bottom:32px; flex-wrap:wrap }
.rail__h h3 { font-size:clamp(1.6rem,2.3vw,2.2rem) }
.rail__h p { font-size:.98rem; color:var(--muted) }
.rail__h .btn { margin-left:auto }
.rail__row { display:grid; gap:24px; grid-template-columns:repeat(4,minmax(0,1fr)) }
.rail__row .pcard__b { padding-top:10px }
.rcard { background:#fff; border:1px solid var(--hair); border-radius:var(--r); overflow:hidden;
         display:flex; flex-direction:column }
.rcard__img { height:200px }
.rcard__img img { width:100%; height:100%; object-fit:contain; padding:20px }
.rcard__b { padding:6px 24px 24px; display:flex; flex-direction:column; flex:1 }
.rcard__t { font-family:var(--fd); font-weight:700; font-size:1.5rem; color:var(--navy); line-height:1.25 }
.rcard__x { font-size:1rem; color:var(--navy); margin:14px 0 18px }
.rcard__p { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-top:auto; margin-bottom:24px }
.rcard__p b { font-family:var(--fd); font-size:2rem; color:var(--navy) }

/* ── bundles ─────────────────────────────────────────────────────────────── */
.bcard { background:#fff; border:1px solid var(--hair); border-radius:var(--r); display:flex;
         flex-direction:column; color:var(--navy); overflow:hidden }
.bcard--feat { border-color:var(--hair) }
.bcard__img { aspect-ratio:693/420; overflow:hidden; border-bottom:1px solid var(--hair) }
.bcard__img img { width:100%; height:100%; object-fit:cover }
.bcard__b { padding:32px; display:flex; flex-direction:column; flex:1 }
.tagpill { font-size:.88rem; font-weight:700; text-transform:uppercase; background:var(--sky);
           color:var(--navy); padding:6px 20px; border-radius:99px; display:inline-block; align-self:flex-start }
.bcard--feat .tagpill { background:var(--cyan); color:var(--navy-deep) }
.bcard h3 { font-size:1.6rem; margin:22px 0 18px }
.bcard h3 a { color:inherit }
.strike { color:var(--coral); text-decoration:line-through; font-size:1.1rem }
.bcard .price { color:var(--blue) }
.perday { display:block; text-align:center; font-size:1.06rem; color:var(--navy); background:var(--sky);
          border:1px solid var(--sky-line); border-radius:6px; padding:12px; margin-top:20px }
.bcard__lines { list-style:none; margin:24px 0 0; display:grid; gap:16px;
                border-bottom:1px solid var(--hair); padding-bottom:24px }
.bcard__lines li { display:flex; gap:14px; font-size:1.02rem; line-height:1.55 }
.bcard__lines li::before { content:''; width:16px; height:12px; margin-top:.4em; flex:none; background:var(--blue);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.bcard__lines span { color:var(--navy) }
/* The sum line. This must reconcile against the parts, always. */
.sumline { font-size:.98rem; color:var(--navy); text-align:center; padding:22px 0; margin:0 0 20px }
.onetime { font-size:.98rem; color:var(--navy); text-align:center; background:var(--sky);
           border:1px solid var(--sky-line); border-radius:6px; padding:12px 14px; margin-bottom:24px }

/* ── plan builder ────────────────────────────────────────────────────────── */
.plan { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.85fr); gap:120px; align-items:start }
.ctlblock { background:#fff; border:1px solid var(--hair); border-radius:var(--r);
            padding:26px 24px; margin-bottom:16px }
.ctlblock h4 { font-family:var(--fb); font-size:1.06rem; font-weight:400; color:var(--navy); margin-bottom:16px }
.ctlrow { display:flex; gap:16px; flex-wrap:wrap }
/* Tests per day: round buttons. */
.ctlrow--dots .pill { width:62px; height:54px; padding:0; font-family:var(--fd); font-weight:700; font-size:1.2rem }
.ctlrow--dots .pill[aria-pressed="true"] { background:var(--sky); border-color:var(--sky); color:var(--navy) }
/* Choices drawn as cards with a check circle: the schedule and the add-ons. */
.optcards { display:grid; gap:16px; grid-template-columns:repeat(3,minmax(0,1fr)) }
@media (max-width:620px) { .optcards { grid-template-columns:minmax(0,1fr) } }
.optcard { position:relative; display:block; text-align:left; border:1px solid var(--hair);
           border-radius:8px; padding:18px 44px 18px 16px; background:#fff; width:100%; color:var(--navy) }
.optcard b { display:block; font-weight:700; font-size:1.06rem; line-height:1.4 }
.optcard span { display:block; font-size:.98rem; margin-top:8px }
.optcard::after { content:''; position:absolute; right:16px; top:20px; width:20px; height:20px;
                  border-radius:50%; border:1.5px solid var(--hair); background:#fff }
.optcard[aria-pressed="true"] { background:var(--sky); border-color:var(--sky-line) }
.optcard[aria-pressed="true"]::after { border-color:var(--cyan);
  background:var(--cyan) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3E%3Cpath d='M6 10.3l2.6 2.4L14 7.4' fill='none' stroke='%23fff' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat }
.optcards--sched .optcard { display:flex; align-items:center; min-height:88px }
.optcards--add { margin-top:0 }
.togglebox { display:flex; align-items:center; gap:12px; border:1px solid var(--hair);
             border-radius:8px; padding:14px 16px; background:#fff; width:100%; text-align:left; margin-bottom:10px; color:var(--navy) }
.togglebox[aria-pressed="true"], .togglebox:has(input:checked) { background:var(--sky); border-color:var(--sky-line) }
.togglebox input[type="radio"] { accent-color:var(--blue); flex:none }
.togglebox b { font-size:1rem; display:block } .togglebox span { font-size:.92rem; color:var(--navy) }
.receipt { background:#fff; border:1px solid var(--hair); border-radius:var(--r); overflow:hidden }
.receipt__h { background:var(--blue); padding:30px 32px; display:flex; justify-content:space-between;
              align-items:center; flex-wrap:wrap; gap:8px }
.receipt__h b, .receipt__h span { font-family:var(--fb); font-size:1.1rem; font-weight:700;
                                  text-transform:uppercase; color:#fff }
.receipt__b { padding:14px 32px 32px }
.rline { display:flex; justify-content:space-between; gap:16px; padding:22px 0;
         border-bottom:1px solid var(--hair) }
.rline > span { font-family:var(--fd); font-weight:700; font-size:1.45rem; color:var(--navy); line-height:1.3 }
.rline em { font-style:normal; font-family:var(--fb); font-weight:400; font-size:1rem; color:var(--navy); display:block; margin-top:10px }
.rline b { font-family:var(--fd); font-weight:700; font-size:1.45rem; white-space:nowrap }
.rtotal { display:flex; justify-content:space-between; align-items:center; margin:24px 0 20px;
          background:var(--sky); border:1px solid var(--sky-line); border-radius:6px; padding:26px 32px }
.rtotal span { font-family:var(--fd); font-weight:700; font-size:1.45rem; color:var(--navy) }
.rtotal b { font-family:var(--fd); font-weight:700; font-size:2.2rem; color:var(--blue); line-height:1 }
.mathbox { font-size:.95rem; color:var(--navy); text-align:center; margin-bottom:28px; line-height:1.7 }
.receipt__note { font-size:.95rem; color:var(--navy); text-align:center; margin-top:18px }

/* ── comparison table ────────────────────────────────────────────────────── */
.tablewrap { overflow-x:auto; border:1px solid var(--hair); border-radius:var(--r); background:#fff }
table.costs { width:100%; border-collapse:collapse; min-width:560px }
table.costs th { background:var(--blue); color:#fff; font-size:1.06rem; text-transform:uppercase;
                 padding:32px; text-align:left; font-weight:700 }
table.costs td { padding:30px 32px; border-top:1px solid var(--hair); vertical-align:middle }
table.costs td:first-child { font-family:var(--fd); font-weight:700; font-size:1.45rem; color:var(--navy) }
table.costs td.num { font-family:var(--fd); font-weight:700; font-size:1.85rem; white-space:nowrap; color:var(--navy) }
table.costs td.num:last-child { text-align:right }
table.costs th:last-child { text-align:right }
table.costs .src { font-family:var(--fb); font-weight:400; font-size:1rem; color:var(--navy); display:block; margin-top:10px }
.callout-rose { margin-top:0 }
.checked-on { font-size:.9rem; color:var(--muted); margin-top:14px; text-align:center }

/* ── clinic finder ───────────────────────────────────────────────────────── */
.finder { background:#fff; border:1px solid var(--hair); border-radius:var(--r); overflow:hidden }
.finder__h { background:var(--blue); color:#fff; padding:32px }
.finder__h h3 { font-size:clamp(1.6rem,2.4vw,2.2rem); color:#fff }
.finder__h p { color:#fff; font-size:1.02rem; margin-top:8px }
.finder__s { padding:32px; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(0,1.4fr) auto;
             gap:16px; align-items:end; border-bottom:1px solid var(--hair) }
.finder__s .btn { border-radius:6px; min-height:60px }
.finder__s .finder__f { grid-column:1 / -1; background:none; border:0; padding:0 }
.field label { display:block; font-size:1rem; text-transform:uppercase; color:var(--navy); font-weight:400; margin-bottom:12px }
.field input, .field select { width:100%; border:1px solid var(--hair); border-radius:6px;
                              padding:14px 16px; min-height:60px; background:#fff; color:var(--navy) }
.finder__f { background:var(--mist); padding:16px 32px; display:flex; gap:10px; flex-wrap:wrap;
             border-bottom:1px solid var(--hair) }
.finder__c { padding:18px 32px 0 }
.finder__rows { padding:14px 32px 24px; display:grid; gap:12px; list-style:none }
.crow { border:1px solid var(--hair); border-radius:14px; padding:20px 22px;
        display:grid; grid-template-columns:minmax(0,1fr) auto; gap:16px; align-items:center }
.crow__t { font-family:var(--fd); font-weight:700; font-size:1.3rem; color:var(--navy) }
.crow__m { font-size:.95rem; color:var(--muted); margin:4px 0 10px }
.chips { display:flex; gap:6px; flex-wrap:wrap }
.chip { font-size:.84rem; font-weight:700; padding:4px 12px; border-radius:99px;
        background:var(--mist); color:var(--navy); border:1px solid var(--hair) }
.chip--ok { background:var(--sky); color:var(--blue); border-color:var(--sky-line) }
.chip--no { background:var(--coral-soft); color:var(--coral); border-color:#f3c9c9 }
.crow__a { display:grid; gap:8px; justify-items:stretch }
.finder__foot { padding:8px 32px 44px; font-size:1.02rem; color:var(--navy) }

/* ── misc panels ─────────────────────────────────────────────────────────── */
.split { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(420px,100%), 1fr)); gap:24px }
.panel { border-radius:var(--r); padding:32px }
.panel--yes { background:#fff; border:1px solid var(--hair) }
.panel--no { background:#fff; border:1px solid var(--hair) }
.ticks { list-style:none; display:grid; gap:12px; margin-top:14px }
.ticks li { display:flex; gap:14px; font-size:1.02rem; align-items:flex-start }
.ticks--no li::before { width:12px; height:12px; background:var(--coral);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat }
/* The two-column lists healthviber.com uses for "the usual way" against "the
   HealthViber way": a coloured heading, then rows ruled top and bottom. */
.ways { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(420px,100%),1fr)); gap:24px }
.ways h3 { font-family:var(--fb); font-size:1.5rem; font-weight:700; text-transform:uppercase; margin-bottom:32px }
/* healthviber.com's coral and mint, one step darker so a heading passes contrast. */
.ways__no h3 { color:var(--coral) } .ways__yes h3 { color:var(--mint-ok) }
.ways ul { list-style:none; border-top:1px solid var(--hair) }
.ways li { display:flex; gap:22px; align-items:flex-start; padding:16px 12px; border-bottom:1px solid var(--hair); font-size:1.06rem }
.ways li::before { content:''; flex:none; width:14px; height:14px; margin-top:.35em }
.ways__no li::before { background:#ff7f7f;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat }
.ways__yes li::before { background:#1fbf8f;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.ways__box { background:var(--sky); border:1px solid var(--sky-line); border-radius:var(--r);
             padding:28px 32px; margin-top:32px }
.ways__box b { display:block; font-family:var(--fd); font-weight:700; font-size:2rem; line-height:1.2 }
.ways__box span { display:block; font-size:1.06rem; margin-top:8px }
.softcard { background:transparent; border:1px solid var(--hair); border-radius:var(--r); padding:32px }
.softcard h3 { font-size:1.55rem; margin-bottom:14px }
.softcard p { font-size:1rem; color:var(--navy) }
.stepno { font-weight:700; font-size:1.06rem; color:var(--blue); text-transform:uppercase; display:block; margin-bottom:20px }
.notlive { display:inline-flex; align-items:center; gap:12px; font-size:1.06rem; font-weight:700; text-transform:uppercase;
           color:var(--navy-deep); background:var(--cyan); padding:8px 18px; border-radius:99px; margin-bottom:24px }
.notlive::before { content:''; width:10px; height:10px; border-radius:50%; background:#fff; flex:none }
.fda { font-size:.95rem; color:var(--muted); border-top:1px solid var(--hair); margin-top:28px; padding-top:18px }

/* ── FAQ ─────────────────────────────────────────────────────────────────── */
.faq { max-width:var(--wrap-faq); margin:0 auto; padding:0 26px }
.faq details { border:1px solid var(--hair); border-radius:var(--r); margin-bottom:16px; background:#fff }
.faq details[open] { background:var(--mist) }
.faq summary { cursor:pointer; padding:30px 32px; font-family:var(--fb); font-weight:700;
               font-size:1.45rem; color:var(--navy); list-style:none; display:flex;
               justify-content:space-between; gap:18px; align-items:center; line-height:1.3 }
.faq summary::-webkit-details-marker { display:none }
.faq summary::after { content:''; width:18px; height:10px; flex:none; background:var(--navy);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 10'%3E%3Cpath d='M1 1l8 8 8-8' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 10'%3E%3Cpath d='M1 1l8 8 8-8' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.faq details[open] summary::after { transform:rotate(180deg) }
.faq p { padding:0 32px 30px; color:var(--navy); font-size:1.06rem; margin-top:-8px }

/* ── forms ───────────────────────────────────────────────────────────────── */
.form { display:grid; gap:14px }
.form input, .form select, .form textarea { width:100%; border:1px solid var(--hair);
        border-radius:8px; padding:14px 16px; background:#fff; min-height:54px; color:var(--navy) }
.form input:focus, .form select:focus, .form textarea:focus { border-color:var(--blue) }
.form textarea { min-height:130px; resize:vertical }
.subscribe { display:grid; gap:16px; margin-top:16px }
.subscribe input { width:100%; border:1px solid var(--hair); border-radius:99px; padding:17px 30px; background:#fff; color:var(--navy) }
.warn { color:var(--coral) } .ok { color:var(--mint-ok) } .sub { color:var(--muted) }

/* ── "Have any questions? Get in touch!" — on every page, above the footer ── */
.ask { padding:80px 0 110px }
.ask .wrap { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(460px,100%),1fr)); gap:48px 76px }
.ask h2 { font-size:clamp(2rem,3.2vw,3rem); line-height:1.18 }
.ask h2 span { display:block; color:var(--blue) }
.ask__lede { font-size:1.1rem; margin-top:28px }
.ask__contacts { display:flex; flex-wrap:wrap; gap:14px 48px; margin-top:44px }
.ask__contacts a { display:inline-flex; align-items:center; gap:12px; color:var(--navy); font-size:1.1rem }
.ask__contacts svg { width:20px; height:20px; flex:none; color:var(--navy) }
/* Underlined fields, each with its icon, the way the site's contact form is. */
.ask__form { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:26px 24px; align-content:start }
.ask__f { position:relative; border-bottom:1px solid var(--hair) }
.ask__f--wide { grid-column:1 / -1 }
.ask__f svg { position:absolute; left:0; top:20px; width:20px; height:20px; color:var(--navy); pointer-events:none }
.ask__f input, .ask__f select, .ask__f textarea { width:100%; border:0; background:transparent;
        padding:18px 10px 18px 36px; font-size:1.06rem; color:var(--navy); appearance:none; -webkit-appearance:none }
.ask__f select { background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 18 10'%3E%3Cpath d='M1 1l8 8 8-8' fill='none' stroke='%23415479' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right 4px center/18px 10px no-repeat;
                 padding-right:34px }
.ask__f textarea { min-height:60px; resize:vertical }
.ask__f:focus-within { border-bottom-color:var(--blue) }
.ask__f input::placeholder, .ask__f textarea::placeholder { color:var(--navy) }
.ask__go { grid-column:1 / -1; justify-self:start; margin-top:18px }
.ask__note { grid-column:1 / -1; font-size:.95rem; color:var(--muted) }
@media (max-width:620px) { .ask__form { grid-template-columns:minmax(0,1fr) } }

/* ── footer ──────────────────────────────────────────────────────────────── */
.ft { background:var(--blue); color:#fff }
.ft .wrap { padding-top:60px; padding-bottom:0 }
/* Five columns, stated rather than inferred: auto-fit silently reflows a fixed
   number of columns instead of failing, which is the wrong tool here. */
.ft__cols { display:grid; grid-template-columns:minmax(0,1.6fr) repeat(4, minmax(0,1fr)); gap:36px }
.ft__brand img { height:40px; width:auto }
.ft__brand p { font-size:.98rem; margin-top:34px; line-height:1.6; color:#fff }
.ft__brand p + p { margin-top:18px }
.ft h4 { font-family:var(--fb); font-size:1.02rem; font-weight:400; color:#fff; margin-bottom:34px;
         display:inline-block; padding-bottom:6px; border-bottom:1px solid #fff; min-width:112px }
.ft ul { list-style:none; display:grid; gap:6px }
.ft a { color:#fff; font-size:1.02rem }
.ft a:hover { color:#fff; text-decoration:underline }
.ft__row2 { display:flex; flex-wrap:wrap; align-items:center; gap:24px 60px; padding:48px 0 52px }
.ft__follow { display:flex; align-items:center; gap:16px }
.ft__follow a { display:inline-flex; width:30px; height:30px }
.ft__follow svg { width:30px; height:30px }
.ft__nl { margin-left:auto; display:flex; flex-wrap:wrap; align-items:center; border:1px solid #fff;
          border-radius:99px; padding:4px 6px 4px 24px; min-width:min(400px,100%) }
.ft__nl input { flex:1; min-width:0; border:0; background:transparent; color:#fff; padding:10px 0 }
.ft__nl input::placeholder { color:#fff }
.ft__nl button { color:#fff; font-size:1.1rem; padding:6px 12px 6px 14px; border-left:1px solid #fff }
.ft__nl-note { flex-basis:100%; font-size:.85rem; padding:0 0 4px }
.ft__nl-note:empty { display:none }
@media (max-width:900px) { .ft__nl { margin-left:0 } }
.ft__legal { border-top:1px solid rgba(255,255,255,.28); padding:22px 0 26px; display:grid; gap:10px; text-align:center }
.ft__legal p { font-size:.9rem; color:#d6e9fa }
.pay { display:flex; gap:8px; flex-wrap:wrap; margin-top:18px }
.pay span { font-size:.78rem; border:1px solid rgba(255,255,255,.45); border-radius:5px; padding:4px 8px; color:#fff }

/* ── policy and long-form pages ──────────────────────────────────────────────
 * Read by people who are worried about something — a charge, a return, what we
 * know about them — so: a step up in body size and generous space between
 * rules. Nothing decorative. */
.legal { font-size:1.08rem; line-height:1.75 }
.legal > * + * { margin-top:16px }
.legal h2 { font-size:clamp(1.4rem,2.2vw,1.9rem); margin-top:48px; padding-top:26px;
            border-top:1px solid var(--hair) }
.legal h2:first-child { margin-top:0; padding-top:0; border-top:0 }
.legal h3 { font-size:1.25rem; margin-top:30px }
.legal ul, .legal ol { padding-left:1.35em }
.legal li + li { margin-top:8px }
.legal strong, .legal b { font-weight:700; color:var(--navy) }
.legal a { text-decoration:underline; text-underline-offset:3px }
.legal table { width:100%; border-collapse:collapse; font-size:.98rem }
.legal th, .legal td { border:1px solid var(--hair); padding:10px 12px; text-align:left; vertical-align:top }
.legal th { background:var(--mist) }
/* The one-sentence answer, for readers who will not get past the first screen. */
.legal__lede { background:var(--sky); border-left:4px solid var(--blue);
               border-radius:0 12px 12px 0; padding:20px 22px; font-size:1.12rem }
/* A required legal notice — the FDA/DSHEA statement and its relatives. Marked
 * out because it is not our wording to soften and must stay findable. */
.legal__notice { background:var(--mist); border:1px solid var(--hair);
                 border-radius:12px; padding:20px 22px; font-size:1rem; color:var(--navy) }
.legal__foot { padding-top:40px; padding-bottom:56px }
.legal__stamp { font-size:.9rem; color:var(--muted); margin-top:14px }
.legal__help { margin-top:48px }
.legal__contact { margin-top:12px; line-height:1.9 }
.legal__more { display:grid; gap:14px; margin-top:20px;
               grid-template-columns:repeat(auto-fit,minmax(220px,1fr)) }
.legal__more a { display:block; padding:18px 20px; border:1px solid var(--hair);
                 border-radius:14px; background:#fff }
.legal__more a:hover { border-color:var(--blue) }
.legal__more b { display:block; font-family:var(--fd); font-size:1.15rem; color:var(--navy) }
.legal__more span { display:block; margin-top:4px; font-size:.95rem; color:var(--navy) }

/* The breadcrumb band healthviber.com runs under the header on inner pages. */
.crumbs { background:var(--mist) }
.crumbs .wrap { padding-top:28px; padding-bottom:28px; display:flex; flex-wrap:wrap; align-items:center; gap:10px 22px; font-size:1.15rem }
.crumbs a { color:var(--navy); text-decoration:underline; text-underline-offset:4px }
.crumbs span[aria-hidden] { color:var(--navy) }
.crumbs [aria-current] { color:var(--blue); font-weight:700 }

/* ── product and box pages ───────────────────────────────────────────────── */
.pdp { padding:60px 0 80px }
.pdp .wrap { display:grid; grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr); gap:60px; align-items:start }
.pdp__gallery { border:1px solid var(--hair); border-radius:var(--r); overflow:hidden; background:#fff; position:sticky; top:170px }
.pdp__gallery img { width:100%; height:auto; aspect-ratio:1/1; object-fit:contain; padding:24px }
.pdp__gallery--photo img { aspect-ratio:auto; object-fit:cover; padding:0 }
.pdp__sku { font-size:.95rem; color:var(--navy) }
.pdp h1 { font-size:clamp(2rem,3.2vw,2.75rem); line-height:1.18; margin-top:12px }
.pdp__sub { font-size:1.06rem; margin-top:14px }
.pdp__lede { font-size:1.06rem; margin-top:22px }
.pdp__desc { margin-top:14px; font-size:1.02rem; line-height:1.7 }
.pdp__desc > * + * { margin-top:12px }
.pdp__desc ul, .pdp__desc ol { padding-left:1.3em }
.pdp__price { display:flex; align-items:baseline; gap:14px; flex-wrap:wrap; border-top:1px solid var(--hair);
              border-bottom:1px solid var(--hair); padding:20px 0; margin-top:28px }
.pdp__price .price { font-size:2.3rem }
.pdp__price .strike { color:var(--navy); font-size:1.1rem }
.pdp__stock { display:flex; gap:14px; align-items:baseline; font-size:1.15rem; padding:18px 0;
              border-bottom:1px solid var(--hair) }
.pdp__stock b { font-family:var(--fd); font-weight:700 }
.pdp__parts { list-style:none; margin:0 }
.pdp__parts li { display:grid; grid-template-columns:52px minmax(0,1fr) auto; gap:14px; align-items:center;
                 padding:14px 0; border-bottom:1px solid var(--hair); font-size:1.06rem }
.pdp__parts img { width:52px; height:52px; object-fit:contain }
.pdp__parts a { color:var(--blue) }
.pdp__parts .amt { text-align:right; white-space:nowrap }
.pdp__parts .amt s { display:block; color:#98a4be; font-size:.95rem }
.pdp__math { font-size:1rem; margin-top:16px; text-align:center; background:var(--sky); border:1px solid var(--sky-line);
             border-radius:6px; padding:12px }
.pdp__buy { display:grid; gap:14px; margin-top:26px }
.pdp__meta { list-style:none; display:grid; gap:10px; margin-top:26px; font-size:1rem }
.pdp__meta li { display:flex; gap:12px }
.pdp__meta b { font-weight:700 }

/* Thumbnails, only drawn when a product has more than one photograph. */
.pdp__thumbs { list-style:none; display:flex; flex-wrap:wrap; gap:10px; margin-top:14px }
.pdp__thumb { padding:0; border:1px solid var(--hair); border-radius:10px; background:#fff;
              cursor:pointer; overflow:hidden; line-height:0; width:84px; height:84px }
.pdp__thumb img { width:100%; height:100%; object-fit:contain }
.pdp__thumb:hover { border-color:var(--blue) }
.pdp__thumb.is-on { border-color:var(--blue); box-shadow:0 0 0 2px var(--sky-line) }

/* How many, beside Add to cart rather than under it — the button is the thing
   being pressed and it keeps the full width. */
.pdp__qty { display:flex; align-items:center; gap:14px }
.pdp__qty label { font-weight:700 }
.pdp__qty input { width:96px; border:1px solid var(--hair); border-radius:6px;
                  padding:12px 14px; font:inherit; color:var(--navy); background:#fff }

/* Where the card goes, said in words. No brand logos: see the note in
   product.php — the checkout decides the methods and the shop holds no list. */
.paybar { margin-top:22px; padding:18px 20px; background:var(--mist);
          border:1px solid var(--hair); border-radius:var(--r) }
.paybar__l { display:block; font-size:.82rem; font-weight:700; letter-spacing:.08em;
             text-transform:uppercase; color:var(--blue) }
.paybar__c { list-style:none; display:flex; flex-wrap:wrap; gap:8px; margin:8px 0 0; padding:0 }
.paybar__c img { height:26px; width:auto; border:1px solid var(--hair); border-radius:4px; background:#fff }
.paybar__s { margin-top:6px; font-size:.98rem; color:var(--navy) }

.share { display:flex; flex-wrap:wrap; align-items:center; gap:8px 16px; margin-top:22px;
         font-size:.96rem; color:var(--muted) }
.share a { text-decoration:underline; text-underline-offset:3px }

/* The supplement panel, beside the price instead of at the foot of the page.
   Scrolls inside itself so a long ingredient table cannot push Add to cart off
   the screen on a phone. */
.pdp__facts { margin-top:26px; padding:22px 24px; border:1px solid var(--hair);
              border-radius:var(--r); background:#fff; max-height:520px; overflow:auto }
.pdp__facts h3 { font-size:1.2rem; margin-bottom:10px }
.pdp__facts h3 + * { margin-top:0 }
.pdp__facts * + h3 { margin-top:20px }
.pdp__facts table { width:100%; border-collapse:collapse; font-size:.95rem }
.pdp__facts th, .pdp__facts td { border-bottom:1px solid var(--hair); padding:7px 8px; text-align:left }
.pdp__facts ul, .pdp__facts ol { padding-left:1.25em; margin-top:8px }
.pdp__facts li + li { margin-top:4px }
.pdp__facts p { font-size:.97rem }
/* Overview / FAQ / related, under the fold. */
.pdp-tabs { position:sticky; top:150px; z-index:5; background:#fff; border-top:1px solid var(--hair); border-bottom:1px solid var(--hair) }
.pdp-tabs .wrap { display:flex; gap:10px 40px; flex-wrap:wrap }
.pdp-tabs a { padding:22px 0; font-size:1.15rem; font-weight:700; color:var(--navy); border-bottom:3px solid transparent }
.pdp-tabs a:hover { color:var(--blue); border-bottom-color:var(--blue) }
.pdp-sec { padding:64px 0; border-bottom:1px solid var(--hair) }
.pdp-sec:last-child { border-bottom:0 }
.pdp-sec > .wrap > h2 { margin-bottom:28px }
.pdp-over { display:grid; grid-template-columns:minmax(0,1.7fr) minmax(0,1fr); gap:56px; align-items:start }
.pdp-over .legal h2 { border-top:0; padding-top:0; margin-top:0 }
.pdp-aside { background:var(--mist); border:1px solid var(--hair); border-radius:var(--r); padding:30px }
.pdp-aside h3 { font-family:var(--fb); font-size:1.15rem; margin-bottom:10px }
.pdp-aside p + h3 { margin-top:24px }

/* ── home: sections healthviber.com has and the other pages do not ─────────── */
.twocol { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(460px,100%),1fr)); gap:48px 120px; align-items:center }
.twocol__img { border-radius:var(--r); overflow:hidden }
.twocol__img img { width:100%; height:auto }
.twocol .ticks, .rows { list-style:none; margin-top:40px; border-top:1px solid var(--hair); display:block }
.rows li, .twocol .ticks li { display:flex; gap:22px; align-items:flex-start; padding:16px 12px;
                              border-bottom:1px solid var(--hair); font-size:1.06rem; margin:0 }
.rows li::before { content:''; width:16px; height:12px; margin-top:.4em; flex:none; background:var(--blue);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.btnrow { display:flex; gap:16px; flex-wrap:wrap; margin-top:48px }
.btnrow--center { justify-content:center }
.aisle { color:inherit }
.aisle:hover { color:inherit; border-color:var(--blue) }
.aisle .card__img { aspect-ratio:436/360 }
.aisle .card__b { padding:22px 24px 30px }
.aisle h3 { font-size:1.55rem; margin-bottom:12px }
.aisle p { font-size:1.02rem }
.fourth { max-width:1196px; margin:48px auto 0 }
.fourth h3 { font-family:var(--fd); font-size:1.55rem }
.ingr { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:24px }
.ingr__col { display:grid; gap:24px }
.ingr__img { border:1px solid var(--hair); border-radius:var(--r); overflow:hidden }
.ingr__img img { width:100%; height:100%; object-fit:cover }
@media (max-width:980px) { .ingr { grid-template-columns:minmax(0,1fr) } .ingr__img { max-height:520px } }
.viberstep { background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:48px }
.viberstep__line { font-family:var(--fd); font-weight:700; font-size:clamp(1.6rem,2.6vw,2.2rem); line-height:1.4; margin-top:48px }
.viberstep__line b { color:var(--blue) }
.viberstep__note { background:var(--sky); border:1px solid var(--sky-line); border-radius:12px; padding:22px 32px; margin-top:24px; font-size:1.06rem }
.found { background:var(--navy); color:#fff; border-radius:var(--r); padding:48px; text-align:center }
.found__k { font-weight:700; font-size:1.1rem; text-transform:uppercase }
.found__n { font-family:var(--fd); font-weight:700; font-size:6.4rem; line-height:1; color:var(--cyan); margin-top:8px }
.found p { color:#fff; font-size:1.06rem }
.found .bar { margin:36px 0 40px }
.rating { background:var(--mist); border:1px solid var(--hair); border-radius:var(--r); padding:72px 48px; text-align:center }
.rating__for { font-size:.95rem; font-weight:700; text-transform:uppercase; color:var(--blue) }
.rating__name { font-family:var(--fd); font-weight:700; font-size:2.6rem; margin-top:12px }
.rating__rule { width:100px; height:5px; background:var(--blue); margin:40px auto 44px }
.rating__stars { color:#fff; font-size:1.6rem; letter-spacing:.3em }
.rating__n { font-size:1.1rem; margin:10px 0 60px }
.trust2 { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.9fr); gap:80px; align-items:start }
.founder { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.2fr); gap:120px; align-items:center }
.founder__img { border-radius:var(--r); overflow:hidden }
.founder__img img { width:100%; height:auto }
.founder__q { font-family:var(--fd); font-weight:700; font-size:clamp(1.45rem,2.2vw,2rem); line-height:1.4; color:var(--navy); position:relative; padding-top:110px }
.founder__q::before { content:'\201C'; position:absolute; left:-6px; top:-40px; font-size:12rem; line-height:1; color:var(--mist); font-family:Georgia, serif }
.founder__by { font-size:1.3rem; font-weight:700; margin-top:40px; display:flex; flex-wrap:wrap; gap:6px 22px; align-items:center }
.founder__by span[aria-hidden] { font-size:.8em }
.founder__by a { color:var(--navy); text-decoration:underline; text-underline-offset:4px }
.vibe { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr) minmax(0,.7fr); gap:40px; align-items:center }
.vibe__img img { width:100%; height:auto }
.vibe__small { font-size:.98rem; text-align:center; margin-top:18px; line-height:1.9 }
.closing__contact { text-align:center; margin-top:44px; font-size:1.02rem }
.closing__contact a { font-weight:700; font-size:1.2rem; color:var(--blue) }
.closing__contact span[aria-hidden] { margin:0 18px; color:var(--blue) }

/* ── responsive ──────────────────────────────────────────────────────────── */
/* Below this the category links fill the row and the shipping note has nowhere
   to sit but a line of its own, so it goes at the width it stops fitting. */
@media (max-width:1300px) {
  .nav__ship { display:none }
}
@media (max-width:1100px) {
  .hero .wrap { grid-template-columns:minmax(0,1fr) }
  .hero__side { grid-template-columns:repeat(auto-fit,minmax(min(360px,100%),1fr)); grid-template-rows:none }
  .rail__row { grid-template-columns:repeat(2,minmax(0,1fr)) }
  .plan, .founder, .trust2 { grid-template-columns:minmax(0,1fr); gap:48px }
  .vibe { grid-template-columns:minmax(0,1fr) minmax(0,1fr) }
  .vibe__img { grid-row:span 2 }
  .pdp .wrap, .pdp-over { grid-template-columns:minmax(0,1fr); gap:36px }
  .pdp__gallery { position:static }
  .ft__cols { grid-template-columns:repeat(2, minmax(0,1fr)) }
  .ft__brand { grid-column:span 2 }
}
@media (max-width:900px) {
  .util__tag { display:none }
  .util__mid { margin-left:0 }
  .hdr__row { flex-wrap:wrap; gap:16px 20px; padding-top:14px; padding-bottom:14px }
  .search { order:3; flex-basis:100%; max-width:none }
  .nav .wrap { flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch }
  .nav a { white-space:nowrap }
  .nav__ship { display:none }
  .ticker .wrap { gap:6px 22px; font-size:.9rem }
  .hero__card { grid-template-columns:minmax(0,1fr); padding:32px 24px }
  .pricetag { transform:none; margin:40px 0 30px }
  .finder__s { grid-template-columns:minmax(0,1fr) }
  .crow { grid-template-columns:minmax(0,1fr) }
  .rail__row { grid-auto-flow:column; grid-auto-columns:minmax(min(280px,85%), 1fr);
               grid-template-columns:none; overflow-x:auto; padding-bottom:8px }
  .claims__i { border-left:0 }
  .quotebar { margin-left:0; margin-right:0; padding-left:20px; padding-right:20px }
  .pdp-tabs { top:0; position:static }
  .vibe { grid-template-columns:minmax(0,1fr) }
  .vibe__img { grid-row:auto; max-width:420px }
}
@media (max-width:560px) {
  body { font-size:16px }
  .sec { padding:64px 0 }
  .sec-head { margin-bottom:32px }
  .wrap, .wrap-prose { padding-left:16px; padding-right:16px }
  .hdr__links a:not(.cartpill) { display:none }
  .wordmark img { height:34px }
  /* One line on a phone: the number and the account links. The email address
     is in the contact block and the footer of every page. */
  .util .wrap { flex-wrap:nowrap; justify-content:space-between; gap:10px; font-size:.84rem; min-height:44px }
  .util__mid a[href^="mailto:"] { display:none }
  .util__acct { margin-left:0 }
  .util a.util__pill { padding:3px 12px }
  .card__b, .panel, .softcard, .bcard__b, .viberstep, .found, .tile { padding:26px 22px }
  .receipt__b { padding:6px 20px 24px }
  .rline > span, .rline b { font-size:1.2rem }
  .rtotal { padding:20px }
  .faq { padding:0 }
  .faq summary { padding:22px; font-size:1.15rem }
  .faq p { padding:0 22px 22px }
  .ft__cols { grid-template-columns:minmax(0,1fr) }
  .ft__brand { grid-column:auto }
  table.costs th, table.costs td { padding:18px }
  .founder__q::before { font-size:8rem }
  .founder__q { padding-top:70px }
  .rating { padding:48px 24px }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto }
  *,*::before,*::after { transition:none !important; animation:none !important }
}

/* ── The First 30 Days landing page ──────────────────────────────────────────
 * /pages/first-30-days. Reuses the storefront's sections, cards and bullets;
 * only the few things with no existing equivalent are defined here.
 */
.f30-hero { background:var(--mist) }
.f30-hero h1 { font-size:clamp(2.4rem,5.4vw,4rem); line-height:1.1 }
.f30-tm { font-size:.3em; vertical-align:super; letter-spacing:0 }
.f30-lede { font-family:var(--fd); font-size:clamp(1.15rem,2vw,1.5rem); color:var(--blue); margin-top:14px }
.f30-free { margin-top:18px; background:var(--sky); border-left:4px solid var(--blue);
            border-radius:0 12px 12px 0; padding:16px 20px }
.f30-cta { display:flex; gap:16px; flex-wrap:wrap; margin-top:28px }
.f30-turn { font-family:var(--fd); font-size:clamp(1.15rem,2.4vw,1.65rem); line-height:1.4; margin-top:22px }
.f30-turn span { color:var(--mint-dim) }
.f30-turn b { color:var(--cyan) }
.f30-values { font-size:.9rem; color:var(--muted); letter-spacing:.02em }
/* Six short steps, three across. Column major, so the pairs read downward: 1
   and 2 in the first column, 3 and 4 in the second, 5 and 6 in the third. The
   numbers come from a CSS counter in document order, so they stay 1 to 6
   whichever way the grid flows. */
.f30-path { counter-reset:f30; list-style:none; padding:0; margin-top:8px;
            display:grid; grid-auto-flow:column; grid-template-rows:repeat(2,auto);
            grid-auto-columns:1fr; gap:20px 36px }
@media (max-width:900px) { .f30-path { grid-template-rows:repeat(3,auto) } }
@media (max-width:560px) { .f30-path { grid-auto-flow:row; grid-template-rows:auto } }
.f30-path li { position:relative; padding-left:48px; line-height:1.6 }
.f30-path li::before { counter-increment:f30; content:counter(f30);
  position:absolute; left:0; top:-1px; width:32px; height:32px; border-radius:50%;
  background:var(--blue); color:#fff; font-size:.9rem; font-weight:700;
  display:flex; align-items:center; justify-content:center }

/* Author portrait on the guide page. Round and modest on purpose: it should
   read as "a person wrote this", not as a hero image. */
.author-photo { width:132px; height:132px; border-radius:50%; object-fit:cover;
                display:block; margin:0 0 16px; border:1px solid var(--hair) }

/* ── ViberStep™ ──────────────────────────────────────────────────────────────
 * /pages/vibersteps. Reuses the storefront's sections, cards, pills and panels,
 * and defines only what has no equivalent. The builder deliberately reuses the
 * plan builder's .ctlblock / .ctlrow / .pill.
 */
.vs-hero { background:var(--mist) }
.vs-h1 { font-size:clamp(2.2rem,5vw,3.6rem); line-height:1.08 }
.vs-h1 span { color:var(--blue) }
.vs-card { background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:32px }
.vs-card__l { font-size:.85rem; font-weight:700; text-transform:uppercase; color:var(--blue); margin-top:16px }
.vs-card__v { font-family:var(--fd); font-weight:700; font-size:1.55rem; line-height:1.3; margin-top:4px }
.vs-card__n { font-size:.98rem; margin-top:18px; padding-top:16px; border-top:1px solid var(--hair) }
/* WHEN + I WILL, as an equation. The order is the rule, so it is laid out as
   one line that reads left to right and wraps rather than reflowing. */
.vs-formula { display:flex; flex-wrap:wrap; align-items:center; gap:12px; margin-top:26px;
              background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:22px 24px }
.vs-formula__k { font-size:.85rem; font-weight:700; text-transform:uppercase; color:#fff; background:var(--blue);
                 border-radius:99px; padding:6px 14px }
.vs-formula__t { font-size:1rem; color:var(--navy) }
.vs-formula__op { font-family:var(--fd); font-weight:700; font-size:1.4rem; color:var(--cyan) }
.vs-formula__r { font-family:var(--fd); font-weight:700; font-size:1.1rem; color:var(--blue); margin-left:auto }
.vs-icon { font-size:1.35rem; color:var(--blue); display:block; margin-top:10px }
.vs-vs { display:grid; grid-template-columns:1fr auto 1fr; gap:20px; align-items:center }
.vs-vs__arrow { font-family:var(--fd); font-weight:700; font-size:1.8rem; color:var(--cyan) }
.vs-quote { font-family:var(--fd); font-size:clamp(1.05rem,1.7vw,1.35rem); line-height:1.4; margin:12px 0 10px }
@media (max-width:820px) {
  .vs-vs { grid-template-columns:1fr }
  .vs-vs__arrow { transform:rotate(90deg); justify-self:center }
}
.vs-note { font-size:.95rem; color:var(--muted); margin-top:22px }
/* The "I will" half of the sentence is the second colour where the "When" half
   is the first — the two colours are the two halves, not decoration. */
.pill--warm[aria-pressed="true"] { background:var(--navy); border-color:var(--navy) }
.vs-build { max-width:900px }
.vs-out { background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:24px 26px; margin:6px 0 20px }
.vs-out__s { font-family:var(--fd); font-weight:700; font-size:clamp(1.2rem,2.4vw,1.75rem); line-height:1.35; margin-top:8px }
.vs-out__s.is-waiting { color:var(--mint-dim) }
.vs-out__n { font-size:.95rem; color:var(--muted); margin-top:10px }

/* ── Meter + Mentor™ ─────────────────────────────────────────────────────────
 * /pages/meter-mentor. Reuses the storefront's sections, cards, panels and
 * ticks; only the meter card, the mentor line and the session card are new.
 */
.mm-hero { background:var(--mist) }
.mm-h1 { font-size:clamp(2.1rem,4.6vw,3.4rem); line-height:1.1 }
.mm-h1 span { color:var(--blue) }
.mm-promise { font-size:.9rem; color:var(--blue); font-weight:700; margin-top:20px }
/* A reading, shown as the start of a question. The number is the loudest thing
   on the card and the sentence under it is what the session actually sells. */
.mm-meter { background:var(--navy); color:#fff; border-radius:var(--r); padding:30px 32px }
.mm-meter__h { display:flex; justify-content:space-between; align-items:center;
               font-size:.85rem; font-weight:700; text-transform:uppercase; color:var(--mint) }
.mm-meter__n { font-family:var(--fd); font-weight:700; font-size:4rem; line-height:1; margin:14px 0 0; color:#fff }
.mm-meter__n span { font-family:var(--fb); font-size:.95rem; font-weight:700; color:var(--mint); margin-left:8px }
.mm-meter__t { font-family:var(--fd); font-weight:700; font-size:1.2rem; color:var(--cyan);
               margin-top:18px; padding-top:16px; border-top:1px solid rgba(255,255,255,.2) }
.mm-meter__b { font-size:.98rem; color:var(--mint); margin-top:8px }
.mm-who { display:flex; align-items:center; gap:14px; margin-top:16px;
          background:#fff; border:1px solid var(--hair); border-radius:16px; padding:14px 18px }
.mm-who__p { width:56px; height:56px; border-radius:50%; object-fit:cover; flex:none }
.mm-who b { display:block; font-family:var(--fd); font-size:1.1rem }
.mm-who span { font-size:.85rem; color:var(--blue) }
.mm-tick { color:var(--blue); font-weight:700 }
.mm-quote { font-family:var(--fd); font-size:clamp(1.2rem,2.6vw,1.8rem); line-height:1.4; color:#fff }
.mm-quote__a { font-size:.95rem; color:var(--mint); margin-top:16px }
.mm-book { background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:32px; text-align:center }
.mm-book__n { font-family:var(--fd); font-weight:700; font-size:3.2rem; line-height:1; margin-top:10px }
.mm-book__n span { display:block; font-family:var(--fb); font-size:.85rem; font-weight:700;
                   text-transform:uppercase; color:var(--blue); margin-top:8px }
.mm-book__w { font-size:1rem; margin-top:14px }
.mm-book__f { font-size:.88rem; color:var(--muted); margin-top:10px }

/* The guide capture on /pages/first-30-days. */
.f30-get { max-width:46ch; margin-top:20px }
.f30-get__n { font-size:.88rem; color:var(--muted) }
.f30-get__dl { margin-top:4px }

/* ── HealthViber-FAN, find food ──────────────────────────────────────────────
 * /pages/findfood. The form is deliberately large-touch: it is answered on a
 * phone, often outdoors, often by somebody in a hurry.
 */
.ff-hero { background:var(--mist) }
.ff-hero h1 { font-size:clamp(1.95rem,4.4vw,3rem); line-height:1.12 }
.ff-note { font-size:.9rem; color:var(--muted); margin-top:14px }
.ff-form { max-width:none }
.ff-step { background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:26px 28px; margin-bottom:16px }
.ff-step__t { font-family:var(--fd); font-weight:700; font-size:1.35rem; margin:6px 0 4px }
.ff-q { border:0; padding:0; margin:18px 0 0 }
.ff-q__l { font-weight:700; font-size:1.05rem; padding:0; margin-bottom:10px }
.ff-q__n { font-size:.85rem; color:var(--blue); margin-right:6px }
.ff-q__h { font-size:.92rem; margin:-4px 0 10px }
/* Radios styled as the pills used everywhere else. The input stays in the
   accessibility tree and keeps keyboard and screen-reader behaviour — it is
   moved out of sight rather than display:none'd, which would remove it.
   Scoped under .form and resetting the box explicitly, because `.form input`
   sets width:100% and min-height and outranks a single class; without that
   each hidden radio dragged the page's scroll width past the viewport. */
.form .ff-r, .ff-r { position:absolute; width:1px; height:1px; min-height:0;
                     padding:0; margin:-1px; border:0; overflow:hidden;
                     clip:rect(0 0 0 0); clip-path:inset(50%); white-space:nowrap }
.ff-pill { cursor:pointer; min-height:52px; display:inline-flex; align-items:center;
           padding:12px 22px; font-size:1rem }
.ff-r:checked + .ff-pill { background:var(--blue); border-color:var(--blue); color:#fff }
.ff-r:focus-visible + .ff-pill { outline:3px solid var(--blue); outline-offset:2px }

/* ── clinic directory ────────────────────────────────────────────────────────
 * The browse pages: the country, a state, a town, one clinic. Built out of the
 * pieces already on the site — .sec, .card, .chip, .btn — with four additions
 * for the shapes that do not exist elsewhere: a tile grid, a clinic card, the
 * hours list, and the generated banner.
 */
.dgrid { list-style:none; display:grid; gap:14px; margin:0;
         grid-template-columns:repeat(auto-fill,minmax(min(248px,100%),1fr)) }
.dgrid--wide { grid-template-columns:repeat(auto-fill,minmax(min(280px,100%),1fr)) }
.dtile { display:block; background:#fff; border:1px solid var(--hair); border-radius:var(--r);
         padding:20px 22px; height:100% }
a.dtile:hover { border-color:var(--blue) }
.dtile b { display:block; font-family:var(--fd); font-size:1.22rem; color:var(--navy); line-height:1.25 }
.dtile span { display:block; margin-top:6px; color:var(--muted); font-size:.95rem }
.dtile--stat b { font-size:1.9rem; margin-top:14px }

.dgrid--tight { gap:10px; grid-template-columns:repeat(auto-fill,minmax(min(206px,100%),1fr)) }
.dtile--sm { padding:14px 16px }
.dtile--sm b { font-family:var(--fb); font-size:1rem; font-weight:700 }
.dtile--sm span { margin-top:2px; font-size:.86rem }

.dlinks { display:flex; flex-wrap:wrap; gap:8px 20px }
.dlinks a { color:var(--blue); text-decoration:underline; text-underline-offset:4px }

/* The country page's opening band: a search that hands off to the finder, the
   towns worth starting in, and the three figures the whole page is counted
   from. Nothing here is a claim — see the note at the top of directory.php. */
.dsearch { margin-top:32px; display:grid; gap:16px; align-items:end;
           grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr) auto }
.dsearch .btn { border-radius:6px; min-height:60px }
@media (max-width:720px) { .dsearch { grid-template-columns:minmax(0,1fr) } }

.dquick { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-top:20px;
          color:var(--muted); font-size:1rem }
.dquick a.pill { color:var(--navy) }

.dstats { list-style:none; display:flex; flex-wrap:wrap; gap:14px 44px; margin:32px 0 0 }
.dstats b { display:block; font-family:var(--fd); font-size:2.2rem; line-height:1.1; color:var(--navy) }
.dstats span { color:var(--muted); font-size:.95rem }

.dfine { margin-top:22px; max-width:78ch; color:var(--muted); font-size:.95rem }

/* The ranking explainer. The side card is not decoration: it is what keeps the
   two steps beside it from reading as a promise the list cannot keep today. */
.drank { display:grid; gap:24px; grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);
         align-items:start }
@media (max-width:900px) { .drank { grid-template-columns:minmax(0,1fr) } }
.drank__steps { list-style:none; counter-reset:drank; display:grid; gap:16px; margin:0 }
.drank__steps > li { counter-increment:drank; position:relative; background:#fff;
                     border:1px solid var(--hair); border-radius:var(--r);
                     padding:28px 30px 28px 92px }
.drank__steps > li::before { content:counter(drank); position:absolute; left:28px; top:28px;
                             width:44px; height:44px; display:grid; place-items:center;
                             border-radius:50%; background:var(--blue); color:#fff;
                             font-weight:700 }
.drank__steps h3 { font-size:1.35rem; margin-bottom:8px }
.drank__steps p { color:var(--navy) }
.drank__steps .chips { margin-top:16px }
.drank__order { margin:14px 0 0 1.3em; color:var(--navy) }
.drank__order li + li { margin-top:6px }
@media (max-width:560px) {
  .drank__steps > li { padding:76px 22px 24px }
  .drank__steps > li::before { left:22px; top:22px }
}
.drank__side { background:var(--navy); color:#fff; border-radius:var(--r); padding:30px }
.drank__side .eyebrow { color:var(--cyan) }
.drank__side h3 { color:#fff; font-size:1.45rem; margin:10px 0 12px }
.drank__side p { color:var(--mint) }
.drank__now { margin-top:18px; padding-top:17px; border-top:1px solid rgba(255,255,255,.22) }
.drank__now b { color:#fff }

/* Where you are in the directory: country, state, town, clinic. Four steps
   that never move, so somebody landing on a state page from a search engine
   can see what sits above and below it. */
.dpath { list-style:none; display:grid; gap:8px; margin:0 0 26px;
         grid-template-columns:repeat(4,minmax(0,1fr)) }
.dpath > li > * { display:flex; align-items:center; gap:10px; height:100%;
                  padding:12px 14px; background:#fff; border:1px solid var(--hair);
                  border-radius:13px; color:var(--muted); font-size:.82rem; font-weight:700 }
.dpath a:hover { border-color:var(--blue) }
.dpath b { flex:0 0 27px; height:27px; display:grid; place-items:center; border-radius:50%;
           background:var(--mist); color:var(--navy) }
.dpath small { display:block; font-size:.74rem; font-weight:400; color:var(--muted); margin-top:1px }
.dpath [aria-current] > * { background:var(--sky); border-color:var(--sky-line); color:var(--navy) }
.dpath [aria-current] b { background:var(--blue); color:#fff }
@media (max-width:820px) { .dpath { grid-template-columns:repeat(2,minmax(0,1fr)) } }
@media (max-width:460px) { .dpath small { display:none } }

/* The town search on a state page. A real query, not a filter over the tiles
   in front of you — see the note in the router. */
.dfind { display:grid; gap:14px; align-items:end; margin-bottom:24px;
         grid-template-columns:minmax(0,1fr) auto auto }
.dfind .btn { border-radius:6px; min-height:56px }
@media (max-width:640px) { .dfind { grid-template-columns:minmax(0,1fr) } }

/* The band above a draft rendered through a signed preview link. Deliberately
   loud: it is the only thing telling you this is not the live page. */
.previewbar { background:var(--navy); color:#fff; text-align:center;
              padding:12px 24px; font-size:.95rem }
.previewbar b { color:var(--cyan); letter-spacing:.04em; text-transform:uppercase;
                font-size:.82rem; margin-right:6px }

.dnote { background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:30px }
.dnote h3 { font-size:1.45rem; margin:10px 0 12px }
.dnote__more { margin-top:16px }

.dchecks { list-style:none; display:grid; gap:14px; margin:0;
           grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr)) }
.dchecks li { background:#fff; border:1px solid var(--hair); border-radius:var(--r);
              padding:20px 22px 20px 52px; position:relative; color:var(--navy) }
.dchecks li::before { content:''; position:absolute; left:22px; top:26px; width:14px; height:8px;
                      border-left:2.5px solid var(--blue); border-bottom:2.5px solid var(--blue);
                      transform:rotate(-45deg) }

.dfilter { display:flex; flex-wrap:wrap; align-items:end; gap:16px 24px; margin-bottom:26px }
.dfilter .field { min-width:min(320px,100%) }
.dfilter__c { color:var(--muted); font-size:1rem; margin-bottom:14px }

.dcards { display:grid; gap:18px;
          grid-template-columns:repeat(auto-fill,minmax(min(330px,100%),1fr)) }
.cdc { background:#fff; border:1px solid var(--hair); border-radius:var(--r); overflow:hidden;
       display:flex; flex-direction:column }
.cdc__b { display:block; line-height:0 }
.cdc__t { padding:20px 22px 22px; display:flex; flex-direction:column; gap:4px; flex:1 }
.cdc__chips { display:flex; gap:6px; flex-wrap:wrap; margin-bottom:8px }
.cdc__n { font-family:var(--fd); font-size:1.22rem; line-height:1.3; color:var(--navy) }
.cdc__n a:hover { color:var(--blue) }
.cdc__m { color:var(--muted); font-size:.95rem; margin-top:2px }
.cdc__a { margin-top:auto; padding-top:14px }

.dempty { background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:32px }
.dempty b { font-family:var(--fd); font-size:1.3rem; color:var(--navy) }
.dempty p { margin-top:8px; color:var(--muted) }
.dempty a { color:var(--blue); text-decoration:underline; text-underline-offset:4px }

.dpage { display:flex; align-items:center; gap:18px; margin-top:26px; color:var(--muted) }

.dclinic__hero { border-radius:var(--r); overflow:hidden; margin-bottom:28px }
.dclinic__head { max-width:820px }
.dclinic__act { display:flex; flex-wrap:wrap; gap:12px; margin-top:22px }

.dhours { display:grid; grid-template-columns:auto 1fr; gap:6px 20px; margin-top:12px;
          color:var(--muted); font-size:.98rem }
.dhours dt { font-weight:700; color:var(--navy) }

/* The generated banner. Colour and pattern come from the clinic's kind of care,
   the variant from its record id, so the same clinic draws the same banner
   every time. No photographs: an invented building sends somebody to the wrong
   door, and a stock clinician makes a claim about a clinic nobody has checked. */
.cban { position:relative; overflow:hidden; display:block; width:100% }
.cban--card { aspect-ratio:16/7 }
.cban--hero { aspect-ratio:24/7; min-height:180px }
.cban--mini { aspect-ratio:16/5; border-radius:8px }
.cban__p { position:absolute; inset:0 }
.cban__m { position:absolute; transform:translate(-50%,-50%);
           font-family:var(--fd); font-weight:700; color:#fff; opacity:.9;
           font-size:clamp(2rem,5.5vw,3.4rem); line-height:1; letter-spacing:-.02em }
.cban--hero .cban__m { font-size:clamp(2.6rem,6vw,4.4rem) }
.cban--mini .cban__m { font-size:1.5rem }
.cban__c { position:absolute; left:16px; bottom:13px; color:#fff; opacity:.92;
           font-size:.82rem; font-weight:700; letter-spacing:.02em;
           text-shadow:0 1px 2px rgba(0,0,0,.25) }
.cban--mini .cban__c { display:none }

@media (max-width:640px) {
  .dclinic__hero { margin-bottom:22px }
  .cban--hero { aspect-ratio:16/7 }
}
.dact { margin-top:22px }

/* The clinic map. A grid of plain tile images with a pin over the middle, so
   there is no map library and no key; see _clinic-map.php for how it is laid
   out. The band is centred and clipped, which is what lets one tile grid serve
   every screen width without redrawing. */
/* The tile canvas is a fixed pixel size and the frame around it is fluid, so
   the canvas is pinned to the centre rather than laid out by the frame. Flex
   centring was not reliable for an item wider than its container: the browser
   shifts an overflowing flex item to protect its start edge, which pushed the
   clinic off centre on the narrow card maps. left/translate has no such rule. */
.cmap { position:relative; overflow:hidden; border-radius:var(--r); background:#e8ecf0;
        height:320px }
.cmap__t { position:absolute; left:50%; top:50%; transform:translate(-50%,-50%) }
.cmap__t img { position:absolute; display:block; max-width:none }
/* The pin sits at the centre of the band, which is where the clinic is. */
.cmap__pin { position:absolute; width:22px; height:22px; margin:-22px 0 0 -11px;
             border-radius:50% 50% 50% 0; transform:rotate(-45deg);
             background:var(--blue); border:3px solid #fff; box-shadow:0 2px 6px rgba(0,0,0,.35) }
/* Town map: one pin per clinic on the page, each a link to it. Smaller, because
   there can be two dozen of them and they should read as a scatter of places
   rather than as two dozen alarms. */
.cmap--area { height:460px }
.cmap__pin--sm { width:16px; height:16px; margin:-16px 0 0 -8px; background:var(--navy) }
.cmap__pin--sm:hover, .cmap__pin--sm:focus { background:var(--blue); z-index:2 }
.cmap__pin--sm span { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0) }
@media (max-width:640px) { .cmap--area { height:300px } }
.cmap__c { position:absolute; right:0; bottom:0; padding:3px 8px; font-size:.72rem;
           background:rgba(255,255,255,.86); color:var(--muted); border-radius:6px 0 0 0 }
.cmap__c a { color:var(--muted); text-decoration:underline; text-underline-offset:2px }
@media (max-width:640px) { .cmap { height:220px } }
.dcards__map { margin-bottom:22px }
/* The card map fills the same band the generated banner did, so a card with a
   map and a card without are the same shape. */
.cmap--card { height:auto; aspect-ratio:16/7; border-radius:0 }
/* A card is too short to hold the attribution without eating the map, so the
   cards on a page share one line underneath the grid. The licence asks for it
   to be visible and legible, not for 24 copies of it. */
.cmap--card .cmap__c { display:none }
.dcards__attr { margin-top:14px; font-size:.82rem; color:var(--muted) }
.dcards__attr a { color:var(--muted); text-decoration:underline; text-underline-offset:3px }
.cmap--card .cmap__pin { width:16px; height:16px; margin:-16px 0 0 -8px; border-width:2px }

/* Cookie choices. Over the foot of the page rather than pushing it, drawn as a
   card, and above the sticky header so neither hides the other. */
.cookie { position:fixed; left:16px; right:16px; bottom:16px; z-index:90; max-width:760px; margin:0 auto;
          display:flex; flex-wrap:wrap; align-items:center; gap:14px 24px; padding:20px 24px;
          background:#fff; border:1px solid var(--hair); border-radius:var(--r); box-shadow:var(--shadow-lift) }
.cookie__t { flex:1 1 320px; font-size:.98rem; color:var(--navy) }
.cookie__gpc { flex-basis:100%; order:1; font-size:.9rem; color:var(--muted) }
.cookie__b { display:flex; gap:12px; flex:1 1 auto; justify-content:flex-end }
.cookie__b .btn { flex:1 1 0; min-width:120px }

/* Blog: healthviber.com's index and post layouts, on this sheet's tokens. */
.blog__title { color:var(--blue) }
.blog__feature { display:grid; gap:24px; grid-template-columns:minmax(0,2fr) minmax(0,1fr); margin-bottom:80px }
.blog__lead { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(260px,100%),1fr)); gap:16px; color:inherit }
.blog__img { display:block; border-radius:var(--r); overflow:hidden; aspect-ratio:4/3; background:var(--mist) }
.blog__img img { width:100%; height:100%; object-fit:cover }
.blog__leadcard { display:flex; flex-direction:column; gap:12px; background:var(--mist); border-radius:var(--r); padding:28px }
.blog__h { display:block; font-family:var(--fb); font-weight:400; font-size:1.35rem; line-height:1.3; color:var(--navy) }
.blog__h--sm { font-size:1.08rem }
.blog__x { display:block; font-size:.95rem; color:var(--navy) }
.blog__date { display:block; font-size:.9rem; font-weight:700; color:var(--navy) }
.blog__more { font-size:.9rem; text-decoration:underline; text-underline-offset:3px; color:var(--navy) }
.blog__side { display:grid; gap:24px; align-content:start }
.blog__sideitem { display:grid; grid-template-columns:120px minmax(0,1fr); gap:14px; align-items:start; color:inherit }
.blog__img--sm { aspect-ratio:1/1 }
.blog__other { color:var(--blue); margin-bottom:40px }
.blog__card { display:flex; flex-direction:column; gap:12px; color:inherit }
.blog__card:hover .blog__h, .blog__lead:hover .blog__h, .blog__sideitem:hover .blog__h { color:var(--blue) }
.blog__pager { display:flex; gap:16px; justify-content:center; margin-top:56px }
@media (max-width:900px) { .blog__feature { grid-template-columns:1fr } }

.post__cols { display:grid; gap:56px; grid-template-columns:minmax(0,1fr) 260px; align-items:start }
.post__meta { display:flex; flex-wrap:wrap; gap:6px 20px; font-size:.95rem; color:var(--muted); margin-bottom:10px }
.post__title { color:var(--blue); font-size:clamp(1.8rem,3vw,2.6rem); margin-bottom:28px }
.post__hero { width:100%; border-radius:var(--r); margin-bottom:28px }
.post__body img { max-width:100%; height:auto; border-radius:12px }
.post__back { margin-top:48px }
.post__rail { display:grid; gap:32px; position:sticky; top:170px }
.post__box { display:grid; gap:10px; justify-items:center; text-align:center; color:inherit }
.post__box img { width:100%; border-radius:12px }
.post__boxt { font-weight:700; color:var(--navy) }
@media (max-width:900px) { .post__cols { grid-template-columns:1fr } .post__rail { position:static; grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr)) } }
.blog__grid { grid-template-columns:repeat(3,minmax(0,1fr)) }
@media (max-width:900px) { .blog__grid { grid-template-columns:repeat(2,minmax(0,1fr)) } }
@media (max-width:560px) { .blog__grid { grid-template-columns:1fr } }
.blog__sideitem--text { grid-template-columns:1fr }
/* Posts moved from elsewhere often wrap their body in a div, which the .legal
   spacing rule (direct children only) does not reach. */
.post__body :is(p, ul, ol, blockquote, figure, table) { margin:0 0 16px }
.post__body :is(h2, h3, h4) { margin:36px 0 12px }

/* Program and company pages rebuilt from healthviber.com. Shared across them,
   so each page is sections of these rather than a style of its own. */
.pg-h { color:var(--blue) }
.pg-hero { background:var(--blue); color:#fff; border-radius:var(--r); padding:48px;
           display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:32px; align-items:center }
.pg-hero h1 { color:#fff; font-size:clamp(2rem,3.4vw,3rem); line-height:1.12 }
.pg-hero p { color:#fff; font-size:1.08rem; margin:22px 0 32px; max-width:640px }
.pg-hero .btn--line { background:#fff; border-color:#fff }
.pg-hero img { width:100%; height:auto; align-self:end }
.pg-feats h3 { font-family:var(--fb); font-weight:700; font-size:1.15rem; margin-bottom:12px }
.pg-feats p { font-size:.98rem }
.pg-split { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:64px; align-items:center }
.pg-split p { font-size:1.04rem; margin-top:16px }
.pg-split .btn { margin-top:28px }
.pg-lead { font-weight:700 }
.pg-collage { position:relative; min-height:420px }
.pg-collage img { position:absolute; width:62%; border-radius:var(--r); object-fit:cover; aspect-ratio:285/332 }
.pg-collage img:first-child { top:0; right:0 }
.pg-collage img:last-child { bottom:0; left:0; box-shadow:var(--shadow-lift) }
.pg-person { display:grid; grid-template-columns:minmax(0,.6fr) minmax(0,1.4fr); gap:64px; align-items:start }
.pg-person figure img { width:100%; height:auto; border-radius:var(--r) }
.pg-person figcaption { text-align:center; margin-top:16px; display:grid; gap:4px }
.pg-person figcaption b { font-weight:400; font-size:1.2rem; color:var(--navy) }
.pg-person p { margin-top:16px; font-size:1.04rem }
.pg-svc { display:flex; flex-direction:column; gap:16px; height:100% }
.pg-svc img { width:100%; height:180px; object-fit:contain }
.pg-svc .textlink { margin-top:auto; font-weight:700; color:var(--blue) }
@media (max-width:900px) {
  .pg-hero, .pg-split, .pg-person { grid-template-columns:1fr }
  .pg-hero { padding:32px 24px }
  .pg-collage { min-height:0; display:grid; grid-template-columns:1fr 1fr; gap:16px }
  .pg-collage img { position:static; width:100% }
  .pg-person figure { max-width:320px }
}

/* Founder page (/pages/healthviber-founder): certificate under the photo, the closing line. */
.pg-fd-side { display:grid; gap:32px; align-content:start }
.pg-fd-cert { width:100%; height:auto; border:1px solid var(--hair); border-radius:12px }
.pg-fd-h { font-size:clamp(1.9rem,3.2vw,3rem); line-height:1.15 }
.pg-fd-q b { font-style:italic; color:var(--navy) }
@media (max-width:900px) { .pg-fd-side { max-width:320px } }

/* Living in Control™ page (/pages/living-in-control). */
.pg-lic-eyebrow { color:#fff; margin-bottom:14px }
.pg-hero img.pg-lic-photo { aspect-ratio:1/1; object-fit:cover; object-position:top; border-radius:var(--r); align-self:center }
.pg-lic-build .card__b { display:flex; flex-direction:column; gap:18px; height:100% }
.pg-lic-build h3 { margin-bottom:0 }
.pg-lic-build img { width:100%; height:auto; border-radius:var(--r) }
.pg-lic-build .bullets { margin-bottom:0 }
.pg-lic-after { margin-top:auto; padding-top:18px; border-top:1px solid var(--hair) }
.pg-lic-head { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:48px; margin-bottom:48px; align-items:start }
.pg-lic-how > div { text-align:center }
.pg-lic-how img { width:100%; height:auto; border-radius:var(--r); margin-bottom:20px }
.pg-lic-how h3 { font-size:1.45rem; margin-bottom:12px }
.pg-lic-img { width:100%; height:auto; border-radius:var(--r) }
.pg-split .ticks + p { margin-top:20px }
.pg-lic-sessions { list-style:none; max-width:1000px; margin:0 auto; display:grid; gap:0 }
.pg-lic-sessions li { display:grid; grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr); gap:56px; padding:28px 0; border-top:1px solid var(--hair) }
.pg-lic-sessions li:last-child { border-bottom:1px solid var(--hair) }
.pg-lic-sessions span { display:inline-block; background:var(--cyan); color:#fff; font-weight:700; font-size:.9rem; padding:6px 14px; border-radius:999px; margin-bottom:10px }
.pg-lic-sessions h3 { font-size:1.6rem }
.pg-lic-sessions p { font-size:1.02rem }
.pg-lic-icons { margin-bottom:48px }
.pg-lic-icons img { width:56px; height:56px; margin-bottom:16px }
.pg-lic-band { background:var(--mist); border:0 }
.pg-lic-steps { display:grid; gap:24px; margin-top:28px }
.pg-lic-steps > div { display:grid; grid-template-columns:48px minmax(0,1fr); gap:18px; align-items:start }
.pg-lic-steps img { width:48px; height:48px }
.pg-lic-steps h3 { font-family:var(--fb); font-weight:700; font-size:1.15rem }
.pg-split .pg-lic-steps p { margin-top:6px; font-size:.98rem }
.pg-lic-apph { color:#fff; font-size:clamp(1.8rem,3vw,2.6rem); line-height:1.15 }
.pg-lic-appbtns { display:flex; gap:16px; flex-wrap:wrap }
.pg-lic-appbtns .btn--line { background:transparent; border-color:#fff; color:#fff }
@media (max-width:900px) {
  .pg-lic-head, .pg-lic-sessions li { grid-template-columns:1fr; gap:16px }
}

/* Church Wellness Program (pages/church-wellness-program.php); the employee and provider pages reuse these. */
.pg-hero .hero__pill { background:#fff; border-color:#fff; font-size:.85rem }
.pg-cw-aside { background:#fff; color:var(--navy); border-radius:var(--r); padding:36px; text-align:center }
.pg-cw-aside h2 { font-size:clamp(1.4rem,2vw,1.8rem); color:var(--navy) }
.pg-hero .pg-cw-aside p { color:var(--navy); font-size:1rem; margin:16px auto 0 }
.pg-cw-chips { display:flex; flex-wrap:wrap; gap:8px; justify-content:center; margin-top:20px }
.pg-cw-chips span { background:var(--cyan); color:var(--navy-deep); font-size:.75rem; font-weight:700;
                    text-transform:uppercase; border-radius:99px; padding:5px 12px }
.pg-cw-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin-top:28px }
.pg-cw-stats div { border:1px solid var(--hair); border-radius:12px; padding:16px 8px; display:grid; gap:6px }
.pg-cw-stats b { font-family:var(--fd); font-size:1.9rem; line-height:1; color:var(--blue) }
.pg-cw-stats span { font-size:.8rem; text-transform:uppercase; line-height:1.35 }
.pg-cw-step { display:flex; flex-direction:column; height:100% }
.pg-cw-when { margin-top:auto; padding-top:18px; border-top:1px solid var(--hair); font-weight:700;
              text-transform:uppercase; color:var(--blue); font-size:1rem }
.pg-cw-step p { margin-bottom:24px }
.pg-cw-host h3 { margin-top:16px }
.pg-cw-host h4 { font-family:var(--fb); font-size:.95rem; text-transform:uppercase; color:var(--blue); margin-top:28px }
.pg-cw-note { margin-top:28px; background:var(--mist); border-radius:10px; padding:14px 18px; font-size:.95rem !important }
.pg-cw-note em, .working em { font-weight:700; font-style:italic }
.pg-cw-ways h3 { color:var(--navy); font-size:1.2rem; margin-bottom:20px }
.pg-cw-ways li::before { background:var(--blue);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 12'%3E%3Cpath d='M1 6.2l4.6 4.3L15 1' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/contain no-repeat }
.pg-cw-price { background:var(--blue); color:#fff; padding:22px 16px; margin:0 0 24px; display:grid; gap:8px }
.pg-cw-price b { font-size:2rem; line-height:1.1 }
.pg-cw-price span { font-size:.9rem }
.pg-cw-icon { display:inline-grid; place-items:center; width:64px; height:64px; border-radius:12px; background:var(--mist); margin-bottom:24px }
.pg-cw-icon img { width:36px; height:36px }
.pg-cw-scope { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:56px; align-items:start }
.pg-cw-scope > div > h3 { font-size:clamp(1.6rem,2.4vw,2.2rem); margin:22px 0 18px }
.pg-cw-scope p { color:#fff }
.pg-cw-scope .ways { grid-template-columns:repeat(2,minmax(0,1fr)) }
.pg-cw-scope .ways h3 { font-size:1.05rem; margin-bottom:18px }
.pg-cw-scope .ways__yes h3 { color:#4fe0b5 } .pg-cw-scope .ways__no h3 { color:#ff9a9a }
.pg-cw-scope .ways ul { border-color:rgba(255,255,255,.25) }
.pg-cw-scope .ways li { border-color:rgba(255,255,255,.25); color:#fff; font-size:1rem }
.pg-cw-hl { color:var(--blue) }
.pg-cw-direct { margin-top:24px; font-size:.95rem }
.pg-cw-direct a { font-weight:700; color:var(--blue) }
@media (max-width:900px) {
  .pg-cw-scope, .pg-cw-scope .ways { grid-template-columns:minmax(0,1fr) }
  .pg-cw-aside { padding:28px 20px }
}
@media (max-width:420px) { .pg-cw-stats { grid-template-columns:minmax(0,1fr) } }

/* VibePoints page (/pages/vibepoints-rewards): stat boxes, points badges, the worked month, redemption. */
.pg-vp-note { margin-bottom:48px; font-size:1rem }
.pg-vp-hero { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:56px; align-items:center }
.pg-vp-hero h1 { font-size:clamp(2.2rem,3.8vw,3.4rem); line-height:1.1; margin-top:24px }
.pg-vp-hero > img { width:100%; height:auto }
.pg-vp-hero .btnrow { margin-top:36px }
.pg-vp-lede { font-size:1.08rem; margin-top:24px; max-width:620px }
.pg-vp-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:16px; margin-top:32px; max-width:620px }
.pg-vp-stats div { border:1px solid var(--hair); border-radius:14px; padding:18px 12px; text-align:center }
.pg-vp-stats b { display:block; font-family:var(--fd); font-size:1.7rem; color:var(--navy) }
.pg-vp-stats span { display:block; font-size:.9rem; text-transform:uppercase; margin-top:6px }
.pg-vp-steps { list-style:none }
.pg-vp-steps h3 { font-family:var(--fb); font-size:1.3rem; margin:24px 0 12px }
.pg-vp-num { display:inline-flex; align-items:center; justify-content:center; width:56px; height:56px;
             background:#fff; border:1px solid var(--hair); border-radius:12px; font-family:var(--fd); font-weight:700; font-size:1.5rem; color:var(--navy) }
.pg-vp-earn { list-style:none; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px }
.pg-vp-earn > * { display:flex; gap:24px; align-items:flex-start; border:1px solid var(--hair); border-radius:var(--r); padding:24px; background:#fff }
.pg-vp-earn h3 { font-family:var(--fb); font-size:1.25rem; margin-bottom:10px }
.pg-vp-earn p { font-size:1rem }
.pg-vp-pts { flex:none; width:118px; min-height:80px; background:var(--mist); border:1px solid var(--hair); border-radius:12px;
             display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:10px }
.pg-vp-pts b { font-family:var(--fd); font-size:1.8rem; line-height:1.1; color:var(--navy) }
.pg-vp-pts span { font-size:.8rem; text-transform:uppercase; margin-top:4px }
.pg-vp-rules .pg-vp-pts { width:56px; min-height:56px }
.pg-vp-new { display:inline-block; background:var(--cyan); color:var(--navy-deep); font-size:.72rem; font-weight:700;
             text-transform:uppercase; border-radius:99px; padding:4px 12px; margin:12px 0 0 }
.pg-vp-rules .pg-vp-new { margin:0 0 10px }
.pg-vp-never { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:64px; align-items:start }
.pg-vp-never h2 { margin:16px 0 24px }
.pg-vp-never .ways h3 { font-size:1.05rem; margin-bottom:16px }
.pg-vp-never .ways ul { border-color:rgba(255,255,255,.25) }
.pg-vp-never .ways li { border-color:rgba(255,255,255,.25); font-size:1rem }
.pg-vp-never .ways__yes h3 { color:#5fe0b8 } .pg-vp-never .ways__no h3 { color:#ff9c9c }
.pg-vp-month { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:64px; align-items:center }
.pg-vp-month h2 { margin:16px 0 24px }
.pg-vp-month p + p { margin-top:16px }
.pg-vp-math ul { list-style:none; margin-top:18px; border-top:1px solid var(--hair) }
.pg-vp-math li { display:flex; justify-content:space-between; gap:16px; align-items:baseline; padding:14px 0; border-bottom:1px solid var(--hair) }
.pg-vp-math li b { font-family:var(--fd); font-size:1.5rem; color:var(--blue) }
.pg-vp-total { display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; background:var(--blue); color:#fff; padding:16px 20px; margin-top:16px; font-size:1.15rem; font-weight:700 }
.pg-vp-total b { font-family:var(--fd); font-size:1.4rem }
.pg-vp-rate { display:flex; flex-wrap:wrap; align-items:center; gap:12px 16px; background:#fff; border-radius:14px; padding:20px 28px; margin:0 auto 32px; max-width:1100px }
.pg-vp-rate > b { font-family:var(--fd); font-size:clamp(2rem,3.4vw,2.8rem); color:var(--blue); margin-right:auto }
.pg-vp-rate__k { font-size:.85rem; font-weight:700; text-transform:uppercase }
.pg-vp-rate .pg-vp-new { margin:0 }
.pg-vp-redeem .softcard { background:#fff }
.pg-vp-redeem h3 { font-family:var(--fb); font-size:1.2rem; margin:24px 0 10px }
.pg-vp-big { font-family:var(--fd); font-weight:700; font-size:2.2rem; line-height:1; color:var(--blue) }
.pg-vp-unit { display:block; font-size:.9rem; text-transform:uppercase; margin-top:8px }
.pg-vp-cant { background:#fff; border-left:4px solid var(--blue); border-radius:var(--r); padding:32px 36px; margin-top:32px }
.pg-vp-cant h3 { font-style:italic; font-size:1.4rem; margin-bottom:8px }
.pg-vp-cant h4 { font-family:var(--fb); font-size:1.12rem; margin-top:20px }
.pg-vp-cant p { margin-top:8px }
.pg-vp-fine h2 { font-size:1rem; margin-bottom:8px }
.pg-vp-fine p { padding:18px 0; border-top:1px solid var(--hair); font-size:.98rem }
.pg-vp-accent { color:var(--cyan) }
@media (max-width:900px) {
  .pg-vp-hero, .pg-vp-never, .pg-vp-month, .pg-vp-earn { grid-template-columns:minmax(0,1fr); gap:32px }
  .pg-vp-hero > img { max-width:440px; margin:0 auto }
}
@media (max-width:560px) {
  .pg-vp-stats { grid-template-columns:minmax(0,1fr) }
  .pg-vp-earn > * { flex-direction:column; gap:16px }
  .pg-vp-cant { padding:24px 20px }
}

/* Individuals page (/pages/diabetes-management-for-individuals): text-first splits, photos, lists, program cards. */
.pg-dmi-flip { grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr) }
.pg-dmi-img { width:100%; max-width:440px; height:auto; border-radius:var(--r); justify-self:center }
.pg-dmi-list { margin:20px 0 0 }
.pg-dmi-list b { color:var(--navy) }
.pg-dmi-progs { max-width:960px; margin:0 auto }
.pg-dmi-progs .bullets li { font-size:.98rem }
@media (max-width:900px) { .pg-dmi-flip { grid-template-columns:1fr } .pg-dmi-flip .pg-dmi-img { order:-1 } }
/* VibePoints page: overrides of .softcard's own type sizes and the two-list layout. */
.softcard .pg-vp-big { font-size:2.2rem; color:var(--blue) }
.softcard .pg-vp-total { color:#fff; font-size:1.15rem }
.softcard h3.pg-vp-mathk, .pg-vp-math h3.eyebrow { font-size:1rem; margin-bottom:0 }
.pg-vp-never .ways { grid-template-columns:repeat(2,minmax(0,1fr)) }
@media (max-width:560px) { .pg-vp-never .ways { grid-template-columns:minmax(0,1fr) } }
/* Living in Control™: five steps as three then two, centred, as on the old page. */
.cards.pg-lic-how { display:flex; flex-wrap:wrap; justify-content:center; gap:40px 24px }
.pg-lic-how > div { flex:0 1 calc((100% - 48px) / 3); min-width:0 }
@media (max-width:900px) { .pg-lic-how > div { flex-basis:calc((100% - 24px) / 2) } }
@media (max-width:560px) { .pg-lic-how > div { flex-basis:100% } }
/* VibePoints page, phones: the three figures stay in a row; a rule keeps its number beside it. */
@media (max-width:560px) {
  .pg-vp-stats { grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px }
  .pg-vp-stats div { padding:14px 6px } .pg-vp-stats b { font-size:1.2rem } .pg-vp-stats span { font-size:.72rem }
  .pg-vp-rules > * { flex-direction:row }
}
@media (max-width:900px) { .pg-lic-img { aspect-ratio:4/3; object-fit:cover; object-position:top } }

/* Diabetes Prevention Program page (/pages/diabetes-prevention-program); also borrows .pg-lic-*. */
.pg-dpp-guide { grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr) }
.pg-dpp-h3 { color:var(--blue); font-size:1.5rem; margin-top:28px }
.pg-split .pg-dpp-h3 + p { margin-top:10px }
.pg-dpp-band { margin-top:80px }
.pg-dpp-months { font-size:.95rem; color:var(--muted); margin-top:6px }
.pg-dpp-months-list { list-style:none; display:grid; gap:14px; margin-top:18px }
.pg-dpp-months-list li { font-size:.98rem; color:var(--navy) }
.pg-dpp-months-list b { display:block; font-weight:700 }
.pg-dpp-who > div { border-radius:var(--r); padding:36px }
.pg-dpp-who h3 { font-family:var(--fb); font-weight:700; font-size:1.1rem }
.pg-dpp-who__blue { background:var(--blue); color:#fff }
.pg-dpp-who__blue h3, .pg-dpp-who__blue li { color:#fff }
.pg-dpp-who__blue .ticks li::before { background:#fff }
.pg-dpp-who__white { background:#fff }
.pg-dpp-risk { background:var(--blue); border:0; margin-bottom:64px }
.pg-dpp-risk p { color:#fff; font-size:1.3rem; font-style:italic }
.pg-dpp-risk .btn--line { background:#fff; border-color:#fff }
.pg-dpp-connect { position:relative; display:grid; grid-template-columns:minmax(0,.42fr) minmax(0,.58fr); align-items:center }
.pg-dpp-connect img { grid-column:1 / -1; grid-row:1; width:80%; justify-self:end; height:auto; border-radius:var(--r) }
.pg-dpp-connect > div { grid-column:1; grid-row:1; background:var(--blue); color:#fff; border-radius:var(--r); padding:32px; position:relative }
.pg-dpp-connect h3 { color:#fff; font-size:1.5rem }
.pg-dpp-connect p { color:#fff; margin:12px 0 24px }
.pg-dpp-connect .btn--line { background:#fff; border-color:#fff }
@media (max-width:900px) {
  .pg-dpp-guide, .pg-dpp-connect { grid-template-columns:1fr }
  .pg-dpp-connect img, .pg-dpp-connect > div { grid-column:1; grid-row:auto; width:100% }
  .pg-dpp-connect > div { margin-top:-40px; margin-left:16px; margin-right:16px }
  .pg-dpp-who > div { padding:28px 22px }
}

/* Care program page (/pages/diabetes-care-program): hero reading card, strip, steps, two-column blocks, dark lists. */
.pg-dcp-hero { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr); gap:56px; align-items:center; padding-top:40px }
.pg-dcp-hero h1 { font-size:clamp(2rem,3.4vw,3rem); line-height:1.12; margin-top:14px }
.pg-dcp-cta { display:flex; flex-wrap:wrap; gap:14px; margin-top:32px }
.pg-dcp-cta--c { justify-content:center }
.pg-dcp-ticks { display:flex; flex-wrap:wrap; gap:10px 24px; margin-top:28px; padding-top:20px; border-top:1px solid var(--hair) }
.pg-dcp-ticks li { font-size:.92rem }
.pg-dcp-card { background:var(--mist); border-top:3px solid var(--blue); border-radius:var(--r); padding:28px }
.pg-dcp-brand { font-family:var(--fd); font-weight:700; font-size:1.5rem; color:var(--navy); margin-bottom:20px }
.pg-dcp-read { background:var(--blue); color:#fff; border-radius:var(--r); padding:28px; display:grid; justify-items:center; gap:6px; text-align:center }
.pg-dcp-read b { font-family:var(--fd); font-size:3.2rem; line-height:1 }
.pg-dcp-rl { font-family:var(--fd); font-weight:700; text-transform:uppercase; font-size:1.1rem }
.pg-dcp-pill { display:inline-block; background:var(--cyan); color:var(--navy-deep); font-weight:700; font-size:.8rem; text-transform:uppercase; padding:6px 16px; border-radius:99px; margin-top:8px }
.pg-dcp-note { margin-top:20px; padding-top:16px; border-top:1px solid var(--hair); color:var(--navy); font-size:.98rem }
.pg-dcp-band { background:var(--blue); color:#fff }
.pg-dcp-band ul { list-style:none; display:flex; flex-wrap:wrap; justify-content:space-between; gap:12px 32px; padding-top:22px; padding-bottom:22px }
.pg-dcp-band li { display:flex; align-items:center; gap:12px }
.pg-dcp-band li::before { content:''; width:8px; height:8px; border-radius:50%; background:var(--cyan); flex:none }
.pg-dcp-inc { display:flex; flex-direction:column; gap:14px; height:100% }
.pg-dcp-inc img { width:52px; height:52px; padding:6px; background:var(--mist); border-radius:10px }
.pg-dcp-inc h3 { margin-bottom:0 }
.pg-dcp-inc span { margin-top:auto; padding-top:20px; border-top:1px solid var(--hair); color:var(--blue); font-weight:700; text-transform:uppercase; font-size:1.05rem }
.pg-dcp-steps { grid-template-columns:repeat(4,minmax(0,1fr)) }
.pg-dcp-n { display:inline-grid; place-items:center; width:48px; height:48px; border-radius:10px; background:var(--mist); font-family:var(--fd); font-weight:700; font-size:1.3rem; margin-bottom:20px }
.pg-dcp-steps h3 { font-size:1.3rem }
.pg-dcp-two { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; align-items:start }
.pg-dcp-rows li { padding:12px 0; border-bottom:1px solid var(--hair) }
.pg-dcp-box { margin-top:28px; background:var(--mist); border-top:3px solid var(--blue); border-radius:var(--r); padding:24px 28px }
.pg-dcp-box p { font-size:.98rem }
.pg-dcp-h4 { font-size:1.4rem; margin-top:20px }
.pg-dcp-always { margin-top:14px; font-style:italic }
.pg-dcp-ways li { color:#fff }
.pg-dcp-ways .ways__yes h3 { color:#1fbf8f } .pg-dcp-ways .ways__no h3 { color:#ff7f7f }
.pg-dcp-sos { margin:48px auto 0; max-width:960px; background:rgba(255,255,255,.08); border-left:3px solid #fff; border-radius:12px; padding:20px 28px; text-align:center; color:#fff; font-size:.98rem }
.pg-dcp-phone { margin-top:28px; display:grid; gap:4px }
.pg-dcp-phone a { font-family:var(--fd); font-weight:700; font-size:1.8rem }
@media (max-width:900px) {
  .pg-dcp-hero, .pg-dcp-two { grid-template-columns:1fr; gap:36px }
  .pg-dcp-steps { grid-template-columns:repeat(2,minmax(0,1fr)) }
  .pg-dcp-band ul { justify-content:flex-start }
}
@media (max-width:560px) { .pg-dcp-steps { grid-template-columns:1fr } }

/* Employee Health Program (pages/employee-health-program.php); builds on the pg-cw- block above. */
.pg-eh-btns { display:flex; flex-wrap:wrap; gap:12px }
.pg-eh-onblue div { border-color:rgba(255,255,255,.55) }
.pg-eh-onblue b, .pg-eh-onblue span { color:#fff }
.pg-hero .pg-eh-onblue { margin-top:32px; max-width:560px }
.pg-eh-facts { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-top:24px; text-align:left }
.pg-eh-facts div { border:1px solid var(--hair); border-radius:12px; padding:18px; display:grid; gap:6px; align-content:start }
.pg-eh-facts b { font-family:var(--fd); font-size:1.6rem; line-height:1.1; color:var(--blue) }
.pg-eh-facts span { font-size:.92rem }
.pg-eh-facts i, .pg-eh-evidence i { font-size:.85rem; font-weight:700 }
.pg-eh-two { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; align-items:start }
.pg-eh-honest h3, .pg-eh-evidence h3 { font-family:var(--fb); font-size:1rem; text-transform:uppercase;
                                       padding-bottom:18px; border-bottom:1px solid var(--hair); margin:0 }
.pg-eh-honest p { padding:20px 0; border-bottom:1px solid var(--hair); font-size:1.02rem }
.pg-eh-honest em, .pg-eh-offerhead em { font-weight:700 }
.pg-eh-evidence > div { padding:20px 0; border-bottom:1px solid var(--hair); display:grid; gap:8px }
.pg-eh-evidence > div:last-child { border-bottom:0; padding-bottom:0 }
.pg-eh-evidence h4 { font-size:1.6rem; color:var(--blue) }
.pg-eh-offerhead { display:flex; flex-wrap:wrap; justify-content:space-between; gap:16px 32px;
                   padding-bottom:28px; margin-bottom:32px; border-bottom:1px solid var(--hair) }
.pg-eh-offerhead h3 { margin-bottom:8px }
.pg-eh-price { text-align:right }
.pg-eh-price span { font-weight:700; text-transform:uppercase; font-size:.95rem }
.pg-cw-ways .ways__no li::before { background:var(--coral);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;
          mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M1 1l10 10M11 1L1 11' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat }
.pg-eh-table { margin-top:28px }
.pg-eh-table table.costs th { font-size:.9rem; padding:16px 24px }
.pg-eh-table table.costs td { padding:16px 24px; font-size:1rem }
.pg-eh-table table.costs td:first-child { font-family:var(--fb); font-weight:400; font-size:1rem }
.pg-eh-table table.costs td:last-child { text-align:right }
@media (max-width:900px) {
  .pg-eh-two { grid-template-columns:minmax(0,1fr) }
  .pg-eh-price { text-align:left }
}
@media (max-width:560px) { .pg-eh-facts { grid-template-columns:minmax(0,1fr) } }
/* Care program: the step number reads on the tinted ground. */
.pg-dcp-n { background:#fff; border:1px solid var(--hair) }
.pg-lic-sessions .pg-dpp-months-list li { display:block; padding:0; border:0 }

/* Membership pricing page (/pages/membership-pricing): paths, tiers, the compact comparison tables. */
.pg-mp-intro { max-width:820px; margin-bottom:48px }
.pg-mp-intro h1 { font-size:clamp(2.2rem,3.8vw,3.4rem); line-height:1.1; margin-top:24px }
.pg-mp-paths .card__b { text-align:center; padding:36px 24px; display:grid; gap:8px }
.pg-mp-paths b { font-family:var(--fd); font-size:1.9rem; color:var(--navy) }
.pg-mp-paths span { text-transform:uppercase; font-size:.95rem }
.pg-mp-best { border-color:var(--blue) }
.pg-mp-tiers .softcard { display:flex; flex-direction:column; gap:14px; background:#fff; position:relative }
.pg-mp-tiers .softcard h3 { margin:6px 0 0 }
.pg-mp-tiers .stepno { margin:0; font-size:.9rem }
.pg-mp-icon { width:52px; height:52px; padding:8px; background:var(--mist); border-radius:10px }
.pg-mp-ribbon { position:absolute; top:24px; right:24px; margin:0 }
.pg-mp-price { font-family:var(--fd); font-weight:700; font-size:2.6rem; line-height:1; color:var(--blue) }
.softcard .pg-mp-price { font-size:2.6rem; color:var(--blue) }
.pg-mp-price span { font-size:1.4rem }
.softcard .pg-mp-terms { font-size:.92rem }
.pg-mp-less, .pg-mp-best-for { background:var(--mist); border-radius:10px; padding:10px 16px; font-size:.92rem }
.softcard .pg-mp-less, .softcard .pg-mp-best-for { font-size:.92rem }
.pg-mp-less { text-align:center }
.pg-mp-tiers h4.eyebrow { margin-top:10px; font-size:.95rem }
.pg-mp-tiers .ticks { margin-top:0; margin-bottom:12px }
.pg-mp-tiers .ticks li { font-size:.98rem }
.pg-mp-tiers .ticks a { text-decoration:underline; text-underline-offset:3px }
.pg-mp-tiers .btn { margin-top:auto }
.softcard .pg-mp-under, .pg-mp-under { text-align:center; font-size:.92rem; margin-top:-4px }
.pg-mp-under a { text-decoration:underline; text-underline-offset:3px }
.pg-mp-trust { list-style:none; display:flex; flex-wrap:wrap; justify-content:center; gap:10px 32px; margin-top:40px; font-size:.95rem }
.pg-mp-trust li::before { content:'\2713'; color:var(--blue); margin-right:8px; font-weight:700 }
table.costs.pg-mp-cmp th, table.costs.pg-mp-cmp td { padding:16px 24px; font-size:1rem }
table.costs.pg-mp-cmp thead th { font-size:.95rem }
table.costs.pg-mp-cmp tbody th { background:transparent; color:var(--navy); text-transform:none; font-weight:700;
                                 border-top:1px solid var(--hair); text-align:left }
table.costs.pg-mp-cmp td:first-child { font-family:var(--fb); font-weight:400; font-size:1rem }
table.costs.pg-mp-cmp td.num { font-size:1.5rem; color:var(--blue); text-align:right }
table.costs.pg-mp-cmp thead th:last-child { text-align:right }
.pg-mp-cmp:not(.pg-mp-spend table) thead th:last-child { text-align:left }
.pg-mp-cmp .pg-mp-us th, .pg-mp-cmp .pg-mp-us td, table.costs.pg-mp-cmp .pg-mp-us td.num { background:var(--blue); color:#fff }
.pg-mp-foot { text-align:center; font-size:.92rem; margin:20px auto 0; max-width:860px }
.pg-mp-honest, .pg-mp-mission { margin-top:48px }
.pg-mp-mission { max-width:860px; margin-left:auto; margin-right:auto; background:var(--mist); text-align:center }
.pg-mp-scope { margin-top:80px }
.pg-mp-scope h2 { margin:16px 0 24px }
.pg-mp-scope .ways__yes h3 { color:var(--mint-ok) } .pg-mp-scope .ways__no h3 { color:var(--coral) }
.pg-mp-scope .ways ul, .pg-mp-scope .ways li { border-color:var(--hair) }
.pg-mp-figs div { background:var(--blue); color:#fff; border-radius:14px; padding:28px 16px; text-align:center; display:grid; gap:8px }
.pg-mp-figs b { font-family:var(--fd); font-size:2rem } .pg-mp-figs span { text-transform:uppercase; font-size:.92rem }
.pg-mp-spend { margin-top:32px }
.pg-mp-products h3 { font-family:var(--fb); font-size:1.25rem }
@media (max-width:560px) {
  .pg-mp-ribbon { position:static; align-self:flex-start }
  table.costs.pg-mp-cmp th, table.costs.pg-mp-cmp td { padding:12px 14px }
}
.pg-eh-onblue div { text-align:center }
@media (max-width:560px) { .pg-eh-table table.costs { min-width:0 } .pg-eh-table table.costs th, .pg-eh-table table.costs td { padding:12px 10px; font-size:.88rem } }
/* Membership pricing page: the trust row uses the .ticks mark; the highlighted row is blue end to end. */
.ticks.pg-mp-trust { display:flex; gap:10px 32px }
.ticks.pg-mp-trust li { font-size:.95rem }
.ticks.pg-mp-trust li::before { content:''; color:inherit; margin-right:0; font-weight:400 }
table.costs.pg-mp-cmp tr.pg-mp-us th { background:var(--blue); color:#fff }
/* Membership pricing page, phones: the four figures two by two; the three paths shorter. */
@media (max-width:560px) {
  .cards--4.pg-mp-figs { grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px }
  .pg-mp-figs div { padding:20px 10px } .pg-mp-figs b { font-size:1.6rem } .pg-mp-figs span { font-size:.8rem }
  .pg-mp-paths .card__b { padding:20px 16px } .pg-mp-paths b { font-size:1.5rem }
}

/* Heart Health Wellness Plan page (/pages/heart-health-wellness-plan); also borrows .pg-lic-* and .pg-dpp-*. */
.pg-hh-works { align-items:start }
.pg-hh-h3 { font-family:var(--fb); font-weight:700; font-size:1.1rem; margin-top:28px }
.pg-hh-checks { display:grid; gap:80px }
.pg-hh-checks .pg-lic-img { max-width:440px; justify-self:center }
.pg-hh-feats img { width:64px; height:auto; margin-bottom:18px }
.pg-hh-steps { list-style:none; display:grid; gap:24px; margin:28px 0 8px }
.pg-hh-steps li { display:grid; grid-template-columns:48px minmax(0,1fr); gap:20px; align-items:start }
.pg-hh-steps li > span { width:48px; height:48px; border-radius:50%; background:var(--sky-line); color:var(--blue);
                         display:grid; place-items:center; font-weight:700; font-size:1.1rem }
.pg-hh-steps h3 { font-family:var(--fb); font-weight:700; font-size:1.2rem }
.pg-split .pg-hh-steps p { margin-top:6px }
@media (max-width:900px) { .pg-hh-checks { gap:48px } }

/* Real Talk page (/pages/real-talk): hero with photo, the deal, steps, ledger, closing fine print. Borrows pg-dcp- pieces. */
.pg-rt-hero { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:56px; align-items:center; padding-top:24px }
.pg-rt-hero h1 { font-size:clamp(2rem,3.4vw,3rem); line-height:1.12; margin-top:14px }
.pg-rt-hero > img { width:100%; height:auto; border-radius:var(--r) }
.pg-rt-em { color:var(--blue) }
.pg-rt-deal { margin-top:32px; padding-top:20px; border-top:1px solid var(--hair); font-size:1.3rem; font-weight:700 }
.pg-rt-step { display:flex; flex-direction:column; gap:12px; height:100% }
.pg-rt-step h3 { margin-bottom:0 }
.pg-rt-step > div { margin-top:auto; padding-top:18px; border-top:1px solid var(--hair) }
.pg-rt-step > div b { text-transform:uppercase; font-size:.95rem }
.pg-rt-step > div p { margin-top:8px; font-size:.95rem }
.pg-rt-note { max-width:960px; margin:40px auto 0; text-align:center }
.pg-rt-lh { font-size:1.6rem; margin:18px 0 8px }
.pg-rt-ledger { list-style:none }
.pg-rt-ledger li { display:grid; gap:4px; padding:16px 0; border-bottom:1px solid var(--hair) }
.pg-rt-ledger li:last-child { border-bottom:0 }
.pg-rt-ledger span { font-size:.96rem; color:var(--muted) }
.pg-rt-img { width:100%; height:auto; border-radius:var(--r) }
.pg-rt-stack { display:grid; gap:24px }
.pg-rt-fine { max-width:960px; margin:48px auto 0; text-align:center; display:grid; gap:12px }
@media (max-width:900px) { .pg-rt-hero { grid-template-columns:1fr; gap:32px } }

/* Healthcare Providers (pages/healthcare-providers.php). */
.pg-hp-img { width:100%; max-width:460px; height:auto; border-radius:var(--r); justify-self:center }
.pg-hp-flip { grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr) }
.pg-hp-list { margin-top:20px }
.pg-hp-list b { font-weight:700 }
.pg-hp-list a { color:var(--blue); font-weight:700 }
.pg-hp-h3 { font-size:clamp(1.5rem,2.2vw,2rem) }
.pg-hp-h4 { font-family:var(--fd); color:var(--blue); font-size:1.3rem; margin-top:28px }
.pg-hp-progs { max-width:900px; margin:0 auto }
.pg-hp-progs h3 { font-family:var(--fb); font-size:1.25rem; margin:0 }
.pg-hp-progs .bullets { margin-bottom:0 }
@media (max-width:900px) { .pg-hp-flip { grid-template-columns:minmax(0,1fr) } }

/* Events page (/pages/events): one event per card, picture and details side by side. */
.pg-ev { display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); gap:48px; align-items:center;
         background:#fff; border:1px solid var(--hair); border-radius:var(--r); padding:24px }
.pg-ev img { width:100%; height:100%; max-height:460px; aspect-ratio:4/3; object-fit:cover; border-radius:var(--r) }
.pg-ev h2 { font-size:clamp(1.5rem,2.4vw,2rem); line-height:1.2; margin-top:10px }
.pg-ev__sub { font-weight:700; margin-top:14px; color:var(--navy) }
.pg-ev__facts { display:grid; gap:10px; margin:20px 0; padding:18px 0; border-top:1px solid var(--hair); border-bottom:1px solid var(--hair) }
.pg-ev__facts div { display:grid; grid-template-columns:72px minmax(0,1fr); gap:12px }
.pg-ev__facts dt { font-size:.8rem; font-weight:700; text-transform:uppercase; color:var(--blue); padding-top:.2em }
.pg-ev__facts dd { color:var(--navy) }
.pg-ev .btn { margin-top:24px }
@media (max-width:900px) { .pg-ev { grid-template-columns:1fr; gap:24px; padding:16px } .pg-ev > div { padding:0 6px 10px } }

/* Founding members page (/pages/founding-members): the counter line, the deal, the mechanics card. */
.pg-fm-hero > img { border-radius:var(--r) }
.pg-fm-spot { display:inline-flex; align-items:center; gap:18px; flex-wrap:wrap; border:1px solid var(--hair); border-radius:12px; padding:16px 28px; margin-top:32px }
.pg-fm-spot .pg-vp-new { margin:0; font-size:.8rem }
.pg-fm-spot b { font-family:var(--fd); font-size:1.5rem; color:var(--navy) }
.pg-fm-deal { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:64px; align-items:center }
.pg-fm-big { font-size:clamp(1.15rem,1.6vw,1.35rem); line-height:1.6; font-weight:700; color:var(--navy) }
.pg-fm-thats { border-top:1px solid var(--hair); margin-top:24px; padding-top:20px; font-size:1.3rem; font-weight:700 }
.pg-fm-closed { font-family:var(--fd); font-weight:700; font-size:2.4rem; line-height:1.15; margin:16px 0; color:#fff }
.pg-fm-why { grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr)) }
.pg-fm-notyet li::before { background:var(--coral) }
.pg-fm-rules { background:#fff; max-width:960px }
.pg-fm-rules h3 { font-family:var(--fb); font-size:1.3rem }
.pg-fm-rules .ticks li { padding:12px 0; border-top:1px solid var(--hair) }
.pg-fm-rules .ticks li:first-child { border-top:0 }
.pg-fm-terms { margin-top:24px; font-weight:700; color:var(--blue) }
.pg-fm-terms span { margin:0 12px }
.pg-fm-legal { font-size:.95rem }
@media (max-width:900px) { .pg-fm-deal { grid-template-columns:minmax(0,1fr); gap:40px } }

/* Diabetes Management App (pages/diabetes-management-app.php); builds on the pg-hp- block above. */
.pg-hero .pg-dm-heroimg { max-width:380px; justify-self:center; align-self:center }
.pg-dm-phone { width:100%; max-width:340px; height:auto; justify-self:center }
.pg-dm-stores { display:flex; flex-wrap:wrap; gap:12px; margin-top:28px }
.pg-dm-stores img { width:150px; height:auto; display:block }
.pg-dm-feats { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,.6fr) minmax(0,1fr); gap:40px; align-items:center }
.pg-dm-feats > img { width:100%; max-width:240px; height:auto; justify-self:center }
.pg-dm-feats .pg-hp-h4:first-child { margin-top:0 }
.pg-dm-band { background:var(--blue); border-radius:var(--r); padding:40px 56px; display:flex; flex-wrap:wrap;
              align-items:center; justify-content:space-between; gap:24px }
.pg-dm-band p { color:#fff; font-size:clamp(1.2rem,2vw,1.6rem); line-height:1.4 }
.pg-dm-band em { font-weight:700 }
.pg-dm-band .btn--line { border-color:#fff }
.pg-hp-img.pg-dm-wide { max-width:none }
.pg-dm-partner { position:relative; display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.6fr); align-items:center }
.pg-dm-partner > img { grid-column:2; grid-row:1; width:100%; height:auto; border-radius:var(--r) }
.pg-dm-partner > div { grid-column:1 / span 2; grid-row:1; max-width:560px; position:relative; background:var(--blue);
                       color:#fff; border-radius:var(--r); padding:40px; box-shadow:var(--shadow-lift) }
.pg-dm-partner h2 { color:#fff; font-size:clamp(1.6rem,2.4vw,2.2rem) }
.pg-dm-partner p { color:#fff; margin-top:18px; font-size:1.04rem }
@media (max-width:900px) {
  .pg-dm-feats, .pg-dm-partner { grid-template-columns:minmax(0,1fr) }
  .pg-dm-partner > img, .pg-dm-partner > div { grid-column:1; grid-row:auto }
  .pg-dm-partner > div { margin-top:-40px; margin-left:16px; margin-right:16px; padding:28px 24px }
  .pg-dm-band { padding:32px 24px }
}
/* Founding members page: the terms line is text, not links, so it is not drawn in link blue. */
.pg-fm-terms { color:var(--navy); font-weight:400 }
@media (max-width:900px) { .pg-dm-feats > img { max-width:170px } }

/* Free consultation page (/pages/free-diabetes-consultation): feature icons, the booking band and hours. */
.pg-fc-feats img { height:64px; width:auto; margin-bottom:20px }
.pg-fc-img { width:100%; height:auto; border-radius:var(--r) }
.pg-fc-book h3 { font-size:clamp(1.6rem,2.4vw,2.2rem) }
.pg-fc-hours { margin-top:24px; display:grid; gap:6px }
.pg-fc-hours dt { font-weight:700; color:var(--blue); font-size:1.15rem; margin-bottom:4px }
.pg-fc-hours dd span { display:inline-block; min-width:170px }
.pg-fc-where { margin-top:14px }
/* Free consultation page, phones: day and hours stack rather than wrap mid-time. */
@media (max-width:560px) { .pg-fc-hours dd span { display:block; min-width:0; font-weight:700 } }

/* Diabetes risk test page (/pages/diabetes-risk-test): the snapshot card and its questions. */
.pg-rt-card { max-width:880px; margin:0 auto; border:1px solid var(--hair); border-radius:var(--r); overflow:hidden; background:#fff }
.pg-rt-head { background:var(--navy); padding:40px 48px }
.pg-rt-head h1 { color:#fff; font-size:clamp(2rem,3.4vw,2.8rem) }
.pg-rt-body { padding:16px 48px 40px }
.pg-rt-group { margin-top:32px }
.pg-rt-group h2.eyebrow { font-size:.85rem; margin-bottom:8px }
.pg-rt-group ul { list-style:none; border-top:1px solid var(--hair) }
.pg-rt-group li { padding:14px 0; border-bottom:1px solid var(--hair); display:grid; gap:4px }
.pg-rt-group li b { font-weight:700; font-size:1.06rem; color:var(--navy) }
.pg-rt-group li span { font-size:.95rem; color:var(--muted) }
.pg-rt-note { margin-top:32px }
@media (max-width:560px) { .pg-rt-head { padding:28px 20px } .pg-rt-body { padding:8px 20px 28px } }
