/* ==========================================================================
   Peptide Perfection — Wholesale
   Theme: "Depth" (concept 03, approved 2026-07-27) — soft clinical, layered.
   Layout: LP wholesale's section order and rhythm.
   Hero: the PP clinical-reskin v2 hero — copy left, floating vials right.

   Previous flat white-and-hairline stylesheet archived at
   _archive/pp.css.pre-depth-20260727.

   The rules that got us here, do not undo them:
     - dark rejected (retail ×3 and again this session). This is a LIGHT site.
     - LP's scrolling marquee is out; that slot is the static .posn band.
     - section headings LEFT-aligned — centring everything is an AI tell.
     - body 400 / secondary #5B6B85, never 300 weight grey.
   ========================================================================== */

:root{
  --blue:#2F6BFF;        /* primary */
  --blue2:#1B4ED8;       /* gradient bottom, pressed */
  --blue3:#7BA4FF;       /* light accent on dark */
  --ink:#0F1B33;         /* headings */
  --ink2:#1B2B48;        /* card titles */
  --body:#5B6B85;        /* body copy */
  --muted:#8494AC;       /* captions, micro-labels */
  --line:#E6EDF8;        /* hairlines */
  --line2:#EFF4FC;
  --paper:#F4F7FD;       /* page background */
  --tint:#EAF1FF;        /* blue tint chips/panels */
  --tint2:#F7FAFF;
  --green:#0F9D6E;
  --navy:#0C1730;
  --font:'Barlow',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  --wrap:1280px;
  --r:20px;              /* card radius */
  --sh:0 22px 46px -32px rgba(20,45,95,.5);
  --sh-lg:0 40px 80px -44px rgba(20,45,95,.58);
  --sh-sm:0 10px 24px -16px rgba(20,45,95,.45);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--body);
  font-family:var(--font);font-size:16.5px;font-weight:400;line-height:1.62;
  -webkit-font-smoothing:antialiased}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
h1,h2,h3,h4{color:var(--ink);margin:0;font-weight:700;letter-spacing:-.028em}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 26px}
.sec{margin-top:96px}
.band{margin-top:96px;padding:80px 0;background:linear-gradient(180deg,#EDF3FE,#F7FAFE);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}

/* ---------- headings ---------- */
.eyebrow{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--line);
  box-shadow:var(--sh-sm);color:var(--blue);border-radius:100px;padding:8px 16px;
  font-size:13px;font-weight:600;letter-spacing:.01em;margin-bottom:18px}
.eyebrow::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--blue)}
.shead{max-width:800px}
.shead h2{font-size:45px;line-height:1.08}
.shead .sub{font-size:17.5px;line-height:1.62;color:var(--body);margin:16px 0 0;max-width:68ch}
.shead-row{display:flex;align-items:flex-end;justify-content:space-between;gap:40px;flex-wrap:wrap}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;height:52px;padding:0 28px;
  border-radius:100px;border:1px solid transparent;font-size:15.5px;font-weight:600;cursor:pointer;
  white-space:nowrap;transition:transform .14s,box-shadow .16s,background .16s,color .16s,border-color .16s}
.btn-blue{background:linear-gradient(180deg,var(--blue),var(--blue2));color:#fff;
  box-shadow:0 14px 28px -12px rgba(47,107,255,.72)}
.btn-blue:hover{transform:translateY(-1px);box-shadow:0 18px 34px -12px rgba(47,107,255,.8)}
.btn-line{background:#fff;color:var(--ink);border-color:var(--line);box-shadow:var(--sh-sm)}
.btn-line:hover{border-color:#C7D8F8;transform:translateY(-1px)}
.btn-ink{background:var(--ink);color:#fff}
.btn-ink:hover{background:#1B2B48}
.btn-ghost-d{background:rgba(255,255,255,.09);color:#fff;border-color:rgba(255,255,255,.3)}
.btn-ghost-d:hover{background:rgba(255,255,255,.16);border-color:#fff}
.btn-sm{height:44px;padding:0 20px;font-size:14.5px}
.ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}

/* ---------- header ---------- */
.hdr{position:sticky;top:0;z-index:50;background:rgba(244,247,253,.86);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line)}
.hdr-in{height:70px;display:flex;align-items:center;justify-content:space-between;gap:20px}
.hamburger{display:none;width:40px;height:40px;align-items:center;justify-content:center;background:none;
  border:0;color:var(--ink);cursor:pointer;padding:0}
.hamburger svg{width:24px;height:24px}
.logo{flex:0 0 auto;display:flex;align-items:center}
.logo img{height:31px;width:auto}
.nav{display:flex;align-items:center;gap:2px}
.nav a{padding:9px 15px;border-radius:100px;font-size:14.5px;font-weight:500;color:#41506B;white-space:nowrap}
.nav a:hover{background:#fff;color:var(--ink);box-shadow:var(--sh-sm)}
.nav a.active{background:#fff;color:var(--ink);font-weight:600;box-shadow:var(--sh-sm)}
.hdr-actions{display:flex;align-items:center;gap:8px}
.search{width:190px;height:40px;display:flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line);
  border-radius:100px;padding:0 16px;cursor:pointer;box-shadow:var(--sh-sm)}
.search svg{width:14px;height:14px;color:var(--muted);flex:0 0 auto}
.search span{font-size:13.5px;color:var(--muted);white-space:nowrap;overflow:hidden}
.iconbtn{width:40px;height:40px;display:flex;align-items:center;justify-content:center;border-radius:50%;
  position:relative;color:#3A4658;background:none;border:none;cursor:pointer}
.iconbtn svg{width:18px;height:18px}
.iconbtn:hover{background:#fff;box-shadow:var(--sh-sm)}
.msearch{display:none}
.cart-badge{position:absolute;top:2px;right:2px;min-width:17px;height:17px;padding:0 4px;background:var(--blue);
  border-radius:100px;display:flex;align-items:center;justify-content:center;font-family:var(--mono);
  font-weight:600;font-size:9.5px;color:#fff}
.hdr-cta{background:linear-gradient(180deg,var(--blue),var(--blue2));color:#fff;border-radius:100px;height:40px;
  padding:0 20px;font-size:14px;font-weight:600;display:flex;align-items:center;white-space:nowrap;
  box-shadow:0 10px 22px -10px rgba(47,107,255,.75)}
.mnav{display:none;position:absolute;top:70px;left:0;right:0;background:#fff;border-bottom:1px solid var(--line);
  box-shadow:var(--sh);padding:12px 0 18px;z-index:60}
.mnav.open{display:block}
.mnav a{display:block;padding:13px 26px;font-size:16px;font-weight:500;color:var(--ink2)}
.mnav .mcta{margin:14px 26px 0;justify-content:center;display:flex}

/* ==========================================================================
   HERO — clinical-reskin v2 layout: copy left, floating vials right
   ========================================================================== */
.hero{padding:70px 0 0}
.hero-in{display:grid;grid-template-columns:1.04fr .96fr;gap:60px;align-items:center}
.hero h1{font-size:70px;line-height:1.02;letter-spacing:-.034em}
.hero h1 .accent{color:var(--blue);display:block}
.hero .lede{font-size:18px;line-height:1.62;color:var(--body);margin:24px 0 0;max-width:52ch}
.hero .lede strong{color:var(--ink2);font-weight:600}

/* the bordered stat strip under the headline */
.stats{display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border:1px solid var(--line);
  border-radius:16px;margin-top:30px;overflow:hidden;box-shadow:var(--sh-sm)}
.stat{padding:16px 20px;border-right:1px solid var(--line)}
.stat:last-child{border-right:0}
.stat .v{display:block;font-size:23px;font-weight:700;color:var(--ink);letter-spacing:-.03em;line-height:1.2}
.stat .k{display:block;font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.11em;
  text-transform:uppercase;color:var(--muted);margin-top:5px}

/* the floating-vials panel */
.hero-fig{position:relative;border-radius:28px;overflow:hidden;
  background:linear-gradient(165deg,#E4EDFB 0%,#EFF5FE 55%,#F8FBFF 100%);
  box-shadow:var(--sh-lg),0 1px 0 rgba(255,255,255,.9) inset;border:1px solid #fff}
.hero-fig img{width:100%;height:auto}
.hero-note{position:absolute;left:22px;bottom:22px;display:flex;align-items:center;gap:11px;
  background:rgba(255,255,255,.93);backdrop-filter:blur(8px);border:1px solid #fff;border-radius:14px;
  padding:12px 16px;box-shadow:var(--sh)}
.hero-note svg{width:18px;height:18px;color:var(--green);flex:0 0 auto}
.hero-note b{display:block;font-size:14px;color:var(--ink);font-weight:700;line-height:1.3}
.hero-note span{font-size:12.5px;color:var(--muted)}

/* ---------- stock position band ---------- */
.posn{margin-top:90px;padding:70px 0;background:linear-gradient(180deg,#EDF3FE,#F7FAFE);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.posn-in{display:grid;grid-template-columns:.88fr 1.12fr;gap:56px;align-items:center}
.posn-lead h2{font-size:36px;line-height:1.1}
.posn-lead p{margin:16px 0 0;font-size:16.5px;line-height:1.62;max-width:50ch}
.posn-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin:0}
.posn-grid>div{background:#fff;border:1px solid #fff;border-radius:16px;padding:20px 22px;box-shadow:var(--sh)}
.posn-grid dt{font-family:var(--mono);font-size:10px;font-weight:500;letter-spacing:.11em;
  text-transform:uppercase;color:var(--muted)}
.posn-grid dd{margin:7px 0 0;font-size:27px;font-weight:700;color:var(--blue);letter-spacing:-.03em;line-height:1.15}
.posn-grid span{display:block;margin-top:5px;font-size:13.5px;line-height:1.5;color:var(--body)}

/* ---------- who we supply ---------- */
.ops{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:36px}
.op{background:#fff;border:1px solid #fff;border-radius:22px;padding:28px;box-shadow:var(--sh)}
.op-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.op-t{display:flex;align-items:center;gap:14px}
.op-ic{width:46px;height:46px;border-radius:15px;background:linear-gradient(160deg,#EAF1FF,#D6E4FF);
  display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.op-ic svg{width:20px;height:20px;color:var(--blue2)}
.op h3{font-size:20px;font-weight:700;color:var(--ink2)}
.op-tags{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end;max-width:210px}
.tag{font-size:11.5px;font-weight:500;color:#41608F;background:var(--tint);border-radius:100px;padding:5px 11px;
  white-space:nowrap}
.op p{margin:18px 0 0;font-size:15.5px;line-height:1.6}

/* ---------- pricing table ---------- */
.ptab-wrap{margin-top:36px;background:#fff;border:1px solid #fff;border-radius:24px;padding:10px;
  box-shadow:var(--sh-lg);overflow:auto}
table.ptab{width:100%;border-collapse:collapse;min-width:720px}
.ptab th{font-size:12px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--muted);
  text-align:left;padding:16px 20px;white-space:nowrap}
.ptab th.hi{color:var(--blue)}
.ptab td{padding:18px 20px;border-top:1px solid var(--line);vertical-align:middle;font-size:15.5px}
.ptab td.hi{background:var(--tint2)}
.ptab .tname{font-size:16.5px;font-weight:700;color:var(--ink2);display:block}
.ptab .tsub{font-size:13.5px;color:var(--muted);display:block;margin-top:2px}
.ptab .units{font-family:var(--mono);font-size:14.5px;color:var(--ink2);font-weight:500}
.disc{display:inline-flex;align-items:center;background:linear-gradient(180deg,var(--blue),var(--blue2));
  color:#fff;font-size:14px;font-weight:700;border-radius:100px;padding:6px 16px;
  box-shadow:0 8px 16px -8px rgba(47,107,255,.8)}
.pop{display:inline-flex;align-items:center;font-size:11px;font-weight:600;letter-spacing:.05em;
  text-transform:uppercase;color:#0B7355;background:#DCF6EC;border-radius:100px;padding:5px 10px;margin-left:8px}
.inc{display:inline-flex;align-items:center;gap:7px;color:var(--green);font-size:14.5px;font-weight:500}
.inc svg{width:15px;height:15px}
.pnote{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
  background:var(--tint);border-radius:18px;padding:20px 24px;margin-top:16px}
.pnote p{margin:0;font-size:14.5px;color:#33507D;max-width:76ch}

/* ---------- labeling cards ---------- */
.labs{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:36px}
.lab{border:1px solid #fff;border-radius:22px;overflow:hidden;background:#fff;display:flex;flex-direction:column;
  box-shadow:var(--sh)}
.lab-top{position:relative;padding:24px;min-height:130px;display:flex;flex-direction:column;justify-content:flex-end;
  background:radial-gradient(120% 130% at 20% 0%,#3D7BFF 0%,#1B3FAE 60%,#152F86 100%)}
.lab-top .lbi{position:absolute;top:20px;left:24px;width:36px;height:36px;border-radius:12px;
  background:rgba(255,255,255,.18);display:flex;align-items:center;justify-content:center}
.lab-top .lbi svg{width:17px;height:17px;color:#fff}
.lab-top h3{color:#fff;font-size:19px;font-weight:700}
.lab-top .lsub{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:#B7CDF5;margin-top:6px}
.lab-rec{position:absolute;top:20px;right:20px;font-size:11px;font-weight:600;letter-spacing:.04em;
  text-transform:uppercase;background:#fff;color:var(--blue2);border-radius:100px;padding:5px 11px}
.lab-bd{padding:24px;flex:1;display:flex;flex-direction:column}
.lab-bd>p{margin:0 0 18px;font-size:15px;line-height:1.6}
.lab ul{list-style:none;margin:0;padding:0}
.lab li{display:flex;gap:11px;align-items:flex-start;font-size:14.5px;line-height:1.5;margin-bottom:12px}
.lab li svg{width:15px;height:15px;color:var(--blue);flex:0 0 auto;margin-top:3px}
.lab li b{color:var(--ink2);font-weight:600}
.lab-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--line);font-family:var(--mono);
  font-size:11.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}

/* ---------- documentation ---------- */
.docs{display:grid;grid-template-columns:1fr 1fr;gap:52px;margin-top:36px;align-items:start}
.steps{list-style:none;margin:0;padding:0}
.steps li{display:grid;grid-template-columns:auto 1fr;gap:20px;padding:20px 0;border-bottom:1px solid var(--line)}
.steps li:first-child{padding-top:0}
.steps li:last-child{border-bottom:0}
.steps .n{font-family:var(--mono);font-size:22px;font-weight:600;color:var(--blue);opacity:.4;line-height:1}
.steps h4{font-size:17px;font-weight:700;color:var(--ink2);margin-bottom:6px}
.steps p{margin:0;font-size:14.5px;line-height:1.6}
.coa{background:#fff;border:1px solid #fff;border-radius:24px;padding:26px;box-shadow:var(--sh-lg)}
.coa-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.coa-h h3{font-size:19px;font-weight:700;color:var(--ink2)}
.coa-ref{font-family:var(--mono);font-size:11px;letter-spacing:.05em;color:var(--muted);margin-top:6px}
.verified{display:inline-flex;align-items:center;gap:6px;background:var(--tint);color:var(--blue2);
  font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;border-radius:100px;
  padding:6px 12px;white-space:nowrap}
.coa-big{background:linear-gradient(180deg,#EFF5FF,#fff);border:1px solid var(--line);border-radius:18px;
  padding:26px;text-align:center;margin:20px 0}
.coa-big .pct{font-size:56px;font-weight:700;color:var(--blue);line-height:1;letter-spacing:-.04em}
.coa-big .cap{font-family:var(--mono);font-size:10.5px;letter-spacing:.11em;text-transform:uppercase;
  color:var(--muted);margin-top:10px}
.coa ul{list-style:none;margin:0;padding:0}
.coa li{display:flex;gap:11px;align-items:flex-start;font-size:14.5px;line-height:1.55;margin-bottom:12px}
.coa li svg{width:15px;height:15px;color:var(--blue);flex:0 0 auto;margin-top:3px}
.coa li b{color:var(--ink2);font-weight:600}
.extras{background:var(--tint);border-radius:18px;padding:22px;margin-top:20px}
.extras h4{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--blue2);margin-bottom:14px}

/* ---------- product grid ---------- */
.prods{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-top:36px}
.prods-4{grid-template-columns:repeat(4,1fr)}
.prod{background:#fff;border:1px solid #fff;border-radius:20px;overflow:hidden;display:flex;flex-direction:column;
  box-shadow:var(--sh);transition:transform .16s,box-shadow .16s}
.prod:hover{transform:translateY(-3px);box-shadow:var(--sh-lg)}
.prod-im{position:relative;background:#E1E8FA;aspect-ratio:1/1;display:flex;align-items:center;justify-content:center}
.prod-im img{width:100%;height:100%;object-fit:cover}
.prod-im.sku{background:#E1E8FA}
.badge{position:absolute;top:12px;left:12px;font-size:11px;font-weight:600;letter-spacing:.04em;
  text-transform:uppercase;border-radius:100px;padding:5px 11px;background:#fff;box-shadow:var(--sh-sm)}
.b-new{color:#0B7355}
.b-pop{color:var(--blue2)}
.prod-bd{padding:18px;display:flex;flex-direction:column;flex:1}
.prod-cat{font-size:12.5px;color:var(--muted)}
.prod h3{font-size:21px;font-weight:700;color:var(--ink2);margin-top:6px;letter-spacing:-.03em}
.prod h3 span{font-size:16px;font-weight:500;color:var(--muted);margin-left:4px}
.prod-meta{display:flex;align-items:center;gap:12px;margin-top:9px;font-size:13px}
.pur{display:inline-flex;align-items:center;gap:6px;color:var(--body)}
.pur::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green)}
.prod-meta a{color:var(--blue);font-weight:600}
.prod-price{margin-top:14px;padding-top:14px;border-top:1px solid var(--line);display:flex;align-items:baseline;
  justify-content:space-between;gap:10px}
.prod-price .from{font-size:12px;color:var(--muted)}
.prod-price .amt{font-size:20px;font-weight:700;color:var(--ink2);letter-spacing:-.03em}
.prod-price .amt.quote{font-size:15px;color:var(--blue)}
.prod .btn{margin-top:14px;width:100%}

/* ---------- 4 steps ---------- */
.flow{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:40px}
.fs{background:#fff;border:1px solid #fff;border-radius:20px;padding:24px;box-shadow:var(--sh);text-align:left}
.fs .fn{width:44px;height:44px;border-radius:50%;background:linear-gradient(180deg,var(--blue),var(--blue2));
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;font-weight:700;
  margin-bottom:16px;box-shadow:0 10px 20px -10px rgba(47,107,255,.85)}
.fs h4{font-size:17px;font-weight:700;color:var(--ink2);margin-bottom:8px}
.fs p{margin:0;font-size:14.5px;line-height:1.6}

/* ---------- FAQ ---------- */
/* FAQ is the one CENTRED section — Luke 2026-07-30, "they're off to the left".
   .faqs was capped at 920px inside the 1280px wrap with no auto margin, so it hung
   off the left edge with ~360px of dead space to its right. The heading centres with
   it (scoped to blocks that actually contain .faqs) because centring the cards while
   the h2 stayed at the wrap's left edge just moves the misalignment rather than
   fixing it. This is a DELIBERATE exception to the left-aligned-headings rule, not a
   licence to centre other sections — everything centred is still an AI tell. */
.faqs{margin-top:36px;max-width:920px;margin-inline:auto}
.wrap:has(>.faqs)>.shead{max-width:920px;margin-inline:auto;text-align:center}
.wrap:has(>.faqs)>.shead .sub{margin-inline:auto}
.fq{background:#fff;border:1px solid #fff;border-radius:18px;margin-bottom:12px;overflow:hidden;box-shadow:var(--sh-sm)}
.fq summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:20px;
  padding:20px 22px;font-size:17px;font-weight:700;color:var(--ink2);letter-spacing:-.02em}
.fq summary::-webkit-details-marker{display:none}
.fq summary::after{content:"";width:28px;height:28px;border-radius:50%;background:var(--tint);flex:0 0 auto;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%232F6BFF' stroke-width='2.6'><path d='m6 9 6 6 6-6'/></svg>");
  background-repeat:no-repeat;background-position:center;background-size:15px;transition:transform .18s}
.fq[open] summary::after{transform:rotate(180deg)}
.fq .fa{padding:0 22px 22px;font-size:15.5px;line-height:1.66;max-width:88ch}
.fq .fa b{color:var(--ink2);font-weight:600}

/* ---------- closing CTA ---------- */
.close-in{display:grid;grid-template-columns:1fr 1fr;gap:52px;align-items:center}
.close-list{list-style:none;margin:26px 0 0;padding:0}
.close-list li{display:flex;gap:12px;align-items:flex-start;font-size:15.5px;line-height:1.6;margin-bottom:16px}
.close-list li svg{width:16px;height:16px;color:var(--blue);flex:0 0 auto;margin-top:4px}
.close-list b{color:var(--ink2);font-weight:600}
.close-fig{border-radius:24px;overflow:hidden;background:linear-gradient(165deg,#E4EDFB,#F8FBFF);
  box-shadow:var(--sh-lg);border:1px solid #fff}

/* ---------- dark CTA band ---------- */
.dark-cta{margin:96px 26px 0;border-radius:32px;padding:80px 40px;text-align:center;color:#fff;position:relative;
  overflow:hidden;background:radial-gradient(120% 130% at 50% 0%,#3D7BFF 0%,#1B3FAE 55%,#132C78 100%);
  box-shadow:0 44px 90px -52px rgba(20,45,95,.95)}
.dark-cta .eyebrow{background:rgba(255,255,255,.14);border-color:rgba(255,255,255,.2);color:#CFE0FF;box-shadow:none}
.dark-cta .eyebrow::before{background:#CFE0FF}
.dark-cta h2{font-size:50px;line-height:1.06;color:#fff;max-width:20ch;margin:0 auto}
.dark-cta h2 .accent{color:var(--blue3);display:block}
.dark-cta p{max-width:64ch;margin:18px auto 0;color:#BFD4F8;font-size:16.5px}
.dark-cta .ctas{justify-content:center}
.dark-cta .btn-blue{background:#fff;color:var(--blue2);box-shadow:0 16px 32px -14px rgba(0,0,0,.6)}

/* ---------- footer ---------- */
.foot{background:var(--navy);color:#93A6C4;padding:64px 0 30px;font-size:14.5px;margin-top:96px}
.foot-top{display:grid;grid-template-columns:1.6fr 1fr 1fr 1fr 1.25fr;gap:32px}
.flogo{height:30px;width:auto;margin-bottom:18px}
.ftag{color:#7F94B4;font-size:14px;max-width:290px;line-height:1.65;margin:0}
.foot h4{color:#fff;font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;margin:0 0 16px}
.foot ul{list-style:none;margin:0;padding:0}
.foot li{margin-bottom:12px}
.foot li a:hover{color:#fff}
.fcontact>div{display:flex;gap:11px;margin-bottom:15px;align-items:flex-start}
.fcontact svg{width:15px;height:15px;color:var(--blue3);flex:0 0 auto;margin-top:4px}
.fcontact span{display:flex;flex-direction:column;font-size:14px}
.fcontact small{color:#67809F;font-size:12.5px;margin-top:2px}
.fbottom{border-top:1px solid rgba(255,255,255,.1);margin-top:44px;padding-top:24px;display:flex;
  justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:12.5px;color:#67809F}
.fbottom .fl{display:flex;gap:22px;flex-wrap:wrap}
.fbottom .fl a{font-size:12.5px;color:#93A6C4}
.fdisc{border-top:1px solid rgba(255,255,255,.1);margin-top:24px;padding-top:24px;font-size:12px;line-height:1.75;
  color:#5C7492;text-align:center;margin-bottom:0}

/* ==========================================================================
   INNER PAGES
   ========================================================================== */
.phead{padding:30px 0 56px}
.crumb{display:flex;align-items:center;gap:9px;font-size:13px;color:var(--muted);margin-bottom:28px;flex-wrap:wrap}
.crumb a{color:var(--blue);font-weight:500}
.crumb b{color:var(--ink2);font-weight:600}
.phead-in{display:grid;grid-template-columns:1.5fr .8fr;gap:52px;align-items:start}
.phead h1{font-size:52px;line-height:1.06;letter-spacing:-.034em}
.phead .sub{font-size:17.5px;line-height:1.62;margin:18px 0 0;max-width:64ch}
.tierbox{background:#fff;border:1px solid #fff;border-radius:22px;padding:24px;box-shadow:var(--sh)}
.tb-k{font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.11em;text-transform:uppercase;
  color:var(--muted)}
.tb-v{font-size:28px;font-weight:700;color:var(--blue);letter-spacing:-.03em;margin:5px 0 12px;line-height:1.2}
.tierbox p{margin:0 0 18px;font-size:14.5px;line-height:1.55}
.tierbox .btn{width:100%}

.toolbar{display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap;
  padding-bottom:24px;margin-bottom:28px}
.chips{display:flex;gap:8px;flex-wrap:wrap}
.chip{background:#fff;border:1px solid #fff;border-radius:100px;padding:9px 17px;font-size:14.5px;font-weight:500;
  color:var(--body);cursor:pointer;display:inline-flex;align-items:center;gap:8px;box-shadow:var(--sh-sm);
  transition:transform .14s,box-shadow .16s}
.chip span{font-size:12px;color:var(--muted)}
.chip:hover{transform:translateY(-1px);color:var(--ink2)}
.chip.is-on{background:linear-gradient(180deg,var(--blue),var(--blue2));color:#fff;
  box-shadow:0 12px 24px -12px rgba(47,107,255,.8)}
.chip.is-on span{color:rgba(255,255,255,.75)}
.tbnote{font-size:14px;color:var(--muted)}
.tbnote a{color:var(--blue);font-weight:600}

.two{display:grid;grid-template-columns:1fr 1fr;gap:44px;margin-top:36px;align-items:start}
.two-fig{gap:52px}
.panel{background:#fff;border:1px solid #fff;border-radius:22px;padding:26px;margin-bottom:18px;box-shadow:var(--sh)}
.panel:last-child{margin-bottom:0}
.panel h3{font-size:19px;font-weight:700;color:var(--ink2);margin-bottom:16px}
.panel.quiet{background:var(--tint);box-shadow:none}
.panel.quiet h4{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--blue2);margin-bottom:10px}
.panel.quiet p{margin:0;font-size:14.5px;line-height:1.6}
.pside{margin:0 0 16px;font-size:14.5px;line-height:1.6}
.fine{font-size:13.5px;line-height:1.6;color:var(--muted);margin:12px 0 0}

table.mini{width:100%;border-collapse:collapse}
table.mini td{padding:12px 0;border-bottom:1px solid var(--line);font-size:15px}
table.mini td.n{text-align:right;font-family:var(--mono);font-size:14.5px;color:var(--ink2);white-space:nowrap}
table.mini tr.excl td{color:var(--muted)}
table.mini tr.excl span{font-size:11px;text-transform:uppercase;background:var(--tint);border-radius:100px;
  padding:3px 9px;margin-left:8px;color:var(--blue2)}
table.mini tr.tot td{border-bottom:0;padding-top:15px;font-weight:700;color:var(--ink2);font-size:16px}
table.mini tr.tot td.n{color:var(--blue)}
.result{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}
.result>div{background:var(--tint);border-radius:16px;padding:16px 18px}
.rk{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.rv{display:block;font-size:20px;font-weight:700;color:var(--ink2);margin-top:4px}
.rv.rblue{color:var(--blue)}

.rules{list-style:none;margin:0;padding:0}
.rules li{display:grid;grid-template-columns:auto 1fr;gap:16px;padding:18px 0;border-bottom:1px solid var(--line)}
.rules li:first-child{padding-top:0}
.rules li:last-child{border-bottom:0}
.rules svg{width:19px;height:19px;color:var(--blue);margin-top:3px}
.rules h4{font-size:17px;font-weight:700;color:var(--ink2);margin-bottom:6px}
.rules p{margin:0;font-size:14.5px;line-height:1.6}

.terms{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:36px}
.term{background:#fff;border:1px solid #fff;border-radius:20px;padding:24px;box-shadow:var(--sh)}
.term h4{font-size:17.5px;font-weight:700;color:var(--ink2);margin-bottom:11px}
.term p{margin:0;font-size:14.5px;line-height:1.65}
.term b{color:var(--ink2);font-weight:600}

.figpanel{border:1px solid #fff;border-radius:22px;overflow:hidden;background:#fff;margin-bottom:18px;box-shadow:var(--sh)}
.figpanel img{width:100%;height:auto;display:block}
.figpanel.tall img{max-height:560px;object-fit:contain;background:#F2F6FD}
.figcap{padding:16px 20px;font-size:13.5px;line-height:1.55;border-top:1px solid var(--line)}
.figcap a{color:var(--blue);font-weight:600;white-space:nowrap}
.specbox{background:#fff;border:1px solid #fff;border-radius:20px;padding:24px;box-shadow:var(--sh)}
.specbox h4{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--blue2);margin-bottom:14px}
.specbox dl{margin:0}
.specbox dl>div{display:grid;grid-template-columns:.44fr .56fr;gap:14px;padding:11px 0;border-bottom:1px solid var(--line)}
.specbox dl>div:last-child{border-bottom:0}
.specbox dt{font-size:14px;color:var(--muted)}
.specbox dd{margin:0;font-size:14px;color:var(--ink2);font-weight:500}

.ptab .rowk{font-weight:600;color:var(--ink2)}
.ptab.cmp td{text-align:left}
.ptab.spectab,.ptab.cmp{min-width:0}
.yes{display:inline-block;width:18px;height:18px;border-radius:50%;background:var(--green);position:relative;
  vertical-align:-4px}
.yes::after{content:"";position:absolute;left:5.5px;top:4.5px;width:5px;height:9px;border:solid #fff;
  border-width:0 2px 2px 0;transform:rotate(42deg)}
.pct-ok{font-family:var(--mono);font-weight:600;color:var(--green)}

.lookup{background:#fff;border:1px solid #fff;border-radius:24px;overflow:hidden;box-shadow:var(--sh-lg)}
.lookup-in{padding:28px}
.lookup-in label{display:block;font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);margin-bottom:10px}
.lookup-row{display:flex;gap:10px;flex-wrap:wrap}
.lookup-row input{flex:1;min-width:220px;height:52px;border:1px solid var(--line);border-radius:100px;
  padding:0 22px;font-family:var(--mono);font-size:16px;color:var(--ink2);background:var(--paper)}
.lookup-row input:focus{outline:none;border-color:var(--blue);background:#fff;
  box-shadow:0 0 0 4px rgba(47,107,255,.14)}
.lotdemo{background:none;border:0;padding:0;font-family:var(--mono);font-size:13px;color:var(--blue);cursor:pointer;
  border-bottom:1px solid rgba(47,107,255,.4)}
.lookup-out{padding:28px;border-top:1px solid var(--line)}
.lookup-out.miss b{display:block;font-size:17px;color:var(--ink2);margin-bottom:6px}
.lo-h{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}
.lo-k{display:block;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.lo-h b{font-size:24px;color:var(--ink2);font-weight:700}
.lo-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}
.lo-grid>div{background:var(--paper);border-radius:14px;padding:16px 18px}
.lo-grid span{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin-bottom:5px}
.lo-grid b{font-size:16px;color:var(--ink2);font-weight:700}
.lo-grid b.blue{color:var(--blue)}
.ptab.lots .dl{color:var(--blue);font-size:13.5px;font-weight:600}

.applywrap{display:grid;grid-template-columns:1.55fr .85fr;gap:40px;align-items:start}
.applyform{background:#fff;border:1px solid #fff;border-radius:24px;padding:32px;box-shadow:var(--sh-lg)}
.applyform fieldset{border:0;padding:0;margin:0 0 32px}
.applyform legend{display:flex;align-items:center;gap:12px;font-size:20px;font-weight:700;color:var(--ink2);
  margin-bottom:20px;padding:0}
.lgn{font-family:var(--mono);font-size:11px;font-weight:600;color:#fff;
  background:linear-gradient(180deg,var(--blue),var(--blue2));border-radius:100px;padding:6px 11px}
.fgrid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.field.full{grid-column:1 / -1}
.field label{display:block;font-size:14px;font-weight:600;color:var(--ink2);margin-bottom:8px}
.field label i{color:#D14343;font-style:normal}
.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:14px;
  padding:13px 16px;font-family:var(--font);font-size:15.5px;color:var(--ink2);background:var(--paper)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--blue);background:#fff;
  box-shadow:0 0 0 4px rgba(47,107,255,.14)}
.field textarea{resize:vertical}
.radios,.checks{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* ⚠️ These live inside .field, whose generic `.field label{display:block}` and
   `.field input{width:100%}` outrank a bare `.radio` (0,1,1 vs 0,1,0) — that made
   every option card a block with a 312px-wide radio floating above the text.
   Scope the selectors so they actually win. Same trap as the old .foot collision. */
.field .radio,.field .check,.radio,.check{
  display:grid;grid-template-columns:auto 1fr;gap:13px;align-items:center;
  border:1px solid var(--line);border-radius:14px;padding:15px 17px;cursor:pointer;
  background:var(--paper);margin:0;transition:border-color .14s,background .14s,box-shadow .14s}
.field .radio:hover,.field .check:hover,.radio:hover,.check:hover{border-color:#B9D0F7;background:#fff}
.field .radio input,.field .check input,.radio input,.check input{
  width:18px;height:18px;margin:0;padding:0;accent-color:var(--blue);flex:0 0 auto;cursor:pointer}
/* the option body: one title line, one sub line — never a flex column, which
   splits "<b>200 – 500</b> vials" into two rows */
.radio>span,.check>span{display:block;font-size:15.5px;color:var(--ink2);line-height:1.45}
/* block titles ONLY in the option grids — the RUO attestation uses <b> inline
   mid-sentence and would otherwise break onto three lines */
.radios .radio>span b,.checks .check>span b{display:block;font-weight:600;color:var(--ink2)}
.radio>span small,.check>span small{display:block;color:var(--muted);font-size:13px;margin-top:3px}
.attest .check{align-items:flex-start;padding:17px 19px}
.attest .check>span{line-height:1.55}
.attest .check>span b{font-weight:600;color:var(--ink2)}
/* checked state */
.radio:has(input:checked),.check:has(input:checked){
  border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px rgba(47,107,255,.14)}
.attest{margin-bottom:22px}
.attest .check{background:var(--tint);border-color:transparent}
.formmsg{margin-top:16px;border-radius:16px;padding:18px 20px;font-size:15px;line-height:1.6}
.formmsg.good{background:#E6F7F0;color:#0A5B44}
.formmsg.bad{background:#FDECEC;color:#8A2020}
.mini-steps{margin:0;padding-left:20px}
.mini-steps li{font-size:14.5px;line-height:1.6;margin-bottom:12px}
.mini-steps b{color:var(--ink2);font-weight:600}
.fcontact.light svg{color:var(--blue)}
.fcontact.light span{color:var(--ink2);font-size:14.5px}
.fcontact.light small{color:var(--muted)}

.pdp-wrap{padding:30px 0 60px}
.pdp{display:grid;grid-template-columns:1.02fr .98fr;gap:48px;align-items:start}
.pdp-main{border:1px solid #fff;border-radius:26px;overflow:hidden;background:#E1E8FA;box-shadow:var(--sh-lg)}
.pdp-thumbs{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}
.th{border:1px solid #fff;border-radius:14px;overflow:hidden;background:#EDF2FB;cursor:pointer;padding:0;
  aspect-ratio:1/1;box-shadow:var(--sh-sm)}
.th img{width:100%;height:100%;object-fit:cover}
.th.is-on{box-shadow:0 0 0 2px var(--blue)}
.pdp-buy h1{font-size:42px;line-height:1.06;margin-top:8px;letter-spacing:-.034em}
.pdp-buy h1 span{font-size:24px;font-weight:500;color:var(--muted);margin-left:6px}
.pdp-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:12px;font-size:14.5px}
.pdp-meta .dot{color:var(--line)}
.pdp-meta a{color:var(--blue);font-weight:600}
.instock{display:inline-flex;align-items:center;gap:6px;color:var(--green);font-weight:600}
.instock::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green)}
.pdp-lede{font-size:16.5px;line-height:1.62;margin:18px 0 0}
.specs-inline{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:24px 0 0}
.specs-inline>div{background:#fff;border-radius:16px;padding:14px 18px;box-shadow:var(--sh-sm)}
.specs-inline dt{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin-bottom:5px}
.specs-inline dd{margin:0;font-family:var(--mono);font-size:14px;color:var(--ink2);font-weight:500}
.calc{background:#fff;border:1px solid #fff;border-radius:24px;padding:26px;margin-top:24px;box-shadow:var(--sh-lg)}
.calc-h{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:18px}
.calc-h h3{font-size:19px;font-weight:700;color:var(--ink2)}
.calc-note{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.calc>label{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin-bottom:9px}
.calc-row{display:flex;gap:9px;align-items:center}
.stepper{width:48px;height:50px;border:1px solid var(--line);background:var(--paper);border-radius:14px;
  font-size:20px;color:var(--ink2);cursor:pointer;flex:0 0 auto}
.stepper:hover{border-color:var(--blue);color:var(--blue);background:#fff}
.calc-row input{flex:1;height:50px;border:1px solid var(--line);border-radius:14px;padding:0 14px;
  font-family:var(--mono);font-size:18px;font-weight:600;color:var(--ink2);text-align:center;min-width:0;
  background:var(--paper)}
.calc-row input:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 4px rgba(47,107,255,.14)}
#slider{width:100%;margin:18px 0 4px;accent-color:var(--blue)}
.calc-out{border-top:1px solid var(--line);margin-top:14px;padding-top:16px}
.co-row{display:flex;align-items:baseline;justify-content:space-between;gap:14px;padding:8px 0}
.co-row span{font-size:14.5px}
.co-row b{font-size:17px;color:var(--ink2);font-weight:700;font-family:var(--mono)}
.co-row b.blue{color:var(--blue);font-size:21px}
.co-row.save b{color:var(--green)}
.co-note{margin:14px 0 0;background:var(--tint);border-radius:14px;padding:13px 15px;font-size:13.5px;
  line-height:1.55;color:#33507D}
.co-note.warn{background:#FFF4E5;color:#7A4A08}
.calc-bar{height:7px;background:var(--paper);border-radius:100px;overflow:hidden;margin-top:18px}
.calc-fill{height:100%;background:linear-gradient(90deg,var(--blue),var(--blue2));border-radius:100px;transition:width .18s}
.calc-ticks{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--muted);margin-top:7px}
.fld-lab{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--muted);margin:22px 0 9px}
.pdp-select{width:100%;border:1px solid var(--line);border-radius:14px;padding:14px 16px;font-family:var(--font);
  font-size:15.5px;color:var(--ink2);background:#fff;max-width:100%}
.pdp-assur{list-style:none;margin:22px 0 0;padding:0}
.pdp-assur li{display:flex;gap:10px;align-items:center;font-size:14.5px;margin-bottom:11px}
.pdp-assur svg{width:15px;height:15px;color:var(--blue);flex:0 0 auto}
.gal-info{background:#fff;border:1px solid #fff;border-radius:20px;padding:22px;margin-top:16px;box-shadow:var(--sh)}
.gal-info h4{font-family:var(--mono);font-size:10.5px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;
  color:var(--blue2);margin-bottom:14px}
.gal-info ul{list-style:none;margin:0;padding:0}
.gal-info li{display:flex;gap:11px;align-items:flex-start;font-size:14.5px;line-height:1.55;margin-bottom:12px}
.gal-info li:last-child{margin-bottom:0}
.gal-info svg{width:15px;height:15px;color:var(--blue);flex:0 0 auto;margin-top:3px}
.gal-info b{color:var(--ink2);font-weight:600}

/* grid blowout guard — a 1fr track's automatic minimum is min-content, so a wide
   <select> or fixed-size <input> can force a column past the viewport. */
.pdp>*,.two>*,.docs>*,.close-in>*,.hero-in>*,.applywrap>*,.phead-in>*,.ops>*,.labs>*,
.prods>*,.terms>*,.flow>*,.fgrid>*,.result>*,.lo-grid>*,.specs-inline>*,.posn-in>*{min-width:0}

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media(max-width:1180px){
  .hero h1{font-size:56px}
  .shead h2{font-size:38px}
  .phead h1{font-size:42px}
  .dark-cta h2{font-size:40px}
  .docs,.close-in,.two{gap:36px}
}
@media(max-width:1080px){
  .nav,.search,.hdr-cta{display:none}
  .hamburger,.msearch{display:flex}
  .hdr-in{position:relative;height:64px}
  .hdr .logo{position:absolute;left:50%;transform:translateX(-50%)}
  .mnav{top:64px}
  .prods,.prods-4{grid-template-columns:repeat(2,1fr)}
  .labs{grid-template-columns:1fr}
  .flow{grid-template-columns:repeat(2,1fr)}
  .terms{grid-template-columns:1fr 1fr}
  .pdp,.applywrap{grid-template-columns:1fr;gap:32px}
}
@media(max-width:900px){
  .hero{padding:46px 0 0}
  .hero-in{grid-template-columns:1fr;gap:38px}
  .hero-fig{order:-1}
  .docs,.close-in,.two,.two-fig,.posn-in,.phead-in{grid-template-columns:1fr;gap:30px}
  .ops{grid-template-columns:1fr}
  .sec,.band,.posn,.dark-cta,.foot{margin-top:64px}
  .band,.posn{padding:56px 0}
  .foot-top{grid-template-columns:1fr 1fr;gap:30px 24px}
  .foot-top>div:first-child{grid-column:1 / -1}
  .lo-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:680px){
  .hero h1{font-size:40px;letter-spacing:-.03em}
  .shead h2,.posn-lead h2{font-size:30px}
  .phead h1{font-size:32px}
  .dark-cta{font-size:30px;padding:56px 24px;margin-left:16px;margin-right:16px;border-radius:24px}
  .dark-cta h2{font-size:31px}
  .pdp-buy h1{font-size:32px}
  .stats{grid-template-columns:1fr 1fr}
  .stat{border-bottom:1px solid var(--line)}
  .stat:nth-child(even){border-right:0}
  .stat:nth-child(n+3){border-bottom:0}
  .prods,.prods-4,.flow,.terms,.fgrid,.radios,.checks,.result,.specs-inline,.lo-grid,
  .posn-grid{grid-template-columns:1fr}
  .btn{width:100%}
  .op-h{flex-direction:column;gap:14px}
  .op-tags{justify-content:flex-start;max-width:none}
  .applyform{padding:22px 18px}
  .lookup-in,.lookup-out{padding:22px}
  .fbottom{flex-direction:column;align-items:flex-start}
}
@media(max-width:430px){
  .foot-top{grid-template-columns:1fr}
  .foot-top>div:first-child{grid-column:auto}
}

/* ==========================================================================
   HERO STAGE — floating cutout vials beside the COA.
   Lifted from the clinical-reskin v2 theme (front-page.php, .pp-home .stage),
   retimed for this column width. The cutouts are the theme's properly-matted
   PNGs — do NOT try to re-cut them from the studio shots, the white label sits
   within ~25 RGB of that background and threshold matting eats the label.
   NOTE: the hero certificate is .hcoa, NOT .coa — .coa is the documentation
   panel further down the page, and reusing it here pulled that panel's white
   background and padding onto the hero and stacked it over the BPC vial
   (the label rendered as "C-157"). Same trap as the old .foot collision.
   ========================================================================== */
.hero-fig{position:relative;background:none;border:0;border-radius:0;box-shadow:none;overflow:visible}
.stage{position:relative;width:100%;max-width:600px;height:640px;margin:0 auto}
.scene{position:absolute;top:0;left:50%;margin-left:-300px;width:600px;height:640px}
.glow{position:absolute;inset:8% 2% 12% 18%;
  background:radial-gradient(58% 52% at 60% 46%,rgba(47,107,255,.16),rgba(47,107,255,0) 70%);filter:blur(14px)}
.floor{position:absolute;left:32%;right:6%;bottom:5%;height:74px;z-index:0;
  background:radial-gradient(50% 60% at 50% 50%,rgba(20,45,95,.20),rgba(20,45,95,0) 72%);filter:blur(16px)}
.layer{position:absolute;will-change:transform}
.hcoa{left:-4%;top:7%;width:300px;z-index:1;border-radius:14px;overflow:hidden;background:#fff;
  border:1px solid #EDF2FA;box-shadow:0 34px 62px -20px rgba(20,45,95,.32),0 6px 16px rgba(20,45,95,.10);
  animation:ppFloatCoa 9s ease-in-out infinite}
.hcoa img{display:block;width:100%}
.hcoa-badge{position:absolute;left:14px;bottom:14px;display:flex;align-items:center;gap:7px;
  font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--blue2);
  background:rgba(255,255,255,.94);backdrop-filter:blur(4px);border:1px solid #E4EBF7;
  border-radius:100px;padding:6px 12px}
.hcoa-badge::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--green)}
.vial{filter:drop-shadow(0 30px 26px rgba(20,45,95,.24))}
.vial img{display:block;width:auto}
.v-glp{left:37%;top:33%;z-index:6;animation:ppFloatY1 7.5s ease-in-out infinite}
.v-glp img{height:326px;transform:rotate(-12deg)}
.v-bpc{left:50%;top:2%;z-index:5;animation:ppFloatY2 8.6s ease-in-out infinite .5s}
.v-bpc img{height:286px;transform:rotate(-23deg)}
.v-ghk{right:-2%;top:26%;z-index:4;animation:ppFloatY3 9.2s ease-in-out infinite 1s}
.v-ghk img{height:308px;transform:rotate(15deg)}
@keyframes ppFloatY1{0%,100%{transform:translateY(0)}50%{transform:translateY(-15px)}}
@keyframes ppFloatY2{0%,100%{transform:translateY(0)}50%{transform:translateY(-11px)}}
@keyframes ppFloatY3{0%,100%{transform:translateY(-4px)}50%{transform:translateY(12px)}}
@keyframes ppFloatCoa{0%,100%{transform:rotate(-9deg) translateY(0)}50%{transform:rotate(-9deg) translateY(-10px)}}
@media(prefers-reduced-motion:reduce){
  .hcoa,.v-glp,.v-bpc,.v-ghk{right:-2%;top:26%;z-index:4;animation:ppFloatY3 9.2s ease-in-out infinite 1s}
  .hcoa{transform:rotate(-9deg)}
}
@media(max-width:1180px){
  .stage{height:560px}
  .scene{transform:scale(.88);transform-origin:top center}
}
@media(max-width:900px){
  .stage{height:520px;max-width:100%}
  .scene{transform:scale(.82);transform-origin:top center}
}
@media(max-width:680px){
  /* stage height must track the SCALED scene, or the shrunk artwork leaves a
     dead gap above the headline (640 x scale + a little breathing room). */
  .stage{height:296px}
  .scene{transform:scale(.44);transform-origin:top center}
}
@media(max-width:430px){
  .stage{height:250px}
  .scene{transform:scale(.37);transform-origin:top center}
}

/* strength list on a catalogue tile (one tile per peptide, strengths behind it) */
.strengths{margin-top:8px;font-family:var(--mono);font-size:11.5px;letter-spacing:.04em;color:var(--muted)}

/* ---------- PDP: strength selector, pack note, tracker, price box ---------- */
.strength-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:20px}
.strength{background:#fff;border:1.5px solid var(--line);border-radius:14px;padding:12px 10px;cursor:pointer;
  text-align:center;transition:border-color .14s,box-shadow .14s,transform .14s;box-shadow:var(--sh-sm)}
.strength:hover:not(:disabled){border-color:#B9D0F7;transform:translateY(-1px)}
.strength .sl{display:block;font-size:16px;font-weight:700;color:var(--ink2);letter-spacing:-.02em}
.strength .sp{display:block;font-family:var(--mono);font-size:11px;color:var(--muted);margin-top:4px}
.strength.is-on{border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,107,255,.15)}
.strength.is-on .sl{color:var(--blue)}
.strength:disabled,.strength.is-off{opacity:.45;cursor:not-allowed}
.packnote{display:flex;gap:11px;align-items:flex-start;background:var(--tint);border-radius:14px;
  padding:14px 16px;font-size:14px;line-height:1.55;color:#33507D;margin-bottom:20px}
.packnote svg{width:17px;height:17px;color:var(--blue);flex:0 0 auto;margin-top:2px}
.packnote b{color:var(--ink2);font-weight:600}
.packmeta{display:flex;justify-content:space-between;gap:14px;margin-top:9px;font-family:var(--mono);
  font-size:11px;color:var(--muted);flex-wrap:wrap}
.buyrow{display:flex;gap:10px;margin-top:20px}
.buyrow .btn{margin:0}
.tracker{margin-top:22px;background:#fff;border-radius:16px;padding:16px 18px;box-shadow:var(--sh-sm)}
.tk-h{display:flex;justify-content:space-between;gap:14px;font-size:13.5px;margin-bottom:11px;flex-wrap:wrap}
.tk-h span:first-child{color:var(--body)}
.tk-h span:last-child{color:var(--blue);font-weight:700}
.pricebox{margin-top:18px;background:#fff;border:1px solid #fff;border-radius:20px;padding:22px;box-shadow:var(--sh)}
.pb-top{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;
  padding-bottom:14px;border-bottom:1px solid var(--line)}
.pb-amt{font-size:34px;font-weight:700;color:var(--ink);letter-spacing:-.035em}
.pb-per{font-size:13.5px;color:var(--muted);margin-left:7px}
.pb-row{display:flex;justify-content:space-between;gap:14px;padding:10px 0;font-size:14.5px}
.pb-row b{color:var(--ink2);font-family:var(--mono);font-weight:700}
.pb-row.tot{border-top:1px solid var(--line);margin-top:4px;padding-top:14px;font-weight:600}
.pb-row.tot b{font-size:19px;color:var(--blue)}
/* labeling cards on the PDP use a photo header rather than the gradient one */
.lab-im{position:relative;background:#E1E8FA;aspect-ratio:4/3;overflow:hidden}
.lab-im img{width:100%;height:100%;object-fit:cover}
.lab-tag{position:absolute;top:14px;right:14px;background:#fff;color:var(--ink2);border-radius:100px;
  padding:6px 13px;font-size:11.5px;font-weight:600;box-shadow:var(--sh-sm)}
.lab-tag.rec{background:linear-gradient(180deg,var(--blue),var(--blue2));color:#fff}
@media(max-width:1080px){.strength-grid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:680px){.strength-grid{grid-template-columns:repeat(2,1fr)}.buyrow{flex-direction:column}}

/* ---------- labeling page ---------- */
.lab-hero{align-items:center}
.lab-hero-fig{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.lab-hero-fig .lab-im{border-radius:18px;overflow:hidden;box-shadow:var(--sh);border:1px solid #fff;aspect-ratio:3/4}
.lab-hero-fig .lab-im img{width:100%;height:100%;object-fit:cover}
.lab-im-empty{display:flex;align-items:center;justify-content:center;background:var(--tint);
  aspect-ratio:3/4;padding:16px;text-align:center}
.lab-im-empty span{font-family:var(--mono);font-size:11px;letter-spacing:.09em;text-transform:uppercase;
  color:var(--blue2)}
.labs .lab{position:relative}
.labs .lab .lab-im{aspect-ratio:4/3}
.labs .lab-tag{position:absolute;top:16px;right:16px;z-index:2}
.labs .lab-bd h3{font-size:21px;font-weight:700;color:var(--ink2);margin-bottom:10px}
.lab-list{list-style:none;margin:0;padding:0}
.lab-list li{display:flex;gap:11px;align-items:flex-start;font-size:15px;line-height:1.55;margin-bottom:13px}
.lab-list li:last-child{margin-bottom:0}
.lab-list svg{width:16px;height:16px;color:var(--blue);flex:0 0 auto;margin-top:3px}
.lab-list b{color:var(--ink2);font-weight:600}
.ptab.cmp td:first-child{width:32%}
.ptab.cmp small{color:var(--muted);font-size:12.5px}
@media(max-width:900px){.lab-hero-fig{grid-template-columns:repeat(3,1fr);gap:8px}}

/* labeling hero: give the 3-vial figure a real column, and contain rather than
   crop — object-fit:cover was slicing the caps and bases off. */
.phead-in.lab-hero{grid-template-columns:1.15fr 1fr}
.lab-hero-fig{gap:14px}
.lab-hero-fig .lab-im{aspect-ratio:auto;height:340px;background:linear-gradient(165deg,#E4EDFB,#F6FAFF)}
.lab-hero-fig .lab-im img{object-fit:contain;padding:6px}
@media(max-width:900px){
  .phead-in.lab-hero{grid-template-columns:1fr}
  .lab-hero-fig .lab-im{height:220px}
}
@media(max-width:520px){ .lab-hero-fig .lab-im{height:150px} }

/* the labeling hero is one composited 3-vial image, so drop the tile grid */
.lab-hero-fig{display:block;border-radius:24px;overflow:hidden;box-shadow:var(--sh-lg);border:1px solid #fff}
.lab-hero-fig img{width:100%;height:auto;display:block}

/* Labeling hero: three square cards. Square source into a square box means no
   crop at all — the earlier 3/4 ratio was slicing the caps and bases off, and a
   single composited image seamed because each shot carries its own bg tone. */
.lab-hero-fig{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;
  border-radius:0;overflow:visible;box-shadow:none;border:0}
.lab-hero-fig .lab-im{aspect-ratio:1/1;height:auto;border-radius:18px;overflow:hidden;
  box-shadow:var(--sh);border:1px solid #fff;background:#E7EFFB}
.lab-hero-fig .lab-im img{width:100%;height:100%;object-fit:cover;padding:0}

/* ---------- brand lockup (markup, not an <img>) ----------
   The brand-kit SVGs set the wordmark as <text> in Barlow Condensed. Loaded via
   <img> they don't get the page webfont, fall back to Arial Narrow and overflow
   their viewBox — the single-line one literally renders "PEPTIDE PERFECTIC".
   Built in markup it is crisp at any size and correctly two-toned. */
.logo{display:inline-flex;align-items:center;gap:10px;color:var(--blue);text-decoration:none}
.pp-atom{width:30px;height:30px;flex:0 0 auto}
.pp-wm{display:flex;align-items:baseline;gap:.28em;font-family:'Barlow Condensed',var(--font);
  font-weight:800;font-size:25px;line-height:1;letter-spacing:.012em;white-space:nowrap}
.pp-wm b{color:var(--ink);font-weight:800}
.pp-wm i{color:var(--blue);font-style:normal;font-weight:800}
.pp-logo-light .pp-wm b{color:#fff}
.pp-logo-light .pp-wm i{color:var(--blue3)}
.foot .logo{margin-bottom:18px}
@media(max-width:680px){ .pp-wm{font-size:21px} .pp-atom{width:26px;height:26px} }

/* PDP spec strip — the fields we can actually stand behind (no CAS/formula/MW) */
.specstrip{display:grid;grid-template-columns:repeat(6,1fr);background:#fff;border:1px solid #fff;
  border-radius:18px;overflow:hidden;box-shadow:var(--sh);margin-top:34px}
.specstrip>div{padding:18px 20px;border-right:1px solid var(--line)}
.specstrip>div:last-child{border-right:0}
.sk{display:block;font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted)}
.sv{display:block;font-size:16px;font-weight:700;color:var(--ink2);margin-top:6px;line-height:1.25}
@media(max-width:1080px){.specstrip{grid-template-columns:repeat(3,1fr)}
  .specstrip>div:nth-child(3n){border-right:0}
  .specstrip>div:nth-child(-n+3){border-bottom:1px solid var(--line)}}
@media(max-width:600px){.specstrip{grid-template-columns:1fr 1fr}
  .specstrip>div:nth-child(3n){border-right:1px solid var(--line)}
  .specstrip>div:nth-child(2n){border-right:0}
  .specstrip>div:not(:nth-last-child(-n+2)){border-bottom:1px solid var(--line)}}

/* "you need an account" banner on the register page (only after a gate redirect) */
.gate-note{display:flex;align-items:center;gap:13px;flex-wrap:wrap;background:var(--tint);
  border-radius:16px;padding:15px 20px;margin-bottom:26px;font-size:14.5px;line-height:1.55;color:#33507D}
.gate-note svg{width:19px;height:19px;color:var(--blue);flex:0 0 auto}
.gate-note b{color:var(--ink2);font-weight:600}
.gate-note a{margin-left:auto;color:var(--blue);font-weight:600;white-space:nowrap}
.gate-note a:hover{text-decoration:underline}
@media(max-width:680px){.gate-note a{margin-left:0}}

/* ---------- COA library (structure mirrors HTML-BUILDS/coa-library.html) ---------- */
.coagrid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.ccard{background:#fff;border:1px solid #fff;border-radius:20px;overflow:hidden;box-shadow:var(--sh);
  display:flex;flex-direction:column;transition:transform .16s,box-shadow .16s}
.ccard:hover{transform:translateY(-3px);box-shadow:var(--sh-lg)}
.cthumb{background:linear-gradient(170deg,#EDF3FE,#F8FBFF);border-bottom:1px solid var(--line);
  padding:14px 16px;color:var(--blue)}
.cthumb-h{display:flex;justify-content:space-between;align-items:center;
  font-family:var(--mono);font-size:8px;letter-spacing:.13em;color:var(--muted)}
.cruo{border:1px solid #CBDCF8;border-radius:100px;padding:2px 6px;color:var(--blue)}
.cthumb-n{font-family:'Barlow Condensed',var(--font);font-weight:700;font-size:23px;color:var(--ink);
  margin:10px 0 4px;line-height:1;text-transform:uppercase;letter-spacing:.005em}
.cthumb svg{display:block;width:100%;height:54px}
.cthumb-f{display:flex;justify-content:space-between;font-family:var(--mono);font-size:9px;
  letter-spacing:.08em;color:var(--muted);border-top:1px solid rgba(47,107,255,.16);padding-top:7px;margin-top:2px}
.ccard.is-wait .cthumb{filter:grayscale(.55);opacity:.72}
.cbody{padding:16px 18px 18px;display:flex;flex-direction:column;flex:1}
.ctop{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.ctop h3{font-size:17px;font-weight:700;color:var(--ink2);line-height:1.25}
.cbadge{font-size:10.5px;font-weight:600;border-radius:100px;padding:4px 9px;white-space:nowrap;flex:0 0 auto}
.cbadge.ok{background:#DCF6EC;color:#0B7355}
.cbadge.wait{background:var(--fill);color:var(--muted)}
.cmeta{font-size:12.5px;color:var(--muted);margin-top:8px;line-height:1.5}
.cmeta b{font-family:var(--mono);color:var(--ink2);font-weight:600}
.mchips{display:flex;flex-wrap:wrap;gap:5px;margin:12px 0 14px}
.mchip{font-family:var(--mono);font-size:9.5px;letter-spacing:.05em;color:#41608F;background:var(--tint);
  border-radius:100px;padding:3px 8px}
.clink{margin-top:auto;font-size:13.5px;font-weight:600;color:var(--blue)}
.clink.muted{color:var(--muted)}
.clink:hover{text-decoration:underline}
#coaSearch{width:100%;max-width:520px;height:52px;border:1px solid var(--line);border-radius:100px;
  padding:0 22px;font-family:var(--font);font-size:15.5px;color:var(--ink2);background:#fff;box-shadow:var(--sh-sm)}
#coaSearch:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 4px rgba(47,107,255,.14)}
@media(max-width:1080px){.coagrid{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.coagrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.coagrid{grid-template-columns:1fr}}

/* ==========================================================================
   PP-PENS  —  pre-filled pen + nasal-spray wholesale (2026-07-30)
   Appended as a marker block so it reverts by deletion, the same way the live
   theme's wash retint does. Everything above this line is the vial build.
   ========================================================================== */

/* The renders are shot on near-white (254,254,254) and the stock tile plate is
   #E1E8FA, so `cover` on a blue plate paints a white rectangle behind every
   carton — the documented no-flood-fill trap from the pens build. White plate +
   contain instead. Cartons are tall portrait (552x1240), sprays 623x900, so
   `cover` would also crop the box in half. */
/* ⚠ aspect-ratio is a PREFERRED size, not a cap. .prod-im is display:flex, so the
   carton's intrinsic 552x1240 wins and the "square" plate rendered 622px tall in a
   293px column — 948px cards. Absolute inset + margin:auto centres the render
   inside a plate whose height is set by aspect-ratio and cannot be pushed by
   content. Do not put this back on flex.
   3/4 rather than 1/1 because the cartons are 1:2.25 portrait: in a square plate
   a max-height fit leaves them 118px wide in a 293px tile. */
.prod-im.sku{background:#fff;display:block;position:relative;aspect-ratio:3/4;overflow:hidden}
.prod-im.sku img{position:absolute;top:16px;right:16px;bottom:16px;left:16px;margin:auto;
  width:auto;height:auto;max-width:calc(100% - 32px);max-height:calc(100% - 32px);
  object-fit:contain}

.prod-badge{position:absolute;top:12px;left:12px;z-index:2;background:var(--blue);color:#fff;
  font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;
  border-radius:100px;padding:5px 11px;box-shadow:var(--sh-sm)}

.prod-fmt{font-size:12px;color:var(--blue);font-weight:600;margin-top:5px}
.strengths{margin-top:8px;font-family:var(--mono);font-size:12.5px;color:var(--body)}

/* The number a practice owner is actually shopping on. Kept on the tile rather
   than the PDP — a trade catalogue that hides margin makes them do arithmetic
   on 44 strengths. */
.prod-marg{margin-top:10px;display:flex;align-items:baseline;gap:8px;background:#F1FAF5;
  border:1px solid #D6EFE2;border-radius:10px;padding:8px 11px;font-size:12.5px;color:#0B7A56}
.prod-marg b{font-size:16px;font-weight:700;color:var(--green);letter-spacing:-.02em}
.prod-marg span{margin-left:auto;color:var(--muted);font-size:11.5px}
.prod-marg.quote{color:var(--blue);background:var(--tint2);border-color:var(--line)}

.notice{display:flex;gap:14px;align-items:flex-start;background:#fff;border:1px solid var(--line);
  border-left:4px solid var(--blue);border-radius:14px;padding:16px 20px;box-shadow:var(--sh-sm);
  font-size:14.5px;line-height:1.6}
.notice b{color:var(--ink);display:block;margin-bottom:2px}
.notice a{color:var(--blue);font-weight:600;text-decoration:underline;text-underline-offset:2px}
.notice-amber{border-left-color:#E0912F;background:#FFFCF6;border-color:#F2E3CB}
.notice-amber b{color:#8A5A12}
.notice-red{border-left-color:#D14343;background:#FFF8F8;border-color:#F3D6D6}
.notice-red b{color:#9B2C2C}

.band-tint{background:linear-gradient(180deg,#E9F1FF,#F7FAFE)}
.lede{max-width:62ch;font-size:17.5px;margin-top:12px}

.mgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:34px}
/* 1fr's automatic minimum is min-content, so a long word blows the track past
   the viewport. Same guard as the rest of the grids on this site. */
.mgrid>*{min-width:0}
.mcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;
  box-shadow:var(--sh-sm)}
.mcard b{display:block;font-size:30px;font-weight:700;color:var(--ink);letter-spacing:-.035em;
  line-height:1.1}
.mcard span{display:block;margin-top:8px;font-size:13.5px;color:var(--body)}

@media(max-width:980px){.mgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.mgrid{grid-template-columns:1fr}
  .notice{flex-direction:column;gap:6px}}

/* ---------- pen PDP: unit price, quantity, margin calculator, tiers ---------- */
/* .pdp-main is #E1E8FA and the renders are on near-white — white plate here too. */
.pdp-main{background:#fff;padding:22px}
.pdp-main img{width:100%;height:auto;object-fit:contain;max-height:520px;margin:0 auto}
.pdp-thumbs .th{background:#fff;border:1px solid var(--line);border-radius:14px;padding:8px;
  cursor:pointer;aspect-ratio:1/1;overflow:hidden}
.pdp-thumbs .th img{width:100%;height:100%;object-fit:contain}
.pdp-thumbs .th.is-on{border-color:var(--blue);box-shadow:0 0 0 3px rgba(47,107,255,.14)}

.upx{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:22px;
  background:linear-gradient(180deg,#fff,#FBFCFF);border:1px solid var(--line);border-radius:18px;
  padding:18px 22px;box-shadow:var(--sh-sm)}
.upx-k{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted)}
.upx-v{font-size:32px;font-weight:700;color:var(--ink);letter-spacing:-.035em;line-height:1.15}
.upx-was{margin-left:9px;font-size:17px;color:var(--muted);font-weight:500}
.upx-tier{display:inline-block;background:var(--tint);color:var(--blue2);border-radius:100px;
  padding:8px 15px;font-size:12.5px;font-weight:600;text-align:right}

.qty{display:flex;align-items:center;gap:12px;margin-top:12px;flex-wrap:wrap}
.qbtn{width:46px;height:46px;border:1px solid var(--line);background:#fff;border-radius:14px;
  font-size:21px;color:var(--ink2);cursor:pointer;box-shadow:var(--sh-sm);flex:0 0 auto}
.qbtn:hover{border-color:var(--blue);color:var(--blue)}
.qval{font-family:var(--mono);font-size:22px;font-weight:600;color:var(--ink);min-width:64px;
  text-align:center}
.qjumps{display:flex;gap:8px;margin-left:auto}
.qjump{border:1px solid var(--line);background:#fff;border-radius:100px;padding:9px 15px;
  font-size:13px;font-weight:600;color:var(--body);cursor:pointer}
.qjump:hover{border-color:var(--blue);color:var(--blue)}

.calc-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.calc-grid>*{min-width:0}
.calc-grid>div{background:var(--paper);border-radius:14px;padding:15px}
.calc-grid .ck{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--muted)}
.calc-grid .cv{display:block;margin-top:7px;font-size:23px;font-weight:700;color:var(--ink2);
  letter-spacing:-.035em;line-height:1.15}
.calc-grid .cv-win{background:#F1FAF5;border:1px solid #D6EFE2}
.calc-grid .cv-win .cv{color:var(--green)}
.calc-grid .cv-win .ck{color:#0B7A56}

.pdp-ctas{display:flex;gap:12px;margin-top:22px}
.pdp-ctas .btn{flex:1;min-width:0}

.tiers{width:100%;border-collapse:separate;border-spacing:0 8px;margin-top:30px}
.tiers th{text-align:left;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);font-weight:500;padding:0 20px 4px}
.tiers td{background:#fff;padding:16px 20px;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)}
.tiers td:first-child{border-left:1px solid var(--line);border-radius:14px 0 0 14px}
.tiers td:last-child{border-right:1px solid var(--line);border-radius:0 14px 14px 0;text-align:right}
.tiers tr.is-on td{border-color:var(--blue);background:#FBFCFF;
  box-shadow:0 0 0 1px var(--blue) inset}
.tiers .tname{display:block;font-weight:600;color:var(--ink2)}
.tiers .tsub{display:block;font-family:var(--mono);font-size:12px;color:var(--muted)}
.tiers .est{font-family:var(--mono);font-size:13.5px;color:var(--body)}
.tiers .disc{display:inline-block;background:var(--tint);color:var(--blue2);border-radius:100px;
  padding:6px 13px;font-size:12.5px;font-weight:600}

@media(max-width:980px){
  .pdp{grid-template-columns:1fr;gap:34px}
  .calc-grid{grid-template-columns:repeat(2,1fr)}
  .upx{flex-direction:column;align-items:flex-start;gap:10px}
  .pdp-ctas{flex-direction:column}
  .qjumps{margin-left:0;width:100%}
}

/* ---------- hero plate vs carton plate ----------
   Two different shots need two different plates, and using one rule for both is
   what made the grid look inconsistent:
     .sku            flat carton/bottle on near-white -> WHITE plate, contain
     .sku.is-hero    halftone composite on a blue field -> fills the tile, cover
   A hero on a white plate would letterbox blue bars; a carton on cover would be
   cropped in half (they are 1:2.25 portrait). */
.prod-im.sku.is-hero{background:#0E3A82;aspect-ratio:1/1}
.prod-im.sku.is-hero img{position:static;width:100%;height:100%;max-width:none;max-height:none;
  object-fit:cover;margin:0}

/* section bar — pens / nasal sprays */
.secbar{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;
  margin-bottom:22px;flex-wrap:wrap}
.secbar h2{font-size:31px;letter-spacing:-.032em;margin-top:2px}
.secbar .sub{margin-top:8px;max-width:60ch}
.secbar .btn{flex:0 0 auto}
.pdp-main.is-hero{background:#0E3A82;padding:0}
.pdp-main.is-hero img{width:100%;height:auto;max-height:none;object-fit:cover}
.pdp-thumbs .th.th-hero{background:#0E3A82;padding:0}
.pdp-thumbs .th.th-hero img{object-fit:cover}

/* ---------- pens homepage hero ----------
   The vial build's hero was a multi-layer float stage (.stage/.scene/.hcoa/.vial)
   over an LP-derived COA. The pen line already HAS a composed hero render, so the
   figure is one image and the layer machinery is unused here. */
.hero-shot{border-radius:26px;overflow:hidden;box-shadow:var(--sh-lg);background:#0E3A82}
.hero-shot img{width:100%;height:auto;display:block}
/* ⚠ NOT .hero-note — that class already exists as an absolutely-positioned
   floating badge inside the hero figure (line ~141), and reusing it dropped a
   white blurred card with a shadow around this paragraph. Same class-collision
   trap the README records for .coa vs .hcoa and the old .foot bug. */
.hero-preorder{margin-top:16px;font-family:var(--mono);font-size:12px;color:var(--muted);
  max-width:52ch;line-height:1.6}

/* The header packs logo + 6 nav links + search pill + 3 icons + CTA. Between
   1080px (where the mobile nav takes over) and ~1240px they do not fit, and the
   CTA ran 46px past the viewport — a horizontal body scroll, which the README
   forbids outright. The search pill is the least load-bearing item, so it goes
   first rather than letting the row overflow. */
@media(max-width:1260px){
  .hdr .search{display:none}
  .hdr .nav{gap:18px}
}

/* ---------- pricing: worked example table ---------- */
.tnote{margin-top:20px;font-size:14.5px;color:var(--body);max-width:78ch}
.extab{width:100%;border-collapse:collapse;margin-top:16px;font-size:15px}
.extab th{text-align:left;font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);font-weight:500;padding:0 0 10px}
.extab td{padding:11px 0;border-top:1px solid var(--line);color:var(--ink2)}
.extab .num{text-align:right;font-family:var(--mono);font-size:14px}
.extab tfoot td{border-top:2px solid var(--ink);font-size:16px;padding-top:14px}
.exnote{margin-top:16px;font-size:15px;color:var(--body);max-width:70ch}
.exnote b{color:var(--ink)}

/* ---------- certificate status page ---------- */
.tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:34px}
.tgrid>*{min-width:0}
.tcard{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px;
  box-shadow:var(--sh-sm)}
.tcard .tk{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--blue);font-weight:600}
.tcard h4{margin-top:9px;font-size:18px;color:var(--ink2);letter-spacing:-.02em}
.tcard p{margin:9px 0 0;font-size:14px;line-height:1.6}
.ticks{list-style:none;padding:0;margin:22px 0 0}
.ticks li{display:flex;gap:12px;align-items:flex-start;margin-bottom:14px;font-size:15.5px;
  line-height:1.6}
.ticks svg{width:20px;height:20px;color:var(--green);flex:0 0 auto;margin-top:3px}
.ticks b{color:var(--ink2)}
.steps{margin:14px 0 0;padding-left:20px;font-size:15px;line-height:1.75}
.steps b{color:var(--ink2)}
@media(max-width:980px){.tgrid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.tgrid{grid-template-columns:1fr}}
.fieldnote{margin:6px 0 12px;font-size:13px;color:var(--muted);line-height:1.55}

/* ===================== ACCOUNT PORTAL (/portal) =====================
   Server-gated by functions/_middleware.js. Grid collapses to one column on
   mobile; .pt-dl is a two-column definition list that must NOT blow the grid,
   hence min-width:0 on the children — same trap as the catalogue selects. */
.pt-grid{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:26px;margin-top:34px;align-items:start}
.pt-main,.pt-side{display:flex;flex-direction:column;gap:18px;min-width:0}
.pt-card{background:#fff;border-radius:18px;padding:24px 26px;box-shadow:var(--sh-sm);min-width:0}
.pt-card h4{font-size:17px;margin:0 0 12px}
.pt-card p{font-size:15px;line-height:1.62;color:var(--body);margin:0 0 12px}
.pt-status{background:#fff;border-radius:18px;padding:28px 30px;box-shadow:var(--sh-sm)}
.pt-status h3{font-size:26px;margin:14px 0 8px;line-height:1.2}
.pt-status p{font-size:16px;line-height:1.64;color:var(--body);margin:0}
.pt-badge{display:inline-flex;align-items:center;gap:8px;font:600 12px/1 var(--mono);letter-spacing:.08em;
  text-transform:uppercase;padding:8px 14px;border-radius:999px}
.pt-badge.ok{background:#E7F6EE;color:#0F7A43}
.pt-badge.wait{background:#FFF4E0;color:#9A6207}
/* Replaces the countdown. A ticking clock advertises that approval is a timer
   rather than a person reading the application — this says "being looked at"
   without ever promising a duration. */
.pt-review{display:flex;align-items:center;gap:13px;margin-top:20px;padding:15px 18px;
  background:var(--tint);border-radius:14px;font-size:14.5px;color:var(--body)}
.pt-dotpulse{width:9px;height:9px;border-radius:50%;background:var(--blue);flex:0 0 auto;
  animation:ptpulse 1.8s ease-in-out infinite}
@keyframes ptpulse{0%,100%{opacity:.28;transform:scale(.82)}50%{opacity:1;transform:scale(1)}}
@media(prefers-reduced-motion:reduce){.pt-dotpulse{animation:none;opacity:.85}}
.pt-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:22px}
.pt-dl{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr);gap:10px 18px;margin:0}
.pt-dl dt{font:500 13px/1.5 var(--mono);letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.pt-dl dd{margin:0;font-size:15px;color:var(--ink2);word-break:break-word}
.pt-note{font-size:13.5px!important;color:var(--muted)!important;margin:18px 0 0!important}
.pt-tiers{width:100%;border-collapse:collapse;font-size:14.5px}
.pt-tiers td{padding:7px 0;border-bottom:1px solid var(--line)}
.pt-tiers td:last-child{text-align:right;font-family:var(--mono);color:var(--ink2)}
.pt-tiers tr:last-child td{border-bottom:0;font-weight:600}
@media(max-width:900px){.pt-grid{grid-template-columns:minmax(0,1fr)}}
@media(max-width:520px){.pt-dl{grid-template-columns:minmax(0,1fr)}.pt-dl dd{margin-bottom:6px}}

/* ⚠ The `hidden` ATTRIBUTE loses to any class that sets `display`. The UA rule is
   [hidden]{display:none} at specificity 0-1-0, so `.pt-clock{display:flex}` beat it
   and the approved portal kept rendering a "--:--" countdown under "your account is
   open". Anything toggled via .hidden in JS needs this. */
[hidden]{display:none!important}
