/* Rails Bio — industrial procurement, mobile-first B2B */

:root {
  /* Nexora bone/pine tokens mapped onto the brand variable names */
  --ink: #141311;                 /* color-fg */
  --ink-soft: #1c1b18;
  --ink-mid: #24221e;
  --ink-true: #101412;            /* color-ink — dark pine for bands/CTAs */
  --ink-fg: #f7f5f0;              /* color-ink-fg / primary-fg */
  --teal: #1e3f38;                /* color-primary */
  --teal-deep: #162f2a;
  --teal-hover: #2a544b;          /* color-primary-hover */
  --cyan: #1e3f38;                /* accents → primary (no neon) */
  --cyan-soft: rgba(30, 63, 56, 0.12);
  --sand: #ece8df;                /* color-surface */
  --sand-deep: #e3ddd2;
  --paper: #f7f5f0;               /* color-bg */
  --white: #fffcf8;               /* color-bg-elevated */
  --muted-on-dark: rgba(247, 245, 240, 0.72);
  --muted-on-light: #6a655c;      /* color-muted */
  --faint-on-light: #8a8478;      /* color-subtle */
  --line-dark: rgba(247, 245, 240, 0.12);
  --line-light: #d8d2c6;          /* color-border */
  --danger: #8f2d2d;
  --select: rgba(30, 63, 56, 0.22);
  --ring: #1e3f38;
  --max: 1080px;
  --wide: 1200px;
  --header-h: 56px;
  --eyebrow-h: 0px;   /* eyebrow strip removed; keeps offset math intact */
  --sans: "Manrope", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --display: "Syne", "Manrope", ui-sans-serif, system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --text-display: clamp(2.5rem, 11vw, 4.75rem);
  --text-title: clamp(1.75rem, 6vw, 3.25rem);
  --text-lead: clamp(1rem, 2.6vw, 1.2rem);
  --radius-xs: 4px;
  --radius-sm: 8px;
  --radius-md: 12px;
  --radius: 14px;
  --radius-lg: 18px;
  --radius-xl: 28px;
  --radius-2xl: 36px;
  --shadow-border:
    0px 0px 0px 1px rgb(22 21 19 / 0.06),
    0px 1px 2px -1px rgb(22 21 19 / 0.06),
    0px 2px 4px 0px rgb(22 21 19 / 0.04);
  --shadow-border-hover:
    0px 0px 0px 1px rgb(22 21 19 / 0.1),
    0px 1px 2px -1px rgb(22 21 19 / 0.08),
    0px 2px 8px 0px rgb(22 21 19 / 0.06);
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-soft: cubic-bezier(0.25, 0.1, 0.25, 1);
}

*,
*::before,
*::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  /* clip (not hidden) so sticky header still works */
  overflow-x: clip;
}

html, body { margin: 0; padding: 0; }

body {
  font-family: var(--sans);
  font-size: 17px;
  line-height: 1.5;
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}

::selection {
  background: var(--select);
  color: var(--ink);
}

img, svg { display: block; max-width: 100%; height: auto; }

a { color: inherit; text-decoration: none; }

:focus-visible {
  outline: 2px solid var(--cyan);
  outline-offset: 3px;
}

.skip {
  position: absolute;
  left: 12px;
  top: -48px;
  background: var(--cyan);
  color: var(--ink);
  padding: 8px 14px;
  border-radius: 8px;
  z-index: 100;
  font-weight: 600;
}
.skip:focus { top: 12px; }

.wrap {
  width: min(100% - 32px, var(--max));
  margin-inline: auto;
}
.wrap-wide {
  width: min(100% - 32px, var(--wide));
  margin-inline: auto;
}

/* ——— Header ——— */
.site-header {
  position: fixed;
  top: 0;
  left: 0;
  right: 0;
  z-index: 200;
  height: var(--header-h);
  width: 100%;
  background: rgba(11, 28, 44, 0.97);
  backdrop-filter: saturate(160%) blur(18px);
  -webkit-backdrop-filter: saturate(160%) blur(18px);
  border-bottom: 1px solid var(--line-dark);
}

.header-inner {
  height: var(--header-h);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  position: relative;
}

.brand {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--paper);
  min-height: 44px;
  z-index: 2;
}

.mark {
  width: 18px;
  height: 18px;
  color: var(--cyan);
  flex-shrink: 0;
}

/* ——— Buttons ——— */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 48px;
  padding: 14px 28px;
  border-radius: 8px;
  border: 0;
  background: var(--cyan);
  color: var(--ink);
  font-family: inherit;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.01em;
  cursor: pointer;
  text-decoration: none;
  transition: transform 0.2s var(--ease), opacity 0.2s var(--ease), box-shadow 0.2s var(--ease), background 0.2s var(--ease);
  box-shadow: 0 8px 24px rgba(45, 212, 191, 0.28);
  -webkit-tap-highlight-color: transparent;
}
.btn:active {
  transform: scale(0.97);
  opacity: 0.9;
}

.btn-ink {
  background: var(--ink);
  color: var(--paper);
  box-shadow: 0 8px 24px rgba(11, 28, 44, 0.22);
}

.btn-ghost {
  background: transparent;
  color: var(--paper);
  border: 1px solid rgba(250, 247, 242, 0.35);
  box-shadow: none;
}

/* Ghost button for DARK surfaces. Was previously identical to .btn-ghost
   (near-black text), which made it unusable on the surface it is named for. */
.btn-ghost-dark {
  background: transparent !important;
  color: var(--ink-fg) !important;
  border: 1px solid rgba(247, 245, 240, 0.42) !important;
  box-shadow: none !important;
}

/* ——— Transparent vials ——— */
.vial-float {
  position: relative;
  will-change: transform;
  background: transparent;
}

.vial-float picture,
.vial-float img {
  width: 100%;
  height: auto;
  max-width: 100%;
  object-fit: contain;
  background: transparent !important;
  user-select: none;
  -webkit-user-drag: none;
}

.vial-shadow {
  display: block;
  position: absolute;
  left: 50%;
  bottom: 2%;
  transform: translateX(-50%);
  width: 42%;
  height: 16px;
  background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0.35) 0%, rgba(0, 0, 0, 0) 70%);
  border-radius: 50%;
  z-index: -1;
  animation: shadow-breathe 7s var(--ease-soft) infinite;
  pointer-events: none;
}

@keyframes float-y {
  0%, 100% { transform: translateY(0) rotate(-1.2deg); }
  50% { transform: translateY(-18px) rotate(1.4deg); }
}
@keyframes float-y-a {
  0%, 100% { transform: translateY(0) rotate(8deg); }
  50% { transform: translateY(-14px) rotate(12deg); }
}
@keyframes float-y-b {
  0%, 100% { transform: translateY(0) rotate(-10deg); }
  50% { transform: translateY(-12px) rotate(-6deg); }
}
@keyframes shadow-breathe {
  0%, 100% { transform: translateX(-50%) scale(1); opacity: 0.9; }
  50% { transform: translateX(-50%) scale(0.82); opacity: 0.5; }
}
@keyframes orb-drift {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(12px, -18px) scale(1.05); }
}

/* ——— HERO (dark) ——— */
.hero {
  position: relative;
  overflow: hidden;
  padding: 16px 0 32px;
  min-height: calc(100svh - var(--header-h));
  min-height: calc(100dvh - var(--header-h));
  display: flex;
  align-items: center;
  background:
    radial-gradient(ellipse 80% 60% at 80% 20%, rgba(14, 124, 123, 0.42) 0%, transparent 55%),
    radial-gradient(ellipse 60% 50% at 10% 80%, rgba(45, 212, 191, 0.14) 0%, transparent 50%),
    linear-gradient(165deg, #07141f 0%, #0B1C2C 42%, #0f2a3f 78%, #0a3d3c 100%);
  color: var(--paper);
}

.hero-orbs {
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
}

.orb {
  position: absolute;
  border-radius: 50%;
  filter: blur(2px);
  opacity: 0.55;
  animation: orb-drift 12s var(--ease-soft) infinite;
}

.orb-a {
  width: min(280px, 70vw);
  height: min(280px, 70vw);
  background: radial-gradient(circle, rgba(45, 212, 191, 0.35) 0%, rgba(45, 212, 191, 0) 70%);
  top: -40px;
  right: -40px;
}

.orb-b {
  width: min(200px, 55vw);
  height: min(200px, 55vw);
  background: radial-gradient(circle, rgba(14, 124, 123, 0.4) 0%, transparent 70%);
  bottom: 10%;
  left: -30px;
  animation-delay: -4s;
}

.orb-c {
  width: min(140px, 40vw);
  height: min(140px, 40vw);
  background: radial-gradient(circle, rgba(250, 247, 242, 0.08) 0%, transparent 70%);
  top: 42%;
  left: 42%;
  animation-delay: -7s;
}

.hero-grid {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  align-items: center;
  width: min(100% - 32px, var(--max));
  margin-inline: auto;
}

.hero-stage {
  position: relative;
  order: 1;
  height: clamp(200px, 52vw, 280px);
  display: flex;
  align-items: center;
  justify-content: center;
}

.hero-copy {
  text-align: center;
  order: 2;
  padding-bottom: 4px;
}

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin: 0 0 14px;
  padding: 6px 12px;
  border-radius: 4px;
  background: rgba(45, 212, 191, 0.12);
  border: 1px solid rgba(45, 212, 191, 0.32);
  color: var(--cyan);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.hero-copy h1 {
  margin: 0;
  font-size: clamp(2rem, 8.2vw, 3.4rem);
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 1.05;
  color: var(--paper);
}

.hero .lede {
  margin: 12px 0 0;
  font-size: clamp(16px, 4vw, 19px);
  line-height: 1.45;
  color: var(--muted-on-dark);
  letter-spacing: -0.01em;
  font-weight: 400;
  max-width: 32em;
  margin-inline: auto;
}

.hero-actions {
  margin-top: 20px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}

.hero-actions .btn {
  width: 100%;
  max-width: 340px;
}

.hero-micro {
  margin: 14px 0 0;
  font-size: 13px;
  color: rgba(250, 247, 242, 0.55);
  letter-spacing: -0.01em;
}

.vial-hero {
  position: relative;
  width: min(80%, 300px);
  z-index: 3;
  animation: float-y 7s var(--ease-soft) infinite;
  background: transparent;
}

.vial-hero img {
  filter: drop-shadow(0 32px 48px rgba(0, 0, 0, 0.45));
  background: transparent !important;
}

.vial-sat {
  position: absolute;
  z-index: 1;
  opacity: 0.6;
  pointer-events: none;
  background: transparent;
}

.vial-sat img {
  filter: drop-shadow(0 16px 28px rgba(0, 0, 0, 0.35));
  background: transparent !important;
}

.vial-sat-a {
  width: 30%;
  top: 6%;
  left: -2%;
  animation: float-y-a 9s var(--ease-soft) infinite;
  animation-delay: -1.5s;
}

.vial-sat-b {
  width: 26%;
  bottom: 10%;
  right: -4%;
  opacity: 0.55;
  animation: float-y-b 8.5s var(--ease-soft) infinite;
  animation-delay: -3s;
}

/* ——— PROBLEM ——— */
.problem {
  padding: 56px 0;
  background: var(--paper);
  text-align: center;
}

.problem .kicker {
  margin: 0 0 12px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--teal);
}

.problem-lead {
  margin: 0 auto;
  max-width: 18em;
  font-size: clamp(1.5rem, 5.5vw, 2.1rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.2;
  color: var(--ink);
}

.problem-hits {
  list-style: none;
  margin: 22px 0 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
}

.problem-hits li {
  padding: 8px 14px;
  border: 1px solid var(--line-light);
  background: var(--white);
  border-radius: 4px;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--ink);
}

.problem-foot {
  margin: 20px auto 0;
  max-width: 22em;
  font-size: 16px;
  color: var(--muted-on-light);
  letter-spacing: -0.01em;
}

/* Shared kickers / heads */
.kicker {
  margin: 0 0 12px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}

.section-head {
  text-align: center;
  margin-bottom: 32px;
}

.section-head .kicker {
  color: var(--teal);
}

.section-head h2 {
  margin: 0;
  font-size: clamp(1.75rem, 6vw, 2.5rem);
  font-weight: 700;
  letter-spacing: -0.035em;
  line-height: 1.1;
  color: var(--ink);
}

.section-head p {
  margin: 12px auto 0;
  max-width: 32em;
  font-size: 16px;
  color: var(--muted-on-light);
  letter-spacing: -0.01em;
}

.section-head .ruo-disclaimer {
  max-width: 36em;
  font-size: 13px;
  color: var(--faint-on-light);
}

.section-head-on-dark {
  text-align: left;
}

.section-head-on-dark .kicker { color: var(--cyan); }
.section-head-on-dark h2 { color: var(--paper); }
.section-head-on-dark p {
  margin-inline: 0;
  color: var(--muted-on-dark);
}

/* ——— STANDARD (teal trust band) ——— */
.standard {
  position: relative;
  overflow: hidden;
  padding: 64px 0;
  background:
    radial-gradient(ellipse 70% 80% at 90% 10%, rgba(45, 212, 191, 0.22) 0%, transparent 55%),
    linear-gradient(160deg, #0a5f5e 0%, #0E7C7B 40%, #0B1C2C 140%);
  color: var(--paper);
  scroll-margin-top: calc(var(--header-h) + 8px);
}

.standard-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 36px;
  align-items: center;
  text-align: center;
}

.standard .kicker { color: var(--cyan); }

.standard h2 {
  margin: 0 0 10px;
  font-size: clamp(1.75rem, 6vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.035em;
  line-height: 1.1;
}

.standard-copy > p {
  margin: 0 auto 24px;
  max-width: 32em;
  font-size: 16px;
  line-height: 1.45;
  color: var(--muted-on-dark);
  letter-spacing: -0.01em;
}

.proof-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
}

.proof-list li {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 1 1 calc(50% - 8px);
  min-width: min(100%, 140px);
  min-height: auto;
  padding: 10px 12px;
  border-radius: 4px;
  background: rgba(250, 247, 242, 0.1);
  border: 1px solid rgba(250, 247, 242, 0.14);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-transform: uppercase;
  line-height: 1.3;
  text-align: center;
  overflow-wrap: break-word;
  word-break: break-word;
  color: var(--paper);
}

.standard-vial {
  display: flex;
  justify-content: center;
}

.vial-standard {
  width: min(70%, 260px);
  animation: float-y 8s var(--ease-soft) infinite;
  animation-delay: -2s;
  background: transparent;
}

.vial-standard img {
  filter: drop-shadow(0 28px 40px rgba(0, 0, 0, 0.4));
  background: transparent !important;
}

/* ——— LARGE ACCOUNTS ——— */
.accounts {
  padding: 64px 0 72px;
  background:
    radial-gradient(ellipse 50% 40% at 100% 0%, rgba(14, 124, 123, 0.22) 0%, transparent 50%),
    linear-gradient(180deg, #07141f 0%, #0B1C2C 100%);
  color: var(--paper);
  scroll-margin-top: calc(var(--header-h) + 8px);
}

.account-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}

.account-card {
  padding: 22px 20px 24px;
  border-radius: var(--radius);
  background: rgba(250, 247, 242, 0.04);
  border: 1px solid var(--line-dark);
}

.account-num {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  color: var(--cyan);
  margin-bottom: 10px;
}

.account-card h3 {
  margin: 0 0 8px;
  font-size: 1.15rem;
  font-weight: 600;
  letter-spacing: -0.02em;
}

.account-card p {
  margin: 0;
  font-size: 15px;
  line-height: 1.45;
  color: var(--muted-on-dark);
}

.catalog-note {
  margin: 28px auto 0;
  text-align: center;
  max-width: 32em;
  font-size: 14px;
  color: var(--muted-on-light);
}
.catalog-note a {
  color: var(--teal);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ——— WHO ——— */
.who {
  padding: 64px 0;
  background: var(--paper);
  scroll-margin-top: calc(var(--header-h) + 8px);
}

.who-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}

.who-intro {
  text-align: center;
  margin-bottom: 26px;
}

.who-intro .kicker { color: var(--teal); }

.who-intro h2 {
  margin: 0;
  font-size: clamp(1.75rem, 6vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.035em;
  line-height: 1.1;
}

.who-intro p {
  margin: 12px auto 0;
  max-width: 28em;
  font-size: 16px;
  color: var(--muted-on-light);
}

.who-card {
  padding: 24px 22px;
  border-radius: var(--radius);
  background: var(--white);
  border: 1px solid var(--line-light);
  text-align: center;
}

.who-card h3 {
  margin: 0 0 6px;
  font-size: 1.15rem;
  font-weight: 600;
  letter-spacing: -0.02em;
}

.who-card p {
  margin: 0;
  font-size: 15px;
  color: var(--muted-on-light);
  line-height: 1.4;
}

.who-mark {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  margin: 0 auto 14px;
  border-radius: 6px;
  background: var(--cyan-soft);
  color: var(--teal);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.04em;
}

/* ——— FAQ ——— */
.faq {
  padding: 64px 0 72px;
  background: var(--sand-deep);
  scroll-margin-top: calc(var(--header-h) + 8px);
}

.faq-list {
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  border-top: 1px solid var(--line-light);
}

.faq-item {
  margin: 0;
  padding: 20px 0;
  border-bottom: 1px solid var(--line-light);
}

.faq-item dt {
  margin: 0 0 8px;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}

.faq-item dd {
  margin: 0;
  font-size: 15px;
  line-height: 1.5;
  color: var(--muted-on-light);
  max-width: 42em;
}

/* ——— CTA (dark) ——— */
.cta-band {
  position: relative;
  overflow: hidden;
  padding: 72px 24px;
  text-align: center;
  background:
    radial-gradient(ellipse 60% 70% at 50% 100%, rgba(14, 124, 123, 0.38) 0%, transparent 55%),
    linear-gradient(180deg, #07141f 0%, #0B1C2C 100%);
  color: var(--paper);
}

.cta-band h2 {
  margin: 0;
  font-size: clamp(1.75rem, 6vw, 2.5rem);
  font-weight: 700;
  letter-spacing: -0.035em;
  line-height: 1.1;
}

.cta-band p {
  margin: 14px auto 0;
  max-width: 28em;
  font-size: 16px;
  color: var(--muted-on-dark);
}

.cta-band .btn {
  margin-top: 28px;
  width: 100%;
  max-width: 340px;
}

.cta-micro {
  margin-top: 14px !important;
  font-size: 13px !important;
  color: rgba(250, 247, 242, 0.5) !important;
}

/* ——— Footer ——— */
.site-footer {
  background: var(--ink);
  border-top: 1px solid var(--line-dark);
  padding: 28px 0 36px;
  font-size: 12px;
  color: rgba(250, 247, 242, 0.55);
}

.footer-inner {
  display: flex;
  flex-direction: column;
  flex-wrap: wrap;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 8px;
}

.site-footer a { color: rgba(250, 247, 242, 0.75); }

.footer-disclaimer {
  flex: 1 0 100%;
  margin: 4px 0 0;
  font-size: 11px;
  line-height: 1.45;
  color: rgba(250, 247, 242, 0.42);
}

/* ——— Quote page ——— */
.page-hero {
  position: relative;
  overflow: hidden;
  padding: 36px 0 28px;
  background:
    radial-gradient(ellipse 70% 60% at 85% 20%, rgba(14, 124, 123, 0.38) 0%, transparent 55%),
    linear-gradient(165deg, #07141f 0%, #0B1C2C 55%, #0a3d3c 100%);
  color: var(--paper);
}

.page-hero-inner {
  display: grid;
  grid-template-columns: 1fr;
  gap: 16px;
  align-items: center;
  text-align: center;
}

.page-hero h1 {
  margin: 0;
  font-size: clamp(2rem, 8vw, 3.2rem);
  font-weight: 700;
  letter-spacing: -0.04em;
  line-height: 1.05;
}

.page-hero p {
  margin: 12px 0 0;
  font-size: 16px;
  color: var(--muted-on-dark);
  letter-spacing: -0.01em;
}

.page-hero-vial {
  display: flex;
  justify-content: center;
  order: -1;
}

.vial-page {
  width: min(46%, 150px);
  animation: float-y 8s var(--ease-soft) infinite;
  background: transparent;
}

.vial-page img {
  filter: drop-shadow(0 20px 32px rgba(0, 0, 0, 0.4));
  background: transparent !important;
}

.form-shell {
  width: min(100% - 32px, 560px);
  margin: -12px auto 80px;
  position: relative;
  z-index: 2;
  padding: 28px 22px;
  background: var(--white);
  border-radius: var(--radius-lg);
  border: 1px solid var(--line-light);
  box-shadow: 0 24px 60px rgba(11, 28, 44, 0.12);
}

.quote-form .fields {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

.field label,
.field .legend {
  display: block;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: -0.01em;
  margin-bottom: 8px;
  color: var(--ink);
}

.field input,
.field select,
.field textarea {
  width: 100%;
  font-family: inherit;
  font-size: 16px;
  line-height: 1.4;
  color: var(--ink);
  background: var(--paper);
  border: 1px solid var(--line-light);
  border-radius: 8px;
  padding: 16px;
  min-height: 52px;
  appearance: none;
  -webkit-appearance: none;
  transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease);
}

.field textarea {
  min-height: 120px;
  resize: vertical;
}

.field input:focus,
.field select:focus,
.field textarea:focus {
  outline: none;
  border-color: var(--teal);
  box-shadow: 0 0 0 3px rgba(14, 124, 123, 0.18);
  background: var(--white);
}

.field input.is-invalid,
.field select.is-invalid,
.field textarea.is-invalid,
.field input[aria-invalid="true"],
.check input.is-invalid {
  border-color: var(--danger);
}

.field-hint {
  display: block;
  margin-top: 6px;
  font-size: 12px;
  color: var(--faint-on-light);
  line-height: 1.4;
}

.error {
  display: block;
  min-height: 0;
  margin-top: 0;
  font-size: 13px;
  color: var(--danger);
}

.error:not(:empty) {
  min-height: 1.2em;
  margin-top: 6px;
}

.check {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  font-size: 15px;
  line-height: 1.4;
  cursor: pointer;
  min-height: 44px;
}
.check input {
  width: 22px;
  height: 22px;
  min-height: 22px;
  margin-top: 2px;
  flex-shrink: 0;
  accent-color: var(--teal);
}

.form-actions {
  margin-top: 26px;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 12px;
}
.form-actions .btn { width: 100%; }

.form-hint {
  margin: 0;
  font-size: 13px;
  color: var(--faint-on-light);
  text-align: center;
}

.success {
  text-align: center;
  padding: 12px 0 24px;
}
.success h2 {
  margin: 0;
  font-size: clamp(1.75rem, 6vw, 2.4rem);
  font-weight: 700;
  letter-spacing: -0.035em;
  color: var(--ink);
}
.success p {
  margin: 12px 0 0;
  color: var(--muted-on-light);
  font-size: 16px;
}
.success-actions {
  margin-top: 28px;
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.preview {
  margin-top: 24px;
  text-align: left;
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 13px;
  line-height: 1.5;
  background: var(--sand);
  border-radius: 12px;
  padding: 20px;
  white-space: pre-wrap;
  color: var(--ink);
  overflow-x: auto;
}

/* Scroll reveals — visible by default so no-JS / delayed-JS never blanks the page */
.reveal {
  opacity: 1;
  transform: none;
  transition:
    opacity 0.8s var(--ease),
    transform 0.8s var(--ease);
  transition-delay: calc(var(--d, 0) * 70ms);
}

.reveal.is-pending {
  opacity: 1;
  transform: translateY(12px);
  transition: none;
}

.reveal.is-in {
  opacity: 1;
  transform: translateY(0);
}

.hero-copy.reveal,
.hero-copy.reveal.is-pending,
.page-hero-copy.reveal,
.page-hero-copy.reveal.is-pending,
.page-hero-vial.reveal,
.page-hero-vial.reveal.is-pending,
.form-shell.reveal,
.form-shell.reveal.is-pending,
.cta-band.reveal,
.cta-band.reveal.is-pending {
  opacity: 1;
  transform: none;
}

/* ——— ~600px ——— */
@media (min-width: 600px) {
  .wrap { width: min(100% - 40px, var(--max)); }
  .wrap-wide { width: min(100% - 40px, var(--wide)); }
  .form-shell { width: min(100% - 40px, 560px); padding: 36px 32px; }

  .hero-stage { height: clamp(320px, 55vw, 420px); }
  .vial-hero { width: min(88%, 400px); }

  .account-grid {
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }

  .faq-list {
    grid-template-columns: 1fr 1fr;
    gap: 0 32px;
    border-top: 0;
  }

  .faq-item {
    border-top: 1px solid var(--line-light);
  }

  .footer-inner {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 12px 20px;
  }

  .proof-list li {
    padding: 12px 14px;
    font-size: 13px;
  }

  .who-grid {
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
  }

  .hero-actions .btn,
  .cta-band .btn { width: auto; }

  .proof-list { gap: 8px; }
}

/* ——— ~734px ——— */
@media (min-width: 734px) {
  .wrap { width: min(100% - 56px, var(--max)); }
  .wrap-wide { width: min(100% - 56px, var(--wide)); }

  .hero {
    padding: 48px 0 72px;
    min-height: min(88vh, 780px);
  }

  .hero-grid {
    grid-template-columns: 1.05fr 1fr;
    gap: 36px;
  }

  .hero-copy {
    text-align: left;
    order: 0;
  }

  .hero-copy h1 {
    font-size: clamp(2.5rem, 4.6vw, 3.5rem);
  }

  .hero .lede {
    margin-inline: 0;
    font-size: 18px;
  }

  .hero-actions {
    align-items: flex-start;
    flex-direction: row;
  }

  .hero-micro { margin-inline: 0; }

  .hero-stage {
    order: 0;
    height: 480px;
  }

  .vial-hero { width: min(100%, 460px); }

  .vial-sat { opacity: 0.62; }
  .vial-sat-a { width: 34%; left: -4%; top: 4%; }
  .vial-sat-b { width: 30%; right: -6%; bottom: 8%; opacity: 0.55; }

  .problem { padding: 72px 0; }
  .problem-lead { font-size: 2.15rem; max-width: 16em; }

  .standard { padding: 80px 0; }

  .standard-grid {
    grid-template-columns: 1.2fr 0.8fr;
    gap: 48px;
    text-align: left;
  }

  .standard-copy > p { margin-inline: 0; }

  .proof-list li { justify-content: flex-start; padding-inline: 16px; }

  .vial-standard { width: min(100%, 300px); }

  .accounts { padding: 80px 0 88px; }
  .section-head-on-dark { margin-bottom: 36px; }

  .who { padding: 80px 0; }
  .faq { padding: 80px 0 88px; }

  .who-intro { text-align: left; margin-bottom: 26px; }
  .who-intro p { margin-inline: 0; }
  .proof-list { justify-content: flex-start; }

  .section-head { text-align: left; }
  .section-head p { margin-inline: 0; }

  .page-hero { padding: 56px 0 48px; }

  .page-hero-inner {
    grid-template-columns: 1fr auto;
    text-align: left;
    gap: 32px;
  }

  .page-hero-vial { order: 0; }
  .vial-page { width: 150px; }

  .form-shell { margin-top: -40px; }

  .success-actions {
    flex-direction: row;
    justify-content: center;
  }
  .success-actions .btn { width: auto; }

  .field input,
  .field select,
  .field textarea { font-size: 16px; }
}

/* ——— ~980px ——— */
@media (min-width: 980px) {
  .hero {
    padding: 64px 0 96px;
    min-height: min(90vh, 840px);
  }

  .hero-copy h1 {
    font-size: clamp(3rem, 4.3vw, 3.7rem);
  }

  .hero .lede { font-size: 19px; }

  .hero-stage { height: 540px; }
  .vial-hero { width: 500px; }

  .proof-list li {
    flex: 1 1 calc(33.333% - 8px);
  }

  .account-card { padding: 26px 24px 28px; }
}

/* Short phones: shrink the vial stage so the CTA sits nearer the fold */
@media (max-height: 740px) and (max-width: 733px) {
  .hero {
    min-height: 0;
    padding: 10px 0 24px;
    align-items: flex-start;
  }
  .hero-stage {
    height: clamp(132px, 36vw, 190px);
  }
  .vial-hero { width: min(72%, 240px); }
  .hero-actions { margin-top: 14px; }
}

/* Hover */
@media (hover: hover) {
  .btn:hover { opacity: 0.92; }
  .site-footer a:hover { color: var(--cyan); }

  .who-card:hover,
  .account-card:hover {
    border-color: rgba(45, 212, 191, 0.35);
  }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }

  .vial-hero,
  .vial-sat-a,
  .vial-sat-b,
  .vial-standard,
  .vial-page,
  .vial-shadow,
  .orb {
    animation: none !important;
  }

  .reveal,
  .reveal.is-pending {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .btn{
    transition: none;
  }
}

/* ——— Rebuild additions: lot chain, spec strip, catalog, tray, quote lines ——— */

.btn-sm {
  min-height: 44px;
  padding: 10px 16px;
  font-size: 14px;
  box-shadow: none;
}

.btn.is-added {
  background: var(--teal);
  color: var(--paper);
}

.cta-actions {
  margin-top: 28px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.cta-actions .btn {
  width: 100%;
  max-width: 340px;
}

/* How we supply — lot chain */
.supply {
  position: relative;
  overflow: hidden;
  padding: 64px 0 72px;
  background:
    radial-gradient(ellipse 70% 80% at 90% 10%, rgba(45, 212, 191, 0.22) 0%, transparent 55%),
    linear-gradient(160deg, #0a5f5e 0%, #0E7C7B 40%, #0B1C2C 140%);
  color: var(--paper);
  scroll-margin-top: calc(var(--header-h) + 8px);
}
.supply .section-head { margin-bottom: 28px; }
.lot-chain {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
  counter-reset: none;
}
.lot-step {
  margin: 0;
  padding: 22px 20px 24px;
  border-radius: var(--radius);
  background: rgba(250, 247, 242, 0.08);
  border: 1px solid rgba(250, 247, 242, 0.14);
}
.lot-num {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--cyan);
  margin-bottom: 10px;
}
.lot-step h3 {
  margin: 0 0 8px;
  font-size: 1.15rem;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.lot-step p {
  margin: 0;
  font-size: 15px;
  line-height: 1.45;
  color: var(--muted-on-dark);
}

/* Spec strip */
.spec-strip {
  padding: 28px 0;
  background: var(--ink);
  color: var(--paper);
  border-top: 1px solid var(--line-dark);
  border-bottom: 1px solid var(--line-dark);
}
.spec-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px 12px;
}
.spec-item {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.spec-value {
  font-size: clamp(1.15rem, 4.2vw, 1.45rem);
  font-weight: 700;
  letter-spacing: -0.03em;
  line-height: 1.1;
  color: var(--cyan);
}
.spec-label {
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted-on-dark);
}

.who-grid-4 {
  grid-template-columns: 1fr;
}
.ruo-banner {
  margin: 0 0 20px;
  padding: 12px 14px;
  border: 1px solid var(--line-light);
  border-radius: 8px;
  background: var(--white);
  font-size: 13px;
  line-height: 1.45;
  color: var(--muted-on-light);
}
.catalog-toolbar { margin-bottom: 18px; }
.filter-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.filter-pill {
  appearance: none;
  -webkit-appearance: none;
  margin: 0;
  padding: 8px 14px;
  min-height: 40px;
  border-radius: 4px;
  border: 1px solid var(--line-light);
  background: var(--white);
  color: var(--ink);
  font-family: inherit;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  cursor: pointer;
}
.filter-pill[aria-pressed="true"] {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.catalog-list {
  display: grid;
  grid-template-columns: 1fr;
  gap: 12px;
}
.catalog-empty {
  margin: 0;
  padding: 28px 16px;
  text-align: center;
  color: var(--muted-on-light);
  background: var(--white);
  border: 1px solid var(--line-light);
  border-radius: var(--radius);
}
.catalog-card {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  padding: 18px 16px 20px;
  background: var(--white);
  border: 1px solid rgba(11, 28, 44, 0.06);
  border-radius: var(--radius-lg);
  box-shadow: 0 1px 2px rgba(11, 28, 44, 0.03);
  scroll-margin-top: calc(var(--header-h) + 16px);
}
.catalog-card.is-target {
  border-color: rgba(14, 124, 123, 0.45);
  box-shadow: 0 0 0 3px rgba(14, 124, 123, 0.18);
}
.catalog-visual {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 120px;
  background: transparent;
}
.catalog-visual picture,
.catalog-visual img {
  width: auto;
  height: 100%;
  max-width: 180px;
  max-height: 120px;
  object-fit: contain;
  margin-inline: auto;
  background: transparent !important;
  filter: drop-shadow(0 14px 22px rgba(11, 28, 44, 0.16));
}
.catalog-body .cat {
  display: block;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--teal);
}
.catalog-body .name {
  margin: 4px 0 0;
  font-size: 1.25rem;
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.15;
}
.catalog-body .blurb {
  margin: 8px 0 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--muted-on-light);
}
.catalog-body .ruo {
  margin: 8px 0 0;
  font-size: 11.5px;
  font-weight: 500;
  color: var(--faint-on-light);
}
.catalog-order {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 8px;
}
.catalog-order .btn { width: 100%; }

.qty-control {
  display: inline-flex;
  align-items: center;
  border: 1px solid var(--line-light);
  border-radius: 8px;
  background: var(--paper);
  overflow: hidden;
  width: 100%;
}
.qty-btn {
  width: 48px;
  min-height: 48px;
  border: 0;
  background: transparent;
  color: var(--ink);
  font-size: 20px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  -webkit-tap-highlight-color: transparent;
}
.qty-input {
  flex: 1;
  min-width: 0;
  min-height: 48px;
  border: 0;
  border-left: 1px solid var(--line-light);
  border-right: 1px solid var(--line-light);
  background: transparent;
  text-align: center;
  font-family: inherit;
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
  -moz-appearance: textfield;
  appearance: textfield;
}
.qty-input::-webkit-outer-spin-button,
.qty-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

/* Quote line items */
.form-shell-wide {
  width: min(100% - 32px, 640px);
}
.line-items {
  border: 1px solid var(--line-light);
  border-radius: 8px;
  background: var(--paper);
  overflow: hidden;
}
.line-empty {
  margin: 0;
  padding: 16px;
  font-size: 14px;
  color: var(--muted-on-light);
}
.line-empty a {
  color: var(--teal);
  font-weight: 600;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.line-item {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px;
  padding: 12px;
  border-bottom: 1px solid var(--line-light);
}
.line-item:last-child { border-bottom: 0; }
.line-name {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.line-item .qty-control { width: 100%; }
.line-remove {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--teal);
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  min-height: 40px;
  text-align: left;
  cursor: pointer;
  padding: 0;
}

@media (min-width: 600px) {
  .spec-grid {
    grid-template-columns: repeat(4, 1fr);
    gap: 20px;
  }
  .who-grid-4 {
    grid-template-columns: 1fr 1fr;
  }
  .catalog-card {
    grid-template-columns: 88px 1fr;
    gap: 16px 18px;
    align-items: start;
    padding: 20px 22px;
  }
  .catalog-visual {
    grid-row: span 2;
    height: 88px;
  }
  .catalog-visual img { max-height: 88px; max-width: 88px; }
  .catalog-order {
    grid-column: 2;
    flex-direction: row;
    align-items: center;
    margin-top: 0;
  }
  .catalog-order .qty-control { width: 180px; flex-shrink: 0; }
  .catalog-order .btn { width: auto; min-width: 148px; }
  .line-item {
    grid-template-columns: 1fr 180px auto;
    align-items: center;
    gap: 12px;
  }
  .line-item .qty-control { width: 180px; }
  .cta-actions {
    flex-direction: row;
    justify-content: center;
  }
  .cta-actions .btn { width: auto; }
}

@media (min-width: 734px) {
  .supply { padding: 80px 0 88px; }
  .lot-chain {
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
  .spec-strip { padding: 36px 0; }
  .form-shell-wide { width: min(100% - 56px, 640px); }
}

@media (min-width: 980px) {
  .lot-chain { grid-template-columns: repeat(4, 1fr); }
  .who-grid-4 { grid-template-columns: repeat(4, 1fr); }
  .catalog-card {
    grid-template-columns: 100px 1fr auto;
    align-items: center;
  }
  .catalog-visual { grid-row: auto; height: 96px; }
  .catalog-order {
    grid-column: auto;
    flex-direction: column;
    width: 200px;
  }
  .catalog-order .qty-control,
  .catalog-order .btn { width: 100%; }
}

@media (hover: hover) {
  .filter-pill:hover { border-color: var(--teal); }
  .catalog-card:hover {
    border-color: rgba(14, 124, 123, 0.25);
    box-shadow: 0 12px 28px rgba(11, 28, 44, 0.08);
  }
  .lot-step:hover { border-color: rgba(45, 212, 191, 0.4); }
  .qty-btn:hover { background: rgba(11, 28, 44, 0.04); }
  .line-remove:hover { color: var(--ink); }
}

@media (prefers-reduced-motion: reduce) {
  .catalog-card,
  .filter-pill,
  .lot-step { transition: none; }
}

/* ——— 390 polish: designed for phone, 8px rhythm, no page overflow ——— */

html {
  max-width: 100%;
  overflow-x: clip;
}
body {
  max-width: 100%;
  /* never overflow-x:hidden — it kills position:sticky on the header */
  overflow-x: clip;
  font-size: 16px;
  line-height: 1.45;
}

.header-inner {
  justify-content: flex-start;
  gap: 8px;
}
.brand {
  margin-right: auto;
  font-size: 16px;
  gap: 8px;
  flex-shrink: 0;
}
.cart-badge {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  min-height: 44px;
  min-width: 44px;
  padding: 0 10px;
  border-radius: 8px;
  color: var(--paper);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.01em;
  z-index: 60;
  flex-shrink: 0;
  -webkit-tap-highlight-color: transparent;
}
.cart-badge.has-items {
  background: rgba(45, 212, 191, 0.14);
}
.cart-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: 99px;
  background: var(--cyan);
  color: var(--ink);
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0;
  line-height: 1;
}
.cart-count[hidden] { display: none !important; }

.hero {
  min-height: 0;
  padding: 8px 0 40px;
}
.hero-stage {
  height: 176px;
}
.vial-hero { width: min(64%, 216px); }
.vial-sat { display: none; }
.hero-copy h1 {
  font-size: 1.75rem;
  letter-spacing: -0.045em;
}
.hero .lede {
  margin-top: 8px;
  font-size: 15px;
  line-height: 1.45;
}
.hero-actions {
  margin-top: 16px;
  gap: 8px;
}
.hero-actions .btn {
  width: 100%;
  max-width: none;
}
.eyebrow {
  margin-bottom: 8px;
  font-size: 10px;
  letter-spacing: 0.08em;
}
.hero-micro { margin-top: 12px; }

.problem { padding: 48px 0; }
.problem-lead { font-size: 1.5rem; }
.problem-hits { margin-top: 16px; gap: 8px; }
.problem-foot { margin-top: 16px; }

.supply,
.accounts,
.who,
.faq {
  padding: 48px 0;
}
.section-head { margin-bottom: 24px; }
.section-head h2,
.who-intro h2,
.standard h2 {
  font-size: 1.5rem;
}
.lot-chain { gap: 8px; }
.lot-step { padding: 16px; }
.lot-step h3 { font-size: 1.05rem; }
.account-grid { gap: 8px; }
.account-card { padding: 16px; }

.spec-strip { padding: 24px 0; }
.spec-grid { gap: 16px 8px; }
.spec-value {
  font-size: 1.125rem;
  overflow-wrap: anywhere;
}
.spec-label { font-size: 11px; }

.who-intro { margin-bottom: 16px; }
.who-grid { gap: 8px; }
.who-card { padding: 16px; }
.who-mark { margin-bottom: 8px; }

.faq-item { padding: 16px 0; }

.cta-band { padding: 48px 16px; }
.cta-actions { margin-top: 24px; gap: 8px; }
.cta-band .btn { margin-top: 0; }

.page-hero { padding: 24px 0 16px; }
.vial-page { width: min(40%, 128px); }
.ruo-banner { margin-bottom: 16px; padding: 12px; }
.filter-row {
  display: flex;
  flex-wrap: nowrap;
  gap: 8px;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  max-width: 100%;
  padding-bottom: 4px;
}
.filter-row::-webkit-scrollbar { display: none; }
.filter-pill {
  flex: 0 0 auto;
  white-space: nowrap;
  min-height: 44px;
  padding: 8px 14px;
}

.catalog-list { gap: 8px; }
.catalog-card {
  display: grid;
  grid-template-columns: 72px 1fr;
  gap: 8px 12px;
  align-items: start;
  padding: 16px;
}
.catalog-visual {
  grid-row: auto;
  height: 72px;
}
.catalog-visual img {
  max-height: 72px;
  max-width: 72px;
}
.catalog-body .name {
  font-size: 1.05rem;
  overflow-wrap: break-word;
}
.catalog-body .blurb { font-size: 13px; }
.catalog-order {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: row;
  align-items: stretch;
  gap: 8px;
  margin-top: 4px;
}
.catalog-order .qty-control {
  width: 140px;
  flex: 0 0 140px;
}
.catalog-order .btn {
  flex: 1 1 auto;
  width: auto;
  min-width: 0;
  min-height: 48px;
  padding: 8px 12px;
}

.qty-control { width: 100%; }
.qty-btn {
  width: 44px;
  min-width: 44px;
  min-height: 48px;
}
.qty-input { min-height: 48px; font-size: 16px; }

.form-shell {
  width: min(100% - 32px, 560px);
  margin: 8px auto 64px;
  padding: 24px 16px;
}
.form-shell-wide { width: min(100% - 32px, 640px); }
.quote-form .fields { gap: 16px; }
.line-item {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas:
    "name remove"
    "qty qty";
  gap: 8px 12px;
  align-items: center;
  padding: 12px;
}
.line-name {
  grid-area: name;
  overflow-wrap: break-word;
}
.line-remove {
  grid-area: remove;
  min-height: 44px;
  min-width: 44px;
  padding: 8px;
  text-align: right;
  justify-self: end;
}
.line-item .qty-control {
  grid-area: qty;
  width: 100%;
}

.footer-inner { gap: 8px; }

@media (min-width: 600px) {
  .hero-stage { height: 240px; }
  .vial-hero { width: min(72%, 280px); }
  .catalog-card {
    grid-template-columns: 88px 1fr;
    padding: 16px 20px;
  }
  .catalog-visual { height: 88px; }
  .catalog-visual img { max-height: 88px; max-width: 88px; }
  .catalog-order .qty-control { width: 160px; flex-basis: 160px; }
  .line-item {
    grid-template-columns: 1fr 168px auto;
    grid-template-areas: "name qty remove";
  }
  .line-item .qty-control {
    width: 168px;
  }
}

@media (min-width: 734px) {
  .brand { margin-right: 0; }
  .cart-badge { order: 4; margin-left: 8px; }
  .vial-sat { display: block; }
  .hero {
    padding: 48px 0 72px;
    min-height: min(88vh, 780px);
  }
  .hero-stage { height: 480px; }
  .hero-copy h1 { font-size: clamp(2.5rem, 4.6vw, 3.5rem); }
  .hero .lede { font-size: 18px; }
  .hero-actions .btn { width: auto; }
  .supply,
  .accounts,
  .who,
  .faq { padding: 80px 0; }
  .section-head h2,
  .who-intro h2 { font-size: clamp(1.75rem, 6vw, 2.5rem); }
  .filter-row { flex-wrap: wrap; overflow: visible; }
  .form-shell { padding: 36px 32px; margin-top: -24px; }
}

@media (min-width: 980px) {
  .catalog-card {
    grid-template-columns: 96px 1fr 200px;
    align-items: center;
    gap: 16px 20px;
    padding: 20px 24px;
  }
  .catalog-visual { height: 96px; }
  .catalog-visual img { max-height: 96px; max-width: 96px; }
  .catalog-order {
    grid-column: auto;
    flex-direction: column;
    width: 200px;
    margin-top: 0;
  }
  .catalog-order .qty-control,
  .catalog-order .btn { width: 100%; flex: none; }
}

@media (hover: hover) {
  .cart-badge:hover { color: var(--cyan); }
}

/* ——— Final 390 tweaks from screenshot pass ——— */
@media (min-width: 734px) {
  .br-mobile { display: none; }
}
@media (max-width: 733px) {
  .page-hero { padding: 12px 0 8px; }
  .page-hero-inner { gap: 8px; }
  .vial-page { width: min(30%, 88px); }
  .page-hero h1 { font-size: 1.75rem; }
  .page-hero p { font-size: 14px; margin-top: 8px; }
  .page-hero .eyebrow { margin-bottom: 8px; }
  .catalog-toolbar {
    position: relative;
    margin-bottom: 16px;
  }
  .catalog-toolbar::after {
    content: "";
    position: absolute;
    right: 0;
    top: 0;
    bottom: 4px;
    width: 28px;
    background: linear-gradient(to right, rgba(243, 237, 228, 0), var(--sand));
    pointer-events: none;
  }
  .form-shell {
    margin-top: 0;
  }
}

/* Catalog list: grouped categories */
.catalog-list {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.catalog-group {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.catalog-group-title {
  margin: 0;
  padding: 4px 2px 2px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--teal);
}
.catalog-group-cards {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.filter-pill {
  border-radius: 999px;
  background: var(--white);
  border: 1px solid rgba(11, 28, 44, 0.1);
  box-shadow: 0 1px 2px rgba(11, 28, 44, 0.04);
}
.filter-pill[aria-pressed="true"] {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
  box-shadow: 0 6px 16px rgba(11, 28, 44, 0.18);
}

/* Compact premium catalog rows on phone */
@media (max-width: 733px) {
  .catalog-card {
    grid-template-columns: 56px 1fr;
    gap: 6px 12px;
    padding: 14px;
    border-radius: 14px;
    box-shadow: 0 1px 2px rgba(11, 28, 44, 0.04);
  }
  .catalog-visual {
    height: 56px;
    align-self: center;
  }
  .catalog-visual img {
    max-height: 56px;
    max-width: 56px;
  }
  .catalog-body .cat {
    font-size: 10px;
    letter-spacing: 0.1em;
  }
  .catalog-body .name {
    margin-top: 2px;
    font-size: 1.05rem;
    letter-spacing: -0.03em;
  }
  /* Blurb clutters 390 — category + name + qty/Add is the path */
  .catalog-body .blurb {
    display: none;
  }
  .catalog-order {
    grid-column: 1 / -1;
    gap: 8px;
    margin-top: 2px;
  }
  .catalog-order .qty-control {
    width: 132px;
    flex: 0 0 132px;
    border-radius: 10px;
    background: var(--paper);
  }
  .catalog-order .btn {
    border-radius: 10px;
    font-size: 15px;
    letter-spacing: -0.01em;
    min-height: 48px;
  }
  .qty-btn {
    width: 44px;
    min-width: 44px;
  }
  .hero-copy h1 {
    font-size: clamp(1.55rem, 6.8vw, 1.85rem);
    line-height: 1.08;
  }
}

@media (min-width: 734px) {
  .catalog-body .blurb { display: block; }
  .catalog-group-cards { gap: 10px; }
  .catalog-list { gap: 32px; }
}

@media (hover: hover) {
  .filter-pill:hover {
    border-color: var(--teal);
  }
  .catalog-card:hover {
    border-color: rgba(14, 124, 123, 0.28);
  }
}


/* ——— Shared quote cart (catalog panel + quote page) ——— */

.btn:disabled,
.btn[aria-disabled="true"] {
  opacity: 0.45;
  cursor: not-allowed;
  box-shadow: none;
  pointer-events: none;
  transform: none;
}

.catalog-layout {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.quote-cart-totals {
  margin: 0;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--cyan);
}
.quote-empty {
  margin: 0;
  font-size: 14px;
  line-height: 1.45;
  color: var(--muted-on-dark);
}

.quote-empty {
  color: var(--muted-on-light);
  padding: 16px;
  background: var(--paper);
  border: 1px dashed var(--line-light);
  border-radius: 10px;
}

.quote-empty a,
.quote-add-more {
  color: var(--teal);
  font-weight: 600;
  text-decoration: none;
  text-underline-offset: 3px;
}

.quote-empty a { text-decoration: underline; }

/* Line rows: name | qty | ×  — 44px targets, no overflow */
.line-item {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 148px 44px;
  grid-template-areas: "name qty remove";
  align-items: center;
  gap: 8px;
  padding: 10px 12px;
}

.line-name {
  grid-area: name;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 14px;
  font-weight: 600;
  letter-spacing: -0.02em;
}

.line-item .qty-control {
  grid-area: qty;
  width: 148px;
}

.line-remove {
  grid-area: remove;
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--muted-on-light);
  font-family: inherit;
  font-size: 22px;
  font-weight: 500;
  line-height: 1;
  width: 44px;
  min-width: 44px;
  height: 44px;
  min-height: 44px;
  padding: 0;
  border-radius: 8px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  -webkit-tap-highlight-color: transparent;
}

.line-remove:hover,
.line-remove:focus-visible {
  color: var(--danger);
  background: rgba(194, 59, 42, 0.08);
}

.qty-btn {
  width: 44px;
  min-width: 44px;
  min-height: 44px;
}

.qty-input { min-height: 44px; }

/* Catalog: live “in quote” state */
.catalog-card.in-cart {
  border-color: rgba(14, 124, 123, 0.35);
  box-shadow: 0 8px 20px rgba(14, 124, 123, 0.08);
}

.catalog-card.in-cart .btn.is-added {
  background: var(--teal);
}

/* Quote page cart block */
.quote-cart {
  margin-bottom: 28px;
  padding-bottom: 24px;
  border-bottom: 1px solid var(--line-light);
}

.quote-cart-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 12px;
}

.quote-cart-head h2,
.quote-account-title {
  margin: 0 0 12px;
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.02em;
}

.quote-cart-head h2 { margin: 0; }

.quote-add-more {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: 8px 4px;
  font-size: 14px;
  white-space: nowrap;
}

.quote-add-more:hover { text-decoration: underline; }

.quote-cart .line-items {
  border-radius: 10px;
}

.quote-cart-totals {
  margin: 12px 0 0;
  color: var(--teal);
}

.quote-account-title {
  margin: 0 0 16px;
}

#submit-warn:empty { display: none; }
#submit-warn {
  color: var(--danger);
  font-weight: 600;
}

@media (min-width: 600px) {
  .line-item {
    grid-template-columns: minmax(0, 1fr) 168px 44px;
    grid-template-areas: "name qty remove";
  }
  .line-item .qty-control { width: 168px; }
}

@media (min-width: 980px) {
  .catalog-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 24px;
    align-items: start;
  }
}

@media (min-width: 1200px) {
  .catalog-layout {
    grid-template-columns: minmax(0, 1fr) 320px;
  }
}

@media (hover: hover) {
  .quote-add-more:hover { color: var(--teal-deep); }
}

@media (max-width: 733px) {
  .catalog-order .qty-control {
    width: 148px;
    flex: 0 0 148px;
  }
  .line-item {
    max-width: 100%;
  }
}

.quote-cart .line-name {
  white-space: normal;
  overflow: visible;
  text-overflow: unset;
}

/* Short home */
.page-home .hero {
  min-height: 0;
  padding: 12px 0 32px;
}
.page-home .hero-stage { height: 160px; }
.page-home .vial-sat { display: none; }
.page-home .hero-copy h1 {
  font-size: clamp(1.55rem, 6.6vw, 1.9rem);
  line-height: 1.08;
}
.page-home .hero .lede {
  font-size: 15px;
  max-width: 30em;
}
.page-home .hero-actions { margin-top: 16px; }
.page-home .problem {
  padding: 40px 0 32px;
}
.page-home .problem-lead {
  font-size: 1.35rem;
  max-width: 16em;
}
.page-home .problem-hits { margin-top: 16px; }
.page-home .problem-foot { display: none; }

.proof {
  padding: 32px 0 40px;
  background:
    radial-gradient(ellipse 70% 80% at 90% 10%, rgba(45, 212, 191, 0.18) 0%, transparent 55%),
    linear-gradient(160deg, #0a5f5e 0%, #0E7C7B 45%, #0B1C2C 140%);
  color: var(--paper);
}
.proof-pills {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
}
.proof-pills li {
  padding: 12px 14px;
  border-radius: 8px;
  background: rgba(250, 247, 242, 0.1);
  border: 1px solid rgba(250, 247, 242, 0.16);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.02em;
  text-align: center;
  color: var(--paper);
}
.proof-cta {
  margin-top: 20px;
  display: flex;
  justify-content: center;
}
.proof-cta .btn {
  width: 100%;
  max-width: 340px;
}

.who-strip {
  padding: 20px 0;
  background: var(--paper);
  border-top: 1px solid var(--line-light);
}
.who-strip-line {
  margin: 0;
  text-align: center;
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted-on-light);
}

@media (min-width: 734px) {
  .page-home .hero {
    padding: 48px 0 64px;
    min-height: min(72vh, 640px);
  }
  .page-home .hero-stage { height: 420px; }
  .page-home .hero-copy h1 {
    font-size: clamp(2.4rem, 4.2vw, 3.2rem);
  }
  .page-home .hero .lede { font-size: 18px; }
  .page-home .hero-actions .btn { width: auto; }
  .proof { padding: 48px 0; }
  .proof-pills {
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
  }
  .proof-cta .btn { width: auto; }
}

/* Slim page heroes */
.page-hero-slim {
  padding: 20px 0 16px;
}
.page-hero-slim .page-hero-inner {
  grid-template-columns: 1fr;
  text-align: left;
}
.page-hero-slim h1 {
  font-size: clamp(1.6rem, 6vw, 2.2rem);
}
.page-hero-slim p {
  font-size: 14px;
  margin-top: 8px;
  max-width: 36em;
}
@media (max-width: 733px) {
  .page-hero-slim { padding: 14px 0 10px; }
}

/* Catalog product-first */
.ruo-line {
  margin: 0 0 12px;
  font-size: 12px;
  color: var(--faint-on-light);
  letter-spacing: -0.01em;
}
.ruo-banner { display: none; }

.qty-wrap {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 0 0 auto;
}
.qty-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--faint-on-light);
  padding-left: 2px;
}
.catalog-order .qty-wrap {
  width: 148px;
  flex: 0 0 148px;
}
.catalog-order .qty-wrap .qty-control {
  width: 100%;
}

@media (max-width: 733px) {
  .catalog-toolbar {
    position: relative;
    display: flex;
    align-items: center;
    gap: 0;
  }
  .filter-swipe {
    display: none;
  }
  .filter-row {
    flex-wrap: nowrap;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-right: 28px;
  }
  .filter-pill {
    flex: 0 0 auto;
    white-space: nowrap;
    overflow: visible;
    text-overflow: clip;
  }
  .catalog-body .cat { display: none; }
  .catalog-body .blurb { display: none; }
  .catalog-order {
    align-items: flex-end;
  }
  .catalog-order .btn {
    font-size: 14px;
    padding-inline: 10px;
  }
}

@media (min-width: 734px) {
  .filter-swipe { display: none; }
  .catalog-order .qty-wrap {
    width: 160px;
    flex-basis: 160px;
  }
}

/* Quote empty-first */
.quote-empty-state {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 16px;
  padding: 28px 20px;
  text-align: center;
  background: var(--paper);
  border: 1px dashed var(--line-light);
  border-radius: 12px;
}
.quote-empty-state[hidden] { display: none !important; }
.quote-empty-lead {
  margin: 0;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--ink);
}
.quote-empty-state .btn {
  width: 100%;
  max-width: 280px;
  margin-inline: auto;
}
.quote-form.is-empty .quote-cart-head .quote-add-more { display: none; }
.quote-account[hidden] { display: none !important; }

/* About / Process plain pages */
.plain-section {
  padding: 24px 0 64px;
  background: var(--sand);
}
.plain-stack {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.plain-card {
  padding: 20px 18px;
  background: var(--white);
  border: 1px solid var(--line-light);
  border-radius: var(--radius);
}
.plain-card h2 {
  margin: 0 0 8px;
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.plain-card p {
  margin: 0;
  font-size: 15px;
  line-height: 1.45;
  color: var(--muted-on-light);
}
.plain-cta {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-top: 8px;
}
.plain-cta .btn { width: 100%; }

.steps {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.step {
  padding: 18px 16px;
  background: var(--white);
  border: 1px solid var(--line-light);
  border-radius: var(--radius);
}
.step-num {
  display: block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  color: var(--teal);
  margin-bottom: 8px;
}
.step h2 {
  margin: 0 0 6px;
  font-size: 1.1rem;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.step p {
  margin: 0;
  font-size: 15px;
  color: var(--muted-on-light);
  line-height: 1.45;
}

@media (min-width: 734px) {
  .plain-cta {
    flex-direction: row;
    justify-content: flex-start;
  }
  .plain-cta .btn { width: auto; }
  .steps {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
}

/* qty-wrap layout glue */
.catalog-order .qty-wrap .qty-control { width: 100%; flex: none; }
.cart-badge { order: 2; }
.brand { order: 1; margin-right: auto; }

/* MOQ once at catalog top */
.catalog-moq {
  margin: 0 0 12px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--teal);
}

/* Dose selector on cards */
.dose-row {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  margin-top: 8px;
}
.dose-pill {
  appearance: none;
  -webkit-appearance: none;
  margin: 0;
  padding: 6px 12px;
  min-height: 40px;
  border-radius: 999px;
  border: 1px solid rgba(11, 28, 44, 0.12);
  background: var(--paper);
  color: var(--ink);
  font-family: inherit;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: -0.01em;
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.dose-pill[aria-pressed="true"] {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.catalog-card.in-cart .dose-pill[aria-pressed="true"] {
  background: var(--teal);
  border-color: var(--teal);
}

.line-dose {
  margin-left: 6px;
  font-size: 12px;
  font-weight: 500;
  letter-spacing: 0;
  color: var(--muted-on-light);
}

/* Filter chips: fade = more to scroll; chips never split mid-word */
.filter-pill {
  white-space: nowrap;
  overflow: visible;
  text-overflow: clip;
  word-break: keep-all;
  hyphens: none;
}

@media (max-width: 733px) {
  .filter-row {
    flex-wrap: nowrap;
    overflow-x: auto;
    overflow-y: hidden;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
    padding-right: 44px;
    scroll-padding-inline-end: 44px;
    scroll-snap-type: x proximity;
  }
  .filter-pill {
    flex: 0 0 auto;
    white-space: nowrap;
    scroll-snap-align: start;
    overflow: visible;
  }
  .filter-swipe { display: none !important; }
  .catalog-body .dose-row { margin-top: 6px; }
  .dose-pill {
    min-height: 36px;
    padding: 4px 10px;
    font-size: 12px;
  }
  .catalog-order .btn {
    font-size: 14px;
  }
}

@media (hover: hover) {
  .dose-pill:hover { border-color: var(--teal); }
}

/* ========== MOBILE AUDIT FIX PASS ========== */

/* Sticky header must outlive any later overflow rules */
html {
  overflow-x: clip;
}
body {
  overflow-x: clip;
}
.site-header {
  /* superseded by fixed header block at file end */
}

/* Dose pills: ≥44px tap targets */
.dose-pill {
  min-height: 44px;
  padding: 8px 14px;
}

/* Filter chips: whole words, scroll fade, no mid-chip clip */
@media (max-width: 733px) {
  .filter-row {
    gap: 8px;
    padding-right: 48px;
    scroll-padding-inline: 4px 48px;
  }
  .filter-pill {
    flex: 0 0 auto;
    white-space: nowrap;
    overflow: visible;
    text-overflow: clip;
    word-break: keep-all;
    min-height: 44px;
  }

  /* Catalog cards: prevent horizontal blowout; stack order if tight */
  .catalog-card {
    width: 100%;
    max-width: 100%;
    overflow: hidden;
  }
  .catalog-body,
  .catalog-order {
    min-width: 0;
    max-width: 100%;
  }
  .catalog-body .name {
    overflow-wrap: anywhere;
  }
  .catalog-order {
    flex-wrap: wrap;
  }
  .catalog-order .qty-wrap {
    width: min(148px, 100%);
    flex: 1 1 140px;
    max-width: 100%;
  }
  .catalog-order .btn {
    flex: 1 1 140px;
    min-width: min(100%, 140px);
    min-height: 48px;
  }
  .dose-row {
    gap: 8px;
  }

  /* Quote form: usable with keyboard, no cramped shell */
  .form-shell,
  .form-shell-wide {
    width: min(100% - 24px, 640px);
    margin: 8px auto 72px;
    padding: 20px 16px 28px;
  }
  .field input,
  .field select,
  .field textarea {
    font-size: 16px; /* iOS no-zoom */
    min-height: 48px;
    padding: 14px 16px;
  }
  .field textarea { min-height: 120px; }
  .form-actions .btn {
    min-height: 52px;
    width: 100%;
  }
  .check {
    min-height: 48px;
    gap: 14px;
  }
  .check input {
    width: 24px;
    height: 24px;
    min-height: 24px;
  }
  .line-item {
    grid-template-columns: minmax(0, 1fr);
    grid-template-areas:
      "name"
      "qty"
      "remove";
    gap: 8px;
  }
  .quote-cart .line-item {
    grid-template-columns: minmax(0, 1fr) 44px;
    grid-template-areas:
      "name remove"
      "qty qty";
  }
  .quote-cart .line-item .qty-control {
    width: 100%;
    max-width: none;
  }
  .quote-cart .line-name {
    white-space: normal;
  }

  /* Hero/copy breathing room */
  .page-home .hero {
    padding: 16px 0 36px;
  }
  .page-home .hero-stage {
    height: clamp(148px, 40vw, 180px);
  }
  .page-home .hero-copy h1 {
    font-size: clamp(1.6rem, 6.8vw, 1.95rem);
    line-height: 1.1;
  }
  .page-home .hero .lede {
    font-size: 15px;
    line-height: 1.5;
    margin-top: 10px;
  }

  /* Images never blow layout */
  .catalog-visual,
  .hero-stage,
  .vial-float {
    max-width: 100%;
    overflow: hidden;
  }
  .catalog-visual img,
  .vial-float img {
    max-width: 100%;
    height: auto;
    object-fit: contain;
  }
}

/* ========== FIXED HEADER (do not use sticky; overflow-x clip breaks it) ========== */
.site-header {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  height: var(--header-h) !important;
  z-index: 200 !important;
  background: rgba(11, 28, 44, 0.97) !important;
  backdrop-filter: saturate(160%) blur(18px);
  -webkit-backdrop-filter: saturate(160%) blur(18px);
  border-bottom: 1px solid var(--line-dark);
  transform: none !important;
  filter: none !important;
}

/* Content clears the fixed bar */
body {
  padding-top: var(--header-h) !important;
}

/* ========== FIXED HEADER + NAV STACK (final) ========== */
/* Do NOT change header back to sticky — overflow-x:clip breaks sticky. */
.site-header {
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  width: 100% !important;
  height: var(--header-h) !important;
  z-index: 220 !important;
  background: rgba(11, 28, 44, 0.97) !important;
  transform: none !important;
  filter: none !important;
  will-change: auto !important;
}

body {
  padding-top: var(--header-h) !important;
}

.cart-badge {
  z-index: 221 !important;
  position: relative;
}

/* ========== Dose-as-SKU catalog + padding + motion (2026 redesign) ========== */

:root {
  --space-1: 8px;
  --space-2: 16px;
  --space-3: 24px;
  --space-4: 32px;
  --space-5: 48px;
}

/* Page-wide padding rhythm */
.wrap,
.wrap-wide {
  width: min(100% - 32px, var(--max));
}
.wrap-wide {
  width: min(100% - 32px, var(--wide));
}

.page-hero-slim {
  padding: var(--space-3) 0 var(--space-2);
}
.catalog-main {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.ruo-line {
  margin: 0;
  font-size: 12px;
  color: var(--faint-on-light);
}
.catalog-moq {
  margin: 0;
  padding: 10px 14px;
  border-radius: 10px;
  background: rgba(14, 124, 123, 0.08);
  border: 1px solid rgba(14, 124, 123, 0.18);
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--teal);
}

.catalog-list {
  gap: var(--space-3);
}
.catalog-group {
  gap: var(--space-2);
}
.catalog-group-title {
  padding: 0 2px;
  margin: 0;
}
.catalog-group-cards {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

/* Compound card: vial + name, then per-dose SKU rows */
.catalog-card {
  display: grid;
  grid-template-columns: 72px 1fr;
  grid-template-areas:
    "visual body"
    "skus skus";
  gap: var(--space-2);
  padding: var(--space-2);
  border-radius: var(--radius-lg);
  background: var(--white);
  border: 1px solid rgba(11, 28, 44, 0.07);
  box-shadow: 0 1px 2px rgba(11, 28, 44, 0.04);
  width: 100%;
  max-width: 100%;
  overflow: visible;
  transition:
    border-color 0.3s var(--ease),
    box-shadow 0.3s var(--ease),
    transform 0.25s var(--ease);
}
.catalog-card.in-cart {
  border-color: rgba(14, 124, 123, 0.35);
  box-shadow: 0 10px 28px rgba(14, 124, 123, 0.1);
}
.catalog-visual {
  grid-area: visual;
  height: 72px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
  background: transparent;
}
.catalog-visual picture,
.catalog-visual img {
  width: auto;
  height: 100%;
  max-width: 72px;
  max-height: 72px;
  object-fit: contain;
  filter: drop-shadow(0 12px 18px rgba(11, 28, 44, 0.16));
  animation: float-sku 7s var(--ease-soft) infinite;
  will-change: transform;
}
.catalog-card:nth-child(2n) .catalog-visual img {
  animation-delay: -2.2s;
  animation-duration: 8s;
}
.catalog-card:nth-child(3n) .catalog-visual img {
  animation-delay: -4s;
  animation-duration: 6.5s;
}
.catalog-body {
  grid-area: body;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 4px;
}
.catalog-body .cat {
  display: none;
}
.catalog-body .name {
  margin: 0;
  font-size: 1.15rem;
  font-weight: 650;
  letter-spacing: -0.03em;
  line-height: 1.15;
  overflow-wrap: anywhere;
}
.catalog-body .blurb {
  display: none;
  margin: 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--muted-on-light);
}

.catalog-skus {
  grid-area: skus;
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
}
.catalog-skus > [role="listitem"] {
  min-width: 0;
}

.sku-row {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 12px;
  border-radius: 12px;
  background: var(--paper);
  border: 1px solid rgba(11, 28, 44, 0.08);
  transition:
    border-color 0.25s var(--ease),
    background 0.25s var(--ease),
    box-shadow 0.25s var(--ease);
}
.sku-row.in-cart {
  border-color: rgba(14, 124, 123, 0.35);
  background: rgba(14, 124, 123, 0.06);
  box-shadow: inset 0 0 0 1px rgba(14, 124, 123, 0.08);
}
.sku-meta {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 8px;
}
.sku-dose {
  display: inline-flex;
  align-items: center;
  min-height: 28px;
  padding: 4px 12px;
  border-radius: 999px;
  background: var(--ink);
  color: var(--paper);
  font-size: 13px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.sku-row.in-cart .sku-dose {
  background: var(--teal);
}
.sku-label {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--faint-on-light);
}
.sku-order {
  display: flex;
  flex-direction: row;
  align-items: flex-end;
  gap: 10px;
  min-width: 0;
}
.sku-order .qty-wrap {
  width: 148px;
  flex: 0 0 148px;
  max-width: 48%;
}
.sku-order .qty-wrap .qty-control {
  width: 100%;
}
.sku-order .sku-add,
.sku-order .btn {
  flex: 1 1 auto;
  min-width: 0;
  min-height: 48px;
  width: auto;
  padding: 10px 12px;
  font-size: 14px;
  border-radius: 10px;
}
.sku-add:active,
.btn:active {
  transform: scale(0.97);
}

/* Hide legacy single-order block if present */
.catalog-order { display: none !important; }
.dose-row { display: none !important; }

/* Filters: usable chips, 44px */
.filter-pill {
  min-height: 44px;
  padding: 8px 16px;
  border-radius: 999px;
}
.filter-row {
  gap: 8px;
  padding-right: 40px;
}

/* Form shell padding */
.form-shell,
.form-shell-wide {
  padding: 24px 16px;
}

/* Line dose chip */
.line-dose {
  display: inline-flex;
  margin-left: 8px;
  padding: 2px 8px;
  border-radius: 999px;
  background: rgba(14, 124, 123, 0.1);
  color: var(--teal);
  font-size: 11px;
  font-weight: 700;
  vertical-align: middle;
}

/* Motion keyframes */
@keyframes float-sku {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-6px); }
}

@keyframes fade-rise {
  from { opacity: 0; transform: translateY(14px); }
  to { opacity: 1; transform: translateY(0); }
}

.reveal.is-pending {
  opacity: 0;
  transform: translateY(14px);
  transition: none;
}
.reveal.is-in {
  opacity: 1;
  transform: translateY(0);
  transition:
    opacity 0.65s var(--ease),
    transform 0.65s var(--ease);
}

/* Soft press / hover micro-interactions */
@media (hover: hover) {
  .sku-row:hover {
    border-color: rgba(14, 124, 123, 0.28);
  }
  .catalog-card:hover {
    border-color: rgba(14, 124, 123, 0.28);
    box-shadow: 0 14px 32px rgba(11, 28, 44, 0.08);
  }
  .sku-add:hover {
    opacity: 0.94;
  }
}

/* Tablet+ : show blurb, roomier cards */
@media (min-width: 734px) {
  .catalog-card {
    grid-template-columns: 96px 1fr;
    gap: var(--space-2) var(--space-3);
    padding: var(--space-3);
  }
  .catalog-visual {
    height: 96px;
  }
  .catalog-visual img {
    max-width: 96px;
    max-height: 96px;
  }
  .catalog-body .blurb {
    display: block;
    margin-top: 4px;
  }
  .catalog-body .name {
    font-size: 1.3rem;
  }
  .sku-row {
    flex-direction: row;
    align-items: center;
    gap: var(--space-2);
    padding: 12px 14px;
  }
  .sku-meta {
    flex: 0 0 88px;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
  }
  .sku-order {
    flex: 1 1 auto;
    justify-content: flex-end;
  }
  .sku-order .qty-wrap {
    width: 160px;
    flex: 0 0 160px;
    max-width: none;
  }
  .sku-order .sku-add {
    flex: 0 0 148px;
    width: 148px;
  }
  .catalog-body .cat {
    display: block;
  }
}

@media (min-width: 980px) {
  .catalog-skus {
    gap: 12px;
  }
}

/* Mobile 390: no overflow, clear SKU taps */
@media (max-width: 733px) {
  .catalog-card {
    grid-template-columns: 64px 1fr;
    padding: 16px;
    gap: 12px;
  }
  .catalog-visual {
    height: 64px;
  }
  .catalog-visual img {
    max-width: 64px;
    max-height: 64px;
  }
  .catalog-body .name {
    font-size: 1.12rem;
  }
  .sku-order {
    flex-wrap: wrap;
  }
  .sku-order .qty-wrap {
    flex: 1 1 140px;
    width: auto;
    max-width: 100%;
  }
  .sku-order .sku-add {
    flex: 1 1 140px;
    min-width: min(100%, 140px);
  }
  .qty-btn {
    width: 44px;
    min-width: 44px;
    min-height: 48px;
  }
  .qty-input {
    min-height: 48px;
  }
}

/* Hero floating vials — ensure GPU-friendly */
.vial-hero,
.vial-sat-a,
.vial-sat-b,
.vial-standard,
.vial-page {
  will-change: transform;
  backface-visibility: hidden;
}

.hero-stage [data-parallax],
.page-hero-vial [data-parallax] {
  will-change: transform;
}

/* Reduced motion: kill floats + pending reveals */
@media (prefers-reduced-motion: reduce) {
  .catalog-visual img,
  .vial-hero,
  .vial-sat-a,
  .vial-sat-b,
  .vial-standard,
  .vial-page,
  .vial-shadow,
  .orb {
    animation: none !important;
  }
  .reveal,
  .reveal.is-pending,
  .reveal.is-in {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  [data-parallax] {
    transform: none !important;
  }
  .sku-row,
  .catalog-card,
  .btn {
    transition: none !important;
  }
}


/* ——— PE positioning pass: notice bar, 6-step process, longer MOQ ——— */

.notice-bar {
  padding: 12px 0;
  background: var(--ink);
  color: var(--paper);
  border-bottom: 1px solid var(--line-dark);
  text-align: center;
}
.notice-bar p {
  margin: 0;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--cyan);
  line-height: 1.45;
}
.notice-bar span {
  display: inline;
  color: var(--muted-on-dark);
  font-weight: 500;
  letter-spacing: -0.01em;
  text-transform: none;
}

.page-process .steps {
  display: grid;
  grid-template-columns: 1fr;
  gap: 10px;
}
@media (min-width: 734px) {
  .page-process .steps {
    grid-template-columns: 1fr 1fr;
    gap: 12px;
  }
}
@media (min-width: 980px) {
  .page-process .steps {
    grid-template-columns: repeat(3, 1fr);
  }
}

.catalog-moq {
  text-transform: none;
  letter-spacing: -0.01em;
  line-height: 1.4;
  font-size: 13px;
}

.footer-disclaimer {
  max-width: 72em;
}

.page-home .who {
  padding-top: 48px;
  padding-bottom: 48px;
}

@media (max-width: 733px) {
  .notice-bar {
    padding: 10px 0;
  }
  .notice-bar p {
    font-size: 11px;
  }
  .notice-bar span {
    display: block;
    margin-top: 4px;
  }
  .hero-actions .btn-ghost {
    width: 100%;
    max-width: none;
  }
}

/* ========== Premium industrial visual system (2026-09 Superdesign fallback) ========== */

:root {
  --sans: "Manrope", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, sans-serif;
  --display: "Syne", "Manrope", ui-sans-serif, system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
  --header-h: 56px;
  --eyebrow-h: 0px;   /* eyebrow strip removed; keeps offset math intact */
}

body {
  font-family: var(--sans);
  font-feature-settings: "ss01" 0, "kern" 1;
  letter-spacing: -0.011em;
}

/* Cart lives in hamburger: header shows count only when SKUs exist */
.cart-badge {
  min-width: 44px;
  min-height: 44px;
  padding: 0 8px;
  justify-content: center;
  gap: 0;
  background: transparent !important;
  border: 0 !important;
}
.cart-badge-label { display: none !important; }
.cart-badge:not(.has-items) {
  width: 0;
  min-width: 0;
  padding: 0;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}
.cart-badge.has-items .cart-count,
.cart-count {
  position: static;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--cyan);
  color: var(--ink);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0;
}
.cart-count[hidden] { display: none !important; }

.brand {
  font-weight: 600;
  letter-spacing: -0.04em;
}

/* Hero: industrial, not marketing-slop */
.page-home .hero {
  padding: 16px 0 32px;
  background:
    radial-gradient(ellipse 70% 50% at 88% 8%, rgba(14, 124, 123, 0.38) 0%, transparent 52%),
    radial-gradient(ellipse 50% 40% at 8% 92%, rgba(45, 212, 191, 0.1) 0%, transparent 48%),
    linear-gradient(180deg, #071018 0%, #0B1C2C 58%, #0c2a32 100%);
}
.page-home .hero-copy {
  text-align: left;
}
.page-home .hero-copy h1 {
  font-size: clamp(1.85rem, 7.2vw, 3.15rem);
  font-weight: 600;
  letter-spacing: -0.045em;
  line-height: 1.06;
  max-width: 14ch;
}
.page-home .hero .lede {
  margin-inline: 0;
  max-width: 38em;
  font-size: 16px;
  line-height: 1.5;
}
.page-home .hero-actions {
  align-items: stretch;
}
.page-home .eyebrow {
  border-radius: 2px;
  letter-spacing: 0.14em;
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 500;
}

.page-hero .eyebrow,
.page-hero-copy .eyebrow {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.14em;
  border-radius: 2px;
}
.page-hero-copy {
  text-align: left;
}
.page-hero-inner { text-align: left; }
.page-hero h1 {
  font-weight: 600;
  letter-spacing: -0.04em;
}

/* Spec strip as facility table */
.spec-strip {
  padding: 0;
  background: #08151f;
}
.spec-grid.spec-table,
.spec-table {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  width: min(100%, var(--wide));
}
.spec-table .spec-item {
  padding: 16px 16px 18px;
  gap: 8px;
  border-right: 1px solid var(--line-dark);
  border-bottom: 1px solid var(--line-dark);
}
.spec-table .spec-item:nth-child(2n) { border-right: 0; }
.spec-value {
  font-family: var(--mono);
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.02em;
  color: var(--cyan);
}
.spec-label {
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.12em;
}

/* Facility tiles */
.who-card {
  padding: 16px;
  border-radius: 4px;
  background: var(--white);
  border: 1px solid var(--line-light);
  box-shadow: none;
}
.who-mark {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.12em;
  color: var(--teal);
}
.who-card h3 {
  font-weight: 600;
  letter-spacing: -0.03em;
}
.who-intro h2,
.section-head h2,
.spine-intro h2 {
  font-weight: 600;
  letter-spacing: -0.04em;
}

/* Process spine */
.spine-band {
  padding: 48px 0;
  background: var(--paper);
  border-top: 1px solid var(--line-light);
}
.spine-intro { margin-bottom: 24px; }
.spine-intro .kicker { color: var(--teal); }
.spine-intro h2 { margin: 0; font-size: clamp(1.6rem, 5.5vw, 2.2rem); }
.spine-intro p {
  margin: 12px 0 0;
  max-width: 36em;
  color: var(--muted-on-light);
}
.process-spine {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  border: 1px solid var(--line-light);
  background: var(--white);
}
.spine-step {
  display: flex;
  flex-direction: column;
  gap: 8px;
  padding: 16px;
  border-right: 1px solid var(--line-light);
  border-bottom: 1px solid var(--line-light);
}
.spine-step:nth-child(2n) { border-right: 0; }
.spine-step:nth-last-child(-n+2) { border-bottom: 0; }
.spine-num {
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  color: var(--teal);
}
.spine-label {
  font-size: 15px;
  font-weight: 600;
  letter-spacing: -0.02em;
}
.spine-more {
  margin: 16px 0 0;
  font-size: 14px;
  font-weight: 600;
}
.spine-more a {
  color: var(--teal);
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Full process page: vertical spine on mobile */
.page-process .process-spine-full {
  display: flex;
  flex-direction: column;
  gap: 0;
  border: 1px solid var(--line-light);
  background: var(--white);
  list-style: none;
  margin: 0;
  padding: 0;
}
.page-process .process-spine-full .step {
  display: grid;
  grid-template-columns: 48px 1fr;
  grid-template-areas: "num title" "num copy";
  column-gap: 8px;
  row-gap: 4px;
  padding: 16px;
  margin: 0;
  border-bottom: 1px solid var(--line-light);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
}
.page-process .process-spine-full .step:last-of-type { border-bottom: 0; }
.page-process .process-spine-full .step-num {
  grid-area: num;
  font-family: var(--mono);
  font-size: 12px;
  padding-top: 2px;
}
.page-process .process-spine-full .step h2 {
  grid-area: title;
  margin: 0;
  font-size: 1.05rem;
}
.page-process .process-spine-full .step p {
  grid-area: copy;
  margin: 0;
  font-size: 14px;
}

.notice-bar {
  padding: 8px 0;
}
.notice-bar p {
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.06em;
  text-transform: none;
}

.account-num {
  font-family: var(--mono);
}
.account-card {
  border-radius: 4px;
}

.proof-pills {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  list-style: none;
  margin: 0;
  padding: 0;
  justify-content: flex-start;
}
.proof-pills li {
  padding: 8px 12px;
  border: 1px solid var(--line-dark);
  border-radius: 2px;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.06em;
  color: var(--cyan);
}
.catalog-moq {
  padding: 8px 16px;
  border-radius: 4px;
  font-family: var(--sans);
  font-weight: 500;
  text-transform: none;
  letter-spacing: -0.01em;
}
.catalog-card {
  border-radius: 4px;
  padding: 16px;
  gap: 16px;
  box-shadow: none;
  border-color: rgba(11, 28, 44, 0.09);
}
.sku-row {
  padding: 8px;
  border-radius: 4px;
  gap: 8px;
}
.sku-dose {
  font-family: var(--mono);
  border-radius: 2px;
  font-size: 12px;
}
.sku-label {
  font-family: var(--mono);
}
.filter-pill {
  border-radius: 2px;
  font-family: var(--mono);
  letter-spacing: 0.06em;
  text-transform: none;
}
.catalog-group-title {
  font-family: var(--mono);
}

.btn {
  border-radius: 4px;
  box-shadow: none;
  font-weight: 600;
}
.btn-ghost {
  border-radius: 4px;
}

.form-shell,
.form-shell-wide,
.plain-card {
  border-radius: 4px;
}

/* Desktop catalog + home */
@media (min-width: 734px) {
  .page-home .hero-grid {
    grid-template-columns: 1.05fr 0.95fr;
    gap: 24px;
    align-items: center;
  }
  .page-home .hero-stage { order: 2; height: clamp(280px, 38vw, 420px); }
  .page-home .hero-copy { order: 1; }
  .page-home .hero-actions {
    flex-direction: row;
    align-items: center;
  }
  .page-home .hero-actions .btn { width: auto; }
  .spec-table {
    grid-template-columns: repeat(4, 1fr);
  }
  .spec-table .spec-item {
    padding: 24px 16px;
    border-bottom: 0;
    border-right: 1px solid var(--line-dark);
  }
  .spec-table .spec-item:nth-child(2n) { border-right: 1px solid var(--line-dark); }
  .spec-table .spec-item:last-child { border-right: 0; }
  .who-grid-4 {
    grid-template-columns: 1fr 1fr 1fr 1fr;
    gap: 16px;
  }
  .process-spine {
    grid-template-columns: repeat(6, 1fr);
  }
  .spine-step {
    border-bottom: 0;
    border-right: 1px solid var(--line-light);
    padding: 16px 12px 24px;
  }
  .spine-step:nth-child(2n) { border-right: 1px solid var(--line-light); }
  .spine-step:last-child { border-right: 0; }
  .page-process .process-spine-full {
    display: grid;
    grid-template-columns: 1fr 1fr;
  }
  .page-process .process-spine-full .step {
    border-right: 1px solid var(--line-light);
  }
  .page-process .process-spine-full .step:nth-child(2n) { border-right: 0; }
}

@media (min-width: 980px) {
  .page-process .process-spine-full {
    grid-template-columns: repeat(3, 1fr);
  }
  .page-process .process-spine-full .step:nth-child(2n) { border-right: 1px solid var(--line-light); }
  .page-process .process-spine-full .step:nth-child(3n) { border-right: 0; }
}

@media (max-width: 733px) {
  .page-home .hero-copy { text-align: left; }
  .page-home .hero-actions .btn { max-width: none; }
  .catalog-card {
    grid-template-columns: 56px 1fr;
    padding: 16px;
    gap: 8px 16px;
  }
  .catalog-visual { height: 56px; }
  .catalog-visual img { max-width: 56px; max-height: 56px; }
  .sku-row { padding: 8px; }
  .sku-order { gap: 8px; }
  .wrap, .wrap-wide { width: min(100% - 32px, var(--max)); }
}

@media (prefers-reduced-motion: reduce) {
  .spine-step, .who-card, .catalog-card, .sku-row, .btn {
    transition: none !important;
  }
}

/* Restore proof pills as 2×2 facility chips on dark band */
.proof-pills {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 8px;
  justify-content: stretch;
}
.proof-pills li {
  text-align: center;
  color: var(--paper);
  background: rgba(250, 247, 242, 0.08);
  border: 1px solid rgba(250, 247, 242, 0.14);
  font-family: var(--mono);
  font-size: 11px;
  padding: 12px 8px;
}

/* Never leave page content invisible if IntersectionObserver misses */
.reveal.is-pending {
  opacity: 1 !important;
  transform: none !important;
}
.reveal.is-in {
  opacity: 1 !important;
  transform: none !important;
}
@media (prefers-reduced-motion: no-preference) {
  .reveal.is-pending {
    opacity: 0.96 !important;
  }
}
body.page-home-scroll { padding-bottom: 88px; }

.header-inner {
  justify-content: space-between;
}

.cart-badge {
  appearance: none;
  -webkit-appearance: none;
  border: 1px solid rgba(250, 247, 242, 0.22);
  background: rgba(255, 255, 255, 0.06);
  color: var(--paper);
  border-radius: 999px;
  padding: 8px 14px;
  min-height: 40px;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font: inherit;
  font-size: 14px;
  font-weight: 600;
  cursor: pointer;
  margin-left: auto;
}
.cart-badge.has-items {
  border-color: rgba(45, 212, 191, 0.55);
  background: rgba(45, 212, 191, 0.12);
}
.cart-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 22px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--cyan);
  color: var(--ink);
  font-size: 12px;
  font-weight: 700;
}

.footer-link-btn {
  appearance: none;
  border: 0;
  background: none;
  color: inherit;
  font: inherit;
  padding: 0;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* Catalog on home */
.catalog-home {
  padding: 48px 0 32px;
  background: var(--paper);
}
.catalog-home-head {
  margin-bottom: 20px;
}
.catalog-home-head h2 {
  margin: 8px 0 10px;
  font-size: clamp(1.6rem, 4vw, 2.1rem);
  letter-spacing: -0.03em;
}
.catalog-home-head p {
  margin: 0;
  color: var(--muted-on-light);
  max-width: 52ch;
}
.catalog-layout-solo {
  display: block;
}
.catalog-layout-solo .catalog-main {
  width: 100%;
  max-width: 820px;
  margin: 0 auto;
}

/* Larger identical labeled vials */
.page-home .catalog-card,
.catalog-home .catalog-card {
  display: grid;
  grid-template-columns: 120px 1fr;
  grid-template-areas:
    "visual body"
    "skus skus";
  gap: 14px 16px;
  padding: 18px 16px 18px;
  align-items: center;
}
.page-home .catalog-visual,
.catalog-home .catalog-visual {
  grid-area: visual;
  height: 160px;
  width: 120px;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
  background: transparent;
}
.page-home .catalog-body,
.catalog-home .catalog-body {
  grid-area: body;
}
.page-home .catalog-body .blurb,
.catalog-home .catalog-body .blurb {
  display: block;
  margin: 6px 0 0;
  font-size: 13px;
  line-height: 1.45;
  color: var(--muted-on-light);
}
.page-home .catalog-skus,
.catalog-home .catalog-skus {
  grid-area: skus;
}

.vial-labeled {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
}
.vial-labeled picture,
.vial-labeled img {
  width: auto;
  height: 100%;
  max-width: 120px;
  max-height: 160px;
  object-fit: contain;
  filter: drop-shadow(0 14px 22px rgba(11, 28, 44, 0.18));
  animation: float-sku 7s var(--ease-soft) infinite;
  will-change: transform;
}
.hero .vial-labeled {
  width: min(280px, 70vw);
  height: auto;
  margin: 0 auto;
}
.hero .vial-labeled img {
  width: 100%;
  height: auto;
  max-width: 280px;
  max-height: none;
}

@media (min-width: 734px) {
  .page-home .catalog-card,
  .catalog-home .catalog-card {
    grid-template-columns: 150px 1fr;
    padding: 22px;
  }
  .page-home .catalog-visual,
  .catalog-home .catalog-visual {
    height: 200px;
    width: 150px;
  }
  .page-home .catalog-visual .vial-labeled img,
  .catalog-home .catalog-visual .vial-labeled img {
    max-width: 150px;
    max-height: 200px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .vial-labeled img,
  .catalog-visual img,
  .vial-float img {
    animation: none !important;
  }
}

/* Qty presets */
.qty-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 4px 0 10px;
}
.qty-preset {
  appearance: none;
  -webkit-appearance: none;
  min-height: 40px;
  min-width: 64px;
  padding: 8px 12px;
  border-radius: 999px;
  border: 1px solid rgba(11, 28, 44, 0.14);
  background: var(--white);
  color: var(--ink);
  font: inherit;
  font-size: 14px;
  font-weight: 650;
  cursor: pointer;
}
.qty-preset.is-active,
.qty-preset[aria-pressed="true"] {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.qty-custom {
  display: flex;
  flex-direction: column;
  gap: 4px;
  flex: 1;
  min-width: 0;
}
.qty-custom .qty-label,
.qty-label {
  font-size: 11px;
  font-weight: 650;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--faint-on-light);
}
.qty-custom .qty-input,
.sku-order .qty-input {
  width: 100%;
  min-height: 48px;
  border-radius: 10px;
  border: 1px solid rgba(11, 28, 44, 0.14);
  padding: 10px 12px;
  font: inherit;
  font-size: 16px;
  font-weight: 600;
  background: var(--white);
}
.sku-order {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: stretch;
}
.sku-order .sku-add {
  width: 100%;
  min-height: 48px;
}
.line-moq {
  margin: 6px 0 0;
  font-size: 12px;
  color: var(--faint-on-light);
}
.line-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 8px;
}
.line-item {
  display: block;
  padding: 14px 0;
  border-bottom: 1px solid var(--line-light);
}
.line-remove {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--muted-on-light);
  font: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  min-height: 44px;
  padding: 8px 4px;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.wizard-steps {
  grid-column: 1 / -1;
  list-style: none;
  margin: 4px 0 0;
  padding: 0;
  display: flex;
  gap: 8px;
  overflow-x: auto;
}
.wizard-step {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 10px;
  border-radius: 999px;
  background: var(--sand);
  color: var(--muted-on-light);
  font-size: 12px;
  font-weight: 650;
  white-space: nowrap;
}
.wizard-step.is-active {
  background: var(--ink);
  color: var(--paper);
}
.wizard-step.is-done {
  background: rgba(14, 124, 123, 0.12);
  color: var(--teal-deep);
}
.wizard-step-num {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: rgba(255, 255, 255, 0.2);
  font-size: 11px;
}
.wizard-main {
  overflow: auto;
  padding: 16px 16px 24px;
  -webkit-overflow-scrolling: touch;
}
.wizard-aside {
  display: none;
  border-left: 1px solid var(--line-light);
  background: var(--white);
  padding: 18px 16px;
  overflow: auto;
}
.wizard-aside h3 {
  margin: 0 0 12px;
  font-size: 14px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.wizard-aside-line {
  display: flex;
  justify-content: space-between;
  gap: 10px;
  padding: 8px 0;
  border-bottom: 1px solid var(--line-light);
  font-size: 14px;
}
.wizard-aside-totals {
  margin: 14px 0 0;
  font-weight: 700;
}
@media (min-width: 860px) {
  .wizard-aside:not([hidden]) {
    display: block;
  }
}
.wizard-pane-title {
  margin: 0 0 6px;
  font-size: 1.25rem;
  letter-spacing: -0.02em;
}
.wizard-pane-lead {
  margin: 0 0 18px;
  color: var(--muted-on-light);
  font-size: 15px;
}

/* Attestation checkbox — visible native input + for/id label, no overlays */
.attest-card {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  align-items: flex-start;
  padding: 16px;
  border-radius: 16px;
  border: 1px solid rgba(11, 28, 44, 0.12);
  background: var(--white);
  cursor: pointer;
  position: relative;
  z-index: 1;
}
.attest-card.is-checked {
  border-color: rgba(14, 124, 123, 0.45);
  background: rgba(14, 124, 123, 0.06);
  box-shadow: inset 0 0 0 1px rgba(14, 124, 123, 0.12);
}
.attest-card #licensed {
  position: relative;
  z-index: 3;
  width: 28px;
  height: 28px;
  min-width: 28px;
  min-height: 28px;
  margin: 2px 0 0;
  flex-shrink: 0;
  accent-color: var(--teal);
  pointer-events: auto !important;
  opacity: 1 !important;
  appearance: auto !important;
  -webkit-appearance: checkbox !important;
  cursor: pointer;
}
.attest-label {
  display: flex;
  gap: 12px;
  flex: 1;
  min-width: 0;
  cursor: pointer;
  pointer-events: auto;
  font-size: 15px;
  line-height: 1.45;
}
.attest-box {
  display: none; /* native checkbox is the control */
}
.attest-copy {
  display: block;
}
.attest-card .error {
  flex: 1 1 100%;
}
.attest-summary {
  margin-top: 18px;
  padding: 14px 16px;
  border-radius: 14px;
  background: var(--sand);
  font-size: 14px;
}
.attest-summary ul {
  margin: 8px 0 0;
  padding-left: 18px;
}
.attest-summary p { margin: 0 0 6px; }


/* Vial framing fix — source art is landscape with padding; zoom-crop to vial */
.vial-labeled {
  position: relative;
  width: 100%;
  height: 100%;
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: visible;
}
.vial-labeled picture {
  display: block;
  width: 100%;
  height: 100%;
}
.catalog-visual .vial-labeled {
  width: 120px;
  height: 160px;
}
.catalog-visual .vial-labeled picture,
.catalog-visual .vial-labeled img {
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
  object-position: center 42%;
  animation: float-sku 7s var(--ease-soft) infinite;
}
.hero .vial-labeled {
  width: min(300px, 72vw);
  height: min(380px, 88vw);
  margin: 0 auto;
}
.hero .vial-labeled picture,
.hero .vial-labeled img {
  width: 100%;
  height: 100%;
  max-width: none;
  max-height: none;
  object-fit: cover;
  object-position: center 40%;
}
@media (min-width: 734px) {
  .catalog-visual .vial-labeled {
    width: 150px;
    height: 200px;
  }
}

/* ========== Compact card + cart-icon UX (2026-09) ========== */

/* Header: logo left, cart icon only top-right */
.cart-badge {
  appearance: none !important;
  -webkit-appearance: none !important;
  position: relative !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 44px !important;
  min-width: 44px !important;
  max-width: 44px !important;
  height: 44px !important;
  min-height: 44px !important;
  padding: 0 !important;
  margin-left: auto !important;
  gap: 0 !important;
  border: 0 !important;
  border-radius: 10px !important;
  background: transparent !important;
  color: var(--paper) !important;
  cursor: pointer;
  opacity: 1 !important;
  overflow: visible !important;
  pointer-events: auto !important;
  flex-shrink: 0;
}
.cart-badge:not(.has-items) {
  width: 44px !important;
  min-width: 44px !important;
  padding: 0 !important;
  opacity: 1 !important;
  pointer-events: auto !important;
  overflow: visible !important;
}
.cart-badge.has-items {
  background: rgba(45, 212, 191, 0.12) !important;
  border: 0 !important;
}
.cart-badge-label { display: none !important; }
.cart-badge-icon {
  display: block;
  width: 22px;
  height: 22px;
  color: var(--paper);
}
.cart-badge .cart-count,
.cart-badge.has-items .cart-count {
  position: absolute !important;
  top: 4px !important;
  right: 2px !important;
  display: inline-flex !important;
  align-items: center;
  justify-content: center;
  min-width: 18px;
  height: 18px;
  padding: 0 5px;
  border-radius: 999px;
  background: var(--cyan) !important;
  color: var(--ink) !important;
  font-family: var(--mono), ui-monospace, monospace;
  font-size: 10px !important;
  font-weight: 700 !important;
  line-height: 1;
  letter-spacing: 0;
  box-shadow: 0 0 0 2px #0B1C2C;
}
.cart-badge .cart-count[hidden] {
  display: none !important;
}
.cart-badge[aria-expanded="true"] {
  background: rgba(45, 212, 191, 0.22) !important;
  color: var(--cyan) !important;
}
body.page-home-scroll {
  padding-bottom: 24px !important;
}

/* Compact SKU controls — one tight DTC row */
.sku-row,
.sku-row-compact {
  display: flex !important;
  flex-direction: row !important;
  flex-wrap: wrap !important;
  align-items: center !important;
  gap: 6px !important;
  padding: 8px !important;
  border-radius: 10px !important;
}
.sku-row .sku-meta { display: none !important; }
.sku-row .sku-dose {
  flex: 0 0 auto;
  min-height: 36px !important;
  height: 36px;
  padding: 0 10px !important;
  border-radius: 8px !important;
  font-size: 12px !important;
  line-height: 36px;
}
.sku-row .qty-presets {
  display: flex !important;
  flex-wrap: nowrap !important;
  gap: 4px !important;
  margin: 0 !important;
  flex: 1 1 auto;
  min-width: 0;
}
.sku-row .qty-preset {
  flex: 1 1 0;
  min-width: 0 !important;
  min-height: 36px !important;
  height: 36px;
  padding: 0 4px !important;
  border-radius: 8px !important;
  font-size: 12px !important;
  font-weight: 650;
}
.sku-row .qty-custom,
.sku-row .sku-order {
  display: contents !important;
}
.sku-row .qty-input,
.sku-row .qty-input-compact {
  flex: 0 0 64px !important;
  width: 64px !important;
  min-width: 64px !important;
  max-width: 72px !important;
  min-height: 44px !important;
  height: 44px !important;
  padding: 0 8px !important;
  border-radius: 8px !important;
  border: 1px solid rgba(11, 28, 44, 0.14);
  font-size: 14px !important;
  font-weight: 600;
  text-align: center;
  background: var(--white);
}
.sku-row .sku-add,
.sku-row .btn {
  flex: 0 0 auto !important;
  width: auto !important;
  min-width: 76px !important;
  max-width: none !important;
  min-height: 44px !important;
  height: 44px !important;
  padding: 0 14px !important;
  font-size: 13px !important;
  border-radius: 8px !important;
  white-space: nowrap;
}
.sku-row .qty-label { display: none !important; }

@media (max-width: 419px) {
  .sku-row .qty-presets {
    flex: 1 1 100%;
    order: 2;
  }
  .sku-row .sku-dose { order: 1; }
  .sku-row .qty-input,
  .sku-row .qty-input-compact { order: 3; flex: 1 1 72px !important; max-width: none !important; width: auto !important; }
  .sku-row .sku-add { order: 4; flex: 1 1 auto !important; min-height: 40px !important; height: 40px !important; }
}

@media (min-width: 734px) {
  .sku-row,
  .sku-row-compact {
    flex-wrap: nowrap !important;
    gap: 8px !important;
    padding: 8px 10px !important;
  }
  .sku-row .qty-presets { flex: 1 1 auto; }
  .sku-row .qty-preset { min-width: 52px !important; }
  .sku-row .sku-add {
    min-width: 88px !important;
    min-height: 40px !important;
    height: 40px !important;
  }
  .sku-row .qty-input,
  .sku-row .qty-input-compact {
    min-height: 40px !important;
    height: 40px !important;
  }
}

/* Wizard line items: compact custom qty */
.line-item .qty-custom-compact {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 8px;
  margin-top: 4px;
}
.line-item .qty-custom-compact .qty-input {
  width: 96px;
  min-height: 40px;
  max-width: 120px;
}
.line-item .qty-presets {
  margin: 0 0 6px;
}

/* Catalog card: less vertical chrome around SKUs */
.catalog-skus {
  gap: 8px !important;
}
.page-home .catalog-card,
.catalog-home .catalog-card {
  gap: 12px;
}
body.page-home-scroll { padding-bottom: 24px !important; }

.cart-badge {
  text-decoration: none;
  position: relative;
}
.cart-badge[aria-expanded] { /* leftover attr ignored */ }

.catalog-layout-solo .catalog-main {
  width: 100%;
  max-width: 1120px;
  margin: 0 auto;
}

@media (min-width: 1100px) {
  .catalog-home .catalog-group-cards,
  .page-home .catalog-group-cards {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
  }
}

/* Quote document page — premium clinical B2B (scoped to .page-quote) */
.page-quote {
  --quote-max: 1080px;
  --quote-aside: 312px;
  --quote-radius: 22px;
  --quote-card-shadow: 0 18px 40px rgba(11, 28, 44, 0.06);
  --quote-card-border: 1px solid rgba(11, 28, 44, 0.08);
  --quote-pad-x: 24px;
  background: var(--paper);
  color: var(--ink);
}

.page-quote main {
  padding-top: var(--header-h);
  min-height: 70vh;
}

.page-quote .quote-page {
  width: 100%;
  padding: 28px var(--quote-pad-x) 120px;
}

.page-quote .quote-page-inner {
  width: min(100%, var(--quote-max));
  margin-inline: auto;
}

.page-quote .quote-page-head {
  margin-bottom: 28px;
  max-width: 42rem;
}

.page-quote .quote-page-kicker {
  margin: 0;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--teal);
  font-family: var(--mono), ui-monospace, monospace;
}

.page-quote .quote-page-head h1 {
  margin: 8px 0 10px;
  font-size: clamp(1.7rem, 3.4vw, 2.35rem);
  font-weight: 600;
  letter-spacing: -0.045em;
  line-height: 1.12;
}

.page-quote .quote-page-lead {
  margin: 0 0 22px;
  color: var(--muted-on-light);
  max-width: 58ch;
  font-size: 16.5px;
  line-height: 1.55;
  letter-spacing: -0.01em;
}

.page-quote .wizard-steps {
  display: flex;
  flex-wrap: wrap;
  gap: 12px;
  list-style: none;
  margin: 0;
  padding: 0;
  overflow: visible;
}

.page-quote .wizard-step {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  min-height: 44px;
  padding: 8px 16px 8px 10px;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.72);
  border: 1px solid rgba(11, 28, 44, 0.08);
  color: var(--muted-on-light);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.02em;
  white-space: nowrap;
  box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8);
}

.page-quote .wizard-step-num {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  background: var(--sand-deep);
  color: var(--ink);
  font-size: 12px;
  font-weight: 650;
  font-family: var(--mono), ui-monospace, monospace;
}

.page-quote .wizard-step.is-active {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
  box-shadow: 0 8px 20px rgba(11, 28, 44, 0.16);
}

.page-quote .wizard-step.is-active .wizard-step-num {
  background: var(--cyan);
  color: var(--ink);
}

.page-quote .wizard-step.is-done {
  background: rgba(14, 124, 123, 0.1);
  color: var(--teal-deep);
  border-color: rgba(14, 124, 123, 0.22);
}

.page-quote .wizard-step.is-done .wizard-step-num {
  background: var(--teal);
  color: #fff;
}

.page-quote .quote-page-layout {
  display: grid;
  grid-template-columns: 1fr;
  gap: 22px;
  align-items: start;
}

.page-quote .quote-form,
.page-quote .quote-form-card {
  background: var(--white);
  border: var(--quote-card-border);
  border-radius: var(--quote-radius);
  padding: 28px 24px 32px;
  box-shadow: var(--quote-card-shadow);
}

.page-quote .wizard-pane-title {
  margin: 0 0 8px;
  font-size: 1.2rem;
  font-weight: 600;
  letter-spacing: -0.035em;
}

.page-quote .wizard-pane-lead {
  margin: 0 0 24px;
  color: var(--muted-on-light);
  font-size: 16px;
  line-height: 1.5;
}

.page-quote .wizard-pane[hidden] {
  display: none !important;
}

.page-quote .fields {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
}

.page-quote .field label,
.page-quote .field .legend {
  font-size: 13.5px;
  font-weight: 500;
  letter-spacing: -0.01em;
  margin-bottom: 8px;
}

.page-quote .field input,
.page-quote .field select,
.page-quote .field textarea {
  min-height: 50px;
  padding: 14px 16px;
  border-radius: 12px;
  background: var(--paper);
  border: 1px solid rgba(11, 28, 44, 0.1);
  font-size: 16px;
}

.page-quote .field textarea {
  min-height: 132px;
}

.page-quote .field-hint {
  margin-top: 8px;
  font-size: 12.5px;
  color: var(--faint-on-light);
  line-height: 1.45;
}

.page-quote .field-other {
  margin-top: 20px;
}

.page-quote .quote-summary-card,
.page-quote .quote-page-aside {
  background: var(--white);
  border: var(--quote-card-border);
  border-radius: var(--quote-radius);
  padding: 24px 22px;
  box-shadow: var(--quote-card-shadow);
}

.page-quote .quote-page-aside[hidden] {
  display: none !important;
}

.page-quote .quote-page-aside h2 {
  margin: 0 0 16px;
  font-size: 12px;
  font-weight: 650;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted-on-light);
  font-family: var(--mono), ui-monospace, monospace;
}

.page-quote .wizard-aside-line {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  padding: 12px 0;
  border-bottom: 1px solid var(--line-light);
  font-size: 14.5px;
  line-height: 1.4;
}

.page-quote .wizard-aside-line strong {
  font-weight: 600;
  letter-spacing: -0.02em;
}

.page-quote .wizard-aside-line span {
  font-family: var(--mono), ui-monospace, monospace;
  font-size: 12px;
  color: var(--muted-on-light);
  white-space: nowrap;
}

.page-quote .wizard-aside-empty {
  margin: 0;
  color: var(--muted-on-light);
  font-size: 14px;
}

.page-quote .wizard-aside-totals {
  margin: 16px 0 0;
  font-weight: 650;
  font-size: 14px;
  letter-spacing: -0.02em;
}

.page-quote .quote-page-aside-link {
  display: inline-block;
  margin-top: 18px;
  font-size: 14px;
  font-weight: 600;
  color: var(--teal-deep);
  text-underline-offset: 3px;
}

.page-quote .quote-page-aside-link:hover {
  text-decoration: underline;
}

/* Line items — reset leftover tray/panel grid */
.page-quote .line-items {
  display: flex;
  flex-direction: column;
  gap: 16px;
  border: 0;
  border-radius: 0;
  background: transparent;
  overflow: visible;
}

.page-quote .line-item,
.page-quote .quote-form .line-item,
.page-quote .line-items .line-item {
  display: flex !important;
  flex-direction: column;
  align-items: stretch;
  gap: 16px;
  padding: 20px 0;
  margin: 0;
  border: 0;
  border-bottom: 1px solid var(--line-light);
  background: transparent;
  grid-template-columns: none !important;
  grid-template-areas: none !important;
}

.page-quote .line-item:first-child {
  padding-top: 4px;
}

.page-quote .line-item:last-child {
  border-bottom: 0;
  padding-bottom: 4px;
}

.page-quote .line-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 0;
}

.page-quote .line-name {
  grid-area: auto;
  min-width: 0;
  overflow: visible;
  text-overflow: unset;
  white-space: normal;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.03em;
  line-height: 1.3;
}

.page-quote .line-dose {
  margin-left: 8px;
  padding: 3px 9px;
  font-size: 12px;
  font-weight: 600;
  font-family: var(--mono), ui-monospace, monospace;
}

.page-quote .line-remove {
  grid-area: auto;
  width: auto;
  min-width: 0;
  height: auto;
  min-height: 44px;
  padding: 8px 4px;
  font-size: 13px;
  font-weight: 600;
  line-height: 1.2;
  color: var(--muted-on-light);
  text-decoration: underline;
  text-underline-offset: 3px;
  flex-shrink: 0;
}

.page-quote .line-remove:hover,
.page-quote .line-remove:focus-visible {
  color: var(--danger);
  background: transparent;
}

.page-quote .line-item .qty-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin: 0;
}

.page-quote .line-item .qty-preset {
  min-height: 44px;
  min-width: 68px;
  padding: 8px 14px;
  border-radius: 999px;
  font-size: 14px;
}

.page-quote .line-item .qty-custom,
.page-quote .line-item .qty-custom-compact {
  display: flex;
  flex-direction: row;
  align-items: center;
  gap: 10px;
  margin-top: 0;
}

.page-quote .line-item .qty-input {
  width: 120px;
  max-width: 160px;
  min-height: 48px;
  padding: 12px 14px;
  border-radius: 12px;
  font-size: 16px;
}

.page-quote .line-item .qty-control {
  width: 100%;
  grid-area: auto;
}

.page-quote .line-moq {
  margin: 0;
  font-size: 12.5px;
  color: var(--faint-on-light);
}

.page-quote .quote-empty-state {
  padding: 12px 0 8px;
}

.page-quote .quote-empty-lead {
  margin: 0 0 16px;
  font-size: 16px;
  font-weight: 600;
  letter-spacing: -0.02em;
}

.page-quote .quote-cart-totals {
  margin: 16px 0 0;
  font-weight: 650;
  font-size: 14.5px;
  letter-spacing: -0.02em;
}

/* Attest */
.page-quote .attest-card {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: flex-start;
  padding: 22px 20px;
  border-radius: 18px;
  border: 1px solid rgba(11, 28, 44, 0.1);
  background: var(--paper);
  cursor: pointer;
}

.page-quote .attest-card.is-checked {
  border-color: rgba(14, 124, 123, 0.4);
  background: rgba(14, 124, 123, 0.06);
}

.page-quote .attest-card #licensed {
  width: 32px;
  height: 32px;
  min-width: 32px;
  min-height: 32px;
  margin: 2px 0 0;
}

.page-quote .attest-label {
  gap: 12px;
  font-size: 15.5px;
  line-height: 1.5;
}

.page-quote .attest-summary {
  margin-top: 22px;
  padding: 20px 22px;
  border-radius: 18px;
  background: var(--sand);
  border: 1px solid rgba(11, 28, 44, 0.05);
  font-size: 15px;
  line-height: 1.5;
}

.page-quote .attest-summary ul {
  margin: 12px 0 0;
  padding-left: 18px;
}

.page-quote .attest-summary li {
  margin: 6px 0;
}

.page-quote .form-hint {
  text-align: left;
  margin-top: 16px;
  font-size: 13.5px;
}

/* Sticky footer */
.page-quote .quote-page-foot {
  display: flex;
  margin-top: 28px;
  position: sticky;
  bottom: 0;
  z-index: 8;
  padding: 0;
  background: transparent;
}

.page-quote .quote-page-foot[hidden] {
  display: none !important;
}

.page-quote .quote-page-foot-bar {
  display: flex;
  gap: 12px;
  width: 100%;
  padding: 14px 16px calc(14px + env(safe-area-inset-bottom, 0px));
  border-radius: 18px 18px 0 0;
  background: rgba(250, 247, 242, 0.94);
  border: 1px solid rgba(11, 28, 44, 0.08);
  border-bottom: 0;
  box-shadow: 0 -16px 40px rgba(11, 28, 44, 0.08);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

.page-quote .quote-page-foot .btn {
  flex: 1;
  min-height: 52px;
  border-radius: 12px;
}

.page-quote .quote-page-foot [data-wizard-back][hidden] {
  display: none !important;
}

.page-quote .quote-page-foot [data-wizard-back][hidden] + [data-wizard-next],
.page-quote .quote-page-foot .btn-quote-primary {
  flex: 1;
}

.page-quote .btn-quote-primary,
.page-quote .quote-page-foot [data-wizard-next] {
  background: var(--ink);
  color: var(--paper);
  box-shadow: 0 10px 24px rgba(11, 28, 44, 0.2);
}

.page-quote .btn-quote-primary:hover,
.page-quote .quote-page-foot [data-wizard-next]:hover {
  background: var(--teal);
  color: #fff;
}

/* Success */
.page-quote .quote-success,
.page-quote .success {
  text-align: center;
  padding: 28px 8px 40px;
  max-width: 28rem;
  margin: 0 auto;
}

.page-quote .quote-success h2,
.page-quote .success h2 {
  font-size: clamp(1.7rem, 4vw, 2.2rem);
  letter-spacing: -0.045em;
}

.page-quote .quote-success p,
.page-quote .success p {
  font-size: 16.5px;
  color: var(--muted-on-light);
}

.page-quote .success-actions {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 12px;
  margin-top: 28px;
}

.page-quote .success-actions .btn {
  min-height: 50px;
  border-radius: 12px;
}

.page-quote .quote-page:has([data-step-pane="success"]:not([hidden])) .quote-page-layout {
  grid-template-columns: 1fr;
}

.page-quote .quote-page:has([data-step-pane="success"]:not([hidden])) .quote-form-card {
  padding: 40px 28px 48px;
}

.page-quote .preview {
  text-align: left;
  margin-top: 20px;
  padding: 16px;
  border-radius: 14px;
  background: var(--sand);
  font-size: 13px;
  overflow: auto;
}

@media (min-width: 860px) {
  .page-quote {
    --quote-pad-x: 48px;
  }

  .page-quote .quote-page {
    padding: 48px var(--quote-pad-x) 80px;
  }

  .page-quote .quote-page-inner {
    width: min(100%, 1100px);
  }

  .page-quote .quote-page-head {
    margin-bottom: 32px;
  }

  .page-quote .quote-page-layout {
    grid-template-columns: minmax(0, 1fr) var(--quote-aside);
    gap: 28px;
  }

  .page-quote .quote-form-card {
    padding: 32px 36px 36px;
  }

  .page-quote .quote-page-aside:not([hidden]) {
    display: block;
    position: sticky;
    top: calc(var(--header-h) + 24px);
  }

  .page-quote .fields {
    grid-template-columns: 1fr 1fr;
    gap: 20px 18px;
  }

  .page-quote .fields .field:nth-child(n + 6) {
    grid-column: 1 / -1;
  }

  .page-quote .quote-page-foot {
    justify-content: stretch;
  }

  .page-quote .quote-page-foot-bar {
    width: 100%;
    margin-left: 0;
    border-radius: 18px;
    border: 1px solid rgba(11, 28, 44, 0.08);
    padding: 16px 20px;
    justify-content: flex-end;
    background: rgba(255, 255, 255, 0.96);
  }

  .page-quote .quote-page-foot .btn,
  .page-quote .quote-page-foot .btn-quote-primary,
  .page-quote .quote-page-foot [data-wizard-back][hidden] + [data-wizard-next] {
    flex: 0 0 auto;
    min-width: 220px;
    max-width: 320px;
    width: auto;
  }

  .page-quote .quote-page-foot [data-wizard-next] {
    margin-left: auto;
  }
}

@media (min-width: 1100px) {
  .page-quote {
    --quote-pad-x: 56px;
    --quote-aside: 320px;
  }
}

/* ==========================================================================
   Nexora visual system — bone / pine / editorial (copy & rules unchanged)
   ========================================================================== */

:focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 3px;
}

.skip {
  background: var(--teal);
  color: var(--ink-fg);
}

/* Light editorial header */
.site-header {
  top: var(--eyebrow-h) !important;
  background: rgba(255, 252, 248, 0.92) !important;
  border-bottom: 1px solid var(--line-light) !important;
  backdrop-filter: saturate(140%) blur(16px);
  -webkit-backdrop-filter: saturate(140%) blur(16px);
  box-shadow: none !important;
}
.site-header .brand {
  color: var(--ink) !important;
  font-family: var(--display);
  font-weight: 600;
  letter-spacing: -0.03em;
}
.site-header .mark {
  color: var(--teal) !important;
}
.site-header .cart-badge,
.site-header .cart-badge:not(.has-items),
.site-header .cart-badge.has-items {
  color: var(--ink) !important;
  background: transparent !important;
  border: 0 !important;
}
.site-header .cart-badge-icon {
  color: var(--ink) !important;
}
.site-header .cart-badge.has-items {
  background: var(--cyan-soft) !important;
}
.site-header .cart-count,
.site-header .cart-badge .cart-count,
.site-header .cart-badge.has-items .cart-count {
  background: var(--teal) !important;
  color: var(--ink-fg) !important;
}

body {
  padding-top: calc(var(--header-h) + var(--eyebrow-h)) !important;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  letter-spacing: -0.011em;
}

/* Buttons — solid pine primary, outline ghost */
.btn {
  border-radius: 999px !important;
  background: var(--teal);
  color: var(--ink-fg);
  box-shadow: var(--shadow-border);
  font-weight: 600;
  letter-spacing: -0.01em;
  transition: background 0.2s var(--ease), transform 0.2s var(--ease), box-shadow 0.2s var(--ease);
}
.btn:hover {
  background: var(--teal-hover);
  color: var(--ink-fg);
  box-shadow: var(--shadow-border-hover);
}
.btn-ink {
  background: var(--teal);
  color: var(--ink-fg);
  box-shadow: var(--shadow-border);
}
.btn-ink:hover {
  background: var(--teal-hover);
}
.sku-add.btn-ink {
  background: var(--teal);
  color: var(--ink-fg);
}
.btn-ghost {
  background: transparent !important;
  color: var(--ink) !important;
  border: 1px solid var(--line-light) !important;
  box-shadow: none !important;
}
.btn-ghost:hover {
  background: var(--sand) !important;
  border-color: rgba(22, 21, 19, 0.16) !important;
}
.btn-ghost-dark {
  background: transparent !important;
  color: var(--ink-fg) !important;
  border: 1px solid rgba(247, 245, 240, 0.42) !important;
  box-shadow: none !important;
  border-radius: 999px !important;
}
@media (hover: hover) {
  .btn-ghost-dark:hover {
    background: rgba(247, 245, 240, 0.10) !important;
    border-color: rgba(247, 245, 240, 0.72) !important;
    color: var(--ink-fg) !important;
  }
}
.btn-ghost-dark:focus-visible {
  outline: 2px solid var(--ink-fg);
  outline-offset: 3px;
}
.page-home .hero .btn-ghost {
  color: var(--ink) !important;
  border-color: var(--line-light) !important;
  background: var(--white) !important;
}
.page-home .hero .btn:not(.btn-ghost) {
  background: var(--teal);
  color: var(--ink-fg);
}

/* Display type */
h1, h2,
.hero-copy h1,
.page-quote .quote-page-head h1,
.page-hero h1,
.section-head h2,
.who-intro h2,
.spine-intro h2,
.cta-band h2,
.quote-success h2,
.success h2 {
  font-family: var(--display);
  font-weight: 600;
  letter-spacing: -0.04em;
}

.kicker,
.eyebrow,
.quote-page-kicker,
.catalog-group-title,
.filter-pill {
  font-family: var(--mono);
}

/* ——— Home hero: light bone editorial (Nexora rhythm) ——— */
.hero,
.page-home .hero {
  background: var(--paper) !important;
  color: var(--ink) !important;
  padding: 40px 0 64px !important;
  min-height: 0;
}
.page-home .hero-orbs { opacity: 0.35; }
.page-home .orb-a {
  background: radial-gradient(circle, rgba(30, 63, 56, 0.16) 0%, transparent 70%);
}
.page-home .orb-b {
  background: radial-gradient(circle, rgba(236, 232, 223, 0.9) 0%, transparent 70%);
}
.page-home .hero-copy {
  text-align: left;
  color: var(--ink);
}
.page-home .hero-copy h1,
.hero-copy h1 {
  color: var(--ink) !important;
  font-size: var(--text-title) !important;
  max-width: 16ch;
  line-height: 1.05;
  font-weight: 600;
}
.page-home .hero .lede,
.hero .lede {
  color: var(--muted-on-light) !important;
  font-size: var(--text-lead) !important;
  max-width: 40em;
  margin-top: 16px;
  line-height: 1.55;
}
.page-home .eyebrow,
.eyebrow {
  background: transparent;
  border: 0;
  color: var(--faint-on-light);
  padding: 0;
  margin: 0 0 18px;
  font-size: 11px;
  letter-spacing: 0.16em;
}
.page-home .hero-micro,
.hero-micro {
  color: var(--faint-on-light) !important;
  margin-top: 20px;
}
.page-home .hero-actions {
  margin-top: 28px;
  gap: 12px;
}
.page-home .hero-actions .btn {
  min-height: 52px;
  padding: 14px 28px;
}
@media (min-width: 734px) {
  .page-home .hero {
    padding: 64px 0 88px !important;
  }
  .page-home .hero-copy h1 {
    font-size: clamp(2.4rem, 5vw, 3.6rem) !important;
  }
}

/* Notice bar → warm thin rule band */
.notice-bar {
  background: var(--sand) !important;
  color: var(--ink) !important;
  border-top: 1px solid var(--line-light);
  border-bottom: 1px solid var(--line-light);
  padding: 14px 0 !important;
}
.notice-bar p {
  color: var(--teal) !important;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.notice-bar span {
  color: var(--muted-on-light) !important;
  text-transform: none;
  letter-spacing: -0.01em;
}

/* Spec strip — surface table, not navy */
.spec-strip {
  background: var(--ink-true) !important;
}
.spec-value {
  color: var(--ink-fg) !important;
}
.spec-label {
  color: var(--muted-on-dark) !important;
}
.spec-table .spec-item {
  border-color: rgba(247, 245, 240, 0.1) !important;
}

/* Editorial section spacing */
.page-home .problem,
.page-home .who,
.page-home .spine-band,
.page-home .accounts,
.page-home .catalog-home,
.page-home .proof {
  padding-top: 72px;
  padding-bottom: 72px;
}
@media (min-width: 734px) {
  .page-home .problem,
  .page-home .who,
  .page-home .spine-band,
  .page-home .accounts,
  .page-home .catalog-home,
  .page-home .proof {
    padding-top: 96px;
    padding-bottom: 96px;
  }
}

.problem-lead {
  font-family: var(--display);
  letter-spacing: -0.035em;
}

.who-card {
  background: var(--white);
  border: 1px solid var(--line-light);
  border-radius: var(--radius-lg) !important;
  box-shadow: var(--shadow-border);
  padding: 24px !important;
}
.who-mark { color: var(--teal) !important; }

.spine-band {
  background: var(--paper);
  border-top: 1px solid var(--line-light);
}
.process-spine {
  background: var(--white);
  border-color: var(--line-light);
  border-radius: var(--radius-lg);
  overflow: hidden;
}
.spine-num { color: var(--teal) !important; }

/* Dark account / proof / cta bands → pine ink */
.accounts {
  background: var(--ink-true) !important;
  color: var(--ink-fg);
}
.section-head-on-dark .kicker { color: rgba(247, 245, 240, 0.55) !important; }
.section-head-on-dark h2 { color: var(--ink-fg) !important; }
.section-head-on-dark p { color: var(--muted-on-dark) !important; }
.account-card {
  background: rgba(247, 245, 240, 0.04);
  border: 1px solid rgba(247, 245, 240, 0.1);
  border-radius: var(--radius-lg) !important;
}
.proof {
  background: var(--ink-true) !important;
}
.proof-pills li {
  color: var(--ink-fg) !important;
  background: rgba(247, 245, 240, 0.06) !important;
  border-color: rgba(247, 245, 240, 0.12) !important;
  border-radius: 999px !important;
}
.cta-band {
  background: var(--sand) !important;
  color: var(--ink) !important;
  padding: 72px 24px !important;
  border-top: 1px solid var(--line-light);
  border-bottom: 1px solid var(--line-light);
}
.cta-band h2 { color: var(--ink) !important; }
.cta-band p { color: var(--muted-on-light) !important; }
.cta-band .btn-ghost {
  color: var(--ink) !important;
  border-color: var(--line-light) !important;
  background: var(--white) !important;
}

.site-footer {
  background: var(--ink-true) !important;
  color: var(--muted-on-dark);
  border-top: 0;
}
.site-footer a { color: rgba(247, 245, 240, 0.75); }
.site-footer a:hover { color: var(--ink-fg); }

/* Product / catalog cards — warmer elevated surfaces */
.catalog-home {
  background: var(--paper);
}
.catalog-card,
.page-home .catalog-card,
.catalog-home .catalog-card {
  background: var(--white) !important;
  border: 1px solid var(--line-light) !important;
  border-radius: var(--radius-lg) !important;
  box-shadow: var(--shadow-border) !important;
  padding: 22px !important;
}
.sku-row {
  background: var(--paper);
  border: 1px solid transparent;
  border-radius: var(--radius-md) !important;
}
.sku-row:hover,
.sku-row.is-selected {
  border-color: rgba(30, 63, 56, 0.22);
  background: rgba(30, 63, 56, 0.04);
}
.filter-pill {
  border-radius: 999px !important;
  background: var(--white);
  border: 1px solid var(--line-light);
  color: var(--muted-on-light);
}
.filter-pill.is-active,
.filter-pill[aria-pressed="true"] {
  background: var(--teal) !important;
  color: var(--ink-fg) !important;
  border-color: var(--teal) !important;
}
.dose-pill {
  border-radius: 999px !important;
}
.dose-pill.is-active,
.dose-pill[aria-pressed="true"] {
  background: var(--teal);
  color: var(--ink-fg);
  border-color: var(--teal);
}
.qty-preset.is-active,
.qty-preset[aria-pressed="true"] {
  background: var(--teal);
  color: var(--ink-fg);
  border-color: var(--teal);
}

/* Soft status/category chips — never "Allocation" */
.cat-badge,
.sku-status,
.status-badge,
.catalog-card .badge {
  border-radius: 999px;
  font-family: var(--mono);
  font-size: 10px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: var(--sand);
  color: var(--muted-on-light);
  border: 1px solid var(--line-light);
  padding: 4px 10px;
}

/* Quote page — pine primary, Syne title, soft cards */
.page-quote {
  --quote-card-shadow: var(--shadow-border);
  --quote-card-border: 1px solid var(--line-light);
  --quote-radius: var(--radius-xl);
  background: var(--paper);
}
.page-quote main {
  padding-top: 0;
}
.page-quote .quote-page {
  padding-top: 36px;
}
.page-quote .quote-page-kicker {
  color: var(--teal) !important;
}
.page-quote .quote-page-head h1 {
  font-family: var(--display);
  font-size: clamp(1.85rem, 4vw, 2.75rem) !important;
  letter-spacing: -0.045em;
}
.page-quote .quote-page-lead {
  color: var(--muted-on-light);
  font-size: var(--text-lead);
}
.page-quote .wizard-step {
  background: var(--white);
  border: 1px solid var(--line-light);
  color: var(--muted-on-light);
  box-shadow: none;
}
.page-quote .wizard-step.is-active {
  background: var(--teal) !important;
  color: var(--ink-fg) !important;
  border-color: var(--teal) !important;
  box-shadow: var(--shadow-border);
}
.page-quote .wizard-step.is-active .wizard-step-num {
  background: rgba(247, 245, 240, 0.2) !important;
  color: var(--ink-fg) !important;
}
.page-quote .wizard-step.is-done {
  background: var(--cyan-soft) !important;
  color: var(--teal-deep) !important;
  border-color: rgba(30, 63, 56, 0.2) !important;
}
.page-quote .wizard-step.is-done .wizard-step-num {
  background: var(--teal) !important;
  color: var(--ink-fg) !important;
}
.page-quote .quote-form-card,
.page-quote .quote-summary-card,
.page-quote .quote-page-aside {
  background: var(--white);
  border: 1px solid var(--line-light);
  box-shadow: var(--shadow-border);
  border-radius: var(--radius-xl);
}
.page-quote .field input,
.page-quote .field select,
.page-quote .field textarea {
  background: var(--paper);
  border: 1px solid var(--line-light);
  border-radius: var(--radius-md);
  color: var(--ink);
}
.page-quote .field input:focus,
.page-quote .field select:focus,
.page-quote .field textarea:focus {
  outline: 2px solid var(--ring);
  outline-offset: 1px;
  border-color: var(--teal);
}
.page-quote .quote-page-aside-link {
  color: var(--teal) !important;
}
.page-quote .attest-card {
  background: var(--paper);
  border: 1px solid var(--line-light);
  border-radius: var(--radius-lg);
}
.page-quote .attest-card.is-checked {
  border-color: rgba(30, 63, 56, 0.4);
  background: rgba(30, 63, 56, 0.06);
}
.page-quote .attest-card #licensed {
  accent-color: var(--teal);
}
.page-quote .attest-summary {
  background: var(--sand);
  border: 1px solid var(--line-light);
  border-radius: var(--radius-lg);
}
.page-quote .quote-page-foot-bar {
  background: rgba(255, 252, 248, 0.94) !important;
  border-color: var(--line-light) !important;
  box-shadow: 0 -12px 32px rgba(22, 21, 19, 0.06);
}
.page-quote .btn-quote-primary,
.page-quote .quote-page-foot [data-wizard-next] {
  background: var(--teal) !important;
  color: var(--ink-fg) !important;
  border-radius: 999px !important;
  box-shadow: var(--shadow-border) !important;
}
.page-quote .btn-quote-primary:hover,
.page-quote .quote-page-foot [data-wizard-next]:hover {
  background: var(--teal-hover) !important;
  color: var(--ink-fg) !important;
}
.page-quote .quote-page-foot .btn {
  border-radius: 999px !important;
}
.page-quote .line-dose {
  background: var(--sand);
  color: var(--teal);
  border-radius: 999px;
}
.page-quote .qty-preset {
  border-radius: 999px !important;
  border: 1px solid var(--line-light);
  background: var(--white);
}
.page-quote .success-actions .btn {
  border-radius: 999px !important;
}

/* Who strip */
.who-strip {
  background: var(--paper);
  border-top: 1px solid var(--line-light);
  color: var(--muted-on-light);
}

/* Soften older cyan glow leftovers on home */
.btn.is-added {
  background: var(--teal) !important;
  color: var(--ink-fg) !important;
}
.page-quote .quote-page-aside:not([hidden]) {
  top: calc(var(--header-h) + var(--eyebrow-h) + 24px);
}
.page-home [id],
.page-quote [id] {
  scroll-margin-top: calc(var(--header-h) + var(--eyebrow-h) + 8px);
}

/* Kill leftover navy gradients on home bands */
.accounts {
  background: var(--ink-true) !important;
}
.proof {
  background: var(--ink-true) !important;
}

/* ==========================================================================
   Honeypot — off-screen, not display:none, so naive bots still fill it.
   Paired with the `website` check in api/quote.js.
   ========================================================================== */
.hp-field {
  position: absolute !important;
  left: -9999px !important;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
}


/* ==========================================================================
   CATALOG → QUOTE, 2026-09 redesign.
   Fresh `hs-` namespace so none of the legacy .catalog-card / .sku-row /
   .qty-* cascade above can reach these components.

   Model: every compound is always visible in a dense grid; a resting card
   carries no form controls. Opening a card discloses ONE dose selector,
   ONE quantity stepper (quick-fill chips drive that same stepper), and ONE
   primary action. Bone/pine tokens only.
   ========================================================================== */

.hs-sr {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* ——— Section shell ——— */
.catalog-home {
  padding: 56px 0 52px;
}
.catalog-main {
  gap: 22px;
}
.catalog-home-head {
  margin-bottom: 0;
}
.catalog-home-head h2 {
  margin: 8px 0 10px;
}
.catalog-home-head p {
  max-width: 60ch;
}

/* ——— Toolbar: search + categories + live count + quote summary ——— */
.hs-toolbar {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.hs-toolbar-row {
  display: flex;
  flex-direction: column;
  gap: 10px;
  min-width: 0;
}
.hs-toolbar-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-height: 34px;
}

.hs-search {
  position: relative;
  display: flex;
  align-items: center;
  min-width: 0;
}
.hs-search-icon {
  position: absolute;
  left: 16px;
  width: 17px;
  height: 17px;
  color: var(--faint-on-light);
  pointer-events: none;
}
.hs-search-input {
  width: 100%;
  min-height: 46px;
  padding: 0 46px 0 42px;
  border-radius: 999px;
  border: 1px solid var(--line-light);
  background: var(--white);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 14.5px;
  letter-spacing: -0.01em;
  appearance: none;
  -webkit-appearance: none;
}
.hs-search-input::placeholder {
  color: var(--faint-on-light);
}
.hs-search-input::-webkit-search-cancel-button,
.hs-search-input::-webkit-search-decoration {
  -webkit-appearance: none;
  display: none;
}
.hs-search-input:focus {
  outline: none;
  border-color: var(--teal);
  box-shadow: 0 0 0 3px rgba(30, 63, 56, 0.14);
}
.hs-search-clear {
  position: absolute;
  right: 5px;
  width: 38px;
  height: 38px;
  display: grid;
  place-items: center;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: var(--muted-on-light);
  cursor: pointer;
  -webkit-tap-highlight-color: transparent;
}
.hs-search-clear svg {
  width: 16px;
  height: 16px;
}
.hs-search-clear[hidden] {
  display: none;
}

.hs-filters {
  display: flex;
  gap: 8px;
  min-width: 0;
  overflow-x: auto;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  padding: 3px 2px;
  margin: -3px -2px;
}
.hs-filters::-webkit-scrollbar {
  display: none;
}
.hs-chip {
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 15px;
  border-radius: 999px;
  border: 1px solid var(--line-light);
  background: var(--white);
  color: var(--muted-on-light);
  font-family: var(--sans);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: -0.01em;
  white-space: nowrap;
  cursor: pointer;
  transition: background 0.18s var(--ease), border-color 0.18s var(--ease), color 0.18s var(--ease);
  -webkit-tap-highlight-color: transparent;
}
.hs-chip[aria-pressed="true"] {
  background: var(--ink);
  border-color: var(--ink);
  color: var(--ink-fg);
}

.hs-count {
  margin: 0;
  font-family: var(--mono);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--faint-on-light);
}

/* Persistent path to the quote — in flow, not a tray. */
.hs-sum {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 5px 5px 5px 14px;
  border-radius: 999px;
  border: 1px solid rgba(30, 63, 56, 0.26);
  background: rgba(30, 63, 56, 0.06);
}
.hs-sum[hidden] {
  display: none;
}
.hs-sum-text {
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 8px;
  font-size: 12.5px;
  letter-spacing: -0.01em;
  color: var(--teal);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.hs-sum-text strong {
  font-weight: 750;
}
.hs-sum-text span {
  color: var(--muted-on-light);
}
.hs-sum-cta {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  min-height: 38px;
  padding: 0 16px;
  border-radius: 999px;
  background: var(--teal);
  color: var(--ink-fg);
  font-size: 13px;
  font-weight: 650;
  letter-spacing: -0.01em;
  text-decoration: none;
  white-space: nowrap;
  transition: background 0.18s var(--ease);
}
.hs-sum-cta svg {
  width: 14px;
  height: 14px;
}

.hs-sum-end {
  align-self: center;
  padding: 7px 7px 7px 20px;
  gap: 16px;
}
.hs-sum-end .hs-sum-text {
  font-size: 13.5px;
}
.hs-sum-end .hs-sum-cta {
  min-height: 44px;
  padding: 0 20px;
  font-size: 13.5px;
}

/* ——— Grid ——— */
.hs-catalog {
  display: flex;
  flex-direction: column;
  gap: 28px;
}
.hs-group {
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.hs-group-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0;
  font-family: var(--mono);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted-on-light);
}
.hs-group-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 18px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--sand-deep);
  color: var(--muted-on-light);
  font-size: 10px;
  letter-spacing: 0;
}
.hs-group-title::after {
  content: "";
  flex: 1 1 auto;
  height: 1px;
  background: var(--line-light);
}
.hs-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: 12px;
}/* ——— Card at rest: name first{
  position: relative;
  display: flex;
  flex-direction: column;
  min-width: 0;
  background: var(--white);
  border: 1px solid var(--line-light);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-border);
  transition: border-color 0.22s var(--ease), box-shadow 0.22s var(--ease);
}
.hs-chev {
  width: 16px;
  height: 16px;
  color: var(--faint-on-light);
  transition: transform 0.28s var(--ease), color 0.2s var(--ease);
}/* In-quote summary{
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
  padding: 0 14px 13px;
  margin-top: -3px;
}
.hs-field-label {
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: 8px;
  margin: 0 0 9px;
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink);
}
.hs-field-label span {
  font-family: var(--sans);
  font-size: 11.5px;
  font-weight: 500;
  letter-spacing: -0.01em;
  text-transform: none;
  color: var(--muted-on-light);
}

/* ——— The one quantity control (shared with the quote review step) ——— */
.hs-qty {
  display: grid;
  gap: 10px;
}
.hs-step {
  display: flex;
  align-items: stretch;
  width: 100%;
  height: 48px;
  border: 1px solid var(--line-light);
  border-radius: var(--radius-md);
  background: var(--white);
  overflow: hidden;
  transition: border-color 0.18s var(--ease), box-shadow 0.18s var(--ease);
}
.hs-step:focus-within {
  border-color: var(--teal);
  box-shadow: 0 0 0 3px rgba(30, 63, 56, 0.14);
}
.hs-step-btn {
  flex: 0 0 48px;
  width: 48px;
  display: grid;
  place-items: center;
  border: 0;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  transition: background 0.15s var(--ease);
  -webkit-tap-highlight-color: transparent;
}
.hs-step-btn svg {
  width: 16px;
  height: 16px;
}
.hs-step-btn:disabled {
  color: var(--faint-on-light);
  opacity: 0.45;
  cursor: not-allowed;
}
.hs-step-btn:focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: -3px;
}
.hs-step-field {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-width: 0;
  padding: 0 8px;
  border-left: 1px solid var(--line-light);
  border-right: 1px solid var(--line-light);
  background: var(--paper);
}
.hs-step-input {
  width: auto;
  max-width: 84px;
  min-width: 34px;
  flex: 0 1 auto;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--ink);
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
  text-align: right;
  appearance: none;
  -webkit-appearance: none;
}
.hs-step-input:focus {
  outline: none;
}
.hs-step-unit {
  flex: 0 0 auto;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--muted-on-light);
}/* ——— One primary action{
  display: grid;
  gap: 8px;
}

/* ——— Empty / footnote ——— */
.hs-empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  padding: 44px 22px;
  border: 1px dashed var(--line-light);
  border-radius: var(--radius-lg);
  background: var(--white);
  text-align: center;
}
.hs-empty p {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--muted-on-light);
}
.hs-empty p strong {
  color: var(--ink);
  font-size: 15px;
}
.hs-empty-reset {
  min-height: 44px;
  margin-top: 8px;
  padding: 0 18px;
  border-radius: 999px;
  border: 1px solid var(--line-light);
  background: var(--white);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 13.5px;
  font-weight: 650;
  cursor: pointer;
}
.hs-footnote {
  display: flex;
  flex-direction: column;
  gap: 6px;
  padding: 18px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--line-light);
  background: var(--sand);
}
.hs-footnote p {
  margin: 0;
}
.hs-footnote-moq {
  font-size: 13px;
  font-weight: 650;
  letter-spacing: -0.01em;
  color: var(--teal);
}
.hs-footnote-ruo,
.hs-footnote-note {
  font-size: 12px;
  line-height: 1.55;
  color: var(--muted-on-light);
}

/* ——— Quote page: same quantity paradigm on the review step ——— */
.hs-qlines {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.hs-qlines[hidden] {
  display: none;
}
.hs-qline {
  display: flex;
  flex-direction: column;
  gap: 12px;
  padding: 14px;
  border: 1px solid var(--line-light);
  border-radius: var(--radius-md);
  background: var(--paper);
}
.hs-qline-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  min-width: 0;
}
.hs-qline-name {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-width: 0;
  margin: 0;
  font-family: var(--display);
  font-size: 15.5px;
  font-weight: 600;
  letter-spacing: -0.025em;
  color: var(--ink);
}
.hs-qline-dose {
  display: inline-flex;
  align-items: center;
  min-height: 24px;
  padding: 0 10px;
  border-radius: 999px;
  background: var(--teal);
  color: var(--ink-fg);
  font-family: var(--sans);
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0;
}

@media (min-width: 620px) {
  .hs-qline .hs-qty {
    grid-template-columns: minmax(0, 258px) minmax(0, 1fr);
    align-items: center;
    gap: 12px;
  }
}

.hs-quote-empty {
  padding: 30px 22px;
  border: 1px dashed var(--line-light);
  border-radius: var(--radius-lg);
  background: var(--paper);
  text-align: center;
}
.hs-quote-empty[hidden] {
  display: none;
}
.hs-quote-empty-lead {
  margin: 0 0 6px;
  font-family: var(--display);
  font-size: 1.05rem;
  font-weight: 600;
  letter-spacing: -0.03em;
  color: var(--ink);
}
.hs-quote-empty-sub {
  margin: 0 auto 18px;
  max-width: 44ch;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--muted-on-light);
}
.field-optional {
  margin-left: 6px;
  font-family: var(--mono);
  font-size: 9.5px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--faint-on-light);
}
.page-quote [data-step-pane="account"] .attest-card {
  margin-top: 22px;
}
.page-quote .form-hint.is-warn {
  color: var(--danger);
  font-weight: 600;
}
.page-quote .quote-cart-totals {
  margin: 14px 0 0;
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted-on-light);
}.hs-chip:focus-visible,.hs-sum-cta:focus-visible,.hs-empty-reset:focus-visible,.hs-search-clear:focus-visible{
  outline: 2px solid var(--ring);
  outline-offset: 2px;
}

/* ——— Hover (pointer only) ——— */
@media (hover: hover) {
.hs-chip:hover,
.hs-empty-reset:hover {
    border-color: rgba(30, 63, 56, 0.45);
    color: var(--teal);
  }
.hs-chip[aria-pressed="true"]:hover {
    color: var(--ink-fg);
    border-color: var(--ink);
  }
  .hs-step-btn:hover:not(:disabled) {
    background: rgba(30, 63, 56, 0.07);
  }
  .hs-search-clear:hover {
    background: var(--sand);
    color: var(--ink);
  }
  .hs-sum-cta:hover {
    background: var(--teal-hover);
  }
}

@keyframes hs-target {
  0%,
  100% {
    box-shadow: var(--shadow-border);
  }
  25%,
  60% {
    box-shadow: 0 0 0 3px rgba(30, 63, 56, 0.28);
  }
}

/* ——— Tablet: two columns ——— */
@media (min-width: 620px) {
  .hs-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
}

@media (min-width: 860px) {
  .hs-toolbar-row {
    flex-direction: row;
    align-items: center;
    gap: 14px;
  }
  .hs-search {
    flex: 0 0 250px;
  }
  .hs-filters {
    flex: 1 1 auto;
    flex-wrap: wrap;
    overflow: visible;
  }
}

/* ——— Desktop: three columns, sticky toolbar ——— */
@media (min-width: 980px) {
  .hs-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
  }
  .hs-catalog {
    gap: 32px;
  }
  .hs-toolbar {
    position: sticky;
    top: calc(var(--header-h) + var(--eyebrow-h));
    z-index: 6;
    padding: 16px 0 13px;
    background: var(--paper);
  }
  .hs-toolbar::after {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 1px;
    background: var(--line-light);
  }
}

/* ——— Phone: bigger targets, no iOS zoom ——— */
@media (max-width: 733px) {
  .catalog-home {
    padding: 40px 0 40px;
  }
  .catalog-main {
    gap: 18px;
  }
  .hs-search-input {
    min-height: 50px;
    padding-right: 50px;
    font-size: 16px;
  }
  .hs-search-clear {
    right: 4px;
    width: 42px;
    height: 42px;
  }
  .hs-chip {
    min-height: 44px;
    padding: 0 16px;
  }
  .hs-sum {
    width: 100%;
    justify-content: space-between;
    padding: 6px 6px 6px 16px;
  }
  .hs-sum-cta {
    min-height: 44px;
  }
  .hs-step {
    height: 52px;
  }
  .hs-step-btn {
    flex-basis: 52px;
    width: 52px;
  }
  .hs-step-input {
    font-size: 16px;
  }
  .hs-qline {
    padding: 13px;
  }
  .hs-footnote {
    padding: 16px;
  }
}

@media (pointer: coarse) {.hs-chip{
    min-height: 44px;
  }
}

/* ——— Reduced motion ——— */
@media (prefers-reduced-motion: reduce) {
.hs-chev,
.hs-chip,
.hs-step,
.hs-step-btn,
.hs-sum-cta {
    transition: none !important;
  }
}

/* ==========================================================================
   Quote form — grouped fieldsets, 2-up grid, native selects
   ========================================================================== */
.quote-form .fieldset {
  border: 0;
  margin: 0 0 26px;
  padding: 0;
}
.quote-form .fieldset-legend {
  display: block;
  width: 100%;
  margin: 0 0 4px;
  padding: 0 0 8px;
  border-bottom: 1px solid var(--line-light);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted-on-light);
}
.quote-form .fieldset-hint {
  margin: 8px 0 0;
  font-size: 13px;
  color: var(--muted-on-light);
}
.quote-form .fields-2 {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 14px 16px;
  margin-top: 16px;
}
.quote-form .fields-2 .field-wide { grid-column: 1 / -1; }
.quote-form .fields-2 .field { min-width: 0; }
.quote-form select {
  width: 100%;
  min-height: 48px;
  padding: 0 38px 0 14px;
  border: 1px solid var(--line-light);
  border-radius: var(--radius-md);
  background-color: var(--white);
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6.5 8 10.5 12 6.5' stroke='%236a655c' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 13px center;
  background-size: 16px 16px;
  color: var(--ink);
  font-family: var(--sans);
  font-size: 15px;
  line-height: 1.3;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
}
.quote-form select:focus-visible {
  outline: 2px solid var(--ring);
  outline-offset: 2px;
}
.quote-form select.is-invalid { border-color: var(--danger); }
.quote-form .field-optional {
  margin-left: 6px;
  font-family: var(--mono);
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--faint-on-light);
}
@media (max-width: 640px) {
  .quote-form .fields-2 { grid-template-columns: 1fr; }
  .quote-form select { min-height: 52px; font-size: 16px; }
}

/* ==========================================================================
   ORDER PAD — one clean order form. Every dose SKU is a row with a stepper.
   Quantity above zero IS membership in the quote; no add button, no expanding.
   ========================================================================== */
.hs-catalog { margin-top: 4px; }

.op-group { margin: 0 0 34px; }
.op-group-title {
  display: flex;
  align-items: center;
  gap: 10px;
  margin: 0 0 12px;
  padding-bottom: 9px;
  border-bottom: 1px solid var(--line-light);
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--muted-on-light);
}
.op-group-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 20px;
  height: 20px;
  padding: 0 6px;
  border-radius: 999px;
  background: var(--sand);
  font-size: 10.5px;
  color: var(--muted-on-light);
}

/* One compound: name/blurb on the left, its dose rows on the right. */
.op-compound {
  display: grid;
  /* Name column is short now that blurbs are gone - don't let it hog width. */
  grid-template-columns: minmax(150px, 0.42fr) minmax(0, 1fr);
  gap: 10px 24px;
  align-items: start;
  padding: 16px 0;
  border-bottom: 1px solid rgba(216, 210, 198, 0.55);
}
.op-compound:last-child { border-bottom: 0; }
.op-compound.is-target {
  background: rgba(30, 63, 56, 0.045);
  border-radius: var(--radius-md);
  padding-left: 14px;
  padding-right: 14px;
}
.op-head { min-width: 0; }
.op-name {
  margin: 6px 0 0;
  font-family: var(--display);
  font-size: 17px;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--ink);
}
.op-skus { display: grid; gap: 8px; align-content: start; }

.op-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: 12px;
  padding: 7px 12px 7px 14px;
  border: 1px solid var(--line-light);
  border-radius: var(--radius-md);
  background: var(--white);
  transition: border-color 0.16s var(--ease), background 0.16s var(--ease);
}
.op-row.is-on {
  border-color: var(--teal);
  background: rgba(30, 63, 56, 0.045);
}
.op-dose {
  font-family: var(--mono);
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.op-row.is-on .op-dose { color: var(--teal); }
.op-unit {
  font-family: var(--mono);
  font-size: 10.5px;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--faint-on-light);
}

/* stepper */
.op-qty {
  display: inline-grid;
  grid-template-columns: 40px 68px 40px;
  align-items: center;
  border: 1px solid var(--line-light);
  border-radius: 999px;
  background: var(--white);
  overflow: hidden;
}
.op-row.is-on .op-qty { border-color: rgba(30, 63, 56, 0.4); }
.op-step {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  height: 40px;
  border: 0;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  transition: background 0.14s var(--ease);
  -webkit-tap-highlight-color: transparent;
}
.op-step svg { width: 15px; height: 15px; }
.op-step:disabled { color: var(--faint-on-light); cursor: default; }
.op-step:focus-visible { outline: 2px solid var(--ring); outline-offset: -2px; }
.op-input {
  height: 40px;
  width: 100%;
  min-width: 0;
  padding: 0 2px;
  border: 0;
  border-left: 1px solid var(--line-light);
  border-right: 1px solid var(--line-light);
  background: transparent;
  color: var(--ink);
  font-family: var(--sans);
  font-size: 14.5px;
  font-weight: 650;
  text-align: center;
  font-variant-numeric: tabular-nums;
  appearance: none;
  -moz-appearance: textfield;
}
.op-input::-webkit-outer-spin-button,
.op-input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.op-input:focus { outline: none; background: var(--white); }
.op-input:focus-visible { outline: 2px solid var(--ring); outline-offset: -2px; }
.op-row:not(.is-on) .op-input { color: var(--faint-on-light); font-weight: 500; }

.op-empty {
  margin: 26px 0;
  font-size: 15px;
  color: var(--muted-on-light);
}
.op-reset {
  border: 0;
  background: none;
  padding: 0;
  color: var(--teal);
  font: inherit;
  font-weight: 650;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

/* filter chips */
.op-chip {
  display: inline-flex;
  align-items: center;
  min-height: 40px;
  padding: 0 15px;
  border: 1px solid var(--line-light);
  border-radius: 999px;
  background: var(--white);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 13.5px;
  font-weight: 550;
  white-space: nowrap;
  cursor: pointer;
  transition: background 0.16s var(--ease), border-color 0.16s var(--ease), color 0.16s var(--ease);
  -webkit-tap-highlight-color: transparent;
}
.op-chip.is-on {
  background: var(--ink-true);
  border-color: var(--ink-true);
  color: var(--ink-fg);
}
.op-chip:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }

@media (hover: hover) {
  .op-row:hover { border-color: rgba(30, 63, 56, 0.35); }
  .op-step:hover:not(:disabled) { background: rgba(30, 63, 56, 0.07); }
  .op-chip:hover:not(.is-on) { border-color: rgba(30, 63, 56, 0.45); color: var(--teal); }
}

/* Tablet: stack the compound header above its rows. */
@media (max-width: 900px) {
  .op-compound { grid-template-columns: 1fr; gap: 12px; }
  }

/* Mobile: full-width rows, larger targets. */
@media (max-width: 640px) {
  .op-compound { padding: 18px 0; }
  .op-name { font-size: 16.5px; }
  .op-row {
    grid-template-columns: 1fr auto;
    gap: 8px 10px;
    padding: 10px 12px;
  }
  .op-unit { display: none; }
  .op-qty { grid-template-columns: 46px 72px 46px; }
  .op-step { height: 46px; }
  .op-input { height: 46px; font-size: 16px; }
  .op-chip { min-height: 44px; }
}

/* ==========================================================================
   TRUST BAR — sits directly under the hero. Animates only when it overflows,
   which in practice means mobile; desktop shows all five statically.
   ========================================================================== */
.trust-bar {
  border-top: 1px solid var(--line-light);
  border-bottom: 1px solid var(--line-light);
  background: var(--sand);
  overflow: hidden;
}
.trust-viewport {
  display: flex;
  width: 100%;
}
.trust-track {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 34px;
  flex: 1 0 100%;
  min-width: 100%;
  margin: 0;
  padding: 0 clamp(16px, 5vw, 48px);
  list-style: none;
  height: 62px;
}
/* second copy only exists to make the marquee seamless */
.trust-track[aria-hidden="true"] { display: none; }

.trust-item {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  white-space: nowrap;
  font-family: var(--mono);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--ink);
}
.trust-icon {
  width: 19px;
  height: 19px;
  flex: 0 0 auto;
  color: var(--teal);
}

/* Below the point where five items stop fitting, scroll them. */
@media (max-width: 1000px) {
  .trust-track {
    justify-content: flex-start;
    gap: 30px;
    flex: 0 0 auto;
    min-width: max-content;
    padding: 0 15px;
    animation: trust-marquee 18s linear infinite;
  }
  .trust-track[aria-hidden="true"] { display: flex; }
  .trust-viewport { width: max-content; }
  /* Pause on hover AND on touch so the text can actually be read. */
  .trust-bar:hover .trust-track,
  .trust-bar:active .trust-track { animation-play-state: paused; }
  /* Fade the edges so items read as scrolling past rather than clipped
     mid-word at the screen edge. */
  .trust-bar {
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 26px, #000 calc(100% - 26px), transparent 100%);
    mask-image: linear-gradient(to right, transparent 0, #000 26px, #000 calc(100% - 26px), transparent 100%);
  }
}
@keyframes trust-marquee {
  from { transform: translate3d(0, 0, 0); }
  to   { transform: translate3d(-100%, 0, 0); }
}
@media (prefers-reduced-motion: reduce) {
  .trust-track { animation: none !important; }
  @media (max-width: 1000px) {
    .trust-viewport { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .trust-track[aria-hidden="true"] { display: none; }
  }
}
@media (max-width: 640px) {
  .trust-track { height: 56px; gap: 26px; }
  .trust-item { font-size: 10.5px; }
}

/* ==========================================================================
   STICKY QUOTE BAR — the whole navigation model for the flow.
   Request Quote -> Confirm Details -> Submit Quote.
   (Supersedes the old "never a sticky bottom bar" guard, by owner decision.)
   ========================================================================== */
.qbar {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  z-index: 300;
  padding: 10px clamp(12px, 4vw, 28px) calc(10px + env(safe-area-inset-bottom, 0px));
  background: rgba(255, 252, 248, 0.94);
  backdrop-filter: saturate(1.4) blur(12px);
  -webkit-backdrop-filter: saturate(1.4) blur(12px);
  border-top: 1px solid var(--line-light);
  box-shadow: 0 -6px 24px rgba(22, 21, 19, 0.07);
}
.qbar-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  max-width: var(--wide);
  margin: 0 auto;
}
.qbar-meta {
  display: flex;
  align-items: baseline;
  gap: 9px;
  margin: 0;
  min-width: 0;
  font-family: var(--sans);
  font-size: 14px;
  color: var(--muted-on-light);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.qbar-meta strong {
  font-size: 15px;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.qbar-cta {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  flex: 0 0 auto;
  min-height: 50px;
  padding: 0 24px;
  border: 0;
  border-radius: 999px;
  background: var(--teal);
  color: var(--ink-fg);
  font-family: var(--sans);
  font-size: 15px;
  font-weight: 650;
  letter-spacing: -0.01em;
  cursor: pointer;
  transition: background 0.16s var(--ease), transform 0.16s var(--ease);
  -webkit-tap-highlight-color: transparent;
}
.qbar-cta svg { width: 16px; height: 16px; }
.qbar-cta:disabled { opacity: 0.65; cursor: default; }
.qbar-cta:focus-visible { outline: 2px solid var(--ring); outline-offset: 3px; }
.qbar[data-stage="confirm"] .qbar-cta { background: var(--ink-true); }
.qbar-error {
  max-width: var(--wide);
  margin: 6px auto 0;
  font-size: 13px;
  color: var(--danger);
}
.qbar-error:empty { display: none; }
@media (hover: hover) {
  .qbar-cta:hover:not(:disabled) { background: var(--teal-hover); }
}
/* keep the last of the page clear of the bar */
body.has-qbar .site-footer { padding-bottom: 92px; }
@media (max-width: 640px) {
  .qbar-inner { gap: 10px; }
  .qbar-meta { font-size: 12.5px; }
  .qbar-meta strong { font-size: 13.5px; }
  .qbar-cta { min-height: 52px; padding: 0 18px; font-size: 14.5px; }
}
@media (max-width: 380px) {
  .qbar-meta span { display: none; }
}

/* ==========================================================================
   DETAILS + CONFIRM + SENT — the second half of the single-page flow
   ========================================================================== */
.details { padding: clamp(36px, 6vw, 68px) 0 40px; background: var(--paper); }
.details-inner { max-width: 780px; }
.details-head { margin-bottom: 22px; }
.details-head h2 {
  margin: 6px 0 8px;
  font-family: var(--display);
  font-size: clamp(1.6rem, 4.2vw, 2.3rem);
  letter-spacing: -0.03em;
  color: var(--ink);
}
.details-lead { margin: 0; color: var(--muted-on-light); font-size: 15px; line-height: 1.5; }

/* One-line basket. Deliberately NOT a second editable list. */
.details-basket {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 26px;
  padding: 13px 16px;
  border: 1px solid var(--line-light);
  border-radius: var(--radius-md);
  background: var(--sand);
}
.details-basket-line {
  display: flex;
  align-items: baseline;
  gap: 9px;
  margin: 0;
  font-size: 14.5px;
  color: var(--muted-on-light);
}
.details-basket-line strong {
  font-size: 15.5px;
  font-weight: 700;
  color: var(--ink);
  font-variant-numeric: tabular-nums;
}
.details-basket-edit {
  border: 0;
  background: none;
  padding: 0;
  color: var(--teal);
  font: inherit;
  font-size: 14px;
  font-weight: 650;
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
}

.details-confirm {
  margin-top: 30px;
  padding: 20px 22px;
  border: 1px solid var(--teal);
  border-radius: var(--radius-lg);
  background: rgba(30, 63, 56, 0.04);
}
.details-confirm-title {
  margin: 0 0 14px;
  font-family: var(--display);
  font-size: 17px;
  color: var(--ink);
}
.details-confirm-list { margin: 0; display: grid; gap: 9px; }
.details-confirm-list > div {
  display: grid;
  grid-template-columns: 150px minmax(0, 1fr);
  gap: 12px;
  align-items: baseline;
}
.details-confirm-list dt {
  font-family: var(--mono);
  font-size: 10.5px;
  font-weight: 600;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--muted-on-light);
}
.details-confirm-list dd { margin: 0; font-size: 14.5px; color: var(--ink); }

.sent { padding: clamp(50px, 9vw, 96px) 0; background: var(--ink-true); color: var(--ink-fg); }
.sent-inner { max-width: 620px; text-align: center; }
.sent h2 {
  margin: 0 0 10px;
  font-family: var(--display);
  font-size: clamp(1.8rem, 5vw, 2.6rem);
  letter-spacing: -0.03em;
  color: var(--ink-fg);
  outline: none;
}
.sent p { color: var(--muted-on-dark); font-size: 16px; }
.sent-actions { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 24px; }
.sent .preview {
  margin-top: 20px;
  padding: 16px;
  border-radius: var(--radius-md);
  background: rgba(247, 245, 240, 0.06);
  color: var(--ink-fg);
  font-family: var(--mono);
  font-size: 12px;
  text-align: left;
  white-space: pre-wrap;
  overflow-x: auto;
}
@media (max-width: 640px) {
  .details-confirm-list > div { grid-template-columns: 1fr; gap: 2px; }
  .details-basket { flex-direction: column; align-items: flex-start; gap: 8px; }
}

/* ==========================================================================
   RUO WAIVER — collapsed by default so the form does not grow by six
   paragraphs; expands in place (no modal). "I Agree" replaces the old checkbox
   and gates Confirm Details exactly as the checkbox did.
   ========================================================================== */
.waiver {
  display: block;
  margin-top: 8px;
  padding: 18px 20px;
  border: 1px solid var(--line-light);
  border-radius: var(--radius-lg);
  background: var(--white);
  transition: border-color 0.18s var(--ease), background 0.18s var(--ease);
}
.waiver.is-agreed { border-color: var(--teal); background: rgba(30, 63, 56, 0.04); }
.waiver-flag { position: absolute; opacity: 0; pointer-events: none; width: 1px; height: 1px; }

.waiver-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.waiver-head-text { min-width: 0; }
.waiver-title {
  margin: 0;
  font-family: var(--display);
  font-size: 15.5px;
  font-weight: 600;
  letter-spacing: -0.015em;
  color: var(--ink);
}
.waiver-sub { margin: 4px 0 0; font-size: 13px; color: var(--muted-on-light); }
.waiver.is-agreed .waiver-sub { color: var(--teal); }

.waiver-toggle {
  flex: 0 0 auto;
  min-height: 40px;
  padding: 0 15px;
  border: 1px solid var(--line-light);
  border-radius: 999px;
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 13.5px;
  font-weight: 600;
  cursor: pointer;
  transition: border-color 0.16s var(--ease), color 0.16s var(--ease);
}
.waiver-toggle:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }

.waiver-body {
  margin-top: 16px;
  padding: 16px 18px;
  max-height: 340px;
  overflow-y: auto;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
  border: 1px solid var(--line-light);
  border-radius: var(--radius-md);
  background: var(--paper);
}
.waiver-intro { margin: 0 0 12px; font-size: 13.5px; line-height: 1.6; color: var(--ink); }
.waiver-terms { margin: 0; padding-left: 20px; display: grid; gap: 11px; }
.waiver-terms li { font-size: 13px; line-height: 1.6; color: var(--muted-on-light); }
.waiver-terms strong { color: var(--ink); }

.waiver-foot {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-top: 16px;
}
.waiver-agree {
  display: inline-flex;
  align-items: center;
  gap: 9px;
  min-height: 48px;
  padding: 0 22px;
  border: 1px solid var(--teal);
  border-radius: 999px;
  background: var(--white);
  color: var(--teal);
  font-family: var(--sans);
  font-size: 14.5px;
  font-weight: 650;
  cursor: pointer;
  transition: background 0.16s var(--ease), color 0.16s var(--ease);
  -webkit-tap-highlight-color: transparent;
}
.waiver-agree-tick {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 18px;
  height: 18px;
  border: 1.5px solid currentColor;
  border-radius: 50%;
  opacity: 0.4;
}
.waiver-agree-tick svg { width: 11px; height: 11px; }
.waiver.is-agreed .waiver-agree { background: var(--teal); color: var(--ink-fg); }
.waiver.is-agreed .waiver-agree-tick { opacity: 1; border-color: currentColor; }
.waiver-agree:focus-visible { outline: 2px solid var(--ring); outline-offset: 3px; }
.waiver-stamp {
  margin: 0;
  font-family: var(--mono);
  font-size: 11px;
  letter-spacing: 0.04em;
  color: var(--muted-on-light);
}
@media (hover: hover) {
  .waiver-toggle:hover { border-color: rgba(30, 63, 56, 0.45); color: var(--teal); }
  .waiver-agree:hover { background: var(--teal); color: var(--ink-fg); }
  .waiver.is-agreed .waiver-agree:hover { background: var(--teal-hover); }
}
@media (max-width: 640px) {
  .waiver { padding: 16px; }
  .waiver-head { flex-direction: column; gap: 12px; }
  .waiver-toggle { width: 100%; min-height: 44px; }
  .waiver-body { max-height: 300px; padding: 14px; }
  .waiver-agree { width: 100%; justify-content: center; min-height: 52px; }
}

/* Hero supporting line — the manufacturing detail. Deliberately a step down
   from .lede so the hero keeps a clear reading order. */
.lede-support {
  margin: 12px 0 0;
  max-width: 56ch;
  font-size: clamp(0.86rem, 1.7vw, 0.95rem);
  line-height: 1.6;
  color: var(--muted-on-light);
}
@media (max-width: 640px) {
  .lede-support { font-size: 0.88rem; line-height: 1.62; }
}

/* ==========================================================================
   Mobile hero vial — whole vial, larger, tight to the header, no floor shadow.
   The vial is sized by WIDTH elsewhere, which overflowed a 160px stage with
   overflow:hidden and cropped it to a middle band. Small screens constrain by
   HEIGHT and let the stage hug its content. The <picture> wrapper must be
   constrained too or it keeps its old box and holds dead space underneath.
   ========================================================================== */
@media (max-width: 733px) {
  .page-home .hero { padding-top: 12px; }
  .page-home .hero-stage {
    height: auto;
    min-height: 0;
    overflow: visible;
    padding: 0;
  }
  .page-home .hero-stage .vial-float,
  .page-home .hero-stage .vial-hero {
    width: auto;
    height: auto;
    max-width: 100%;
    overflow: visible;
    line-height: 0;
  }
  .page-home .hero-stage .vial-hero picture {
    display: block;
    width: auto;
    height: auto;
    line-height: 0;
  }
  .page-home .hero-stage .vial-hero img {
    display: block;
    width: auto;
    height: auto;
    max-height: min(46vh, 400px);
    max-width: 90vw;
    object-fit: contain;
    margin: 0 auto;
  }
  /* Drop the elliptical floor shadow on mobile - it read as a smudge under the
     vial. The vial keeps its own drop-shadow filter for depth. */
  .page-home .hero-stage .vial-shadow { display: none; }
}
@media (max-width: 420px) {
  .page-home .hero-stage .vial-hero img {
    max-height: min(42vh, 350px);
    max-width: 86vw;
  }
}

/* ==========================================================================
   Sent screen sits on dark pine, so anything inheriting light-surface button
   styles goes invisible. .btn-ghost hard-sets color:var(--ink) with
   !important, and .btn-ghost-dark does the same despite its name, so both
   need overriding here. Scoped to .sent so nothing else is affected.
   ========================================================================== */
.sent .btn-ghost {
  background: transparent !important;
  color: var(--ink-fg) !important;
  border: 1px solid rgba(247, 245, 240, 0.42) !important;
  box-shadow: none !important;
}
@media (hover: hover) {
  .sent .btn-ghost:hover {
    background: rgba(247, 245, 240, 0.10) !important;
    border-color: rgba(247, 245, 240, 0.72) !important;
    color: var(--ink-fg) !important;
  }
}
.sent .btn-ghost:focus-visible {
  outline: 2px solid var(--ink-fg);
  outline-offset: 3px;
}
/* status line under the actions is muted-on-light by default */
.sent .form-hint { color: var(--muted-on-dark); }
