/* =====================================================================
   Lumen Design — page sections
   Every class is prefixed lp- so nothing collides with Blocksy,
   Elementor or WooCommerce.
   ===================================================================== */

:root {
  --lp-navy:      #192a3d;
  --lp-navy-deep: #0f1c2b;
  --lp-slate:     #3a4f66;
  --lp-heading:   #335479;
  --lp-blue:      #00568b;
  --lp-blue-dk:   #002f56;
  --lp-baby:      #7ec8e3;
  --lp-pale:      #e3f2f9;
  --lp-line:      #e5e7eb;
  --lp-ink:       #444;
  --lp-ink-soft:  #6b7280;
  --lp-muted:     #9ca3af;
  --lp-bg-alt:    #f8fafc;
  --lp-radius:    14px;
  --lp-radius-lg: 20px;
  --lp-shadow:    0 6px 22px rgba(22,36,74,.10);
  --lp-shadow-lg: 0 18px 46px rgba(22,36,74,.16);
  --lp-wrap:      1200px;
  --lp-head:      'Poppins', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  --lp-body:      'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
}

.lp-wrap { width: 100%; max-width: var(--lp-wrap); margin-inline: auto; padding-inline: 24px; }

.lp-sr {
  position: absolute !important; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* =====================================================================
   Site header — brand + search + account/cart, nav row, trust strip.
   Replaces the Blocksy header so every page is identical.
   ===================================================================== */

/* Blocksy's own header is suppressed rather than reconfigured, so the
   markup matches the approved design exactly on every template. */
header.ct-header,
#header.ct-header { display: none !important; }

.lp-site-header {
  position: sticky; top: 0; z-index: 200;
  background: #fff; box-shadow: 0 1px 3px rgba(22,36,74,.08);
}
body.admin-bar .lp-site-header { top: 32px; }
@media screen and (max-width: 782px) {
  body.admin-bar .lp-site-header { top: 46px; }
}

.lp-header-top {
  display: flex; align-items: center; gap: 28px;
  max-width: var(--lp-wrap); margin-inline: auto; padding: 14px 24px;
}

.lp-brand { display: flex; align-items: center; flex-shrink: 0; text-decoration: none; }
.lp-brand img { height: 44px; width: auto; display: block; }
.lp-brand-text {
  font-family: var(--lp-head); font-weight: 800; font-size: 1.2rem;
  color: var(--lp-navy); letter-spacing: -.02em;
}
.lp-brand-text em { font-style: normal; font-weight: 500; color: var(--lp-slate); }

.lp-header-actions { display: flex; align-items: center; gap: 22px; flex-shrink: 0; margin-left: auto; }
.lp-header-actions a {
  display: flex; align-items: center; gap: 7px; text-decoration: none;
  font-family: var(--lp-head); font-weight: 600; font-size: .86rem; color: var(--lp-navy);
}
.lp-header-actions a:hover { color: var(--lp-blue); }
.lp-cart-count {
  background: var(--lp-blue); color: #fff; font-size: .7rem; font-weight: 700;
  min-width: 19px; height: 19px; border-radius: 4px;
  display: grid; place-items: center; padding: 0 5px;
}

/* nav row */
.lp-header-nav { border-top: 1px solid var(--lp-line); }
.lp-header-nav .lp-wrap { display: flex; align-items: center; gap: 6px; }
.lp-nav-links { display: flex; align-items: center; flex-wrap: wrap; }
.lp-header-nav a {
  font-family: var(--lp-head); font-weight: 600; font-size: .88rem;
  color: var(--lp-navy); padding: 14px 18px; position: relative; text-decoration: none;
}
.lp-header-nav a::after {
  content: ''; position: absolute; left: 18px; right: 18px; bottom: 8px;
  height: 2px; background: var(--lp-blue); transform: scaleX(0); transition: transform .2s ease;
}
.lp-header-nav a:hover::after,
.lp-header-nav a[aria-current="page"]::after { transform: scaleX(1); }
.lp-header-nav a[aria-current="page"] { color: var(--lp-blue); }

/* The bars live in their own column-flex box. Previously they were direct
   children of the flex button, so they laid out side by side and the icon
   read as three dashes in a row rather than a hamburger. */
.lp-nav-toggle {
  display: none; background: none; border: 0; cursor: pointer;
  padding: 10px; margin-left: auto; color: var(--lp-navy);
  align-items: center; gap: 10px;
}
.lp-nav-label {
  font-family: var(--lp-head); font-weight: 700; font-size: .78rem;
  letter-spacing: .1em; text-transform: uppercase; line-height: 1;
}
.lp-nav-bars {
  display: flex; flex-direction: column; justify-content: center;
  gap: 4px; width: 22px; height: 16px; flex-shrink: 0;
}
.lp-nav-bars i {
  display: block; width: 100%; height: 2px;
  background: currentColor; border-radius: 2px;
  transition: transform .22s ease, opacity .18s ease;
}
/* morph to an X while the menu is open */
.lp-nav-toggle[aria-expanded="true"] .lp-nav-bars i:nth-child(1) { transform: translateY(6px) rotate(45deg); }
.lp-nav-toggle[aria-expanded="true"] .lp-nav-bars i:nth-child(2) { opacity: 0; transform: scaleX(.4); }
.lp-nav-toggle[aria-expanded="true"] .lp-nav-bars i:nth-child(3) { transform: translateY(-6px) rotate(-45deg); }

.lp-search {
  position: relative; display: flex; align-items: center;
  flex: 1; max-width: 470px; margin-inline: auto;
}
.lp-search-ico {
  position: absolute; left: 16px; color: var(--lp-muted); pointer-events: none;
}
.lp-search input[type="search"] {
  flex: 1; min-width: 0;
  font-family: var(--lp-body); font-size: .9rem; color: var(--lp-ink);
  padding: 12px 108px 12px 44px;
  border: 1.5px solid var(--lp-line); border-radius: 999px;
  background: #fff; outline: none;
  transition: border-color .16s ease, box-shadow .16s ease;
  -webkit-appearance: none; appearance: none;
}
.lp-search input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }
.lp-search input[type="search"]:focus {
  border-color: var(--lp-blue); box-shadow: 0 0 0 3px rgba(0,86,139,.14);
}
.lp-search input::placeholder { color: var(--lp-muted); }
.lp-search button {
  position: absolute; right: 5px;
  font-family: var(--lp-head); font-weight: 700; font-size: .82rem;
  color: #fff; background: var(--lp-blue); border: 0; border-radius: 999px;
  padding: 10px 22px; cursor: pointer; transition: background .16s ease;
}
.lp-search button:hover { background: var(--lp-blue-dk); }

.lp-trust { background: var(--lp-navy); color: #fff; font-family: var(--lp-body); font-size: .82rem; }
.lp-trust .lp-wrap {
  display: flex; align-items: center; justify-content: center; flex-wrap: wrap;
  gap: 10px 30px; padding-block: 11px;
}
.lp-trust span { display: inline-flex; align-items: center; gap: 8px; font-weight: 500; }
.lp-trust svg { flex-shrink: 0; color: var(--lp-baby); }

/* ---------- Shared primitives ---------- */
.lp-page { font-family: var(--lp-body); color: var(--lp-ink); line-height: 1.65; }
.lp-page h1, .lp-page h2, .lp-page h3, .lp-page h4 {
  font-family: var(--lp-head); font-weight: 700; color: var(--lp-heading);
  letter-spacing: -.02em; line-height: 1.18; margin: 0 0 .6em;
}
.lp-page h1 { font-size: clamp(2.1rem, 4.6vw, 3.35rem); }
.lp-page h2 { font-size: clamp(1.7rem, 3.3vw, 2.6rem); }
.lp-page h3 { font-size: 1.2rem; }
.lp-page p  { margin: 0 0 1.1em; }
.lp-page img { max-width: 100%; height: auto; display: block; }

.lp-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .5em;
  font-family: var(--lp-head); font-weight: 700; font-size: .93rem;
  padding: 13px 26px; border-radius: 8px; border: 2px solid transparent;
  cursor: pointer; text-decoration: none; white-space: nowrap; text-align: center;
  transition: transform .16s ease, background .16s ease, color .16s ease, box-shadow .16s ease;
}
.lp-btn:hover { transform: translateY(-2px); text-decoration: none; }
.lp-btn-primary { background: var(--lp-blue); color: #fff; }
.lp-btn-primary:hover { background: var(--lp-blue-dk); color: #fff; box-shadow: 0 8px 20px rgba(0,86,139,.32); }
.lp-btn-navy { background: var(--lp-navy); color: #fff; }
.lp-btn-navy:hover { background: var(--lp-navy-deep); color: #fff; }
.lp-btn-white { background: #fff; color: var(--lp-navy); }
.lp-btn-white:hover { background: #eef2fa; color: var(--lp-navy); }
.lp-btn-outline { background: transparent; color: var(--lp-navy); border-color: var(--lp-navy); }
.lp-btn-outline:hover { background: var(--lp-navy); color: #fff; }
.lp-btn-ghost { background: transparent; color: #fff; border-color: rgba(255,255,255,.65); }
.lp-btn-ghost:hover { background: #fff; color: var(--lp-navy); border-color: #fff; }
.lp-btn-block { display: block; width: 100%; }
.lp-btn-sm { padding: 10px 18px; font-size: .84rem; }
.lp-btn-lg { padding: 16px 34px; font-size: 1rem; }

.lp-section { padding-block: clamp(52px, 6.5vw, 84px); }
.lp-section-alt { background: var(--lp-bg-alt); }
.lp-head { text-align: center; max-width: 720px; margin: 0 auto clamp(34px, 4vw, 52px); }
.lp-head h2 { margin-bottom: .35em; }
.lp-head p { color: var(--lp-ink-soft); font-size: 1.03rem; margin: 0; }

.lp-eyebrow {
  display: inline-flex; align-items: center; gap: 9px;
  font-family: var(--lp-head); font-weight: 700; font-size: .76rem;
  letter-spacing: .14em; text-transform: uppercase; color: var(--lp-blue); margin-bottom: 12px;
}
.lp-eyebrow::before, .lp-eyebrow::after { content: ''; width: 22px; height: 2px; background: currentColor; opacity: .45; }

/* ---------- Hero ---------- */
.lp-hero {
  position: relative; overflow: hidden; color: #fff;
  background: linear-gradient(120deg, #0d1826 0%, var(--lp-navy) 45%, var(--lp-blue) 100%);
}
.lp-hero::before {
  content: ''; position: absolute; inset: 0;
  background: var(--lp-hero-bg, var(--lp-img)) center/cover no-repeat;
  opacity: .62;
}
.lp-hero::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(13,24,38,.94) 0%, rgba(25,42,61,.74) 52%, rgba(0,86,139,.42) 100%);
}
.lp-hero .lp-wrap { position: relative; z-index: 2; }
.lp-hero-inner {
  display: grid; grid-template-columns: minmax(0,1.05fr) minmax(0,.95fr);
  gap: 50px; align-items: center; padding-block: clamp(60px, 8vw, 104px);
}
.lp-hero h1 { color: #fff; margin-bottom: .38em; letter-spacing: -.032em; }
.lp-hero-lead { font-size: 1.09rem; color: rgba(255,255,255,.9); max-width: 30em; margin-bottom: 2em; }
.lp-hero-actions { display: flex; flex-wrap: wrap; gap: 14px; }
/* Hero vials — an evenly spaced row of three, each drifting on its own
   timing. Widths are percentage-based so the row scales with the column
   rather than needing per-breakpoint heights. Decorative only: no links,
   no hover, no pointer tracking. */
.lp-hero-visual {
  display: flex;
  align-items: flex-end;
  justify-content: center;
  gap: 4%;
}
.lp-hero-vial {
  flex: 0 1 auto;
  width: 29%;
  max-width: 176px;
  height: auto;
  display: block;
  filter: drop-shadow(0 24px 40px rgba(0, 0, 0, .5));
  animation: lp-float 6.4s ease-in-out infinite;
  pointer-events: none;
  user-select: none;
}
.lp-hero-vial:nth-child(1) { animation-duration: 7.4s; animation-delay: -1.1s; }
.lp-hero-vial:nth-child(2) { animation-duration: 6.2s; animation-delay: -3.4s; }
.lp-hero-vial:nth-child(3) { animation-duration: 6.9s; animation-delay: -5.2s; }

@keyframes lp-float {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -14px, 0); }
}

.lp-hero-note {
  display: inline-flex; align-items: center; gap: 9px; margin-top: 26px;
  font-size: .83rem; color: rgba(255,255,255,.78); letter-spacing: .04em;
  text-transform: uppercase; font-family: var(--lp-head); font-weight: 600;
}
.lp-hero-note::before { content: ''; width: 26px; height: 2px; background: var(--lp-baby); }

/* ---------- Value cards ---------- */
.lp-value { background: var(--lp-bg-alt); padding-block: clamp(48px, 6vw, 74px); }
.lp-value-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.lp-value-card {
  background: var(--lp-slate); color: #fff; border-radius: var(--lp-radius-lg);
  padding: 36px 26px; text-align: center; box-shadow: var(--lp-shadow);
  transition: transform .2s ease, box-shadow .2s ease;
}
.lp-value-card:hover { transform: translateY(-6px); box-shadow: var(--lp-shadow-lg); }
.lp-value-card svg { margin: 0 auto 16px; }
.lp-value-card h3 { color: #fff; font-size: 1.12rem; margin-bottom: .5em; }
.lp-value-card p { font-size: .89rem; color: rgba(255,255,255,.8); margin: 0; }
.lp-value-card em { font-style: normal; color: var(--lp-baby); font-weight: 600; }
.lp-value-card small { display: block; margin-top: 8px; font-size: .78rem; color: rgba(255,255,255,.55); font-style: italic; }

/* ---------- Product cards / carousel ---------- */
.lp-grid { display: grid; gap: 26px; grid-template-columns: repeat(auto-fill, minmax(258px, 1fr)); }

.lp-carousel { position: relative; }
.lp-track {
  display: grid; grid-auto-flow: column; grid-auto-columns: minmax(258px, 1fr);
  gap: 26px; overflow-x: auto; scroll-snap-type: x mandatory;
  padding: 6px 4px 20px; scrollbar-width: none;
}
.lp-track::-webkit-scrollbar { display: none; }
.lp-track > * { scroll-snap-align: start; }
.lp-arrow {
  position: absolute; top: 118px; z-index: 5;
  width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--lp-line);
  background: #fff; color: var(--lp-navy); cursor: pointer;
  display: grid; place-items: center; box-shadow: var(--lp-shadow);
  transition: background .16s ease, color .16s ease, transform .16s ease;
}
.lp-arrow:hover { background: var(--lp-navy); color: #fff; transform: scale(1.07); }
.lp-arrow[disabled] { opacity: .3; cursor: default; transform: none; }
.lp-arrow.prev { left: -18px; }
.lp-arrow.next { right: -18px; }
@media (max-width: 1280px) { .lp-arrow.prev { left: 4px; } .lp-arrow.next { right: 4px; } }

.lp-card {
  background: #fff; border: 1px solid var(--lp-line); border-radius: var(--lp-radius);
  display: flex; flex-direction: column; overflow: hidden;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.lp-card:hover { transform: translateY(-6px); box-shadow: var(--lp-shadow-lg); border-color: transparent; }
.lp-card-media {
  position: relative; display: flex; align-items: center; justify-content: center;
  padding: 26px 22px 14px; min-height: 200px;
  background: linear-gradient(170deg, #f4f7fc 0%, #ffffff 100%);
}
.lp-card-media img { width: 100%; height: 175px; object-fit: contain; transition: transform .3s ease; }
.lp-card:hover .lp-card-media img { transform: scale(1.05); }

.lp-pill {
  position: absolute; top: 14px; left: 14px; z-index: 2;
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--lp-navy); color: #fff; font-size: .7rem; font-weight: 600;
  font-family: var(--lp-head); padding: 5px 11px; border-radius: 999px;
}
.lp-pill::before { content: ''; width: 7px; height: 7px; border-radius: 50%; background: #22c55e; }
.lp-badge {
  position: absolute; top: 14px; right: 14px; z-index: 2;
  background: var(--lp-blue); color: #fff; font-size: .68rem; font-weight: 700;
  font-family: var(--lp-head); letter-spacing: .06em; text-transform: uppercase;
  padding: 5px 10px; border-radius: 5px;
}

.lp-card-body { padding: 4px 22px 22px; display: flex; flex-direction: column; flex: 1; }
.lp-card-body h3 { font-size: 1rem; margin-bottom: 14px; min-height: 2.4em; }
.lp-card-body h3 a { color: var(--lp-navy); text-decoration: none; }
.lp-card-body h3 a:hover { color: var(--lp-blue); }

.lp-spec {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px;
  padding-bottom: 15px; margin: 0 0 15px; border-bottom: 1px solid var(--lp-line);
  text-align: center;
}
.lp-spec dt {
  font-family: var(--lp-head); font-size: .62rem; font-weight: 600;
  letter-spacing: .1em; text-transform: uppercase; color: var(--lp-muted); margin-bottom: 3px;
}
.lp-spec dd { margin: 0; font-family: var(--lp-head); font-weight: 700; font-size: .8rem; color: var(--lp-navy); line-height: 1.3; }

.lp-price { margin: auto 0 15px; font-family: var(--lp-head); font-weight: 700; font-size: 1.3rem; color: var(--lp-blue); }
.lp-price del { color: var(--lp-muted); font-weight: 500; font-size: .8em; margin-left: 6px; opacity: 1; }
.lp-price ins { text-decoration: none; color: var(--lp-blue); }
.lp-price .woocommerce-Price-amount { color: inherit; }

.lp-center { text-align: center; margin-top: 26px; }

/* ---------- Reference panel ---------- */
.lp-reference { background: var(--lp-bg-alt); padding-block: clamp(48px, 6vw, 76px); }
.lp-ref-intro { border-bottom: 1px solid var(--lp-line); padding-bottom: 26px; margin-bottom: 36px; }
.lp-ref-intro p { font-size: .92rem; color: var(--lp-ink-soft); margin: 0; }
.lp-ref-intro strong { color: var(--lp-navy); }
.lp-ref-grid { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,.85fr); gap: 34px; align-items: center; }
.lp-ref-copy h3 { font-size: 1.65rem; margin-bottom: .5em; }
.lp-ref-copy h3 span { color: var(--lp-blue); }
.lp-ref-visual img { border-radius: var(--lp-radius-lg); box-shadow: var(--lp-shadow); }

.lp-mini-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin: 24px 0; }
.lp-mini {
  display: flex; align-items: center; gap: 12px;
  background: #fff; border: 1px solid var(--lp-line); border-radius: 10px; padding: 14px 16px;
  font-family: var(--lp-head); font-weight: 600; font-size: .88rem; color: var(--lp-navy);
}
.lp-mini svg { color: var(--lp-blue); flex-shrink: 0; }

.lp-pillars { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 32px; text-align: center; }
.lp-icon {
  width: 46px; height: 46px; border-radius: 50%; background: var(--lp-navy); color: #fff;
  display: grid; place-items: center; margin: 0 auto 12px;
}
.lp-pillars h4 { font-size: .97rem; margin-bottom: .3em; }
.lp-pillars p { font-size: .82rem; color: var(--lp-ink-soft); margin: 0; }

/* ---------- Process steps ---------- */
.lp-process-title { text-align: center; max-width: 800px; margin: 0 auto clamp(34px,4vw,48px); }
.lp-process-title h2 { margin: 0; }
.lp-process-title h2 span { display: block; color: var(--lp-blue); }
.lp-steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.lp-step {
  position: relative; overflow: hidden; border-radius: var(--lp-radius-lg);
  min-height: 310px; display: flex; flex-direction: column; justify-content: flex-end;
  padding: 30px 26px; color: #fff; background: var(--lp-slate);
}
.lp-step::before {
  content: ''; position: absolute; inset: 0;
  background: var(--lp-mol) center/cover no-repeat; opacity: .32;
}
.lp-step::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(25,42,61,.26) 0%, rgba(15,28,43,.94) 78%);
}
.lp-step > * { position: relative; z-index: 2; }
.lp-step-num {
  width: 42px; height: 42px; border-radius: 50%; background: #fff; color: var(--lp-navy);
  font-family: var(--lp-head); font-weight: 700; font-size: 1.05rem;
  display: grid; place-items: center; margin-bottom: 16px;
}
.lp-step h3 { color: #fff; font-size: 1.22rem; margin-bottom: .45em; }
.lp-step p { font-size: .89rem; color: rgba(255,255,255,.85); margin: 0; }

/* ---------- Accordion ---------- */
.lp-accordion { border: 1px solid var(--lp-line); border-radius: var(--lp-radius); overflow: hidden; background: #fff; }
.lp-acc-item + .lp-acc-item { border-top: 1px solid var(--lp-line); }
.lp-acc-trigger {
  width: 100%; display: flex; align-items: center; gap: 15px; text-align: left;
  background: #fff; border: 0; cursor: pointer; padding: 20px 24px;
  font-family: var(--lp-head); font-weight: 700; font-size: 1rem; color: var(--lp-navy);
  transition: background .16s ease;
}
.lp-acc-trigger:hover { background: var(--lp-bg-alt); }
.lp-acc-icon { flex-shrink: 0; color: var(--lp-blue); transition: transform .25s ease; font-size: 1.3rem; line-height: 1; }
.lp-acc-trigger[aria-expanded="true"] { background: var(--lp-navy); color: #fff; }
.lp-acc-trigger[aria-expanded="true"] .lp-acc-icon { transform: rotate(45deg); color: #fff; }
.lp-acc-panel { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .28s ease; }
.lp-acc-panel.open { grid-template-rows: 1fr; }
.lp-acc-panel > div { overflow: hidden; }
.lp-acc-panel p { padding: 20px 24px 22px; margin: 0; font-size: .93rem; }

/* ---------- CTA band ---------- */
.lp-cta {
  background: linear-gradient(120deg, var(--lp-navy-deep) 0%, var(--lp-navy) 50%, var(--lp-blue) 100%);
  color: #fff; text-align: center; padding-block: clamp(52px, 6vw, 78px);
}
.lp-cta h2 { color: #fff; margin-bottom: .4em; }
.lp-cta p { color: rgba(255,255,255,.86); max-width: 45em; margin: 0 auto 2em; }
.lp-cta-actions { display: flex; flex-wrap: wrap; gap: 14px; justify-content: center; }

/* ---------- Interior page hero ---------- */
.lp-page-hero {
  background: linear-gradient(120deg, #0d1826 0%, var(--lp-navy) 55%, #01466f 100%);
  color: #fff; padding-block: clamp(46px, 6vw, 72px);
}
/* also used standalone above WooCommerce archives, outside .lp-page */
.lp-page-hero h1 { font-family: var(--lp-head); font-weight: 700; letter-spacing: -.02em; line-height: 1.18;
  font-size: clamp(2.1rem, 4.6vw, 3.35rem); margin: 0 0 .3em; }
.lp-page-hero p { margin: 0; }
.lp-page-hero h1 { color: #fff; margin-bottom: .3em; }
.lp-page-hero p { color: rgba(255,255,255,.85); max-width: 46em; margin: 0; }
.lp-crumbs { font-size: .82rem; color: rgba(255,255,255,.6); margin-bottom: 14px; font-family: var(--lp-head); font-weight: 500; }
.lp-crumbs a { color: rgba(255,255,255,.85); text-decoration: none; }

/* ---------- Article cards ---------- */
.lp-articles { display: grid; gap: 24px; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); }
.lp-article {
  background: #fff; border: 1px solid var(--lp-line); border-radius: var(--lp-radius);
  padding: 28px 26px; display: flex; flex-direction: column;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.lp-article:hover { transform: translateY(-5px); box-shadow: var(--lp-shadow-lg); border-color: transparent; }
.lp-tag {
  align-self: flex-start; font-family: var(--lp-head); font-weight: 700; font-size: .68rem;
  letter-spacing: .1em; text-transform: uppercase; color: var(--lp-blue);
  background: var(--lp-pale); padding: 5px 11px; border-radius: 5px; margin-bottom: 15px;
}
.lp-article h3 { font-size: 1.08rem; margin-bottom: .5em; }
.lp-article h3 a { color: var(--lp-navy); text-decoration: none; }
.lp-article h3 a:hover { color: var(--lp-blue); }
.lp-article p { font-size: .89rem; color: var(--lp-ink-soft); flex: 1; }
.lp-more {
  font-family: var(--lp-head); font-weight: 700; font-size: .85rem; color: var(--lp-blue);
  display: inline-flex; align-items: center; gap: 6px; text-decoration: none; transition: gap .18s ease;
}
.lp-more:hover { gap: 11px; }

/* ---------- Info tiles ----------
   Column count is set per page so the last row is never a stranded
   orphan: 3-up for six/three tiles, 4-up for four. */
.lp-info { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 24px; }
.lp-info--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lp-info--4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.lp-info-card { background: #fff; border: 1px solid var(--lp-line); border-radius: var(--lp-radius); padding: 30px 26px; }
.lp-info-card .lp-icon { margin: 0 0 16px; }
.lp-info-card h3 { font-size: 1.08rem; }
.lp-info-card p { font-size: .91rem; color: var(--lp-ink-soft); margin-bottom: .5em; }
.lp-info-card strong { color: var(--lp-navy); }
.lp-info-card a { color: var(--lp-blue); font-weight: 600; }

/* ---------- Responsive ---------- */
@media (max-width: 1080px) {
  .lp-value-grid { grid-template-columns: repeat(2, 1fr); }
  .lp-info--4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 980px) {
  .lp-info--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  /* Search drops to its own full-width row; nav collapses behind the toggle. */
  .lp-header-top { flex-wrap: wrap; gap: 14px 18px; padding: 12px 20px; }
  .lp-search { order: 3; flex-basis: 100%; max-width: none; margin: 0; }
  .lp-header-actions { gap: 16px; }
  .lp-brand img { height: 38px; }

  /* The toggle used to be pulled up into the header row with a negative
     offset, which landed it on top of the search button. It now sits in
     normal flow as its own slim bar under the search. */
  .lp-header-nav .lp-wrap { flex-direction: column; align-items: stretch; gap: 0; padding-inline: 0; }
  .lp-nav-toggle {
    display: flex !important; align-items: center; justify-content: flex-end;
    position: static; margin: 0; padding: 12px 20px; width: 100%;
    color: var(--lp-navy);
  }
  .lp-nav-toggle[aria-expanded="true"] { background: var(--lp-bg-alt); }
  .lp-nav-links { display: none; flex-direction: column; border-top: 1px solid var(--lp-line); }
  .lp-nav-links.open { display: flex; }
  .lp-header-nav a { padding: 14px 24px; border-bottom: 1px solid var(--lp-line); }
  .lp-header-nav a::after { display: none; }
  .lp-header-nav a[aria-current="page"] { background: var(--lp-pale); }

  .lp-hero-inner { grid-template-columns: 1fr; text-align: center; padding-block: 56px; }
  .lp-hero-lead { margin-inline: auto; }
  .lp-hero-actions { justify-content: center; }
  .lp-hero-visual { order: -1; gap: 5%; }
  .lp-hero-vial { width: 27%; max-width: 132px; }
  .lp-ref-grid { grid-template-columns: 1fr; }
  .lp-steps { grid-template-columns: 1fr; }
  .lp-pillars { grid-template-columns: 1fr; gap: 26px; }
}
@media (max-width: 620px) {
  .lp-value-grid { grid-template-columns: 1fr; }
  .lp-mini-grid { grid-template-columns: 1fr; }
  .lp-info--3,
  .lp-info--4 { grid-template-columns: minmax(0, 1fr); }
  /* Touch devices swipe the carousel; the arrows only cover the cards. */
  .lp-arrow { display: none; }
  .lp-track { padding-inline: 0; }
  .lp-trust .lp-wrap { gap: 8px 18px; font-size: .74rem; }
  .lp-step { min-height: 240px; }
  .lp-card-media { min-height: 150px; padding: 16px 14px 10px; }
  .lp-card-media img { height: 120px; }
  .lp-card-body { padding: 4px 16px 18px; }
}
@media (prefers-reduced-motion: reduce) {
  .lp-page *, .lp-page *::before, .lp-page *::after { animation: none !important; transition: none !important; }
}

/* =====================================================================
   Catalog filter toolbar (WooCommerce shop archive)
   ===================================================================== */
.lp-shopbar {
  display: flex; flex-wrap: wrap; gap: 16px; align-items: center;
  justify-content: space-between;
  margin: 0 0 22px; padding-bottom: 22px; border-bottom: 1px solid var(--lp-line);
  clear: both; width: 100%;
}
/* WooCommerce floats the result count and the sorting select; keep them
   on their own line beneath the filter bar rather than wrapping around it. */
.lp-shopbar + .woocommerce-result-count,
.lp-shopbar ~ .woocommerce-ordering { margin-top: 0; }
.woocommerce .lp-shopbar { float: none; }
.lp-filters { display: flex; flex-wrap: wrap; gap: 10px; }
.lp-fbtn {
  font-family: var(--lp-head); font-weight: 700; font-size: .82rem;
  padding: 10px 18px; border-radius: 8px; cursor: pointer;
  border: 2px solid var(--lp-navy); background: transparent; color: var(--lp-navy);
  transition: background .16s ease, color .16s ease, transform .16s ease;
}
.lp-fbtn:hover { transform: translateY(-2px); }
.lp-fbtn.is-active { background: var(--lp-navy); color: #fff; }

.lp-ffield { flex: 1; min-width: 220px; max-width: 320px; margin-left: auto; }
.lp-ffield input {
  width: 100%; font-family: var(--lp-body); font-size: .88rem;
  padding: 11px 15px; border: 1.5px solid var(--lp-line); border-radius: 8px;
  outline: none; transition: border-color .16s ease, box-shadow .16s ease;
  -webkit-appearance: none; appearance: none;
}
.lp-ffield input:focus { border-color: var(--lp-blue); box-shadow: 0 0 0 3px rgba(0,86,139,.14); }

.lp-empty {
  text-align: center; padding: 46px 20px; color: var(--lp-ink-soft);
  font-size: .95rem; line-height: 1.7;
}
.lp-empty strong { color: var(--lp-navy); font-family: var(--lp-head); font-size: 1.05rem; }
.lp-empty em { color: var(--lp-blue); font-style: normal; font-weight: 600; }

@media (max-width: 620px) {
  .lp-shopbar { gap: 12px; margin-bottom: 22px; padding-bottom: 16px; }
  .lp-filters { width: 100%; gap: 8px; }
  .lp-fbtn { flex: 1 1 calc(50% - 4px); padding: 10px 8px; font-size: .76rem; }
  .lp-ffield { max-width: none; margin-left: 0; }
}

/* =====================================================================
   WooCommerce loop cards — must render identically to .lp-card on the
   home page. This is the single source of truth for catalog card design.
   ===================================================================== */

/* The Shop page's Elementor heading widget ("SHOP") — hidden so the
   catalog opens straight into the filter bar. */
.elementor-element-b75747e { display: none !important; }

.woocommerce ul.products li.product {
  position: relative;
  /* Blocksy ships its own li.product reset that zeroes these, so they
     have to be forced to keep the catalog matching the home page cards. */
  background: #fff !important;
  border: 1px solid var(--lp-line) !important;
  border-radius: var(--lp-radius) !important;
  padding: 0 0 22px !important;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  text-align: left;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.woocommerce ul.products li.product:hover {
  transform: translateY(-6px);
  box-shadow: var(--lp-shadow-lg);
  border-color: transparent;
}

/* image well */
.woocommerce ul.products li.product figure,
.woocommerce ul.products li.product .ct-media-container {
  position: relative;
  margin: 0;
  background: linear-gradient(170deg, #f4f7fc 0%, #ffffff 100%);
  border-radius: 0;
  overflow: hidden;
  min-height: 200px;
  display: flex; align-items: center; justify-content: center;
  padding: 26px 22px 14px;
}
.woocommerce ul.products li.product figure { padding: 0; min-height: 0; }
.woocommerce ul.products li.product img {
  width: 100% !important;
  height: 175px !important;
  object-fit: contain !important;
  max-width: 100% !important;
  flex: 0 0 auto !important;
  position: static !important;
  transition: transform .3s ease;
}
.woocommerce ul.products li.product:hover img { transform: scale(1.05); }

/* In Stock pill */
.woocommerce ul.products li.product.instock .ct-media-container::after {
  content: "In Stock";
  position: absolute; top: 14px; left: 14px; z-index: 3;
  background: var(--lp-navy); color: #fff;
  font-family: var(--lp-head); font-size: .7rem; font-weight: 600; line-height: 1;
  padding: 6px 11px 6px 22px; border-radius: 999px; pointer-events: none;
}
.woocommerce ul.products li.product.instock .ct-media-container::before {
  content: ""; position: absolute; top: 20px; left: 22px; z-index: 4;
  width: 7px; height: 7px; border-radius: 50%; background: #22c55e; pointer-events: none;
}

/* corner badge (Blend / Stack / Supply / Popular) */
.woocommerce ul.products li.product .lp-badge {
  position: absolute; top: 14px; right: 14px; z-index: 4;
  background: var(--lp-blue); color: #fff;
  font-family: var(--lp-head); font-size: .68rem; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase;
  padding: 5px 10px; border-radius: 5px;
}
/* WooCommerce's own sale flash would collide with the badge */
.woocommerce ul.products li.product .onsale { display: none !important; }

/* title */
.woocommerce ul.products li.product .woocommerce-loop-product__title {
  font-family: var(--lp-head) !important;
  color: var(--lp-navy) !important;
  font-size: 1rem !important;
  font-weight: 700 !important;
  line-height: 1.3;
  margin: 18px 22px 14px !important;
  padding: 0 !important;
  min-height: 2.6em;
}
.woocommerce ul.products li.product a:hover .woocommerce-loop-product__title { color: var(--lp-blue) !important; }

/* spec grid */
.woocommerce ul.products li.product .lp-spec {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px;
  margin: 0 22px 15px; padding-bottom: 15px;
  border-bottom: 1px solid var(--lp-line); text-align: center;
}
.woocommerce ul.products li.product .lp-spec dt {
  font-family: var(--lp-head); font-size: .62rem; font-weight: 600;
  letter-spacing: .1em; text-transform: uppercase; color: var(--lp-muted); margin-bottom: 3px;
}
.woocommerce ul.products li.product .lp-spec dd {
  margin: 0; font-family: var(--lp-head); font-weight: 700;
  font-size: .8rem; color: var(--lp-navy); line-height: 1.3;
}

/* price */
.woocommerce ul.products li.product .price {
  display: block !important;
  font-family: var(--lp-head) !important;
  font-weight: 700 !important;
  font-size: 1.3rem !important;
  color: var(--lp-blue) !important;
  margin: auto 22px 15px !important;
  padding: 0 !important;
  border: 0 !important;
}
.woocommerce ul.products li.product .price ins,
.woocommerce ul.products li.product .price ins .amount,
.woocommerce ul.products li.product .price > .amount,
.woocommerce ul.products li.product .price .woocommerce-Price-amount {
  color: var(--lp-blue) !important; text-decoration: none;
}
.woocommerce ul.products li.product .price del,
.woocommerce ul.products li.product .price del .amount {
  color: var(--lp-muted) !important; opacity: 1 !important;
  font-weight: 500; font-size: .78em; margin-left: 7px;
}

/* the "RESEARCH CHEMICAL" category line is replaced by the spec grid */
.woocommerce ul.products li.product ul.entry-meta,
.woocommerce ul.products li.product .entry-meta { display: none !important; }

/* button */
/* Blocksy wraps the button in a flex row whose child does not grow, so the
   button's width:100% was resolving against its own content width. */
.woocommerce ul.products li.product .ct-woo-card-actions {
  margin: 0 22px; display: flex !important; width: auto;
}
.woocommerce ul.products li.product .woocommerce-loop-product__buttons {
  flex: 1 1 auto !important; width: 100% !important; margin: 0 !important;
}
.woocommerce ul.products li.product .button {
  display: block !important; width: 100% !important; text-align: center;
  background: var(--lp-blue) !important; color: #fff !important;
  font-family: var(--lp-head) !important; font-weight: 700 !important; font-size: .85rem !important;
  border-radius: 8px !important; padding: 12px 20px !important; border: 0 !important; margin: 0 !important;
  transition: background .16s ease, transform .16s ease, box-shadow .16s ease;
}
.woocommerce ul.products li.product .button:hover {
  background: var(--lp-blue-dk) !important;
  transform: translateY(-2px); box-shadow: 0 8px 20px rgba(0,86,139,.32);
}

/* single product page keeps the same palette */
.woocommerce div.product .product_title { font-family: var(--lp-head); color: var(--lp-navy); }
.woocommerce div.product p.price,
.woocommerce div.product p.price ins,
.woocommerce div.product p.price > .amount,
.woocommerce div.product .woocommerce-variation-price .amount {
  color: var(--lp-blue) !important; font-family: var(--lp-head); font-weight: 700;
}
.woocommerce div.product p.price del,
.woocommerce div.product p.price del .amount { color: var(--lp-muted) !important; opacity: 1 !important; }
.woocommerce span.onsale {
  background: var(--lp-blue) !important; color: #fff !important;
  font-family: var(--lp-head); font-size: .7rem !important; font-weight: 700;
  letter-spacing: .06em; text-transform: uppercase;
  border-radius: 5px !important; padding: 6px 12px !important;
  min-width: 0 !important; min-height: 0 !important; line-height: 1.3 !important;
}
.woocommerce div.product form.cart button.single_add_to_cart_button {
  background: var(--lp-blue) !important; color: #fff !important;
  font-family: var(--lp-head) !important; font-weight: 700 !important;
  border-radius: 8px !important; border: 0 !important;
}
.woocommerce div.product form.cart button.single_add_to_cart_button:hover { background: var(--lp-blue-dk) !important; }

/* Elementor inline red highlights -> baby blue */
[style*="#bd0606" i], [style*="#c40000" i], [style*="#b90000" i],
[style*="#e8020b" i], [style*="#b60000" i], [style*="#ff0000" i] { color: var(--lp-baby) !important; }

@media (max-width: 767px) {
  .woocommerce ul.products.columns-3,
  .woocommerce ul.products.columns-4,
  .woocommerce ul.products.elementor-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
    gap: 14px !important;
  }
  .woocommerce ul.products li.product { padding: 0 0 16px !important; border-radius: 10px !important; }
  .woocommerce ul.products li.product figure,
  .woocommerce ul.products li.product .ct-media-container { min-height: 150px; padding: 16px 12px 8px; }
  .woocommerce ul.products li.product img { height: 118px !important; }
  .woocommerce ul.products li.product .woocommerce-loop-product__title {
    font-size: .85rem !important; margin: 12px 14px 10px !important; min-height: 2.4em;
  }
  .woocommerce ul.products li.product .lp-spec { margin: 0 14px 10px; padding-bottom: 10px; gap: 3px; }
  .woocommerce ul.products li.product .lp-spec dt { font-size: .53rem; letter-spacing: .06em; }
  .woocommerce ul.products li.product .lp-spec dd { font-size: .66rem; }
  .woocommerce ul.products li.product .price { font-size: 1rem !important; margin: auto 14px 10px !important; }
  .woocommerce ul.products li.product .ct-woo-card-actions { margin: 0 14px; }
  .woocommerce ul.products li.product .button { padding: 10px 8px !important; font-size: .75rem !important; }
  .woocommerce ul.products li.product.instock .ct-media-container::after { font-size: .62rem; padding: 5px 9px 5px 18px; top: 10px; left: 10px; }
  .woocommerce ul.products li.product.instock .ct-media-container::before { top: 15px; left: 17px; }
  .woocommerce ul.products li.product .lp-badge { font-size: .58rem; padding: 4px 7px; top: 10px; right: 10px; }
  .woocommerce ul.products li.product:hover { transform: none; box-shadow: none; }

  .woocommerce .woocommerce-ordering,
  .woocommerce .woocommerce-ordering select { width: 100% !important; max-width: 100% !important; float: none !important; }
  .woocommerce .woocommerce-result-count { float: none !important; display: block; margin-bottom: 10px; font-size: .78rem; }
}
/* Two across is the right shopping density on a phone; only the very
   smallest screens drop to a single column. */
@media (max-width: 359px) {
  .woocommerce ul.products.columns-3,
  .woocommerce ul.products.columns-4,
  .woocommerce ul.products.elementor-grid { grid-template-columns: minmax(0, 1fr) !important; }
}

/* =====================================================================
   CheckoutWC — themed to match the approved checkout mockup.
   CheckoutWC replaces the page template entirely (wp_body_open never
   fires there, which is why the site header is absent by design), so
   this styles its own cfw-* markup rather than our components.
   ===================================================================== */
body.checkout-wc {
  font-family: var(--lp-body);
  background: #f4f6fa;
  color: var(--lp-ink);
}
body.checkout-wc h1, body.checkout-wc h2, body.checkout-wc h3,
body.checkout-wc h4, .cfw-panel-heading, .cfw-shipping-methods-heading,
.cfw-billing-address-heading {
  font-family: var(--lp-head) !important;
  font-weight: 700 !important;
  color: var(--lp-navy) !important;
  letter-spacing: -.02em;
}

/* logo row */
body.checkout-wc .cfw-logo { padding-block: 8px; }
body.checkout-wc .cfw-logo img { margin-inline: auto; }

/* step bar — the navy numbered strip from the mockup.
   CheckoutWC sets its own padding/margins on ul.etabs, so these need
   !important or the bar collapses to a cramped strip. Step numbers come
   from a CSS counter since the markup is just plain links. */
body.checkout-wc ul.etabs {
  display: flex !important; flex-wrap: wrap;
  justify-content: center; align-items: center;
  gap: 10px 26px !important;
  list-style: none !important;
  background: var(--lp-navy) !important;
  border-radius: 12px !important;
  padding: 15px 22px !important;
  margin: 0 0 24px !important;
  counter-reset: lp-step;
}
body.checkout-wc ul.etabs li,
body.checkout-wc ul.etabs li.tab {
  display: inline-flex !important; align-items: center; gap: 9px;
  font-family: var(--lp-head); font-weight: 600; font-size: .84rem;
  color: rgba(255,255,255,.55);
  margin: 0 !important; padding: 0 !important;
  border: 0 !important; border-radius: 0 !important;
  background: none !important; box-shadow: none !important;
  float: none !important;
}
body.checkout-wc ul.etabs li::before {
  counter-increment: lp-step;
  content: counter(lp-step);
  flex: 0 0 22px; width: 22px; height: 22px; border-radius: 50%;
  background: rgba(255,255,255,.14); color: inherit;
  display: grid; place-items: center;
  font-size: .7rem; font-weight: 700; line-height: 1;
}
body.checkout-wc ul.etabs li a { color: inherit !important; text-decoration: none !important; }

/* current step */
body.checkout-wc ul.etabs li.active,
body.checkout-wc ul.etabs li.active a { color: #fff !important; }
body.checkout-wc ul.etabs li.active::before { background: #fff; color: var(--lp-navy); }

/* steps already completed link back, so give them the accent colour */
body.checkout-wc ul.etabs li:not(.active):has(a[href]),
body.checkout-wc ul.etabs li:not(.active) a[href] { color: var(--lp-baby) !important; }
body.checkout-wc ul.etabs li:not(.active):has(a[href])::before {
  background: var(--lp-baby); color: var(--lp-navy);
}

/* panels
   .cfw-module is CheckoutWC's generic wrapper — it lands on tables, totals
   lists, accordions and even single-line rows. Treating it as a card nested
   boxes inside boxes, so it is explicitly reset and only the real
   containers get the card treatment. */
body.checkout-wc .cfw-module {
  background: none !important;
  border: 0 !important;
  border-radius: 0 !important;
  box-shadow: none !important;
}

body.checkout-wc .cfw-panel {
  background: #fff;
  border: 1px solid var(--lp-line);
  border-radius: var(--lp-radius);
  box-shadow: var(--lp-shadow);
  padding: 26px;
}

/* Order summary: the items table and the totals each sit in an unclassed
   wrapper div, so target them by what they contain. */
body.checkout-wc .col-lg-5 div:has(> table.cfw-cart-table),
body.checkout-wc .col-lg-5 div:has(> .cfw-totals-list) {
  background: #fff;
  border: 1px solid var(--lp-line);
  border-radius: var(--lp-radius);
  box-shadow: var(--lp-shadow);
  padding: 6px 20px;
  margin-bottom: 16px;
}
body.checkout-wc .col-lg-5 .cfw-coupon-wrap { margin: 0 0 16px; padding-inline: 4px; }

/* fields
   IMPORTANT: .cfw-text-input / .cfw-select-input / .cfw-tel-input are classes
   on the <p class="form-row"> WRAPPER, not on the control. Bordering them drew
   a second box around every field. Only the control itself is styled, and the
   wrappers are explicitly reset. */
body.checkout-wc p.form-row,
body.checkout-wc .cfw-text-input,
body.checkout-wc .cfw-tel-input,
body.checkout-wc .cfw-select-input,
body.checkout-wc .cfw-country-input,
body.checkout-wc .cfw-state-input,
body.checkout-wc .cfw-input-wrap {
  border: 0 !important;
  background: none !important;
  box-shadow: none !important;
  border-radius: 0 !important;
}

body.checkout-wc .cfw-input-wrap input,
body.checkout-wc input[type="text"],
body.checkout-wc input[type="email"],
body.checkout-wc input[type="tel"],
body.checkout-wc input[type="password"],
body.checkout-wc select,
body.checkout-wc textarea {
  font-family: var(--lp-body) !important;
  font-size: .92rem !important;
  border: 1.5px solid var(--lp-line) !important;
  border-radius: 8px !important;
  color: var(--lp-ink) !important;
}
body.checkout-wc .cfw-input-wrap input:focus,
body.checkout-wc input:focus,
body.checkout-wc select:focus,
body.checkout-wc textarea:focus {
  border-color: var(--lp-blue) !important;
  box-shadow: 0 0 0 3px rgba(0,86,139,.14) !important;
  outline: none !important;
}
body.checkout-wc label,
body.checkout-wc .cfw-floatable-label {
  font-family: var(--lp-head) !important; font-weight: 600 !important;
  color: var(--lp-ink-soft) !important;
}

/* buttons */
body.checkout-wc .cfw-primary-btn,
body.checkout-wc button[type="submit"],
body.checkout-wc #place_order {
  background: var(--lp-blue) !important;
  color: #fff !important;
  font-family: var(--lp-head) !important;
  font-weight: 700 !important;
  font-size: .95rem !important;
  border: 0 !important;
  border-radius: 10px !important;
  padding: 15px 26px !important;
  transition: background .16s ease, transform .16s ease, box-shadow .16s ease;
}
body.checkout-wc .cfw-primary-btn:hover,
body.checkout-wc button[type="submit"]:hover,
body.checkout-wc #place_order:hover {
  background: var(--lp-blue-dk) !important;
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(0,86,139,.3);
}
body.checkout-wc .cfw-secondary-btn,
body.checkout-wc .cfw-prev-tab,
body.checkout-wc a.cfw-tab-link {
  color: var(--lp-blue) !important;
  font-family: var(--lp-head) !important; font-weight: 600 !important;
}

/* payment / shipping method rows — the card-style radios from the mockup */
/* NOTE: .cfw-shipping-method is also used on the step-bar <li>, so the
   card treatment is scoped to the shipping list only. */
body.checkout-wc .cfw-radio-reveal-li,
body.checkout-wc .cfw-shipping-methods-list .cfw-shipping-method {
  border: 1.5px solid var(--lp-line) !important;
  border-radius: 12px !important;
  margin-bottom: 12px !important;
  overflow: hidden;
  transition: border-color .16s ease, box-shadow .16s ease, background .16s ease;
}
body.checkout-wc .cfw-radio-reveal-li:has(input:checked),
body.checkout-wc .cfw-shipping-methods-list .cfw-shipping-method:has(input:checked),
body.checkout-wc .cfw-radio-reveal-li.cfw-active {
  border-color: var(--lp-blue) !important;
  box-shadow: 0 0 0 3px rgba(0,86,139,.11);
  background: #fbfdff;
}
body.checkout-wc .cfw-radio-reveal-title {
  font-family: var(--lp-head) !important; font-weight: 700 !important;
  color: var(--lp-navy) !important; font-size: .96rem !important;
}

/* ---- payment method rows ----
   The gateway markup is: title-wrap (radio + label + icon) followed by a
   .payment_box reveal. Neither carries padding of its own, which is why the
   rows read cramped and inconsistent next to the rest of the checkout. */
body.checkout-wc .cfw-radio-reveal-title-wrap,
body.checkout-wc .payment_method_title_wrap {
  display: flex !important; align-items: center; gap: 12px;
  padding: 15px 18px !important; margin: 0 !important; cursor: pointer;
}
body.checkout-wc .payment_method_title_wrap > label { margin: 0 !important; padding: 0 !important; flex: 1; cursor: pointer; }
body.checkout-wc .payment_method_title_wrap > label > div { display: flex !important; align-items: center; gap: 10px; width: 100%; }
body.checkout-wc .payment_method_title_wrap input.input-radio { margin: 0 !important; flex: 0 0 18px; accent-color: var(--lp-blue); }

body.checkout-wc .payment_method_title { flex: 1; }
body.checkout-wc .payment_method_icons { margin-left: auto; display: flex; align-items: center; gap: 6px; }
body.checkout-wc .payment_method_icons img,
body.checkout-wc .cfw-radio-reveal-title-wrap img {
  max-height: 26px !important; width: auto !important; border-radius: 6px; display: block;
}

/* revealed instructions */
body.checkout-wc .payment_box {
  background: #f7f9fc !important;
  border: 0 !important; border-top: 1px solid var(--lp-line) !important;
  border-radius: 0 !important;
  margin: 0 !important;
  padding: 16px 18px !important;
  font-family: var(--lp-body) !important;
  font-size: .87rem !important; line-height: 1.65 !important;
  color: var(--lp-ink-soft) !important;
}
body.checkout-wc .payment_box::before,
body.checkout-wc .payment_box::after { display: none !important; }
body.checkout-wc .payment_box fieldset { border: 0 !important; margin: 0 !important; padding: 0 !important; }
body.checkout-wc .payment_box p { margin: 0 0 .8em !important; font-size: .87rem !important; }
body.checkout-wc .payment_box p:last-of-type { margin-bottom: 0 !important; }
body.checkout-wc .payment_box strong { color: var(--lp-navy); font-weight: 700; }
body.checkout-wc .payment_box a { color: var(--lp-blue); font-weight: 600; }

/* the Cash App button + QR sit in one <p>; give them a proper row */
body.checkout-wc .payment_box p.wc-cashapp {
  display: flex !important; align-items: center; justify-content: center;
  gap: 22px; flex-wrap: wrap;
  background: #fff; border: 1px solid var(--lp-line); border-radius: 10px;
  padding: 16px !important; margin: 0 0 .9em !important;
}
body.checkout-wc .payment_box p.wc-cashapp a { display: inline-flex; align-items: center; }
body.checkout-wc .payment_box p.wc-cashapp img { max-height: 92px !important; width: auto !important; border-radius: 8px; }

/* order summary */
body.checkout-wc .cfw-cart-item-title {
  font-family: var(--lp-head) !important; font-weight: 700 !important;
  color: var(--lp-navy) !important; font-size: .88rem !important;
}
body.checkout-wc .cfw-cart-item-description { color: var(--lp-muted) !important; font-size: .78rem !important; }
/* The thumbnail is a <div> inside a <td>; bordering both produced a double
   box. Only the inner wrap is the image well. */
body.checkout-wc td.cfw-cart-item-image {
  border: 0 !important; background: none !important;
  width: 74px; padding: 12px 0 !important; vertical-align: top;
}
body.checkout-wc .cfw-cart-item-image-wrap {
  position: relative;
  width: 56px !important; min-width: 56px; max-width: 56px;
  height: 56px !important; flex: 0 0 56px; box-sizing: border-box;
  border: 1px solid var(--lp-line); border-radius: 10px;
  background: linear-gradient(170deg, #f4f7fc, #fff);
  display: flex; align-items: center; justify-content: center;
  overflow: visible;
}
body.checkout-wc .cfw-cart-item-image-wrap img {
  width: 100%; height: 100%; object-fit: contain; padding: 5px; border-radius: 9px;
  border: 0 !important; background: none !important; box-shadow: none !important;
}
body.checkout-wc .cfw-cart-item-quantity-bubble {
  position: absolute; top: -7px; right: -7px;
  width: 20px; height: 20px; min-width: 0; border-radius: 50%;
  background: var(--lp-navy) !important; color: #fff !important;
  font-family: var(--lp-head); font-weight: 700; font-size: .66rem;
  display: grid !important; place-items: center; line-height: 1;
}
body.checkout-wc .cfw-cart-item-description { padding-left: 4px; }
body.checkout-wc tr.cart-item-row td { border: 0 !important; padding-block: 12px !important; vertical-align: middle; }
body.checkout-wc tr.cart-item-row + tr.cart-item-row { border-top: 1px solid var(--lp-line) !important; }
body.checkout-wc .cfw-cart-item-subtotal {
  font-family: var(--lp-head) !important; font-weight: 700 !important; color: var(--lp-navy) !important;
}
body.checkout-wc .cfw-totals-list .order-total,
body.checkout-wc .cfw-totals-list .order-total .amount,
body.checkout-wc .order-total .amount {
  font-family: var(--lp-head) !important; font-weight: 700 !important;
  color: var(--lp-blue) !important;
}
body.checkout-wc .cfw-totals-list .order-total .amount { font-size: 1.45rem !important; }
/* separate collapse leaves gaps between cells, which chopped the divider
   above Total into two pieces */
body.checkout-wc .cfw-totals-list table,
body.checkout-wc table.cfw-cart-table { border-collapse: collapse !important; border-spacing: 0 !important; }
body.checkout-wc .cfw-totals-list table,
body.checkout-wc .cfw-totals-list tr,
body.checkout-wc .cfw-totals-list td,
body.checkout-wc .cfw-totals-list th { border: 0 !important; }
body.checkout-wc .cfw-totals-list tr td,
body.checkout-wc .cfw-totals-list tr th {
  padding: 9px 0 !important; font-size: .9rem; vertical-align: middle !important;
}
/* Put the rule on the ROW, not the cells — per-cell borders sat at different
   heights and rendered as two offset segments. */
body.checkout-wc .cfw-totals-list tr.order-total {
  border-top: 1px solid var(--lp-line) !important;
}
body.checkout-wc .cfw-totals-list tr.order-total td,
body.checkout-wc .cfw-totals-list tr.order-total th {
  border: 0 !important; padding-top: 15px !important;
}

/* free shipping reads as a positive, like the mockup */
body.checkout-wc .cfw-totals-list .free-shipping,
body.checkout-wc .woocommerce-shipping-totals .amount { color: var(--lp-navy); }

/* trust strip injected under the logo by lumen-design.js */
body.checkout-wc .lp-trust { border-radius: 0; margin-bottom: 22px; }

/* RUO note in the checkout footer */
body.checkout-wc .cfw-footer-inner {
  font-family: var(--lp-body); font-size: .78rem; color: var(--lp-muted);
}

@media (max-width: 620px) {
  body.checkout-wc ul.etabs { gap: 6px 12px; font-size: .72rem; padding: 11px 12px; }
  body.checkout-wc ul.etabs li.tab, body.checkout-wc ul.etabs li { font-size: .72rem; }
  body.checkout-wc .cfw-panel { padding: 18px; }
}

/* =====================================================================
   Cart & checkout — same tokens as the rest of the site
   ===================================================================== */
/* Page-content headings only. Without the :not() these also matched the
   white heading inside .lp-page-hero and, sitting later in the file at equal
   specificity, turned "Your Cart" heading-blue. */
.woocommerce-cart .entry-title,
.woocommerce-checkout .entry-title,
.woocommerce-cart :is(h1, h2, h3):not(.lp-page-hero *),
.woocommerce-checkout :is(h1, h2, h3):not(.lp-page-hero *) {
  font-family: var(--lp-head); color: var(--lp-heading); letter-spacing: -.02em;
}

.woocommerce-cart .cart_totals,
.woocommerce-checkout #order_review,
.woocommerce-checkout .woocommerce-checkout-review-order {
  background: #fff; border: 1px solid var(--lp-line);
  border-radius: var(--lp-radius); padding: 22px;
}

.woocommerce-cart .checkout-button,
.woocommerce-checkout #place_order,
.woocommerce-cart .button,
.woocommerce-checkout .button {
  font-family: var(--lp-head) !important; font-weight: 700 !important;
  border-radius: 8px !important; background: var(--lp-blue) !important;
  color: #fff !important; border: 0 !important;
}
.woocommerce-cart .checkout-button:hover,
.woocommerce-checkout #place_order:hover { background: var(--lp-blue-dk) !important; }

.woocommerce-cart .order-total .amount,
.woocommerce-checkout .order-total .amount {
  font-family: var(--lp-head); font-weight: 700; color: var(--lp-blue);
}

.woocommerce form .form-row input.input-text,
.woocommerce form .form-row select,
.woocommerce form .form-row textarea {
  border: 1.5px solid var(--lp-line); border-radius: 8px; padding: 11px 13px;
  font-family: var(--lp-body); font-size: .9rem; outline: none;
}
.woocommerce form .form-row input.input-text:focus,
.woocommerce form .form-row select:focus,
.woocommerce form .form-row textarea:focus {
  border-color: var(--lp-blue); box-shadow: 0 0 0 3px rgba(0,86,139,.14);
}
.woocommerce form .form-row label { font-family: var(--lp-head); font-weight: 600; font-size: .84rem; color: var(--lp-navy); }

.woocommerce-info, .woocommerce-message {
  border-top-color: var(--lp-blue) !important;
  border-radius: 8px;
}
.woocommerce-info::before, .woocommerce-message::before { color: var(--lp-blue) !important; }

/* =====================================================================
   Polish pass — button rhythm, box padding, mobile density
   ===================================================================== */

/* Action rows: even gaps, and never leave a lone ragged button.
   Below 620px every action button goes full width so the left and
   right edges line up with the cards above them. */
.lp-hero-actions,
.lp-cta-actions { gap: 14px; }

/* NOTE: `.lp-page p` (0,1,1) outranks a bare `.lp-center` (0,1,0) and was
   zeroing this margin, so the button sat flush against the boxes above.
   Scoping under .lp-page (0,2,0) wins the cascade. */
.lp-page .lp-center { margin-top: 44px; margin-bottom: 0; }
.lp-page .lp-center .lp-btn + .lp-btn { margin-left: 12px; }

/* Give the reference CTA room before the pillars below it. */
.lp-ref-copy > .lp-btn { margin-top: 4px; }
.lp-pillars { margin-top: 38px; }

/* Cards: keep the button pinned to the bottom edge on every card in a
   row, regardless of title length. */
.lp-card-body { gap: 0; }
.lp-card-body h3 { min-height: 2.6em; }
.lp-info-card > :last-child { margin-bottom: 0; }
.lp-article > :last-child { margin-bottom: 0; }

@media (max-width: 900px) {
  .lp-hero-inner { gap: 36px; }
  .lp-ref-grid { gap: 28px; }
  .lp-ref-visual { order: -1; }
}

@media (max-width: 620px) {
  /* Stack every action pair, full-bleed within the container. */
  .lp-hero-actions,
  .lp-cta-actions { flex-direction: column; align-items: stretch; gap: 12px; }
  .lp-hero-actions .lp-btn,
  .lp-cta-actions .lp-btn,
  .lp-page .lp-center .lp-btn { width: 100%; }
  .lp-page .lp-center .lp-btn + .lp-btn { margin-left: 0; margin-top: 12px; }

  /* Tighten the vertical rhythm so the page isn't endless on a phone. */
  .lp-section { padding-block: 46px; }
  .lp-value,
  .lp-reference { padding-block: 42px; }
  .lp-cta { padding-block: 46px; }
  .lp-page-hero { padding-block: 38px; }
  .lp-head { margin-bottom: 28px; }
  .lp-page .lp-center { margin-top: 34px; }
  .lp-hero-inner { padding-block: 44px; gap: 30px; }
  .lp-hero-lead { font-size: 1rem; margin-bottom: 1.7em; }
  .lp-hero-note { margin-top: 20px; }
  .lp-process-title { margin-bottom: 28px; }
  .lp-pillars { margin-top: 30px; }

  /* Box padding scaled for narrow screens. */
  .lp-value-card { padding: 28px 22px; }
  .lp-info-card { padding: 24px 20px; }
  .lp-article { padding: 22px 20px; }
  .lp-step { padding: 24px 20px; }
  .lp-mini { padding: 12px 14px; font-size: .84rem; }

  /* Accordion sized for thumbs. */
  .lp-acc-trigger { padding: 16px 18px; font-size: .95rem; gap: 12px; }
  .lp-acc-panel p { padding: 16px 18px 18px; font-size: .9rem; }

  /* Spec grid: "Lyophilized" must not wrap in a third of a small card. */
  .lp-spec dd { font-size: .72rem; }
  .lp-spec dt { font-size: .58rem; letter-spacing: .08em; }

  /* Trust strip: three wrapped lines is too much chrome on a phone. */
  .lp-trust .lp-wrap { padding-block: 9px; gap: 6px 16px; font-size: .7rem; }
  .lp-header-actions .lp-label { display: none; }
  .lp-header-actions { gap: 14px; }
  .lp-search input[type="search"] { font-size: .85rem; padding: 11px 14px 11px 40px; }
  .lp-search-ico { left: 14px; }
  .lp-search button { position: static; margin-left: 8px; padding: 11px 16px; flex-shrink: 0; }
  .lp-trust svg { width: 13px; height: 13px; }
}

@media (max-width: 400px) {
  .lp-trust .lp-wrap { font-size: .66rem; gap: 5px 12px; }
  .lp-card-body { padding: 4px 14px 16px; }
  .lp-card-body h3 { font-size: .92rem; }
}

/* ---- Apple Pay panel (injected by lumen-design.js) ---- */
body.checkout-wc .lp-ap {
  background: #fff; border: 1px solid var(--lp-line); border-radius: 10px;
  padding: 14px 16px; margin: 0 0 14px;
}
body.checkout-wc .lp-ap-amount {
  margin: 0 0 12px !important;
  font-family: var(--lp-body); font-size: .92rem !important; color: var(--lp-ink) !important;
}
body.checkout-wc .lp-ap-amount strong { color: var(--lp-blue); font-family: var(--lp-head); font-weight: 700; }
body.checkout-wc .lp-ap-row {
  display: flex; align-items: center; flex-wrap: wrap; gap: 10px;
  background: #f6f8fb; border: 1px solid var(--lp-line); border-radius: 9px; padding: 10px 12px;
}
body.checkout-wc .lp-ap-lbl {
  font-family: var(--lp-head); font-weight: 700; font-size: .68rem;
  letter-spacing: .09em; text-transform: uppercase; color: var(--lp-muted);
}
body.checkout-wc .lp-ap-val {
  flex: 1; min-width: 130px;
  font-family: var(--lp-head); font-weight: 700; font-size: .98rem; color: var(--lp-navy);
}
body.checkout-wc .lp-ap-btn {
  flex-shrink: 0; cursor: pointer;
  border: 1px solid var(--lp-line); background: #fff; color: var(--lp-blue);
  border-radius: 8px; padding: 9px 14px;
  font-family: var(--lp-head); font-weight: 700; font-size: .78rem;
  transition: background .15s ease, color .15s ease, border-color .15s ease;
}
body.checkout-wc .lp-ap-btn:hover { background: var(--lp-pale); }
body.checkout-wc .lp-ap-btn-primary { background: var(--lp-blue); color: #fff; border-color: var(--lp-blue); }
body.checkout-wc .lp-ap-btn-primary:hover { background: var(--lp-blue-dk); border-color: var(--lp-blue-dk); color: #fff; }
body.checkout-wc .lp-ap-btn.is-ok {
  background: #e6f7ef !important; color: #1a9c62 !important; border-color: #bfe8d3 !important;
}
@media (max-width: 520px) {
  body.checkout-wc .lp-ap-row { gap: 8px; }
  body.checkout-wc .lp-ap-val { flex-basis: 100%; }
  body.checkout-wc .lp-ap-btn { flex: 1; }
}

/* =====================================================================
   Slide-out cart drawer
   ===================================================================== */
.lp-drawer { position: fixed; inset: 0; z-index: 9999; }
/* clear the WordPress admin bar for logged-in staff */
body.admin-bar .lp-drawer { top: 32px; }
@media screen and (max-width: 782px) { body.admin-bar .lp-drawer { top: 46px; } }
.lp-drawer[hidden] { display: none; }
body.lp-drawer-locked { overflow: hidden; }

.lp-drawer-overlay {
  position: absolute; inset: 0; background: rgba(13, 24, 38, .55);
  opacity: 0; transition: opacity .26s ease;
}
.lp-drawer.is-open .lp-drawer-overlay { opacity: 1; }

.lp-drawer-panel {
  position: absolute; top: 0; right: 0; bottom: 0;
  width: min(420px, 100%);
  background: #fff; display: flex; flex-direction: column;
  box-shadow: -18px 0 46px rgba(13, 24, 38, .22);
  transform: translateX(100%); transition: transform .26s ease;
  font-family: var(--lp-body);
}
.lp-drawer.is-open .lp-drawer-panel { transform: translateX(0); }

.lp-drawer-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 18px 20px; border-bottom: 1px solid var(--lp-line); flex-shrink: 0;
}
.lp-drawer-head h2 {
  margin: 0; font-family: var(--lp-head); font-weight: 700;
  font-size: 1.12rem; color: var(--lp-navy); letter-spacing: -.02em;
}
.lp-drawer-x {
  border: 1px solid var(--lp-line); background: #fff; color: var(--lp-navy);
  width: 34px; height: 34px; border-radius: 8px; cursor: pointer;
  display: grid; place-items: center; transition: background .15s ease;
}
.lp-drawer-x:hover { background: var(--lp-bg-alt); }

.lp-drawer-body { flex: 1; overflow-y: auto; padding: 6px 20px; transition: opacity .15s ease; }
.lp-drawer-body.is-busy { opacity: .5; pointer-events: none; }

.lp-drawer-items { list-style: none; margin: 0; padding: 0; }
.lp-drawer-item {
  display: flex; gap: 13px; align-items: flex-start;
  padding: 16px 0; border-bottom: 1px solid var(--lp-line);
}
.lp-drawer-item:last-child { border-bottom: 0; }

.lp-drawer-thumb {
  flex: 0 0 60px; width: 60px; height: 60px; border-radius: 10px;
  border: 1px solid var(--lp-line);
  background: linear-gradient(170deg, #f4f7fc, #fff);
  display: grid; place-items: center; overflow: hidden;
}
.lp-drawer-thumb img { width: 100%; height: 100%; object-fit: contain; padding: 5px; }

.lp-drawer-info { flex: 1; min-width: 0; }
.lp-drawer-name {
  font-family: var(--lp-head); font-weight: 700; font-size: .89rem;
  color: var(--lp-navy); text-decoration: none; line-height: 1.35; display: block;
}
.lp-drawer-name:hover { color: var(--lp-blue); }
.lp-drawer-var { margin: 3px 0 0; font-size: .76rem; color: var(--lp-muted); }

.lp-drawer-qty { display: flex; align-items: center; gap: 6px; margin-top: 9px; }
.lp-drawer-qty button {
  width: 28px; height: 28px; border-radius: 7px; cursor: pointer;
  border: 1px solid var(--lp-line); background: #fff; color: var(--lp-navy);
  font-family: var(--lp-head); font-weight: 700; font-size: .9rem; line-height: 1;
  display: grid; place-items: center; transition: background .15s ease, border-color .15s ease;
}
.lp-drawer-qty button:hover { background: var(--lp-pale); border-color: var(--lp-blue); }
.lp-drawer-qty span {
  min-width: 26px; text-align: center;
  font-family: var(--lp-head); font-weight: 700; font-size: .85rem; color: var(--lp-navy);
}
.lp-drawer-remove {
  width: auto !important; padding: 0 8px; margin-left: 4px;
  font-size: .72rem !important; font-weight: 600 !important;
  color: var(--lp-muted) !important; border-color: transparent !important;
}
.lp-drawer-remove:hover { color: #b3261e !important; background: #fdf0ef !important; border-color: #f5cdc9 !important; }

.lp-drawer-price {
  font-family: var(--lp-head); font-weight: 700; font-size: .92rem;
  color: var(--lp-navy); white-space: nowrap;
}

/* skeleton shown only when there is no cached cart to paint from */
.lp-drawer-item.is-skeleton { pointer-events: none; }
.lp-drawer-item.is-skeleton .lp-drawer-thumb { background: #eef1f6; border-color: #eef1f6; }
.lp-sk {
  display: block; height: 11px; border-radius: 5px; background: #eef1f6;
  animation: lp-sk-pulse 1.1s ease-in-out infinite;
}
.lp-sk-l { width: 72%; margin-bottom: 8px; }
.lp-sk-s { width: 42%; }
@keyframes lp-sk-pulse { 0%,100% { opacity: 1; } 50% { opacity: .45; } }
@media (prefers-reduced-motion: reduce) { .lp-sk { animation: none; } }

.lp-drawer-empty { text-align: center; padding: 48px 10px; color: var(--lp-ink-soft); }
.lp-drawer-empty strong { color: var(--lp-navy); font-family: var(--lp-head); }
.lp-drawer-empty .lp-btn { margin-top: 14px; }

.lp-drawer-foot {
  flex-shrink: 0; border-top: 1px solid var(--lp-line);
  padding: 18px 20px; background: #fff;
}
.lp-drawer-foot:empty { display: none; }
.lp-drawer-sub {
  display: flex; align-items: center; justify-content: space-between;
  font-family: var(--lp-head); font-weight: 700; color: var(--lp-navy); font-size: 1rem;
}
.lp-drawer-sub strong { font-size: 1.3rem; color: var(--lp-blue); }
.lp-drawer-note { margin: 6px 0 14px; font-size: .76rem; color: var(--lp-muted); }
.lp-drawer-viewcart {
  display: block; text-align: center; margin-top: 11px;
  font-family: var(--lp-head); font-weight: 600; font-size: .84rem;
  color: var(--lp-blue); text-decoration: none;
}
.lp-drawer-viewcart:hover { text-decoration: underline; }

@media (max-width: 480px) {
  .lp-drawer-panel { width: 100%; }
  .lp-drawer-body { padding-inline: 16px; }
  .lp-drawer-foot { padding: 16px; }
}
@media (prefers-reduced-motion: reduce) {
  .lp-drawer-panel, .lp-drawer-overlay { transition: none !important; }
}

@media (max-width: 560px) {
  /* smaller drift so the row stays compact on a phone */
  .lp-hero-vial { width: 28%; max-width: 108px; }
  @keyframes lp-float { 0%,100% { transform: translate3d(0,0,0); } 50% { transform: translate3d(0,-9px,0); } }
}
@media (prefers-reduced-motion: reduce) {
  .lp-hero-vial { animation: none !important; transition: none !important; }
}
