/* ============================================================================
   footprint-lab.com — V2 Design System  ("Cobalt" direction)
   ----------------------------------------------------------------------------
   Dark zinc base, gradient-clipped headings, glass cards on 1px white rings,
   radial hero glow, aurora blooms, glowing cyan hairlines, pill buttons.
   Visual language modeled on joincobalt.com; brand tokens (accent blue,
   buy/sell/signal colors, mono details) carry over from v1.

   Same class taxonomy as v1 — pages keep their HTML skeleton; the entire
   redesign lives in this file. Everything inherits from the tokens in :root.
   ========================================================================== */

/* Fonts are loaded via a <link> in each page's <head> (prototype) and enqueued
   from functions.php (live theme). No @import here — it would render-block CSS
   parsing and double-load the families that the <link>/enqueue already fetch. */

/* ----------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root {
  /* Surfaces — zinc scale, Cobalt-style near-black */
  --bg:            #09090b;   /* page base (zinc-950)                        */
  --surface:       #0d0d11;   /* alternating section backgrounds             */
  --card:          rgba(24, 24, 27, .55);   /* glass card (zinc-900/55)      */
  --card-solid:    #131316;   /* opaque card where translucency would stack  */
  --card-2:        rgba(39, 39, 42, .55);   /* nested / hover surface        */

  /* Lines — Cobalt ring-white/10 */
  --border:        rgba(244, 244, 245, .09);
  --border-hover:  rgba(244, 244, 245, .20);

  /* Text — zinc scale */
  --text:          #f4f4f5;   /* headings, key text (zinc-100)               */
  --text-2:        #a1a1aa;   /* body (zinc-400)                             */
  --text-3:        #86868f;   /* captions, meta, footer — WCAG AA (5.2:1)    */

  /* Accent — brand electric blue, pushed toward Cobalt sky/cyan */
  --accent:        #1f8fe6;   /* fills (buttons)                             */
  --accent-2:      #38bdf8;   /* sky-400 — gradient partner                  */
  --cyan:          #22d3ee;   /* hairlines, dots, waterline                  */
  --accent-text:   #5cb6f7;   /* links / inline accents                      */
  --accent-weak:   rgba(56, 189, 248, .10);
  --accent-line:   rgba(56, 189, 248, .32);
  --violet:        #9089fc;   /* aurora partner                              */

  /* Signal — the indicator's OUTPUT marker (amber) */
  --signal:        #e8b04b;
  --signal-weak:   rgba(232, 176, 75, .10);
  --signal-line:   rgba(232, 176, 75, .38);

  /* Footprint raw data — reserved for bid/ask only */
  --sell:          #e2574c;   --sell-text: #f0a6a0;
  --buy:           #46b17b;   --buy-text:  #86d3a8;
  --sell-weak:     rgba(226, 87, 76, .14);
  --buy-weak:      rgba(70, 177, 123, .14);

  /* Type */
  --font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-mono: "JetBrains Mono", ui-monospace, "SF Mono", "Cascadia Code", Menlo, monospace;

  /* Radius — Cobalt rounds everything up */
  --r-sm:   10px;
  --r:      16px;
  --r-lg:   20px;
  --r-xl:   24px;
  --r-pill: 999px;

  /* Layout — max-w-7xl feel */
  --container: 1216px;
  --gutter:    24px;
  --header-h:  64px;

  /* Motion */
  --ease: cubic-bezier(.2, .7, .2, 1);
}

/* ----------------------------------------------------------------------------
   2. Reset / base
   -------------------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }

html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}

body {
  font-family: var(--font-sans);
  font-size: 16px;
  line-height: 1.6;
  color: var(--text-2);
  background: var(--bg);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  /* NOTE: do NOT put overflow-x here — it turns <body> into a scroll container
     and breaks the sticky header (esp. under WP's template-part <div> wrapper). */
}

/* Contain the .reveal--left/right slide-in overflow on the CONTENT element,
   not <body>. The sticky header sits OUTSIDE <main>, so clipping here can't
   affect it; `clip` (unlike hidden) creates no scroll container. */
main { overflow-x: clip; }

img, svg, video { display: block; max-width: 100%; }
/* Images now carry native width/height attributes (reserves space → no layout
   shift / better CLS). height:auto keeps content images undistorted when width
   is constrained; object-fit-framed images set both dims explicitly and win. */
img { height: auto; }
a { color: var(--accent-text); text-decoration: none; transition: color .15s var(--ease); }
a:hover { color: var(--text); }
button { font-family: inherit; }
::selection { background: #67e8f9; color: #155e75; }   /* cyan-300 / cyan-800 */

/* Keyboard focus — one consistent, on-brand ring across every control. */
:focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; }

/* Skip-to-content — visually hidden until focused (first tab stop). */
.skip-link {
  position: absolute; left: 12px; top: -60px; z-index: 100;
  background: var(--accent); color: #fff;
  padding: 10px 16px; border-radius: var(--r-sm);
  font-weight: 600; font-size: .9rem;
  transition: top .18s var(--ease);
}
.skip-link:focus { top: 12px; color: #fff; }

/* Screen-reader-only utility (headings that keep the outline complete). */
.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ----------------------------------------------------------------------------
   3. Typography — gradient-clipped display headings (the Cobalt signature)
   -------------------------------------------------------------------------- */
h1, h2 {
  font-weight: 700;
  line-height: 1.07;
  letter-spacing: -0.03em;
  color: var(--text);                          /* fallback */
  background: linear-gradient(135deg, #ffffff 30%, #9d9da6 110%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
h2 { background: linear-gradient(135deg, #f4f4f5 25%, #7a7a84 120%); -webkit-background-clip: text; background-clip: text; }
h3, h4 {
  color: var(--text);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -0.015em;
}
h1 { font-size: clamp(2.5rem, 1.6rem + 3.6vw, 4rem); }
h2 { font-size: clamp(1.7rem, 1.3rem + 1.8vw, 2.4rem); }
h3 { font-size: 1.125rem; }
p  { color: var(--text-2); }

/* Payoff phrase — blue→cyan gradient inside the gradient heading */
.accent,
h1 .accent, h2 .accent {
  background: linear-gradient(92deg, #6cc0ff 0%, #3ddad0 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  color: transparent;
}
/* Standalone .accent outside headings (rare) keeps link-blue */
p .accent, span.accent { color: var(--accent-text); }
p .accent { background: none; -webkit-text-fill-color: currentColor; }

.lead { font-size: 1.15rem; line-height: 1.65; color: var(--text-2); max-width: 52ch; }

/* ----------------------------------------------------------------------------
   4. Layout primitives
   -------------------------------------------------------------------------- */
.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: var(--gutter);
}
.section { padding-block: clamp(64px, 9vw, 120px); }
.section--surface {
  background: var(--surface);
  border-top: 1px solid rgba(244, 244, 245, .05);
  border-bottom: 1px solid rgba(244, 244, 245, .05);
}
.section--tight { padding-block: clamp(36px, 5vw, 64px); }

.eyebrow-group { margin-bottom: 20px; }
.section-head { max-width: 56ch; margin-bottom: 44px; }
.section-head p { margin-top: 12px; }

.grid { display: grid; gap: 20px; }
.center { text-align: center; margin-inline: auto; }

/* Aurora — blurred gradient blooms (add <div class="aurora" aria-hidden="true">
   inside any position:relative section that deserves atmosphere). */
.aurora { position: absolute; inset: 0; pointer-events: none; overflow: hidden; z-index: 0; }
.aurora::before,
.aurora::after {
  content: "";
  position: absolute;
  border-radius: 50%;
  filter: blur(90px);
  opacity: .35;
}
.aurora::before {
  top: -160px; left: 12%;
  width: 560px; height: 420px;
  background: linear-gradient(100deg, rgba(31, 143, 230, .55), rgba(144, 137, 252, .35));
  transform: rotate(-12deg);
}
.aurora::after {
  top: 30%; right: -140px;
  width: 480px; height: 380px;
  background: linear-gradient(240deg, rgba(34, 211, 238, .35), rgba(144, 137, 252, .28));
  transform: rotate(18deg);
}

/* Glowing hairline — Cobalt's from-cyan/0 via-cyan to-cyan/0 line */
.glow-line {
  height: 1px;
  background: linear-gradient(90deg, rgba(34, 211, 238, 0), rgba(34, 211, 238, .8), rgba(34, 211, 238, 0));
}

/* ----------------------------------------------------------------------------
   5. Components
   -------------------------------------------------------------------------- */

/* Eyebrow pill — Cobalt badge: zinc-950 pill on a white/10 ring */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-mono);
  font-size: .72rem;
  font-weight: 500;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #d4d4d8;
  background: rgba(9, 9, 11, .75);
  border: 1px solid rgba(244, 244, 245, .12);
  padding: 7px 14px;
  border-radius: var(--r-pill);
  box-shadow: 0 0 22px -8px rgba(56, 189, 248, .45), inset 0 1px 0 rgba(255, 255, 255, .04);
}
.eyebrow .dot {
  width: 5px; height: 5px; border-radius: 50%;
  background: var(--cyan);
  box-shadow: 0 0 8px 1px rgba(34, 211, 238, .8);
}
.eyebrow .atas-logo {
  height: 18px; width: auto;
  display: inline-block; vertical-align: middle; margin-top: -2px;
}

/* Buttons — pill-shaped, glowing primary */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 8px;
  font-size: .95rem;
  font-weight: 600;
  line-height: 1;
  padding: 14px 26px;
  border-radius: var(--r-pill);
  border: 1px solid transparent;
  cursor: pointer;
  transition: background .15s var(--ease), border-color .15s var(--ease), color .15s var(--ease), box-shadow .2s var(--ease), transform .05s var(--ease);
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
/* Deeper blue than the accent so white text clears WCAG AA 4.5:1
   (top #2278c4 = 4.6:1, bottom #175f9f = 6.6:1). Glow keeps it electric. */
.btn-primary {
  background: linear-gradient(180deg, #2278c4 0%, #175f9f 100%);
  color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .22),
              0 0 0 1px rgba(56, 189, 248, .3),
              0 8px 28px -8px rgba(31, 143, 230, .7);
}
.btn-primary:hover {
  background: linear-gradient(180deg, #1f6fb5 0%, #14568f 100%);
  color: #fff;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .26),
              0 0 0 1px rgba(56, 189, 248, .55),
              0 14px 40px -8px rgba(31, 143, 230, 1);
}
.btn-secondary {
  background: rgba(244, 244, 245, .06);
  color: var(--text);
  border-color: rgba(244, 244, 245, .14);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.btn-secondary:hover { border-color: rgba(244, 244, 245, .3); background: rgba(244, 244, 245, .1); color: var(--text); }
.btn-sm { padding: 9px 16px; font-size: .85rem; }
.btn .arrow { transition: transform .15s var(--ease); }
.btn:hover .arrow { transform: translateX(3px); }

/* Buy button — transactional, accent-outlined glass */
.btn-buy {
  background: rgba(56, 189, 248, .08);
  color: var(--accent-text);
  border-color: var(--accent-line);
}
.btn-buy:hover {
  background: rgba(56, 189, 248, .15);
  border-color: var(--accent-2);
  color: var(--text);
  box-shadow: 0 0 24px -6px rgba(56, 189, 248, .5);
}

/* Card — glass on a white ring */
.card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 24px;
  transition: border-color .15s var(--ease), background .15s var(--ease), transform .15s var(--ease), box-shadow .2s var(--ease);
}
.card--hover:hover {
  border-color: var(--border-hover);
  transform: translateY(-2px);
  box-shadow: 0 20px 50px -24px rgba(31, 143, 230, .35);
}

/* Tag pill */
.tag {
  display: inline-block;
  font-family: var(--font-mono);
  font-size: .68rem;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--text-2);
  border: 1px solid var(--border);
  border-radius: var(--r-pill);
  padding: 4px 10px;
}

/* Meta pills row */
.meta-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.meta-pill {
  font-family: var(--font-mono);
  font-size: .72rem;
  color: var(--text-2);
  background: rgba(24, 24, 27, .6);
  border: 1px solid var(--border);
  border-radius: var(--r-pill);
  padding: 6px 12px;
}

/* Trust checkmarks row */
.trust-row {
  display: flex;
  flex-wrap: wrap;
  gap: 18px 24px;
  margin-top: 28px;
}
.trust-item {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-size: .9rem;
  color: var(--text-2);
}
.trust-item svg { color: var(--buy); flex-shrink: 0; }

/* ----------------------------------------------------------------------------
   6. Header — floating glass bar
   -------------------------------------------------------------------------- */

/* WordPress renders each template part (header, footer) inside a block-level
   <div class="wp-block-template-part">. That wrapper is only as tall as the
   header, so it traps position:sticky inside its own height and the header
   scrolls away. Dissolving the wrapper boxes lets the header stick against the
   page scroll. Harmless in the static prototype (no such wrapper exists). */
.wp-block-template-part { display: contents; }

.site-header {
  position: sticky;
  top: 0;
  z-index: 50;
  background: rgba(9, 9, 11, .65);
  backdrop-filter: saturate(150%) blur(16px);
  -webkit-backdrop-filter: saturate(150%) blur(16px);
  border-bottom: 1px solid transparent;
  transition: border-color .2s var(--ease), background .2s var(--ease);
}
.site-header.is-scrolled { border-bottom-color: rgba(244, 244, 245, .07); background: rgba(9, 9, 11, .8); }
.site-header__inner {
  display: flex;
  align-items: center;
  gap: 24px;
  height: var(--header-h);
}
.brand { display: inline-flex; align-items: center; gap: 10px; color: var(--text); font-weight: 600; letter-spacing: -.01em; }
.brand:hover { color: var(--text); }
.brand__mark { width: 26px; height: 26px; flex-shrink: 0; }
.brand b { font-weight: 600; }

.nav { display: flex; align-items: center; gap: 28px; margin-left: 8px; }
.nav a { color: var(--text-2); font-size: .92rem; font-weight: 500; }
.nav a:hover { color: var(--text); }

.header-actions { display: flex; align-items: center; gap: 18px; margin-left: auto; }
.sierra-link {
  font-size: .88rem;
  color: var(--text-3);
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.sierra-link:hover { color: var(--text-2); }

.nav-toggle { display: none; background: none; border: 0; color: var(--text); cursor: pointer; padding: 8px; }

.cart-link { display: inline-flex; align-items: center; color: var(--text-2); padding: 6px; position: relative; }
.cart-link:hover { color: var(--text); }

/* cart badge — items-in-cart count, filled by main.js from the Store API */
.cart-count {
  position: absolute; top: -3px; right: -4px;
  min-width: 17px; height: 17px;
  padding: 0 4px;
  display: grid; place-items: center;
  font-family: var(--font-mono); font-size: .6rem; font-weight: 500; line-height: 1;
  color: #fff;
  background: linear-gradient(180deg, #2278c4 0%, #175f9f 100%);
  border: 2px solid var(--bg);
  border-radius: var(--r-pill);
  box-shadow: 0 0 10px -2px rgba(56, 189, 248, .65);
}
.cart-count[hidden] { display: none; }

/* On narrow screens the header row overflows and flexbox crushes the
   shrinkable icon-only controls (cart, burger) to zero width — the icons
   vanish while the absolutely-positioned badge stays. Pin their size. */
.cart-link, .nav-toggle { flex-shrink: 0; }
.cart-link svg, .nav-toggle svg { max-width: none; }

/* ----------------------------------------------------------------------------
   7. Hero — centered, under a Cobalt sky: top radial glow + masked grid
   -------------------------------------------------------------------------- */
.hero { padding-block: clamp(64px, 8vw, 110px) clamp(48px, 7vw, 88px); position: relative; overflow: hidden; }

/* the big blue dawn — Cobalt's radial-gradient(80% 50% at 50% -20%) */
.hero::before {
  content: "";
  position: absolute; inset: 0;
  background: radial-gradient(80% 55% at 50% -22%, rgba(89, 170, 239, .34), rgba(9, 9, 11, 0) 70%);
  pointer-events: none; z-index: 0;
}
/* faint chart grid, fading out radially from the top center */
.hero::after {
  content: "";
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, .035) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, .035) 1px, transparent 1px);
  background-size: 56px 56px;
  -webkit-mask-image: radial-gradient(75% 55% at 50% 0%, black, transparent 82%),
                      radial-gradient(60% 42% at 50% 60%, rgba(0, 0, 0, .85), transparent 74%);
  mask-image: radial-gradient(75% 55% at 50% 0%, black, transparent 82%),
              radial-gradient(60% 42% at 50% 60%, rgba(0, 0, 0, .85), transparent 74%);
  pointer-events: none; z-index: 0;
}
.hero .container { position: relative; z-index: 1; }

/* centered intro (Cobalt hero) */
.hero__intro { max-width: 860px; margin-inline: auto; text-align: center; }
.hero__intro .lead { margin-inline: auto; }
.hero h1 { margin-top: 22px; }
.hero .lead { margin-top: 22px; font-size: 1.2rem; }
.hero__cta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 32px; justify-content: center; }
.hero__intro .trust-row { justify-content: center; }

/* legacy split-hero support (subpages that kept the 2-col hero) */
.hero__grid {
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: clamp(32px, 5vw, 64px);
  align-items: center;
}
.hero__grid .hero__intro { text-align: left; margin-inline: 0; }
.hero__top {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: clamp(32px, 5vw, 72px);
  align-items: center;
}

/* ----------------------------------------------------------------------------
   8. Footprint visual (proof element) — kept for pages that draw the cluster
   -------------------------------------------------------------------------- */
.product-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 20px;
  position: relative;
}
.product-card__head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.product-card__title { display: flex; align-items: center; gap: 10px; }
.product-card__title .name { color: var(--text); font-weight: 500; font-size: .98rem; }
.product-card__dot { width: 8px; height: 8px; border-radius: 50%; background: var(--buy); }
.product-card__foot {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 16px; font-size: .85rem; color: var(--text-3);
}
.product-card__price { color: var(--text); font-family: var(--font-mono); }

.footprint {
  display: flex;
  gap: 6px;
  background: rgba(9, 9, 11, .8);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 14px;
  font-family: var(--font-mono);
  font-size: .72rem;
  overflow: hidden;
}
.fp-col { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 0; }
.fp-axis { color: var(--text-3); }
.fp-cell {
  display: flex; justify-content: space-between; gap: 8px;
  padding: 4px 7px; border-radius: 5px;
  border: 1px solid transparent; white-space: nowrap;
}
.fp-cell .bid { color: var(--sell-text); }
.fp-cell .ask { color: var(--buy-text); }
.fp-cell.buy  { background: var(--buy-weak); }
.fp-cell.sell { background: var(--sell-weak); }
.fp-cell.imb  { border-color: var(--signal-line); }

.signal-callout {
  position: absolute;
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--font-mono); font-size: .74rem;
  color: var(--signal);
  background: rgba(9, 9, 11, .9);
  border: 1px solid var(--signal-line);
  border-radius: var(--r-pill);
  padding: 7px 13px;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .45), 0 0 18px -6px rgba(232, 176, 75, .5);
}
.signal-callout svg { color: var(--signal); }
.signal-callout--tr { top: 64px; right: -10px; }

/* ----------------------------------------------------------------------------
   9. Footprint ribbon
   -------------------------------------------------------------------------- */
.ribbon {
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}
.ribbon__track { display: flex; gap: 0; overflow-x: auto; scrollbar-width: none; }
.ribbon__track::-webkit-scrollbar { display: none; }
.ribbon-cell {
  flex: 1 0 auto; min-width: 150px;
  padding: 16px 20px;
  border-right: 1px solid var(--border);
  font-family: var(--font-mono); font-size: .8rem;
  display: flex; flex-direction: column; gap: 4px;
}
.ribbon-cell:last-child { border-right: 0; }
.ribbon-cell .px { color: var(--text-3); font-size: .72rem; }
.ribbon-cell .ba { color: var(--text); }
.ribbon-cell .ba .b { color: var(--sell-text); }
.ribbon-cell .ba .a { color: var(--buy-text); }
.ribbon-cell .delta.pos { color: var(--buy-text); }
.ribbon-cell .delta.neg { color: var(--sell-text); }

/* ----------------------------------------------------------------------------
   10. Stat band
   -------------------------------------------------------------------------- */
.stat-band {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 1px; background: var(--border);
  border: 1px solid var(--border); border-radius: var(--r); overflow: hidden;
}
.stat { background: var(--surface); padding: 28px 24px; text-align: center; }
.stat .num { font-family: var(--font-mono); font-size: clamp(1.6rem, 1.2rem + 1.5vw, 2.2rem); color: var(--accent-text); line-height: 1; }
.stat .label { margin-top: 10px; font-size: .85rem; color: var(--text-2); }

/* ----------------------------------------------------------------------------
   11. Indicator card grid (generic)
   -------------------------------------------------------------------------- */
.indicator-grid { grid-template-columns: repeat(3, 1fr); }
.indicator-card { display: flex; flex-direction: column; gap: 14px; height: 100%; }
.indicator-card__icon {
  width: 40px; height: 40px;
  display: grid; place-items: center;
  background: rgba(24, 24, 27, .7);
  border: 1px solid var(--border);
  border-radius: var(--r-sm);
  color: var(--accent-text);
}
.indicator-card__top { display: flex; align-items: center; justify-content: space-between; }
.indicator-card h3 { color: var(--text); }
.indicator-card p { font-size: .92rem; }
.indicator-card__foot {
  margin-top: auto; padding-top: 8px;
  display: flex; align-items: center; justify-content: space-between;
  font-family: var(--font-mono); font-size: .85rem; color: var(--text-2);
}
.indicator-card__foot .price { color: var(--text); }

.pack-card {
  grid-column: 1 / -1;
  border: 1px solid transparent;
  background:
    linear-gradient(var(--card-solid), var(--card-solid)) padding-box,
    linear-gradient(120deg, rgba(56, 189, 248, .55), rgba(144, 137, 252, .25) 45%, var(--border)) border-box;
  border-radius: var(--r);
  padding: 28px;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 20px;
  box-shadow: 0 20px 60px -28px rgba(31, 143, 230, .45);
}
.pack-card__copy { max-width: 60ch; }
.pack-card h3 { margin-bottom: 6px; }
.pack-card .price-line { font-family: var(--font-mono); color: var(--text); margin-top: 4px; }
.pack-card .price-line .was { color: var(--text-3); text-decoration: line-through; margin-left: 8px; }

/* ----------------------------------------------------------------------------
   12. Footer — quiet zinc, glowing top hairline
   -------------------------------------------------------------------------- */
.site-footer {
  position: relative;
  background: var(--bg);
  border-top: 1px solid rgba(244, 244, 245, .07);
  padding-block: 56px 32px;
  color: var(--text-3);
  font-size: .9rem;
}
.site-footer::before {
  content: "";
  position: absolute; top: -1px; left: 50%; transform: translateX(-50%);
  width: min(560px, 70%); height: 1px;
  background: linear-gradient(90deg, rgba(34, 211, 238, 0), rgba(34, 211, 238, .55), rgba(34, 211, 238, 0));
}
.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr repeat(3, 1fr);
  gap: 40px 24px;
}
.footer-brand .tagline { margin-top: 12px; max-width: 30ch; color: var(--text-3); }
.footer-col h4 { font-family: var(--font-mono); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); font-weight: 500; margin-bottom: 14px; }
.footer-col ul { list-style: none; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.footer-col a { color: var(--text-2); }
.footer-col a:hover { color: var(--text); }
.footer-bottom {
  margin-top: 44px;
  padding-top: 24px;
  border-top: 1px solid var(--border);
  display: flex; flex-wrap: wrap;
  gap: 12px 24px;
  justify-content: space-between; align-items: center;
}
.footer-disclaimer { max-width: 70ch; color: var(--text-3); font-size: .82rem; line-height: 1.6; }

/* ----------------------------------------------------------------------------
   13. Responsive base
   -------------------------------------------------------------------------- */
@media (max-width: 900px) {
  .hero__grid { grid-template-columns: 1fr; }
  .hero__visual { order: -1; }
  .indicator-grid { grid-template-columns: repeat(2, 1fr); }
  .stat-band { grid-template-columns: repeat(2, 1fr); }
  .footer-grid { grid-template-columns: 1fr 1fr; }
  .hero__top { grid-template-columns: 1fr; }
}
@media (max-width: 720px) {
  .nav, .sierra-link { display: none; }
  .nav-toggle { display: inline-flex; }
  .header-actions { margin-left: auto; }
  /* tighter header so brand + cart + CTA + burger all fit without crushing */
  .site-header__inner { gap: 12px; }
  .header-actions { gap: 10px; }
  .nav.is-open {
    display: flex;
    position: absolute;
    top: var(--header-h);
    left: 0; right: 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 4px;
    padding: 12px var(--gutter) 20px;
    background: rgba(9, 9, 11, .97);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border-bottom: 1px solid var(--border);
  }
  .nav.is-open a { padding: 10px 0; width: 100%; }
}
@media (max-width: 560px) {
  .indicator-grid { grid-template-columns: 1fr; }
  .stat-band { grid-template-columns: 1fr 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  .signal-callout--tr { right: 8px; top: 56px; }
  /* small phones: logo mark only — frees ~110px so the header CTA, cart
     and burger keep their full size (footer still shows the wordmark) */
  .site-header .brand span { display: none; }
}

/* ============================================================================
   14. PRODUCT PAGE
   ========================================================================== */

.breadcrumb { font-family: var(--font-mono); font-size: .76rem; color: var(--text-3); padding-top: 24px; }
.breadcrumb a { color: var(--text-3); }
.breadcrumb a:hover { color: var(--text-2); }
.breadcrumb .sep { margin: 0 8px; opacity: .6; }

.product-hero { padding-block: clamp(28px, 4vw, 48px) clamp(48px, 7vw, 88px); }
.product-hero__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(32px, 5vw, 56px);
  align-items: center;
}
.product-hero h1 { margin-top: 16px; font-size: clamp(2.1rem, 1.5rem + 2.4vw, 3.2rem); }
.product-hero .lead { margin-top: 16px; }
.product-hero .meta-pills { margin-top: 24px; }

.price-block { margin-top: 28px; display: flex; flex-direction: column; gap: 18px; }
.price-row { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; }
.price-row .amount { font-family: var(--font-mono); font-size: 2.1rem; font-weight: 500; color: var(--text); line-height: 1; }
.price-row .term { color: var(--text-3); font-size: .9rem; }
.price-row .was {
  font-family: var(--font-mono);
  font-size: 1rem;
  color: var(--text-3);
  text-decoration: line-through;
}
.price-cta { display: flex; flex-wrap: wrap; gap: 12px; }

.proof-panel { position: relative; }
.proof-panel .footprint { padding: 18px; }
.proof-caption { margin-top: 12px; font-family: var(--font-mono); font-size: .76rem; color: var(--text-3); text-align: center; }

.prose { max-width: 64ch; }
.prose p + p { margin-top: 16px; }
.credibility-line {
  margin-top: 20px;
  padding: 16px 18px;
  background: var(--accent-weak);
  border: 1px solid var(--accent-line);
  border-radius: var(--r);
  color: var(--text);
  font-size: .95rem;
}

.steps { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 8px; }
.step { background: var(--card); border: 1px solid var(--border); border-radius: var(--r); padding: 22px; }
.step__num {
  display: inline-grid; place-items: center;
  width: 30px; height: 30px;
  font-family: var(--font-mono); font-size: .85rem;
  color: var(--accent-text);
  background: var(--accent-weak);
  border: 1px solid var(--accent-line);
  border-radius: 10px;
  margin-bottom: 14px;
}
.step h3 { font-size: 1rem; margin-bottom: 6px; }
.step p { font-size: .9rem; }

.req-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--r); padding: 24px; }
.req-list { list-style: none; padding: 0; display: grid; gap: 12px; }
.req-list li { display: flex; justify-content: space-between; gap: 16px; font-size: .92rem; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.req-list li:last-child { border-bottom: 0; padding-bottom: 0; }
.req-list .k { color: var(--text-2); }
.req-list .v { color: var(--text); font-family: var(--font-mono); font-size: .85rem; text-align: right; }

.get-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }
.get-item { display: flex; gap: 14px; padding: 20px; background: var(--card); border: 1px solid var(--border); border-radius: var(--r); }
.get-item__check { flex-shrink: 0; color: var(--buy); margin-top: 2px; }
.get-item h3 { font-size: 1rem; margin-bottom: 4px; }
.get-item p { font-size: .9rem; }

/* CTA band — glass panel with gradient ring + aurora glow */
.cta-band { text-align: center; }
.cta-band .inner {
  position: relative;
  overflow: hidden;
  border: 1px solid transparent;
  background:
    linear-gradient(rgba(19, 19, 22, .92), rgba(19, 19, 22, .92)) padding-box,
    linear-gradient(120deg, rgba(56, 189, 248, .5), rgba(144, 137, 252, .3) 55%, var(--border)) border-box;
  border-radius: var(--r-xl);
  padding: clamp(36px, 5vw, 64px);
  max-width: 760px;
  margin-inline: auto;
  box-shadow: 0 30px 80px -40px rgba(31, 143, 230, .5);
}
.cta-band .inner::before {
  content: "";
  position: absolute; top: -120px; left: 50%; transform: translateX(-50%);
  width: 480px; height: 240px; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(56, 189, 248, .18), transparent);
  filter: blur(40px);
  pointer-events: none;
}
.cta-band .inner > * { position: relative; }
.cta-band h2 { margin-bottom: 12px; }
.cta-band p { margin-inline: auto; max-width: 48ch; }
.cta-band .price-cta { justify-content: center; margin-top: 26px; }

/* FAQ — Cobalt-style glass rows */
.faq { max-width: 760px; margin-inline: auto; display: grid; gap: 10px; }
.faq details {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  transition: border-color .15s var(--ease);
}
.faq details:hover { border-color: var(--border-hover); }
.faq details[open] { border-color: var(--accent-line); }
.faq summary {
  list-style: none;
  cursor: pointer;
  padding: 18px 22px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 16px;
  color: var(--text);
  font-weight: 500;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary .ico { flex-shrink: 0; transition: transform .2s var(--ease); color: var(--text-3); }
.faq details[open] summary .ico { transform: rotate(45deg); color: var(--accent-text); }
.faq .answer { padding: 0 22px 20px; color: var(--text-2); font-size: .95rem; max-width: 64ch; }

@media (max-width: 900px) {
  .product-hero__grid { grid-template-columns: 1fr; }
  .product-hero .proof-panel { order: -1; }
  .steps { grid-template-columns: 1fr; }
  .get-grid { grid-template-columns: 1fr; }
}

/* ============================================================================
   16. MEDIA FRAMES, VALUE STRIP, SPOTLIGHTS, TESTIMONIALS
   ========================================================================== */

.media-frame {
  position: relative;
  aspect-ratio: 16 / 9;
  width: 100%;
  background: var(--card-solid);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  overflow: hidden;
  display: grid;
  place-items: center;
}
.media-frame > img,
.media-frame > video { width: 100%; height: 100%; object-fit: cover; display: block; }
.media-frame.is-placeholder {
  background-image:
    repeating-linear-gradient(0deg,  transparent 0 31px, rgba(255, 255, 255, .025) 31px 32px),
    repeating-linear-gradient(90deg, transparent 0 31px, rgba(255, 255, 255, .025) 31px 32px);
}
.media-ph {
  display: flex; flex-direction: column; align-items: center; gap: 12px;
  color: var(--text-3); font-family: var(--font-mono); font-size: .8rem;
  text-align: center; padding: 24px;
}
.media-ph .play {
  width: 56px; height: 56px; border-radius: 50%;
  border: 1px solid var(--border-hover);
  display: grid; place-items: center; color: var(--text-2);
}
.media-ph .fname { color: var(--text-2); }

.value-strip {
  display: grid; grid-template-columns: repeat(4, 1fr);
  gap: 1px; background: var(--border);
  border: 1px solid var(--border); border-radius: var(--r); overflow: hidden;
}
.value-item { background: var(--surface); padding: 22px 20px; display: flex; gap: 12px; align-items: flex-start; }
.value-item svg { color: var(--accent-text); flex-shrink: 0; margin-top: 1px; }
.value-item .t { color: var(--text); font-size: .94rem; font-weight: 500; }
.value-item .d { color: var(--text-2); font-size: .82rem; margin-top: 3px; }

.spotlight { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 4vw, 56px); align-items: center; }
.spotlight + .spotlight { margin-top: clamp(44px, 6vw, 80px); }
.spotlight--reverse .spotlight__media { order: 2; }
.spotlight__copy h3 { font-size: clamp(1.25rem, 1.1rem + .8vw, 1.55rem); margin: 14px 0 12px; }
.spotlight__copy p { margin-bottom: 18px; }
.spotlight__media .media-frame { box-shadow: 0 22px 55px -32px rgba(0, 0, 0, .7); }

.testimonials { grid-template-columns: repeat(3, 1fr); }
.quote-card { background: var(--card); border: 1px solid var(--border); border-radius: var(--r); padding: 24px; display: flex; flex-direction: column; gap: 18px; }
.quote-card blockquote { color: var(--text); font-size: .98rem; line-height: 1.6; }
.quote-card .who { display: flex; align-items: center; gap: 12px; margin-top: auto; }
.quote-card .avatar { width: 38px; height: 38px; border-radius: 50%; background: rgba(24, 24, 27, .8); border: 1px solid var(--border); display: grid; place-items: center; color: var(--text-2); font-family: var(--font-mono); font-size: .8rem; }
.quote-card .name { color: var(--text); font-size: .88rem; }
.quote-card .role { color: var(--text-3); font-size: .78rem; }

@media (max-width: 900px) { .value-strip { grid-template-columns: 1fr 1fr; } }
@media (max-width: 820px) {
  .spotlight { grid-template-columns: 1fr; }
  .spotlight--reverse .spotlight__media { order: 0; }
  .testimonials { grid-template-columns: 1fr; }
}
@media (max-width: 520px) { .value-strip { grid-template-columns: 1fr; } }

/* Hero media frame lift */
.hero__visual .media-frame { box-shadow: 0 30px 70px -30px rgba(0, 0, 0, .75), 0 0 0 1px var(--border); }

/* Feature list — checkmark bullets */
.feature-list { list-style: none; padding: 0; margin: 4px 0 22px; display: grid; gap: 11px; }
.feature-list li { position: relative; padding-left: 28px; color: var(--text-2); font-size: .95rem; line-height: 1.5; }
.feature-list li::before {
  content: ""; position: absolute; left: 2px; top: 7px;
  width: 9px; height: 5px;
  border-left: 2px solid var(--accent-text);
  border-bottom: 2px solid var(--accent-text);
  transform: rotate(-45deg);
}

/* ============================================================================
   18. Value row, trust band
   ========================================================================== */

.value-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.value-prop { text-align: center; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.value-prop__icon {
  width: 46px; height: 46px; border-radius: 14px;
  display: grid; place-items: center; color: var(--accent-text);
  background: var(--accent-weak); border: 1px solid var(--accent-line);
  box-shadow: 0 8px 24px -12px rgba(56, 189, 248, .5);
}
.value-prop .t { color: var(--text); font-weight: 500; font-size: .98rem; }
.value-prop .d { color: var(--text-2); font-size: .85rem; max-width: 24ch; }

.tool-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 20px; }
.tool-card {
  display: flex; flex-direction: column; gap: 14px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 18px;
  transition: border-color .15s var(--ease), transform .15s var(--ease), box-shadow .15s var(--ease);
}
.tool-card__head { display: flex; align-items: center; gap: 10px; }
.tool-num { font-family: var(--font-mono); font-size: .78rem; color: var(--accent-text); background: var(--accent-weak); border: 1px solid var(--accent-line); border-radius: 8px; padding: 2px 7px; }
.tool-card__head h3 { font-size: 1.02rem; }
.tool-card p { font-size: .9rem; color: var(--text-2); }
.tool-card__foot { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: 12px; padding-top: 4px; }
.tool-card__link { font-family: var(--font-mono); font-size: .82rem; }
.tool-tag { font-family: var(--font-mono); font-size: .66rem; letter-spacing: .08em; text-transform: uppercase; color: var(--text-3); border: 1px solid var(--border); border-radius: var(--r-pill); padding: 3px 9px; }
.tool-card__price { font-family: var(--font-mono); font-size: .85rem; color: var(--text); }
.tool-card__price .term { color: var(--text-3); font-size: .72rem; margin-left: 4px; }
.tool-card[hidden] { display: none; }

.trust-band {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 20px 28px;
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 16px 32px; justify-content: space-between;
}
.trust-band__items { display: flex; flex-wrap: wrap; gap: 16px 28px; }
.trust-band__item { display: flex; align-items: center; gap: 9px; color: var(--text-2); font-size: .9rem; }
.trust-band__item svg { color: var(--accent-text); flex-shrink: 0; }
.trust-band__item b { color: var(--text); font-weight: 500; }
.trust-band__atas { display: flex; align-items: center; gap: 9px; color: var(--text-3); font-size: .82rem; }
.trust-band__atas img { height: 18px; width: auto; }

@media (max-width: 860px) { .value-row { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .value-row { grid-template-columns: 1fr; } }

/* ============================================================================
   19–21. HERO SHOWCASE — glass panel + vertical tab rail
   ========================================================================== */

.showcase { margin-top: clamp(40px, 5vw, 64px); }

.showcase__layout {
  display: grid;
  grid-template-columns: 1fr 290px;
  gap: 14px;
  align-items: stretch;
}

.showcase__tabs {
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  gap: 8px;
  overflow: visible;
  padding-bottom: 0;
}
.showcase__tabs::-webkit-scrollbar { display: none; }
.showcase__tab {
  flex: 1;
  min-height: 0;
  width: 100%;
  display: inline-flex; align-items: center; justify-content: flex-start; gap: 8px;
  font-family: var(--font-mono); font-size: .75rem; letter-spacing: .02em;
  color: var(--text-2);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 6px 14px;
  cursor: pointer;
  transition: color .15s var(--ease), border-color .15s var(--ease), background .15s var(--ease), box-shadow .15s var(--ease);
}
.showcase__tab .num { color: var(--text-3); font-size: .7rem; }
.showcase__tab:hover { color: var(--text); border-color: var(--border-hover); }
.showcase__tab.is-active {
  color: var(--cyan);
  background: rgba(34, 211, 238, .08);
  border-color: rgba(34, 211, 238, .35);
  box-shadow: 0 0 18px -6px rgba(34, 211, 238, .45);
}
.showcase__tab.is-active .num { color: var(--cyan); }

.showcase__tab--more { border-style: dashed; color: var(--accent-text); }
.showcase__tab--more .num { color: var(--accent-text); }
.showcase__tab--more:hover {
  color: var(--text);
  border-color: var(--accent-line);
  background: var(--accent-weak);
}
.showcase__tab--more .arrow { margin-left: auto; }

/* The panel — Cobalt glass frame with a glowing top hairline */
.showcase__panel {
  position: relative;
  border: 1px solid rgba(244, 244, 245, .12);
  border-radius: var(--r-lg);
  background: rgba(24, 24, 27, .6);
  overflow: hidden;
  box-shadow: 0 40px 90px -40px rgba(0, 0, 0, .85),
              0 0 70px -28px rgba(31, 143, 230, .35);
}
.showcase__panel::before {
  content: "";
  position: absolute; top: 0; left: 10%; right: 10%; height: 1px; z-index: 2;
  background: linear-gradient(90deg, rgba(34, 211, 238, 0), rgba(34, 211, 238, .8), rgba(34, 211, 238, 0));
}
.showcase__slides { position: relative; aspect-ratio: 16 / 8; }
.showcase__slide {
  position: absolute; inset: 0;
  opacity: 0; pointer-events: none;
  transition: opacity .45s var(--ease);
}
.showcase__slide.is-active { opacity: 1; pointer-events: auto; }
.showcase__slide > img,
.showcase__slide > video { width: 100%; height: 100%; object-fit: cover; }

.showcase__ph {
  width: 100%; height: 100%;
  display: grid; place-items: center;
  background-image:
    repeating-linear-gradient(0deg,  transparent 0 31px, rgba(255, 255, 255, .025) 31px 32px),
    repeating-linear-gradient(90deg, transparent 0 31px, rgba(255, 255, 255, .025) 31px 32px);
}

.showcase__caption {
  position: absolute; left: 14px; right: 14px; bottom: 14px;
  display: flex; align-items: center; justify-content: space-between; gap: 14px;
  background: rgba(9, 9, 11, .78);
  border: 1px solid rgba(244, 244, 245, .12);
  border-radius: 12px;
  padding: 10px 14px;
  font-size: .86rem; color: var(--text-2);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
.showcase__caption a { flex-shrink: 0; font-family: var(--font-mono); font-size: .8rem; white-space: nowrap; }

/* Hover-zoom — magnify chart under the cursor (desktop only; flat panels
   only — the float variant's overlays can't track a scaling image) */
@media (hover: hover) and (pointer: fine) {
  .showcase:not(.showcase--float) .showcase__slide img {
    transform-origin: var(--zx, 50%) var(--zy, 50%);
    transition: transform .3s var(--ease);
    will-change: transform;
    cursor: zoom-in;
  }
  .showcase:not(.showcase--float) .showcase__slide:hover img { transform: scale(1.8); }
}
@media (prefers-reduced-motion: reduce) {
  .showcase__slide img { transition: none; }
  .showcase__slide:hover img { transform: none; }
}

/* Hero props — 4 colored glow icons below the showcase */
.hero-props {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 24px;
  margin-top: clamp(32px, 4vw, 52px);
}
.hero-prop { display: flex; gap: 15px; align-items: flex-start; }
.hero-prop__icon {
  width: 46px; height: 46px; flex-shrink: 0;
  border-radius: 50%;
  display: grid; place-items: center;
  border: 1px solid;
}
.hero-prop .t {
  font-size: .8rem; font-weight: 600;
  letter-spacing: .08em; text-transform: uppercase;
  color: var(--text);
}
.hero-prop .d { font-size: .85rem; color: var(--text-2); margin-top: 3px; max-width: 34ch; }

.ic-blue   { color: #5cb6f7; border-color: rgba(56, 189, 248, .45);  background: rgba(56, 189, 248, .10);  box-shadow: 0 0 20px -6px rgba(56, 189, 248, .6); }
.ic-violet { color: #a78bfa; border-color: rgba(139, 92, 246, .40);  background: rgba(139, 92, 246, .09);  box-shadow: 0 0 20px -6px rgba(139, 92, 246, .55); }
.ic-green  { color: #4ade80; border-color: rgba(74, 222, 128, .35);  background: rgba(74, 222, 128, .08);  box-shadow: 0 0 20px -6px rgba(74, 222, 128, .5); }
.ic-amber  { color: #fbbf24; border-color: rgba(251, 191, 36, .35);  background: rgba(251, 191, 36, .08);  box-shadow: 0 0 20px -6px rgba(251, 191, 36, .5); }

@media (max-width: 980px) {
  .showcase__layout { grid-template-columns: 1fr; }
  .showcase__layout .showcase__tabs {
    flex-direction: row;
    flex-wrap: wrap;
    overflow: visible;
    padding-bottom: 10px;
    order: -1;
    gap: 7px;
  }
  .showcase__layout .showcase__tab {
    flex: 0 0 auto;
    width: auto;
    padding: 7px 12px;
    font-size: .72rem;
    border-radius: var(--r-pill);
  }
  .hero-props { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 720px) {
  .showcase__slides { aspect-ratio: 16 / 10; }
  .showcase__caption { position: static; margin: 10px; flex-direction: column; align-items: flex-start; gap: 6px; }
  .showcase__slide { display: flex; flex-direction: column; }
  .showcase__slide > img, .showcase__slide > video, .showcase__ph { flex: 1; min-height: 0; }
}
@media (max-width: 560px) {
  .hero-props { grid-template-columns: 1fr; }
}

/* ============================================================================
   19c. SHOWCASE — FLOAT VARIANT (baked 3D hero shots, frameless + animated)
   ----------------------------------------------------------------------------
   Active when .showcase carries .showcase--float: slides are transparent
   3D-mockup PNGs (1920×1536, alpha) floating free of any panel chrome.
   Adds idle float, entrance, cursor parallax (main.js sets --rx/--ry) and
   per-slide signal fx pinned via inline --x/--y[/--w/--h/--c/--d] vars.
   Slides crop to 1920/1250 via object-fit:cover — the PNG template carries
   ~9% dead transparent padding top and bottom; chart content is never cut.
   ========================================================================== */

.showcase--float .showcase__panel {
  background: transparent;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  overflow: visible;
  perspective: 1400px;
  /* Entrance on load + idle float live on the PANEL, not on each slide.
     All six renders share the same baked frame position, so slide switches
     are a pure cross-fade: the frame stays rock-still and the bob never
     resets — only the chart content dissolves. */
  animation: heroEnter .8s var(--ease) both,
             heroFloat 9s ease-in-out .8s infinite;
}
.showcase--float .showcase__panel::before { content: none; }

.showcase--float .showcase__slides {
  aspect-ratio: 1920 / 1250;
  transform: rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg));
  transform-style: preserve-3d;
  transition: transform .35s var(--ease);
}
/* ground glow — anchors the floating shot to the page */
.showcase--float .showcase__slides::after {
  content: "";
  position: absolute; left: 14%; right: 14%; bottom: -4%;
  height: 70px; border-radius: 50%;
  background: radial-gradient(closest-side, rgba(31, 143, 230, .28), transparent);
  filter: blur(26px);
  z-index: -1;
  pointer-events: none;
}

/* Slide switch = symmetric dissolve, no transforms: outgoing and incoming
   fade over the same eased second, so the shared frame reads as one steady
   object with the chart content morphing inside it. */
.showcase--float .showcase__slide {
  transition: opacity .9s var(--ease);
}
.showcase--float .showcase__slide.is-active { opacity: 1; }

@keyframes heroEnter {
  from { opacity: 0; transform: translateY(30px) scale(.96); }
  to   { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes heroFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-10px); }
}

.showcase--float .showcase__slide > img {
  object-fit: cover;
  filter: drop-shadow(0 44px 56px rgba(0, 0, 0, .55))
          drop-shadow(0 0 44px rgba(31, 143, 230, .10));
}

/* caption floats as its own pill under the shot; the name carries identity */
.showcase--float .showcase__caption {
  background: rgba(9, 9, 11, .82);
  box-shadow: 0 10px 30px -12px rgba(0, 0, 0, .8);
}
.showcase__name { color: var(--accent-text); font-weight: 600; }

/* backdrop — blue halo behind the shot + one violet bloom offset low-right */
.showcase--float { position: relative; }
.showcase--float::before {
  content: "";
  position: absolute; left: 50%; top: 42%;
  width: min(1150px, 104%); height: min(700px, 82%);
  transform: translate(-50%, -50%);
  background: radial-gradient(closest-side, rgba(89, 170, 239, .38), rgba(89, 170, 239, .14) 48%, transparent 74%);
  filter: blur(28px);
  pointer-events: none; z-index: 0;
}
.showcase--float::after {
  content: "";
  position: absolute; right: -7%; bottom: -6%;
  width: 480px; height: 380px; border-radius: 50%;
  background: linear-gradient(240deg, rgba(144, 137, 252, .30), rgba(34, 211, 238, .08));
  filter: blur(80px);
  pointer-events: none; z-index: 0;
}
.showcase--float .showcase__panel,
.showcase--float .showcase__nav { position: relative; z-index: 1; }

/* dot pager + catalog link (replaces the tab rail) */
.showcase__nav {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: center;
  gap: 12px 22px;
  margin-top: 20px;
}
.showcase__dots { display: flex; gap: 4px; }
/* The button is a 24px-tall hit target (WCAG 2.5.8); the visible 6px bar is
   drawn with ::before so the touch area is comfortable without a fat bar. */
.showcase__dot {
  position: relative;
  width: 34px; height: 24px;
  border: 0; padding: 0; background: none;
  cursor: pointer;
  display: grid; place-items: center;
}
.showcase__dot::before {
  content: "";
  width: 26px; height: 6px;
  border-radius: var(--r-pill);
  background: rgba(244, 244, 245, .12);
  transition: background .2s var(--ease), width .25s var(--ease);
}
.showcase__dot:hover::before { background: rgba(244, 244, 245, .28); }
.showcase__dot.is-active { width: 56px; }
.showcase__dot.is-active::before { width: 48px; background: rgba(34, 211, 238, .14); }
.showcase__dot .fill {
  position: absolute; top: 50%; left: 4px;   /* = (btn 34 − bar 26)/2, same when active */
  width: 26px; height: 6px; margin-top: -3px;
  transform: scaleX(0);
  transform-origin: left center;
  border-radius: var(--r-pill);
  background: linear-gradient(90deg, var(--accent-2), var(--cyan));
}
.showcase__dot.is-active .fill { width: 48px; }
/* fill duration mirrors data-interval on the showcase (8s) */
.showcase__dot.is-active .fill { animation: dotFill 8s linear forwards; }
@keyframes dotFill { to { transform: scaleX(1); } }
/* auto-advance pauses on hover (main.js) — pause the fill with it */
[data-showcase]:hover .showcase__dot.is-active .fill { animation-play-state: paused; }

.showcase__all {
  font-family: var(--font-mono); font-size: .8rem;
  color: var(--text-2);
  white-space: nowrap;
}
.showcase__all:hover { color: var(--cyan); }
.showcase__all .arrow { display: inline-block; transition: transform .15s var(--ease); }
.showcase__all:hover .arrow { transform: translateX(3px); }

/* ---- per-slide signal fx ---- */
.showcase__fx { position: absolute; inset: 0; pointer-events: none; z-index: 2; }

/* BACKLIGHT comet — the SVG ring sits BEHIND the shot (the PNG frame is
   opaque, its padding transparent), so only the glow bleeding past the frame
   edges is visible. Sub-pixel drift between browsers can't be seen: the
   frame itself masks the light's core. Path traced from the PNG alpha. */
.showcase--float .showcase__fx { z-index: auto; }   /* let children interleave with the img */
.showcase--float .fx-ring {
  position: absolute; inset: 0;
  width: 100%; height: 100%;
  overflow: visible;
  z-index: -1;                          /* behind the image, inside the slide */
}
.fx-ring path {
  fill: none;
  stroke-linejoin: round;
  stroke-linecap: round;
  stroke-dasharray: 24 76;             /* pathLength=100 → 24% comet, 76% gap */
  /* inset the loop slightly inside the frame so only blurred light escapes */
  transform-box: fill-box;
  transform-origin: center;
  transform: scale(.985);
  animation: ringRun 12s linear infinite;
}
.fx-ring__glow {
  stroke: var(--accent);
  stroke-width: 62;
  opacity: .45;
  filter: blur(30px);
}
.fx-ring__beam {
  stroke: #8fd4ff;
  stroke-width: 24;
  opacity: .45;
  filter: blur(14px);
}
@keyframes ringRun { to { stroke-dashoffset: -100; } }

.fx-ping {
  position: absolute; left: var(--x); top: var(--y);
  width: 6px; height: 6px; margin: -3px 0 0 -3px;
  border-radius: 50%;
  color: var(--c, var(--signal));
  background: currentColor;
  box-shadow: 0 0 10px 1px currentColor;
  opacity: .85;
}
.fx-ping::before,
.fx-ping::after {
  content: "";
  position: absolute; inset: -4.5px;   /* rings keep their size around the smaller core */
  border-radius: 50%;
  border: 1.5px solid currentColor;
  opacity: 0;
  animation: fxPing 3s cubic-bezier(.2, .6, .3, 1) infinite;
  animation-delay: var(--d, 0s);
}
.fx-ping::after { animation-delay: calc(var(--d, 0s) + 1.5s); }
@keyframes fxPing {
  0%   { transform: scale(.45); opacity: .85; }
  70%  { transform: scale(3.4); opacity: 0; }
  100% { transform: scale(3.4); opacity: 0; }
}

.fx-zone {
  position: absolute; left: var(--x); top: var(--y);
  width: var(--w); height: var(--h);
  border-radius: 6px;
  color: var(--c, var(--accent));
  background: currentColor;
  mix-blend-mode: screen;
  filter: blur(7px);
  opacity: .05;
  transform: skewY(var(--sk, 0deg));   /* follows the baked perspective slope */
  transform-origin: left center;
  animation: fxZone 5.5s ease-in-out infinite;
  animation-delay: var(--d, 0s);
}
@keyframes fxZone {
  0%, 100% { opacity: .05; }
  50%      { opacity: .2; }
}

/* mobile: slides grid-stack so the box grows to fit image + in-flow caption
   (the absolute/aspect scheme would squeeze the image to a strip) */
@media (max-width: 720px) {
  .showcase--float .showcase__slides {
    aspect-ratio: auto;
    display: grid;
  }
  .showcase--float .showcase__slide {
    position: relative;
    grid-area: 1 / 1;
  }
  .showcase--float .showcase__slide > img {
    flex: none;
    width: 100%;
    height: auto;
    aspect-ratio: 1920 / 1250;
  }
  /* fx layer hugs the image box only, not the caption below it */
  .showcase--float .showcase__fx {
    inset: auto; top: 0; left: 0; right: 0;
    aspect-ratio: 1920 / 1250;
  }
}

@media (prefers-reduced-motion: reduce) {
  .showcase--float .showcase__panel { animation: none; }
  .showcase--float .showcase__slide { transition: none; }
  .showcase--float .showcase__slides { transform: none; transition: none; }
  .fx-ping::before, .fx-ping::after, .fx-zone { animation: none; }
  .showcase__dot.is-active .fill { animation: none; transform: scaleX(1); }
}

/* ============================================================================
   22. BUILD-YOUR-WORKSPACE — featured cards, carousel, reveal
   ========================================================================== */

.ws-head { max-width: 680px; margin-inline: auto; text-align: center; margin-bottom: 52px; }
.ws-head .lead { margin: 16px auto 0; }
.ws-ctas { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; margin-top: 28px; }

.featured-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.feat-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  overflow: hidden;
  display: flex; flex-direction: column;
}
.feat-card__media {
  aspect-ratio: 16 / 9;
  overflow: hidden;
  border-bottom: 1px solid var(--border);
  background: var(--bg);
  display: grid; place-items: center;
}
.feat-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .25s var(--ease); }
.feat-card:hover .feat-card__media img { transform: scale(1.02); }
.feat-card__body { padding: 22px 24px 24px; display: flex; flex-direction: column; gap: 10px; flex: 1; }
.feat-card__body h3 { font-size: 1.2rem; }
.tagline-sm { color: var(--accent-text); font-size: .9rem; font-weight: 500; }
.feat-card__body > p { font-size: .95rem; }
.feat-tags { display: flex; gap: 8px; flex-wrap: wrap; }
.feat-card .tool-card__link { margin-top: auto; padding-top: 8px; font-family: var(--font-mono); font-size: .85rem; }

.tool-card__link .arrow { display: inline-block; transition: transform .2s var(--ease); }
.tool-card__link:hover .arrow, .feat-card:hover .tool-card__link .arrow, .mini-card:hover .tool-card__link .arrow { transform: translateX(3px); }

.carousel { margin-top: 28px; }
.carousel__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 14px; }
.carousel__label { font-family: var(--font-mono); font-size: .72rem; letter-spacing: .1em; text-transform: uppercase; color: var(--text-3); }
.carousel__nav { display: flex; gap: 8px; }
.carousel__btn {
  width: 36px; height: 36px; border-radius: 50%;
  background: var(--card); color: var(--text-2);
  border: 1px solid var(--border);
  display: grid; place-items: center; cursor: pointer;
  transition: color .15s var(--ease), border-color .15s var(--ease), background .15s var(--ease), box-shadow .15s var(--ease);
}
.carousel__btn:hover {
  color: var(--cyan); border-color: rgba(34, 211, 238, .35);
  background: rgba(34, 211, 238, .08);
  box-shadow: 0 0 16px -6px rgba(34, 211, 238, .5);
}
.carousel__track {
  display: flex; gap: 16px;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  -webkit-overflow-scrolling: touch;
  padding: 4px 4px 10px;
}
.carousel__track::-webkit-scrollbar { display: none; }

.mini-card {
  flex: 0 0 min(380px, 84vw);
  scroll-snap-align: start;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 16px;
  display: flex; flex-direction: column; gap: 12px;
  transition: border-color .15s var(--ease), box-shadow .2s var(--ease);
}
.mini-card:hover { border-color: var(--border-hover); box-shadow: 0 16px 44px -24px rgba(31, 143, 230, .35); }
.mini-card__media {
  aspect-ratio: 16 / 9;
  border-radius: 10px;
  border: 1px solid var(--border);
  background: var(--bg);
  background-image:
    repeating-linear-gradient(0deg,  transparent 0 23px, rgba(255, 255, 255, .03) 23px 24px),
    repeating-linear-gradient(90deg, transparent 0 23px, rgba(255, 255, 255, .03) 23px 24px);
  display: grid; place-items: center;
  overflow: hidden;
}
.mini-card__media img { width: 100%; height: 100%; object-fit: cover; transition: transform .25s var(--ease); }
.mini-card:hover .mini-card__media img { transform: scale(1.02); }
.mini-card h4 { color: var(--text); font-size: 1rem; font-weight: 600; letter-spacing: -.01em; }
.mini-card > p { font-size: .86rem; flex: 1; }
.mini-card .media-ph { font-size: .7rem; padding: 10px; }
.mini-card .tool-card__link { font-family: var(--font-mono); font-size: .78rem; }

.ws-bundle { margin-top: 56px; text-align: center; }
.ws-bundle h3 { font-size: 1.35rem; }
.ws-bundle p { margin: 8px auto 20px; max-width: 48ch; }

/* Scroll reveal */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal--left  { transform: translateX(-28px); }
.reveal--right { transform: translateX(28px); }
.reveal.is-visible { opacity: 1; transform: none; }
/* On narrow screens the horizontal slide-in pushes past the right edge and
   causes a sideways scroll. Drop the X offset (fade-up only) — no body clip
   needed, so the sticky header keeps working. */
@media (max-width: 720px) {
  .reveal--left, .reveal--right { transform: translateY(18px); }
}
@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal--left, .reveal--right { opacity: 1; transform: none; transition: none; }
}

@media (max-width: 820px) {
  .featured-grid { grid-template-columns: 1fr; }
  .ws-ctas .btn { width: 100%; }
}

/* ============================================================================
   23–25. BUNDLE FEATURE — atmospheric water-fill + fanned stack
   ========================================================================== */

.bundle-feature {
  position: relative;
  overflow: hidden;
  padding-block: clamp(88px, 12vw, 150px);
  background: var(--bg);
  border-top: 1px solid rgba(244, 244, 245, .05);
  border-bottom: 1px solid rgba(244, 244, 245, .05);
  --fill: 1;
}
.bundle-feature .container { position: relative; z-index: 1; }

.bundle-feature__fill {
  position: absolute; inset: 0; z-index: 0;
  pointer-events: none;
  background: linear-gradient(180deg, #111827 0%, #0d1322 55%, #0a0e19 100%);
  clip-path: inset(calc((1 - var(--fill)) * 100%) 0 0 0);
}
.bundle-feature__fill::before,
.bundle-feature__fill::after {
  content: "";
  position: absolute; border-radius: 50%;
}
.bundle-feature__fill::before {
  top: -220px; left: -140px;
  width: 640px; height: 640px;
  background: radial-gradient(circle, rgba(56, 189, 248, .16), rgba(56, 189, 248, 0) 62%);
}
.bundle-feature__fill::after {
  bottom: -260px; right: -160px;
  width: 700px; height: 700px;
  background: radial-gradient(circle, rgba(144, 137, 252, .12), rgba(144, 137, 252, 0) 60%);
}

.bundle-feature__waterline {
  position: absolute; left: 0; right: 0; z-index: 0;
  top: calc((1 - var(--fill)) * 100%);
  height: 2px;
  pointer-events: none;
  background: linear-gradient(90deg, transparent 5%, rgba(34, 211, 238, .75) 50%, transparent 95%);
  box-shadow: 0 0 28px 4px rgba(34, 211, 238, .35);
  opacity: clamp(0, calc((1 - var(--fill)) * 6), 1);
}

@media (prefers-reduced-motion: reduce) {
  .bundle-feature { --fill: 1 !important; }
  .bundle-feature__waterline { display: none; }
}

.bundle-feature__grid {
  display: grid;
  grid-template-columns: 1.05fr .95fr;
  gap: clamp(40px, 6vw, 88px);
  align-items: center;
}
.bundle-feature__copy h2 { font-size: clamp(1.8rem, 1.35rem + 2vw, 2.6rem); margin-top: 18px; }
.bundle-feature__copy .lead { margin-top: 16px; }

.bundle-points {
  display: flex; flex-wrap: wrap;
  gap: 10px 22px;
  margin-top: 26px;
}
.bundle-point {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: .9rem; color: var(--text-2);
}
.bundle-point svg { color: var(--buy); flex-shrink: 0; }
.bundle-point b { color: var(--text); font-weight: 500; }

.bundle-feature .price-cta { margin-top: 30px; }

/* gold badge — the payoff */
.eyebrow--gold {
  font-size: .85rem;
  padding: 9px 18px;
  letter-spacing: .16em;
  color: var(--signal);
  background: rgba(9, 9, 11, .75);
  border-color: var(--signal-line);
  box-shadow: 0 0 28px -6px rgba(232, 176, 75, .5), inset 0 1px 0 rgba(255, 255, 255, .04);
}
.eyebrow--gold svg { color: var(--signal); flex-shrink: 0; }

/* fanned deck */
.bundle-stack { display: flex; flex-direction: column; gap: 10px; }
.bundle-stack__item {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  font-family: var(--font-mono); font-size: .85rem; color: var(--text);
  background: rgba(24, 24, 27, .85);
  border: 1px solid rgba(244, 244, 245, .12);
  border-radius: 12px;
  padding: 13px 18px;
  box-shadow: 0 14px 34px -18px rgba(0, 0, 0, .7);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
}
.bundle-stack__item .ok { color: var(--buy); flex-shrink: 0; }
.bundle-stack__item:nth-child(1) { margin-right: 60px; }
.bundle-stack__item:nth-child(2) { margin-left: 12px; margin-right: 48px; }
.bundle-stack__item:nth-child(3) { margin-left: 24px; margin-right: 36px; }
.bundle-stack__item:nth-child(4) { margin-left: 36px; margin-right: 24px; }
.bundle-stack__item:nth-child(5) { margin-left: 48px; margin-right: 12px; }
.bundle-stack__item:nth-child(6) { margin-left: 60px; }
.bundle-stack__item--more {
  border-style: dashed;
  border-color: var(--accent-line);
  color: var(--accent-text);
  background: rgba(56, 189, 248, .06);
  justify-content: center;
}
.bundle-stack__item--current {
  border-color: rgba(34, 211, 238, .45);
  box-shadow: 0 0 22px -4px rgba(34, 211, 238, .45), 0 14px 34px -18px rgba(0, 0, 0, .7);
}
.bundle-stack__item--current .you { font-size: .68rem; color: var(--cyan); margin-left: 8px; }

/* stack glow wave */
@keyframes stackPulse {
  0%, 20%, 100% {
    border-color: rgba(244, 244, 245, .12);
    box-shadow: 0 14px 34px -18px rgba(0, 0, 0, .7);
  }
  8% {
    border-color: rgba(34, 211, 238, .6);
    box-shadow: 0 0 24px -2px rgba(34, 211, 238, .4), 0 14px 34px -18px rgba(0, 0, 0, .7);
  }
}
.bundle-stack__item:not(.bundle-stack__item--more) { animation: stackPulse 5s linear infinite; }
.bundle-stack__item:nth-child(1) { animation-delay: 0s; }
.bundle-stack__item:nth-child(2) { animation-delay: .85s; }
.bundle-stack__item:nth-child(3) { animation-delay: 1.7s; }
.bundle-stack__item:nth-child(4) { animation-delay: 2.55s; }
.bundle-stack__item:nth-child(5) { animation-delay: 3.4s; }
@keyframes stackPulseGold {
  0%, 20%, 100% { box-shadow: 0 14px 34px -18px rgba(0, 0, 0, .7); }
  8% { box-shadow: 0 0 24px -2px rgba(232, 176, 75, .4), 0 14px 34px -18px rgba(0, 0, 0, .7); }
}
.bundle-stack__item--more { animation: stackPulseGold 5s linear infinite; animation-delay: 4.25s; }

/* floating footprint clusters inside the fill */
.bundle-feature__fill .fpnum {
  position: absolute;
  display: flex;
  flex-direction: column;
  gap: 3px;
  font-family: var(--font-mono);
  font-size: .72rem;
  line-height: 1.3;
  white-space: nowrap;
  opacity: 0;
  animation: fpDrift 16s linear infinite;
}
.bundle-feature__fill .fpnum .a { color: var(--buy-text); }
.bundle-feature__fill .fpnum .b { color: var(--sell-text); }
@keyframes fpDrift {
  0%   { transform: translateY(36px); opacity: 0; }
  18%  { opacity: .08; }
  82%  { opacity: .08; }
  100% { transform: translateY(-44px); opacity: 0; }
}
.fpnum:nth-of-type(1)  { left: 4%;  top: 18%; animation-duration: 15s; }
.fpnum:nth-of-type(2)  { left: 12%; top: 66%; animation-duration: 19s; animation-delay: 2s; }
.fpnum:nth-of-type(3)  { left: 23%; top: 34%; animation-duration: 14s; animation-delay: 6s; }
.fpnum:nth-of-type(4)  { left: 34%; top: 80%; animation-duration: 21s; animation-delay: 4s; }
.fpnum:nth-of-type(5)  { left: 45%; top: 12%; animation-duration: 17s; animation-delay: 9s; }
.fpnum:nth-of-type(6)  { left: 55%; top: 58%; animation-duration: 15s; animation-delay: 1s; }
.fpnum:nth-of-type(7)  { left: 66%; top: 26%; animation-duration: 20s; animation-delay: 7s; }
.fpnum:nth-of-type(8)  { left: 76%; top: 72%; animation-duration: 16s; animation-delay: 3s; }
.fpnum:nth-of-type(9)  { left: 87%; top: 44%; animation-duration: 18s; animation-delay: 11s; }
.fpnum:nth-of-type(10) { left: 94%; top: 86%; animation-duration: 22s; animation-delay: 5s; }

@media (prefers-reduced-motion: reduce) {
  .bundle-stack__item, .bundle-stack__item--more { animation: none; }
  .bundle-feature__fill .fpnum { animation: none; opacity: .06; }
}

@media (max-width: 900px) {
  .bundle-feature__grid { grid-template-columns: 1fr; }
  .bundle-stack__item,
  .bundle-stack__item:nth-child(n) { margin-left: 0; margin-right: 0; }
  .bundle-feature .price-cta .btn { width: 100%; }
}

/* ============================================================================
   26. NATIVE ATAS INTEGRATION — connected onboarding timeline
   ========================================================================== */

.timeline {
  position: relative;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-top: 8px;
}
.timeline::before {
  content: "";
  position: absolute;
  top: 23px; left: 9%; right: 9%;
  height: 1px;
  background: linear-gradient(90deg, transparent, rgba(34, 211, 238, .5) 14%, rgba(34, 211, 238, .5) 86%, transparent);
  box-shadow: 0 0 12px rgba(34, 211, 238, .25);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 1.1s var(--ease) .15s;
}
.timeline.is-visible::before { transform: scaleX(1); }

.tl-step {
  position: relative; z-index: 1;
  display: flex; flex-direction: column; align-items: center;
  text-align: center;
}
.tl-step__icon {
  width: 46px; height: 46px; border-radius: 50%;
  display: grid; place-items: center;
  color: var(--cyan);
  background: var(--card-solid);             /* opaque — masks the connector */
  border: 1px solid rgba(34, 211, 238, .35);
  box-shadow: 0 0 22px -6px rgba(34, 211, 238, .55);
  margin-bottom: 16px;
  transition: transform .25s var(--ease), box-shadow .25s var(--ease);
}
.tl-step__card {
  flex: 1; width: 100%;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r);
  padding: 20px 18px 22px;
  transition: transform .25s var(--ease), border-color .25s var(--ease), box-shadow .25s var(--ease);
}
.tl-step__num { font-family: var(--font-mono); font-size: .68rem; letter-spacing: .14em; color: var(--cyan); }
.tl-step__card h3 { font-size: 1.02rem; margin: 8px 0; }
.tl-step__card p { font-size: .88rem; }

.tl-step:hover .tl-step__card {
  transform: translateY(-6px);
  border-color: rgba(34, 211, 238, .35);
  box-shadow: 0 16px 44px -22px rgba(34, 211, 238, .4);
}
.tl-step:hover .tl-step__icon {
  transform: scale(1.05);
  box-shadow: 0 0 28px -4px rgba(34, 211, 238, .7);
}

.timeline .tl-step { opacity: 0; transform: translateY(18px); transition: opacity .6s var(--ease), transform .6s var(--ease); }
.timeline.is-visible .tl-step { opacity: 1; transform: none; }
.timeline.is-visible .tl-step:nth-child(1) { transition-delay: .15s; }
.timeline.is-visible .tl-step:nth-child(2) { transition-delay: .4s; }
.timeline.is-visible .tl-step:nth-child(3) { transition-delay: .65s; }
.timeline.is-visible .tl-step:nth-child(4) { transition-delay: .9s; }

@media (max-width: 1000px) and (min-width: 701px) {
  .timeline { grid-template-columns: 1fr 1fr; }
  .timeline::before { display: none; }
}
@media (max-width: 700px) {
  .timeline { grid-template-columns: 1fr; gap: 16px; }
  .timeline::before {
    top: 10px; bottom: 10px; left: 23px; right: auto;
    width: 1px; height: auto;
    background: linear-gradient(180deg, transparent, rgba(34, 211, 238, .5) 12%, rgba(34, 211, 238, .5) 88%, transparent);
    transform: scaleY(0);
    transform-origin: top center;
  }
  .timeline.is-visible::before { transform: scaleY(1); }
  .tl-step { flex-direction: row; align-items: flex-start; text-align: left; gap: 16px; }
  .tl-step__icon { margin-bottom: 0; flex-shrink: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .timeline::before { transform: none; transition: none; }
  .timeline .tl-step { opacity: 1; transform: none; transition: none; }
}

/* ============================================================================
   27. WHY FOOTPRINT-LAB — glass reasons grid
   ========================================================================== */
.why-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; }
.why-card {
  display: flex; gap: 16px; align-items: flex-start;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 28px;
  transition: border-color .15s var(--ease), box-shadow .2s var(--ease);
}
.why-card:hover { border-color: var(--border-hover); box-shadow: 0 20px 50px -28px rgba(31, 143, 230, .3); }
.why-card h3 { font-size: 1.05rem; margin-bottom: 6px; }
.why-card p { font-size: .92rem; }
.why-card .hero-prop__icon { flex-shrink: 0; }
.why-link { text-align: center; margin-top: 32px; font-size: .92rem; color: var(--text-3); }
@media (max-width: 820px) { .why-grid { grid-template-columns: 1fr; } }

/* ============================================================================
   29. CATALOG PAGE — filter chips, page head
   ========================================================================== */
.catalog-head { max-width: 720px; margin-bottom: 34px; }
.catalog-head h1 { font-size: clamp(2rem, 1.4rem + 2.4vw, 3rem); margin-top: 16px; }
.catalog-head .lead { margin-top: 14px; }

.filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 30px; }
.filter-chip {
  font-family: var(--font-mono);
  font-size: .78rem;
  color: var(--text-2);
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-pill);
  padding: 8px 15px;
  cursor: pointer;
  transition: color .15s var(--ease), border-color .15s var(--ease), background .15s var(--ease), box-shadow .15s var(--ease);
}
.filter-chip:hover { color: var(--text); border-color: var(--border-hover); }
.filter-chip.is-active {
  color: var(--cyan);
  background: rgba(34, 211, 238, .08);
  border-color: rgba(34, 211, 238, .35);
  box-shadow: 0 0 16px -6px rgba(34, 211, 238, .45);
}
.filter-chip .n { color: var(--text-3); margin-left: 5px; }

.suite-strip {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px;
  border: 1px solid transparent;
  background:
    linear-gradient(var(--card-solid), var(--card-solid)) padding-box,
    linear-gradient(120deg, rgba(232, 176, 75, .5), rgba(56, 189, 248, .3) 55%, var(--border)) border-box;
  border-radius: var(--r);
  padding: 20px 26px;
  margin-bottom: 34px;
  box-shadow: 0 20px 55px -30px rgba(31, 143, 230, .4);
}
.suite-strip__copy { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.suite-strip h2 { font-size: 1.15rem; }
.suite-strip p { font-size: .9rem; }

/* ============================================================================
   30. PRODUCT PAGE v2 — zoom panels, do/don't, split layout
   ========================================================================== */

@media (hover: hover) and (pointer: fine) {
  .zoom-pan { overflow: hidden; }
  .zoom-pan img {
    transform-origin: var(--zx, 50%) var(--zy, 50%);
    transition: transform .3s var(--ease);
    will-change: transform;
    cursor: zoom-in;
  }
  .zoom-pan:hover img { transform: scale(1.8); }
}

.use-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
.use-card {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: 26px;
}
.use-card--do   { border-color: rgba(70, 177, 123, .3); box-shadow: 0 0 40px -24px rgba(70, 177, 123, .4); }
.use-card--dont { border-color: rgba(226, 87, 76, .3);  box-shadow: 0 0 40px -24px rgba(226, 87, 76, .4); }
.use-card h3 { display: flex; align-items: center; gap: 10px; font-size: 1.05rem; }
.use-card--do h3 svg   { color: var(--buy); }
.use-card--dont h3 svg { color: var(--sell); }
.use-card ul { list-style: none; padding: 0; margin-top: 16px; display: grid; gap: 11px; }
.use-card li { display: flex; gap: 10px; font-size: .92rem; color: var(--text-2); }
.use-card li .ic { flex-shrink: 0; margin-top: 3px; }
.use-card--do li .ic   { color: var(--buy); }
.use-card--dont li .ic { color: var(--sell); }

.split-grid {
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: clamp(28px, 4vw, 56px);
  align-items: start;
}

@media (max-width: 860px) {
  .use-grid, .split-grid { grid-template-columns: 1fr; }
}

/* ============================================================================
   31. SUITE FEATURE PANEL — cross-sell on product pages
   ========================================================================== */
.suite-feature {
  position: relative;
  overflow: hidden;
  border: 1px solid transparent;
  border-radius: var(--r-xl);
  background:
    linear-gradient(180deg, #111827 0%, #0d1322 55%, #0a0e19 100%) padding-box,
    linear-gradient(120deg, rgba(232, 176, 75, .45), rgba(56, 189, 248, .35) 55%, var(--border)) border-box;
  box-shadow: 0 30px 80px -40px rgba(31, 143, 230, .5);
  padding: clamp(28px, 4vw, 48px);
  display: grid;
  grid-template-columns: 1.1fr .9fr;
  gap: clamp(28px, 4vw, 56px);
  align-items: center;
}
.suite-feature::before {
  content: "";
  position: absolute; top: -160px; left: -120px;
  width: 480px; height: 480px; border-radius: 50%;
  background: radial-gradient(circle, rgba(232, 176, 75, .12), transparent 62%);
  pointer-events: none;
}
.suite-feature > * { position: relative; }
.suite-feature h2 { font-size: clamp(1.4rem, 1.1rem + 1.4vw, 1.9rem); margin-top: 14px; }
.suite-feature .lead { margin-top: 10px; font-size: 1rem; }
.suite-feature .bundle-points { margin-top: 18px; }
.suite-feature .price-cta { margin-top: 24px; }
@media (max-width: 900px) {
  .suite-feature { grid-template-columns: 1fr; }
}

/* ============================================================================
   32. PRODUCT HERO LIFE — glow, grid, rotating light ring
   ========================================================================== */

.product-hero {
  position: relative;
  overflow: hidden;
}
.product-hero::before {
  content: "";
  position: absolute; inset: 0;
  background: radial-gradient(70% 55% at 50% -18%, rgba(89, 170, 239, .25), rgba(9, 9, 11, 0) 70%);
  pointer-events: none;
}
.product-hero::after {
  content: "";
  position: absolute; inset: 0;
  background-image:
    linear-gradient(rgba(255, 255, 255, .03) 1px, transparent 1px),
    linear-gradient(90deg, rgba(255, 255, 255, .03) 1px, transparent 1px);
  background-size: 56px 56px;
  -webkit-mask-image: radial-gradient(70% 55% at 50% 0%, black, transparent 80%);
  mask-image: radial-gradient(70% 55% at 50% 0%, black, transparent 80%);
  pointer-events: none;
}
.product-hero .container { position: relative; z-index: 1; }

@property --ga {
  syntax: "<angle>";
  initial-value: 0deg;
  inherits: false;
}
.glow-ring { position: relative; border-radius: var(--r-lg); }
.glow-ring::before,
.glow-ring::after {
  content: "";
  position: absolute;
  inset: -2px;
  border-radius: calc(var(--r-lg) + 2px);
  background: conic-gradient(from var(--ga),
    rgba(31, 143, 230, 0) 0%,
    rgba(92, 182, 247, .9) 10%,
    rgba(61, 218, 208, .7) 20%,
    rgba(31, 143, 230, 0) 34%);
  animation: ringSpin 7s linear infinite;
  pointer-events: none;
}
.glow-ring::after { filter: blur(14px); opacity: .55; inset: -3px; }
.glow-ring .media-frame { position: relative; z-index: 1; }
@keyframes ringSpin { to { --ga: 360deg; } }

@media (prefers-reduced-motion: reduce) {
  .glow-ring::before, .glow-ring::after { animation: none; }
}

/* ============================================================================
   33. SUITE PAGE — inclusion list, gold hero
   ========================================================================== */
.suite-list {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 10px 20px;
}
.suite-list__item {
  display: flex; align-items: center; gap: 10px;
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: 12px;
  padding: 12px 15px;
  font-size: .92rem;
  color: var(--text);
  transition: border-color .15s var(--ease);
}
.suite-list__item:hover { border-color: var(--border-hover); }
.suite-list__item .ok { color: var(--buy); flex-shrink: 0; }
.suite-list__item .tag { margin-left: auto; }
.suite-list__item a { color: var(--text); }
.suite-list__item a:hover { color: var(--accent-text); }

.suite-hero::before {
  background: radial-gradient(70% 55% at 50% -18%, rgba(232, 176, 75, .18), rgba(9, 9, 11, 0) 70%) !important;
}

@media (max-width: 900px) { .suite-list { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .suite-list { grid-template-columns: 1fr; } }

/* ============================================================================
   34. LEGAL PAGES / PROSE
   ========================================================================== */
.legal-updated { font-family: var(--font-mono); font-size: .78rem; color: var(--text-3); margin-top: 14px; }
.prose h2 { margin-top: 42px; font-size: 1.25rem; }
.prose h2:first-child { margin-top: 0; }
.prose h3 { margin-top: 26px; margin-bottom: 8px; font-size: 1.02rem; }
.prose ul { margin: 12px 0 0 18px; color: var(--text-2); display: grid; gap: 8px; font-size: .95rem; }

/* ============================================================================
   35. FREE TRIAL PAGE — glass form
   ========================================================================== */
.trial-form {
  background: var(--card);
  border: 1px solid var(--border);
  border-radius: var(--r-lg);
  padding: clamp(24px, 4vw, 40px);
  max-width: 560px;
}
.trial-form label {
  display: block;
  color: var(--text);
  font-weight: 500;
  font-size: .95rem;
  margin: 18px 0 8px;
}
.trial-form label:first-child { margin-top: 0; }
.trial-form .hint { font-size: .82rem; color: var(--text-3); margin-top: 6px; }
.trial-form input[type="email"],
.trial-form input[type="text"],
.trial-form textarea {
  width: 100%;
  background: rgba(9, 9, 11, .7);
  border: 1px solid var(--border);
  border-radius: 12px;
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 1rem;
  padding: 12px 14px;
  transition: border-color .15s var(--ease), box-shadow .15s var(--ease);
}
.trial-form input:focus, .trial-form textarea:focus {
  outline: none;
  border-color: rgba(34, 211, 238, .45);
  box-shadow: 0 0 0 3px rgba(34, 211, 238, .12);
}
.trial-form textarea { min-height: 90px; resize: vertical; }
.trial-form .btn { margin-top: 22px; width: 100%; }
.trial-form .hp-field { position: absolute; left: -9999px; opacity: 0; height: 0; overflow: hidden; }

.form-success {
  display: none;
  background: rgba(70, 177, 123, .1);
  border: 1px solid rgba(70, 177, 123, .35);
  border-radius: var(--r);
  padding: 20px 24px;
  color: var(--text);
  margin-bottom: 24px;
  max-width: 560px;
}
.form-success.is-visible { display: block; }

/* ============================================================================
   36–41. WOOCOMMERCE — dark baseline (token-driven, carried from v1)
   ========================================================================== */

.wc-block-components-text-input input,
.wc-block-components-text-input textarea,
.wc-block-components-combobox .components-combobox-control__suggestions-container,
.wc-block-components-combobox input,
.wc-block-components-select .components-custom-select-control__button,
.woocommerce form .form-row input.input-text,
.woocommerce form .form-row textarea,
.woocommerce form .form-row select {
  background: var(--bg) !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}
.wc-block-components-text-input label,
.wc-block-components-checkbox__label,
.woocommerce form .form-row label { color: var(--text-2) !important; }

.wc-block-components-button:not(.is-link),
.woocommerce #respond input#submit,
.woocommerce a.button.alt,
.woocommerce button.button.alt {
  background: #1c74be !important;   /* white text clears WCAG AA (4.9:1) */
  color: #fff !important;
  border: none !important;
  border-radius: var(--r-pill) !important;
}
.wc-block-components-button:not(.is-link):hover { background: #175f9f !important; }

.wc-block-components-sidebar .wc-block-components-panel,
.wc-block-components-order-summary,
.wc-block-cart-items,
.woocommerce-checkout-review-order-table,
.woocommerce table.shop_table {
  background: var(--card-solid) !important;
  border-color: var(--border) !important;
  color: var(--text-2) !important;
}
.wc-block-components-order-summary-item__description,
.wc-block-components-product-name,
.wc-block-components-totals-item,
.wc-block-components-totals-footer-item,
.woocommerce table.shop_table td,
.woocommerce table.shop_table th { color: var(--text) !important; border-color: var(--border) !important; }

.wc-block-components-checkout-step__heading,
.wc-block-components-title,
.wc-block-components-checkout-step__description { color: var(--text) !important; }

.wc-block-components-notice-banner.is-success { background: rgba(70, 177, 123, .12) !important; border-color: rgba(70, 177, 123, .4) !important; color: var(--text) !important; }
.wc-block-components-notice-banner.is-error   { background: rgba(226, 87, 76, .12) !important; border-color: rgba(226, 87, 76, .4) !important; color: var(--text) !important; }

.woocommerce-MyAccount-navigation ul { list-style: none; padding: 0; }
.woocommerce-MyAccount-navigation li a {
  display: block; padding: 10px 14px; border: 1px solid var(--border);
  border-radius: var(--r-sm); margin-bottom: 8px; color: var(--text-2);
  background: var(--card-solid);
}
.woocommerce-MyAccount-navigation li.is-active a,
.woocommerce-MyAccount-navigation li a:hover { color: var(--text); border-color: var(--accent-line); }

.checkout-header {
  background: var(--bg);
  border-bottom: 1px solid var(--border);
}
.checkout-header__inner {
  display: flex; align-items: center; justify-content: space-between;
  height: 56px;
}
.checkout-header__right { display: inline-flex; align-items: center; gap: 20px; }
.checkout-header__back {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: .92rem; font-weight: 500;
  color: var(--text-3);
  text-decoration: none;
  transition: color .15s ease;
}
.checkout-header__back:hover { color: var(--accent-text); }
.woocommerce-cart .checkout-header__back { display: none; }
.checkout-header__secure {
  display: inline-flex; align-items: center; gap: 8px;
  font-size: .92rem; font-weight: 500;
  color: var(--text-2);
}
.checkout-header__secure svg { color: var(--buy); width: 15px; height: 15px; }
@media (max-width: 560px) {
  .checkout-header__secure { display: none; }
}

.wc-block-components-order-summary-item__image img,
.wc-block-cart-item__image img {
  border-radius: 10px;
  border: 1px solid var(--border);
}

.wc-block-components-checkout-place-order-button,
.wp-block-woocommerce-checkout .wc-block-components-button:not(.is-link) {
  background: linear-gradient(180deg, #2278c4 0%, #175f9f 100%) !important;
  color: #fff !important;
  font-weight: 600;
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, .22), 0 8px 28px -8px rgba(31, 143, 230, .65) !important;
}
.wc-block-components-checkout-place-order-button:hover { background: linear-gradient(180deg, #1f6fb5 0%, #14568f 100%) !important; }

.wc-block-components-order-summary-item__description p { color: var(--text-3); font-size: .8rem; }

.wp-block-woocommerce-checkout .wc-block-components-text-input input,
.wp-block-woocommerce-checkout textarea {
  background: var(--card-solid) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  border-radius: 10px !important;
}
.wp-block-woocommerce-checkout .wc-block-components-text-input input:focus,
.wp-block-woocommerce-checkout textarea:focus {
  border-color: var(--accent-line) !important;
  box-shadow: 0 0 0 1px var(--accent-line) !important;
}

.wc-blocks-components-select__container,
.wc-block-components-combobox .components-combobox-control__suggestions-container,
.wp-block-woocommerce-checkout select {
  background: var(--card-solid) !important;
  border: 1px solid var(--border) !important;
  border-radius: 10px !important;
  color: var(--text) !important;
}
.wc-blocks-components-select__select,
.wc-block-components-combobox input {
  background: transparent !important;
  color: var(--text) !important;
  border: none !important;
}
.wc-blocks-components-select__label,
.wc-block-components-combobox .components-base-control__label { color: var(--text-3) !important; }
.wc-blocks-components-select__expander { color: var(--text-2) !important; }
.wc-blocks-components-select__container option,
.wp-block-woocommerce-checkout select option { background: var(--card-solid); color: var(--text); }

.wc-block-components-checkbox .wc-block-components-checkbox__input {
  background: var(--card-solid) !important;
  border: 1px solid var(--border-hover) !important;
}
.wc-block-components-checkbox .wc-block-components-checkbox__input:checked {
  background: var(--accent) !important;
  border-color: var(--accent) !important;
}

.wc-block-components-checkout-step__heading { margin-bottom: 14px !important; }
.wc-block-components-checkout-step { margin-bottom: 34px !important; }

.wc-block-components-sidebar .wp-block-woocommerce-checkout-order-summary-block,
.wc-block-components-sidebar .wc-block-components-panel {
  background: var(--card-solid) !important;
  border: 1px solid var(--border) !important;
  border-radius: var(--r-lg) !important;
  padding: 10px 22px 18px !important;
}
.wc-block-components-order-summary-item {
  padding: 16px 0 !important;
  border-color: var(--border) !important;
  align-items: center !important;
}
.wc-block-components-order-summary-item__image {
  width: 96px !important;
  min-width: 96px !important;
  margin-right: 14px !important;
}
.wc-block-components-order-summary-item__image img {
  width: 96px !important;
  height: 96px !important;
  max-width: none !important;
  aspect-ratio: 1 !important;
  object-fit: cover !important;
  border-radius: 10px !important;
  border: 1px solid var(--border) !important;
}
.wc-block-cart-item__image { width: 96px !important; min-width: 96px !important; }
.wc-block-cart-item__image img {
  width: 96px !important;
  height: 96px !important;
  max-width: none !important;
  aspect-ratio: 1 !important;
  object-fit: cover !important;
}
.wc-block-components-order-summary-item__quantity {
  background: var(--accent) !important;
  border: none !important;
  color: #fff !important;
}
.wc-block-components-totals-wrapper { border-color: var(--border) !important; padding: 14px 0 !important; }
.wc-block-components-totals-item,
.wc-block-components-totals-footer-item { color: var(--text) !important; }
.wc-block-components-totals-footer-item .wc-block-components-totals-item__value { font-size: 1.3rem; }
.wc-block-components-totals-coupon-link,
.wc-block-components-panel__button { color: var(--text-2) !important; }
.wc-block-components-panel__button:hover { color: var(--text) !important; }

.wc-block-components-notice-banner { border-radius: var(--r-sm) !important; }

.checkout-main {
  max-width: var(--container);
  margin-inline: auto;
  padding: 28px var(--gutter) 72px;
}
@media (max-width: 720px) {
  .checkout-main { padding-top: 16px; }
}

body .wc-blocks-components-select__container,
body .components-form-token-field__input-container,
body .wc-block-components-combobox .components-combobox-control__input,
body .components-combobox-control input {
  background: var(--card-solid) !important;
  color: var(--text) !important;
  border: 1px solid var(--border) !important;
  border-radius: 10px !important;
}
body .wc-blocks-components-select__select { background: transparent !important; color: var(--text) !important; }
body .components-form-token-field__suggestions-list {
  background: var(--card-solid) !important;
  color: var(--text) !important;
  border-color: var(--border) !important;
}
body .components-form-token-field__suggestion.is-selected,
body .components-form-token-field__suggestion:hover { background: var(--accent-weak) !important; color: var(--text) !important; }

.wc-block-components-order-summary.is-large,
.wc-block-checkout__order-summary { border-color: var(--border) !important; }

.wp-block-woocommerce-checkout-order-payment-block {
  background: var(--surface) !important;
  border: 1px solid var(--accent-line) !important;
  border-radius: var(--r) !important;
  padding: 20px !important;
}

.wc-block-components-product-metadata { display: none !important; }

.fpl-trust-row {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  margin-top: 16px; padding-top: 14px;
  border-top: 1px solid var(--border);
  font-size: .82rem; color: var(--text-3);
}
.fpl-trust-row svg { color: var(--buy); flex-shrink: 0; }
.fpl-trust-row b { color: var(--text-2); font-weight: 500; }
.fpl-cards { display: inline-flex; gap: 6px; margin-left: auto; }
.fpl-cards i {
  font-style: normal;
  font-family: var(--font-mono); font-size: .6rem; letter-spacing: .05em;
  padding: 3px 8px;
  border: 1px solid var(--border); border-radius: 5px;
  color: var(--text-2);
}

/* ============================================================================
   42. EMPTY CART — dark, on-brand; drop the default "new in store" recs
   ----------------------------------------------------------------------------
   WooCommerce's empty-cart block ships a "New in store" heading, a dots
   separator and a product grid. Our products are catalog-hidden, so that grid
   is empty and the heading dangles. Style the message for the dark theme and
   hide the leftover noise; main.js injects a real "Browse indicators" button.
   ========================================================================== */
.wp-block-woocommerce-empty-cart-block {
  max-width: 640px;
  margin: 40px auto;
  padding: 24px 24px 48px;
  text-align: center;
}
.wc-block-cart__empty-cart__title {
  color: var(--text) !important;
  font-weight: 500;
}
.wc-block-cart__empty-cart__title svg,
.wc-block-cart__empty-cart__title path { fill: var(--text-3); stroke: var(--text-3); }
.wp-block-woocommerce-empty-cart-block .wp-block-separator,
.wp-block-woocommerce-empty-cart-block .wp-block-heading:not(.wc-block-cart__empty-cart__title),
.wp-block-woocommerce-empty-cart-block .wc-block-grid,
.wp-block-woocommerce-empty-cart-block ul.products,
.wp-block-woocommerce-empty-cart-block .wp-block-woocommerce-product-new,
.wp-block-woocommerce-empty-cart-block .wp-block-woocommerce-cart-cross-sells-block {
  display: none !important;
}
.fpl-empty-cta { margin-top: 26px; }

/* ============================================================================
   43. MOBILE CART — keep the thumbnail inside its column
   ----------------------------------------------------------------------------
   On small containers the Woo cart block switches to a grid that reserves
   ~80px for the image column. Our desktop polish (96px thumb with
   max-width:none) overflowed that column, so the product name rendered on
   top of the image. Cap the thumb on small screens; same for the checkout
   order summary, which shares the forced sizing.
   ========================================================================== */
@media (max-width: 700px) {
  .wc-block-cart-item__image,
  .wc-block-components-order-summary-item__image {
    width: auto !important;
    min-width: 0 !important;
  }
  .wc-block-cart-item__image img,
  .wc-block-components-order-summary-item__image img {
    width: 64px !important;
    height: 64px !important;
    max-width: 100% !important;
  }
}
