/* ============================================================
   Mission Green — Home v2 (Tesla-inspired)
   Scoped to .v2 on <body>. Loaded alongside styles.css (which
   provides base tokens, nav, footer, cookie banner, sticky CTA).
   ============================================================ */

/* ---------- Simplified nav (v2 only) ---------- */
.v2 .v2-nav-links { gap: 36px; }
.v2 .v2-nav-links .ni > a {
  font-family: var(--fb);
  font-size: 14px;
  font-weight: 500;
  letter-spacing: -.005em;
  color: rgba(255,255,255,.78);
  padding: 8px 2px;
  position: relative;
  transition: color .15s ease;
}
[data-theme="light"] .v2 .v2-nav-links .ni > a { color: rgba(0,0,0,.72); }
.v2 .v2-nav-links .ni > a::after {
  content: "";
  position: absolute;
  left: 0; right: 0; bottom: -2px;
  height: 2px;
  background: var(--g);
  transform: scaleX(0);
  transform-origin: left;
  transition: transform .2s ease;
}
.v2 .v2-nav-links .ni > a:hover { color: var(--g); }
.v2 .v2-nav-links .ni > a:hover::after { transform: scaleX(1); }
.v2 .v2-nav-links .ni > a svg.da { display: none; }
.v2 nav .mm { display: none !important; }

/* ---------- Hide legacy overlays injected by base stylesheets/JS ---------- */
.v2 .sticky-cta,
.v2 #stickyCta,
.v2 .mobile-cta-bar,
.v2 #mobile-cta-bar,
.v2 .social-float,
.v2 .toast,
.v2 #proofToast,
.v2 .scroll-progress,
.v2 .back-to-top,
.v2 .exit-popup-overlay,
.v2 #exitPopup,
.v2 .mg-proof-strip { display: none !important; }


/* ---------- Section rhythm ---------- */
.v2 main { background: var(--bk); }
.v2 section.v2-section {
  padding: clamp(96px, 12vw, 168px) clamp(24px, 6vw, 96px);
  position: relative;
  overflow: hidden;
}
.v2 section.v2-section.alt { background: var(--d1); }
.v2 .v2-inner { max-width: 1280px; margin: 0 auto; }
.v2 .v2-eyebrow {
  font-family: var(--fb);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--g);
  margin-bottom: 20px;
}
.v2 .v2-h2 {
  font-family: var(--fh);
  font-size: clamp(36px, 5vw, 56px);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -.02em;
  color: var(--text, #fff);
  margin: 0 0 20px;
}
[data-theme="light"] .v2 .v2-h2 { color: #0C100A; }
.v2 .v2-lede {
  font-size: clamp(17px, 1.4vw, 20px);
  line-height: 1.6;
  color: rgba(255,255,255,.62);
  max-width: 640px;
  margin: 0 0 48px;
}
[data-theme="light"] .v2 .v2-lede { color: rgba(0,0,0,.58); }

/* ---------- Hero ---------- */
.v2 .v2-hero {
  min-height: 92vh;
  padding: 120px clamp(24px, 6vw, 96px) 80px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  position: relative;
  overflow: hidden;
}
.v2 .v2-hero::before {
  /* single subtle radial glow — replaces the circuit tree */
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 80% 30%, rgba(128,217,89,.16), transparent 55%);
  pointer-events: none;
}
[data-theme="light"] .v2 .v2-hero::before {
  background: radial-gradient(ellipse at 80% 30%, rgba(128,217,89,.18), transparent 55%);
}
.v2 .v2-hero-inner {
  position: relative;
  z-index: 2;
  max-width: 1200px;
  margin: 0 auto;
  width: 100%;
}
.v2 .v2-hero-chip {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  padding: 8px 16px;
  border-radius: 999px;
  border: 1px solid rgba(128,217,89,.3);
  background: rgba(128,217,89,.08);
  font-family: var(--fb);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .04em;
  color: rgba(255,255,255,.85);
  margin-bottom: 32px;
}
[data-theme="light"] .v2 .v2-hero-chip { color: rgba(0,0,0,.78); background: rgba(128,217,89,.12); }
.v2 .v2-hero-chip::before {
  content: "";
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--g);
  box-shadow: 0 0 12px var(--g);
}
.v2 .v2-hero h1 {
  font-family: var(--fh);
  font-size: clamp(48px, 8vw, 104px);
  font-weight: 700;
  line-height: 1;
  letter-spacing: -.03em;
  margin: 0 0 28px;
  color: #fff;
  max-width: 14ch;
}
[data-theme="light"] .v2 .v2-hero h1 { color: #0C100A; }
.v2 .v2-hero h1 .accent { color: var(--g); }
.v2 .v2-hero p.v2-sub {
  font-size: clamp(18px, 1.5vw, 22px);
  line-height: 1.5;
  color: rgba(255,255,255,.7);
  max-width: 540px;
  margin: 0 0 40px;
  font-weight: 400;
}
[data-theme="light"] .v2 .v2-hero p.v2-sub { color: rgba(0,0,0,.62); }
.v2 .v2-hero .v2-cta-row {
  display: flex;
  gap: 12px;
  flex-wrap: wrap;
}
.v2 .v2-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 16px 32px;
  border-radius: 100px;
  font-family: var(--fb);
  font-size: 14px;
  font-weight: 600;
  letter-spacing: .02em;
  border: none;
  cursor: pointer;
  transition: transform .15s ease, background .2s ease, color .2s ease, border-color .2s ease;
  text-decoration: none;
  white-space: nowrap;
  min-width: 200px;
  justify-content: center;
}
/* Ensure the focus ring isn't clipped by the shine sweep pseudo-element
   that required overflow:hidden on the button. */
.v2 .v2-btn:focus-visible {
  outline: 2px solid var(--g);
  outline-offset: 3px;
}
.v2 .v2-btn-primary { background: var(--g); color: #0C100A; }
.v2 .v2-btn-primary:hover { background: #9ae577; transform: translateY(-1px); }
.v2 .v2-btn-ghost {
  background: rgba(255,255,255,.08);
  color: #fff;
  border: 1px solid rgba(255,255,255,.2);
}
[data-theme="light"] .v2 .v2-btn-ghost {
  background: rgba(0,0,0,.04);
  color: #0C100A;
  border-color: rgba(0,0,0,.12);
}
.v2 .v2-btn-ghost:hover { background: rgba(255,255,255,.14); transform: translateY(-1px); }
[data-theme="light"] .v2 .v2-btn-ghost:hover { background: rgba(0,0,0,.06); }

/* ---------- Product grid (4 cards) ---------- */
.v2 .v2-products {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 20px;
  margin-top: 48px;
}
.v2 .v2-product {
  position: relative;
  display: flex;
  flex-direction: column;
  aspect-ratio: 3 / 4;
  padding: 36px;
  border-radius: 20px;
  text-decoration: none;
  color: #fff;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.08);
  background: linear-gradient(180deg, rgba(128,217,89,.05) 0%, rgba(6,6,6,.8) 100%);
  transition: transform .25s ease, border-color .25s ease;
}
[data-theme="light"] .v2 .v2-product {
  color: #0C100A;
  border-color: rgba(0,0,0,.08);
  background: linear-gradient(180deg, #f7faf1 0%, #eff3e6 100%);
}
.v2 .v2-product:hover { transform: translateY(-4px); border-color: rgba(128,217,89,.4); }
.v2 .v2-product-label {
  font-family: var(--fb);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--g);
  margin-bottom: auto;
}
.v2 .v2-product-icon {
  width: 56px; height: 56px;
  display: flex; align-items: center; justify-content: center;
  border-radius: 14px;
  background: rgba(128,217,89,.12);
  border: 1px solid rgba(128,217,89,.25);
  margin-bottom: 24px;
}
.v2 .v2-product-icon svg { stroke: var(--g); }
.v2 .v2-product h3 {
  font-family: var(--fh);
  font-size: clamp(22px, 2vw, 28px);
  font-weight: 700;
  line-height: 1.15;
  letter-spacing: -.01em;
  margin: 0 0 12px;
}
.v2 .v2-product p {
  font-size: 14px;
  line-height: 1.55;
  color: rgba(255,255,255,.6);
  margin: 0 0 24px;
}
[data-theme="light"] .v2 .v2-product p { color: rgba(0,0,0,.55); }
.v2 .v2-product-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-family: var(--fb);
  font-size: 13px;
  font-weight: 600;
  color: var(--g);
  margin-top: auto;
}

/* ---------- Trust strip (monochrome) ---------- */
.v2 .v2-trust { text-align: center; padding: 72px clamp(24px, 6vw, 96px); }
.v2 .v2-trust-label {
  font-family: var(--fb);
  font-size: 12px;
  font-weight: 600;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(255,255,255,.4);
  margin-bottom: 28px;
}
[data-theme="light"] .v2 .v2-trust-label { color: rgba(0,0,0,.4); }
.v2 .v2-trust-row {
  display: flex;
  justify-content: center;
  flex-wrap: wrap;
  gap: 20px 32px;
  align-items: center;
  font-family: var(--fh);
  font-size: clamp(15px, 1.2vw, 19px);
  font-weight: 600;
  color: rgba(255,255,255,.62);
  letter-spacing: .01em;
}
[data-theme="light"] .v2 .v2-trust-row { color: rgba(0,0,0,.55); }
.v2 .v2-trust-row .v2-trust-dot {
  display: inline-block;
  width: 4px; height: 4px; border-radius: 50%;
  background: rgba(128,217,89,.5);
}
.v2 .v2-trust-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 40px;
  margin-top: 64px;
  border-top: 1px solid rgba(255,255,255,.08);
  padding-top: 48px;
  max-width: 1200px;
  margin-left: auto;
  margin-right: auto;
}
[data-theme="light"] .v2 .v2-trust-stats { border-top-color: rgba(0,0,0,.08); }
.v2 .v2-trust-stat strong {
  display: block;
  font-family: var(--fh);
  font-size: clamp(32px, 3.5vw, 52px);
  font-weight: 700;
  color: #fff;
  line-height: 1;
  letter-spacing: -.02em;
}
[data-theme="light"] .v2 .v2-trust-stat strong { color: #0C100A; }
.v2 .v2-trust-stat span {
  display: block;
  font-family: var(--fb);
  font-size: 13px;
  color: rgba(255,255,255,.5);
  margin-top: 10px;
}
[data-theme="light"] .v2 .v2-trust-stat span { color: rgba(0,0,0,.5); }

/* ---------- Testimonial / case study ---------- */
.v2 .v2-case {
  text-align: center;
  padding: clamp(96px, 12vw, 168px) clamp(24px, 6vw, 96px);
}
.v2 .v2-case blockquote {
  font-family: var(--fh);
  font-size: clamp(28px, 3.5vw, 48px);
  font-weight: 600;
  line-height: 1.25;
  letter-spacing: -.015em;
  color: #fff;
  max-width: 880px;
  margin: 0 auto 32px;
  quotes: "“" "”";
}
[data-theme="light"] .v2 .v2-case blockquote { color: #0C100A; }
.v2 .v2-case blockquote::before { content: open-quote; margin-right: .1em; color: var(--g); }
.v2 .v2-case blockquote::after { content: close-quote; margin-left: .1em; color: var(--g); }
.v2 .v2-case-cite {
  font-family: var(--fb);
  font-size: 14px;
  color: rgba(255,255,255,.5);
  letter-spacing: .04em;
}
[data-theme="light"] .v2 .v2-case-cite { color: rgba(0,0,0,.5); }

/* ---------- Final CTA ---------- */
.v2 .v2-final {
  text-align: center;
  padding: clamp(96px, 12vw, 168px) clamp(24px, 6vw, 96px);
  background: radial-gradient(ellipse at center, rgba(128,217,89,.12), transparent 60%), var(--bk);
}
[data-theme="light"] .v2 .v2-final {
  background: radial-gradient(ellipse at center, rgba(128,217,89,.18), transparent 60%), var(--bk);
}
.v2 .v2-final h1,
.v2 .v2-final h2 {
  font-family: var(--fh);
  font-size: clamp(36px, 5vw, 72px);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -.025em;
  color: #fff;
  margin: 0 0 16px;
}
[data-theme="light"] .v2 .v2-final h1,
[data-theme="light"] .v2 .v2-final h2 { color: #0C100A; }
.v2 .v2-final p {
  font-size: 17px;
  color: rgba(255,255,255,.6);
  max-width: 560px;
  margin: 0 auto 40px;
}
[data-theme="light"] .v2 .v2-final p { color: rgba(0,0,0,.55); }

/* ---------- Calculator wrapper ---------- */
.v2 .v2-calc { max-width: 1080px; margin: 0 auto; }
.v2 .v2-calc .calc-wrap {
  border-radius: 20px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  padding: clamp(28px, 4vw, 48px);
}
[data-theme="light"] .v2 .v2-calc .calc-wrap {
  background: rgba(0,0,0,.02);
  border-color: rgba(0,0,0,.08);
}
.v2 .v2-calc .calc-fields {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.v2 .v2-calc .calc-field { display: flex; flex-direction: column; gap: 8px; }
.v2 .v2-calc .calc-field label {
  font-family: var(--fb);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .04em;
  color: rgba(255,255,255,.6);
  text-transform: uppercase;
}
[data-theme="light"] .v2 .v2-calc .calc-field label { color: rgba(0,0,0,.55); }
.v2 .v2-calc .calc-field input,
.v2 .v2-calc .calc-field select {
  height: 52px;
  padding: 0 16px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 12px;
  color: #fff;
  font-family: var(--fb);
  font-size: 16px;
  font-weight: 500;
  outline: none;
  transition: border-color .15s ease, background .15s ease;
}
[data-theme="light"] .v2 .v2-calc .calc-field input,
[data-theme="light"] .v2 .v2-calc .calc-field select {
  background: #fff;
  border-color: rgba(0,0,0,.1);
  color: #0C100A;
}
.v2 .v2-calc .calc-field input:focus,
.v2 .v2-calc .calc-field select:focus { border-color: var(--g); background: rgba(128,217,89,.06); }
.v2 .v2-calc-results {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  margin-top: 32px;
  padding: 0;
  background: rgba(255,255,255,.08);
  border-radius: 14px;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.08);
}
[data-theme="light"] .v2 .v2-calc-results {
  background: rgba(0,0,0,.08);
  border-color: rgba(0,0,0,.08);
}
.v2 .v2-calc-cell {
  padding: 24px 20px;
  background: rgba(6,6,6,.85);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
[data-theme="light"] .v2 .v2-calc-cell { background: #f5f5f0; }
.v2 .v2-calc-lbl {
  font-family: var(--fb);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(255,255,255,.5);
}
[data-theme="light"] .v2 .v2-calc-lbl { color: rgba(0,0,0,.5); }
.v2 .v2-calc-cell strong {
  font-family: var(--fh);
  font-size: clamp(22px, 2vw, 28px);
  font-weight: 700;
  color: var(--g);
  letter-spacing: -.01em;
  line-height: 1.1;
}
.v2 .v2-calc-note {
  margin-top: 16px;
  font-size: 12px;
  color: rgba(255,255,255,.4);
  font-style: italic;
}
[data-theme="light"] .v2 .v2-calc-note { color: rgba(0,0,0,.4); }

@media (max-width: 720px) {
  .v2 .v2-calc .calc-fields { grid-template-columns: 1fr; }
  .v2 .v2-calc-results { grid-template-columns: repeat(2, 1fr); }
}

/* ---------- Responsive ---------- */
@media (max-width: 960px) {
  .v2 .v2-products { grid-template-columns: repeat(2, 1fr); }
  .v2 .v2-trust-stats { grid-template-columns: repeat(2, 1fr); gap: 32px; }
  .v2 .v2-hero .v2-cta-row { flex-direction: column; align-items: stretch; }
  .v2 .v2-btn { min-width: 0; width: 100%; }
}
@media (max-width: 600px) {
  .v2 .v2-products { grid-template-columns: 1fr; }
  .v2 .v2-product { aspect-ratio: auto; padding: 28px; }
  .v2 section.v2-section { padding: 72px 20px; }
  .v2 .v2-hero { padding: 100px 20px 60px; min-height: 88vh; }
}

/* ============================================================
   Contact v2 — split hero + form, 3-step process
   ============================================================ */
.v2 .v2-contact-hero {
  padding: 120px clamp(24px, 6vw, 96px) 72px;
  background: var(--bk);
  position: relative;
  overflow: hidden;
}
.v2 .v2-contact-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(ellipse at 85% 20%, rgba(128,217,89,.14), transparent 55%);
  pointer-events: none;
}
.v2 .v2-contact-hero-inner {
  position: relative;
  max-width: 1280px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
  align-items: start;
}
.v2 .v2-contact-hero-left h1 {
  font-family: var(--fh);
  font-size: clamp(40px, 5.5vw, 72px);
  font-weight: 700;
  line-height: 1.05;
  letter-spacing: -.025em;
  margin: 28px 0 24px;
  color: #fff;
}
[data-theme="light"] .v2 .v2-contact-hero-left h1 { color: #0C100A; }
.v2 .v2-contact-hero-left h1 .accent { color: var(--g); }
.v2 .v2-contact-hero-left .v2-sub { margin-bottom: 40px; }

.v2 .v2-contact-methods {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-top: 32px;
}
.v2 .v2-contact-method {
  display: block;
  padding: 18px 22px;
  border-radius: 14px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  text-decoration: none;
  color: inherit;
  transition: border-color .2s ease, background .2s ease;
}
[data-theme="light"] .v2 .v2-contact-method {
  background: rgba(0,0,0,.02);
  border-color: rgba(0,0,0,.08);
}
a.v2-contact-method:hover { border-color: rgba(128,217,89,.4); background: rgba(128,217,89,.05); }
.v2 .v2-cm-label {
  display: block;
  font-family: var(--fb);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--g);
  margin-bottom: 6px;
}
.v2 .v2-contact-method strong {
  display: block;
  font-family: var(--fb);
  font-size: 17px;
  font-weight: 600;
  color: #fff;
  letter-spacing: -.005em;
}
[data-theme="light"] .v2 .v2-contact-method strong { color: #0C100A; }
.v2 .v2-cm-note {
  display: block;
  font-size: 13px;
  color: rgba(255,255,255,.45);
  margin-top: 4px;
}
[data-theme="light"] .v2 .v2-cm-note { color: rgba(0,0,0,.5); }

/* ---------- Contact form ---------- */
.v2 .v2-form {
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
  border-radius: 20px;
  padding: clamp(28px, 3.5vw, 44px);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
[data-theme="light"] .v2 .v2-form {
  background: #fff;
  border-color: rgba(0,0,0,.08);
  box-shadow: 0 4px 24px rgba(0,0,0,.05);
}
.v2 .v2-form-title {
  font-family: var(--fh);
  font-size: clamp(22px, 2.2vw, 28px);
  font-weight: 700;
  letter-spacing: -.015em;
  margin: 0 0 28px;
  color: #fff;
}
[data-theme="light"] .v2 .v2-form-title { color: #0C100A; }

.v2 .v2-form-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 18px;
}
.v2 .v2-field { display: flex; flex-direction: column; gap: 7px; }
.v2 .v2-field.v2-field-full { grid-column: 1 / -1; }
.v2 .v2-field label {
  font-family: var(--fb);
  font-size: 12px;
  font-weight: 500;
  letter-spacing: .03em;
  color: rgba(255,255,255,.6);
}
[data-theme="light"] .v2 .v2-field label { color: rgba(0,0,0,.6); }
.v2 .v2-field input,
.v2 .v2-field select,
.v2 .v2-field textarea {
  height: 48px;
  padding: 0 14px;
  background: rgba(255,255,255,.06);
  border: 1px solid rgba(255,255,255,.12);
  border-radius: 10px;
  color: #fff;
  font-family: var(--fb);
  font-size: 15px;
  outline: none;
  transition: border-color .15s ease, background .15s ease;
}
[data-theme="light"] .v2 .v2-field input,
[data-theme="light"] .v2 .v2-field select,
[data-theme="light"] .v2 .v2-field textarea {
  background: #f8f8f3;
  border-color: rgba(0,0,0,.1);
  color: #0C100A;
}
.v2 .v2-field textarea { height: auto; padding: 12px 14px; resize: vertical; min-height: 80px; font-family: var(--fb); }
.v2 .v2-field input:focus,
.v2 .v2-field select:focus,
.v2 .v2-field textarea:focus {
  border-color: var(--g);
  background: rgba(128,217,89,.06);
}
.v2 .v2-form-privacy {
  font-size: 12px;
  color: rgba(255,255,255,.4);
  margin: 16px 0 0;
  text-align: center;
}
[data-theme="light"] .v2 .v2-form-privacy { color: rgba(0,0,0,.45); }
.v2 .v2-form-privacy a { color: var(--g); text-decoration: none; }
.v2 .v2-form-privacy a:hover { text-decoration: underline; }

.v2 .v2-form-success {
  background: rgba(128,217,89,.08);
  border: 1px solid rgba(128,217,89,.3);
  border-radius: 20px;
  padding: 48px 32px;
  text-align: center;
  color: inherit;
}
.v2 .v2-form-success-icon {
  width: 64px; height: 64px;
  margin: 0 auto 20px;
  border-radius: 50%;
  background: var(--g);
  color: #0C100A;
  display: flex; align-items: center; justify-content: center;
}
.v2 .v2-form-success h3 {
  font-family: var(--fh);
  font-size: 28px;
  font-weight: 700;
  color: #fff;
  letter-spacing: -.02em;
  margin: 0 0 10px;
}
[data-theme="light"] .v2 .v2-form-success h3 { color: #0C100A; }
.v2 .v2-form-success p {
  font-size: 16px;
  color: rgba(255,255,255,.65);
  max-width: 380px;
  margin: 0 auto;
  line-height: 1.55;
}
[data-theme="light"] .v2 .v2-form-success p { color: rgba(0,0,0,.6); }

/* ---------- 3-step process ---------- */
.v2 .v2-process {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
  margin-top: 48px;
}
.v2 .v2-step {
  padding: 40px 32px;
  border-radius: 20px;
  background: rgba(255,255,255,.04);
  border: 1px solid rgba(255,255,255,.08);
}
[data-theme="light"] .v2 .v2-step {
  background: #fff;
  border-color: rgba(0,0,0,.08);
  box-shadow: 0 4px 24px rgba(0,0,0,.04);
}
.v2 .v2-step-num {
  font-family: var(--fb);
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .14em;
  color: var(--g);
  display: block;
  margin-bottom: 20px;
}
.v2 .v2-step h3 {
  font-family: var(--fh);
  font-size: clamp(22px, 2vw, 28px);
  font-weight: 700;
  letter-spacing: -.01em;
  line-height: 1.15;
  margin: 0 0 14px;
  color: #fff;
}
[data-theme="light"] .v2 .v2-step h3 { color: #0C100A; }
.v2 .v2-step p {
  font-size: 15px;
  line-height: 1.55;
  color: rgba(255,255,255,.6);
  margin: 0;
}
[data-theme="light"] .v2 .v2-step p { color: rgba(0,0,0,.58); }

/* ---------- Responsive for contact ---------- */
@media (max-width: 960px) {
  .v2 .v2-contact-hero-inner { grid-template-columns: 1fr; gap: 48px; }
  .v2 .v2-process { grid-template-columns: 1fr; gap: 16px; }
  .v2 .v2-form-grid { grid-template-columns: 1fr; }
}
@media (max-width: 600px) {
  .v2 .v2-contact-hero { padding: 100px 20px 40px; }
  .v2 .v2-contact-hero-left h1 { font-size: 40px; }
}

/* ============================================================
   v2 — Premium animation layer
   GPU-only (transform / opacity), subtle easing, no bounce.
   All effects gated by prefers-reduced-motion at the bottom.
   ============================================================ */

/* ---------- Easing tokens (re-exported for clarity) ---------- */
.v2 { --v2-ease: cubic-bezier(.22, 1, .36, 1); --v2-ease-soft: cubic-bezier(.4, 0, .2, 1); }

/* ---------- Hero entrance ----------
   IMPORTANT: We deliberately animate ONLY transform (and a brief filter)
   here — NOT opacity. CSS animations pause on hidden / freshly-loading
   tabs and freeze at frame 0; an opacity:0 → opacity:1 fade frozen at
   frame 0 leaves the element invisible. By keeping opacity at 1
   throughout, the element is always visible even if the animation
   never gets a chance to run. The slide-up alone is still elegant. */
.v2 .v2-hero-chip,
.v2 .v2-hero h1,
.v2 .v2-hero p.v2-sub,
.v2 .v2-hero .v2-cta-row { transform: translateY(0); animation: v2-rise .9s var(--v2-ease) forwards; }
.v2 .v2-hero-chip      { animation-delay: .05s; }
.v2 .v2-hero h1        { animation-delay: .18s; }
.v2 .v2-hero p.v2-sub  { animation-delay: .35s; }
.v2 .v2-hero .v2-cta-row { animation-delay: .50s; }

@keyframes v2-rise {
  0%   { transform: translateY(18px); filter: blur(2px); }
  60%  { filter: blur(0); }
  100% { transform: none; filter: blur(0); }
}

/* Hero chip glowing dot — slow heartbeat */
.v2 .v2-hero-chip::before { animation: v2-dot-pulse 2.4s ease-in-out infinite; }
@keyframes v2-dot-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(128,217,89,.55), 0 0 12px var(--g); transform: scale(1); }
  50%      { box-shadow: 0 0 0 6px rgba(128,217,89,0),  0 0 18px var(--g); transform: scale(1.08); }
}

/* Accent gradient sheen on the hero accent word */
.v2 .v2-hero h1 .accent {
  background: linear-gradient(110deg, var(--g) 0%, #b8f08c 30%, var(--g) 60%, #b8f08c 100%);
  background-size: 220% 100%;
  -webkit-background-clip: text;
          background-clip: text;
  -webkit-text-fill-color: transparent;
          color: transparent;
  animation: v2-sheen 8s ease-in-out infinite;
}
@keyframes v2-sheen {
  0%, 100% { background-position: 0% 50%; }
  50%      { background-position: 100% 50%; }
}

/* Hero ambient glow — slow drift */
.v2 .v2-hero::before { animation: v2-glow-drift 18s ease-in-out infinite alternate; }
@keyframes v2-glow-drift {
  0%   { transform: translate3d(0, 0, 0) scale(1); opacity: 1; }
  100% { transform: translate3d(-3%, 2%, 0) scale(1.08); opacity: .85; }
}

/* Mouse-tracked parallax glow (set via JS as --mx / --my on .v2-hero) */
.v2 .v2-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(420px circle at calc(var(--mx, 50%) ) calc(var(--my, 30%)), rgba(128,217,89,.10), transparent 60%);
  pointer-events: none;
  transition: background-position .3s var(--v2-ease-soft);
  z-index: 1;
}

/* ---------- Scroll-reveal primitives (scoped) ----------
   IMPORTANT: like the hero entrance above, these keyframes must NOT
   start at opacity 0. A paused animation on a hidden / loading tab
   freezes at frame 0, and "opacity 0 → 1" frozen at the start leaves
   the element invisible to the user. We animate transform/filter only;
   opacity stays at 1 throughout, so a paused animation just shows the
   element in its final position. The reveal effect is the slide-in;
   visibility is non-negotiable.

   Each typed rule uses an extra `.v2` to ensure source-order safety. */
.v2 [data-anim="up"]    { transform: translateY(28px); }
.v2 [data-anim="left"]  { transform: translateX(-32px); }
.v2 [data-anim="right"] { transform: translateX(32px); }
.v2 [data-anim="scale"] { transform: scale(.96); }
.v2 [data-anim="blur"]  { filter: blur(8px); transform: translateY(14px); }
/* Fallback (specificity 0,3,0) */
.v2 [data-anim].is-in                 { animation: v2-reveal-up   .9s var(--v2-ease) both; }
/* Typed (specificity 0,4,0 — always wins over fallback) */
.v2.v2 [data-anim="up"].is-in         { animation: v2-reveal-up    .9s var(--v2-ease) both; }
.v2.v2 [data-anim="left"].is-in       { animation: v2-reveal-left  .9s var(--v2-ease) both; }
.v2.v2 [data-anim="right"].is-in      { animation: v2-reveal-right .9s var(--v2-ease) both; }
.v2.v2 [data-anim="scale"].is-in      { animation: v2-reveal-scale .9s var(--v2-ease) both; }
.v2.v2 [data-anim="blur"].is-in       { animation: v2-reveal-blur 1.1s var(--v2-ease) both; }
@keyframes v2-reveal-up    { from { transform: translateY(28px); } to { transform: none; } }
@keyframes v2-reveal-left  { from { transform: translateX(-32px); } to { transform: none; } }
@keyframes v2-reveal-right { from { transform: translateX(32px); } to { transform: none; } }
@keyframes v2-reveal-scale { from { transform: scale(.96); } to { transform: none; } }
@keyframes v2-reveal-blur  { from { transform: translateY(14px); filter: blur(8px); } to { transform: none; filter: none; } }

/* ---------- Section heads ---------- */
.v2 .v2-eyebrow { position: relative; display: inline-block; }
.v2 .v2-eyebrow::after {
  content: "";
  display: inline-block;
  vertical-align: middle;
  width: 0; height: 1px;
  margin-left: 14px;
  background: var(--g);
  transition: width .9s var(--v2-ease) .15s;
}
.v2 .v2-eyebrow.is-in::after { width: 56px; }

/* ---------- Product cards ---------- */
.v2 .v2-product { transition: transform .45s var(--v2-ease), border-color .35s var(--v2-ease), box-shadow .45s var(--v2-ease); }
.v2 .v2-product::before {
  content: "";
  position: absolute;
  inset: -1px;
  border-radius: 20px;
  padding: 1px;
  background: conic-gradient(from var(--ang, 0deg) at 50% 50%, transparent 0deg, rgba(128,217,89,.55) 90deg, transparent 180deg, rgba(128,217,89,.35) 270deg, transparent 360deg);
  -webkit-mask: linear-gradient(#000, #000) content-box, linear-gradient(#000, #000);
          mask: linear-gradient(#000, #000) content-box, linear-gradient(#000, #000);
  -webkit-mask-composite: xor;
          mask-composite: exclude;
  opacity: 0;
  transition: opacity .35s var(--v2-ease);
  pointer-events: none;
}
.v2 .v2-product::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: 20px;
  background: radial-gradient(360px circle at var(--cx, 50%) var(--cy, 0%), rgba(128,217,89,.10), transparent 55%);
  opacity: 0;
  transition: opacity .35s var(--v2-ease);
  pointer-events: none;
}
.v2 .v2-product:hover { transform: translateY(-6px); box-shadow: 0 24px 60px -28px rgba(128,217,89,.35); }
.v2 .v2-product:hover::before { opacity: 1; animation: v2-card-rotate 6s linear infinite; }
.v2 .v2-product:hover::after  { opacity: 1; }
@keyframes v2-card-rotate { to { --ang: 360deg; } }
@property --ang { syntax: "<angle>"; inherits: false; initial-value: 0deg; }

.v2 .v2-product-icon { transition: transform .45s var(--v2-ease), background .35s var(--v2-ease), border-color .35s var(--v2-ease); }
.v2 .v2-product:hover .v2-product-icon { transform: translateY(-2px) rotate(-4deg); background: rgba(128,217,89,.18); border-color: rgba(128,217,89,.5); }
.v2 .v2-product-icon svg { transition: transform .6s var(--v2-ease); }
.v2 .v2-product:hover .v2-product-icon svg { transform: scale(1.1); }

.v2 .v2-product-link svg { transition: transform .35s var(--v2-ease); }
.v2 .v2-product:hover .v2-product-link svg { transform: translateX(4px); }

/* Stagger product-card entrance via parent observer */
.v2 .v2-products [data-anim].is-in { animation-delay: calc(var(--i, 0) * 90ms); }

/* ---------- Buttons: shine + arrow micro-interaction ----------
   We use a CSS animation (not transition) so the sweep plays once on
   hover-in and resets cleanly on hover-out — a transition would reverse
   the sweep on mouseleave, which looks glitchy. */
.v2 .v2-btn { position: relative; overflow: hidden; isolation: isolate; }
.v2 .v2-btn::after {
  content: "";
  position: absolute;
  top: 0; left: -150%;
  width: 60%; height: 100%;
  background: linear-gradient(110deg, transparent 0%, rgba(255,255,255,.35) 50%, transparent 100%);
  transform: skewX(-18deg);
  pointer-events: none;
  z-index: 1;
}
.v2 .v2-btn:hover::after { animation: v2-shine .7s var(--v2-ease); }
@keyframes v2-shine {
  from { left: -150%; }
  to   { left: 150%; }
}
.v2 .v2-btn-primary:hover { box-shadow: 0 14px 38px -14px rgba(128,217,89,.7); }
.v2 .v2-btn-ghost:hover { box-shadow: 0 12px 32px -16px rgba(0,0,0,.5); }

/* ---------- Trust strip ---------- */
.v2 .v2-trust-row span { transition: color .25s var(--v2-ease), transform .25s var(--v2-ease); }
.v2 .v2-trust-row span:hover:not(.v2-trust-dot) { color: var(--g); transform: translateY(-1px); }
.v2 .v2-trust-row .v2-trust-dot { animation: v2-dot-fade 3s ease-in-out infinite; }
@keyframes v2-dot-fade { 0%, 100% { opacity: .4; transform: scale(1); } 50% { opacity: 1; transform: scale(1.3); } }

.v2 .v2-trust-stat { position: relative; }
.v2 .v2-trust-stat::after {
  content: "";
  position: absolute;
  left: 50%; bottom: -14px;
  width: 0; height: 2px;
  background: linear-gradient(90deg, transparent, var(--g), transparent);
  transform: translateX(-50%);
  transition: width .8s var(--v2-ease) .25s;
}
.v2 .v2-trust-stat.is-in::after { width: 60%; }
.v2 .v2-trust-stat strong { display: inline-block; transition: transform .35s var(--v2-ease); }
.v2 .v2-trust-stat:hover strong { transform: translateY(-2px); }

/* ---------- Calculator ---------- */
.v2 .v2-calc .calc-wrap { transition: border-color .3s var(--v2-ease), box-shadow .3s var(--v2-ease); }
.v2 .v2-calc .calc-wrap:focus-within { border-color: rgba(128,217,89,.4); box-shadow: 0 0 0 4px rgba(128,217,89,.08); }
.v2 .v2-calc .calc-field input,
.v2 .v2-calc .calc-field select {
  transition: border-color .2s var(--v2-ease), background .2s var(--v2-ease), box-shadow .25s var(--v2-ease), transform .2s var(--v2-ease);
}
.v2 .v2-calc .calc-field input:focus,
.v2 .v2-calc .calc-field select:focus { box-shadow: 0 0 0 4px rgba(128,217,89,.12); transform: translateY(-1px); }

.v2 .v2-calc-cell { position: relative; overflow: hidden; transition: background .25s var(--v2-ease); }
.v2 .v2-calc-cell::before {
  content: "";
  position: absolute;
  left: 0; top: 0; bottom: 0;
  width: 2px;
  background: var(--g);
  transform: scaleY(0);
  transform-origin: top;
  transition: transform .5s var(--v2-ease);
}
.v2 .v2-calc-cell.is-in::before { transform: scaleY(1); }
.v2 .v2-calc-cell strong { display: inline-block; transition: transform .35s var(--v2-ease); }
.v2 .v2-calc-cell.flash strong { animation: v2-flash 0.6s var(--v2-ease); }
@keyframes v2-flash {
  0%   { transform: translateY(6px); opacity: .4; }
  60%  { transform: translateY(-2px); opacity: 1; }
  100% { transform: none; opacity: 1; }
}

/* ---------- Case study ---------- */
.v2 .v2-case blockquote { transition: opacity .9s var(--v2-ease), transform .9s var(--v2-ease); }
.v2 .v2-case blockquote::before,
.v2 .v2-case blockquote::after { display: inline-block; transition: transform .8s var(--v2-ease); transform: translateY(8px) scale(.6); opacity: 0; }
.v2 .v2-case blockquote.is-in::before { transform: none; opacity: 1; transition-delay: .15s; }
.v2 .v2-case blockquote.is-in::after  { transform: none; opacity: 1; transition-delay: .65s; }

/* ---------- Final CTA ---------- */
.v2 .v2-final { position: relative; overflow: hidden; }
.v2 .v2-final::after {
  content: "";
  position: absolute;
  inset: -20%;
  background: radial-gradient(closest-side, rgba(128,217,89,.18), transparent 70%);
  animation: v2-breathe 7s ease-in-out infinite;
  pointer-events: none;
  z-index: 0;
}
.v2 .v2-final h1, .v2 .v2-final h2, .v2 .v2-final p, .v2 .v2-final .v2-btn { position: relative; z-index: 1; }
@keyframes v2-breathe {
  0%, 100% { transform: scale(1) translate3d(0,0,0); opacity: .8; }
  50%      { transform: scale(1.08) translate3d(2%, -1%, 0); opacity: 1; }
}

/* ---------- Nav: smoother backdrop on scroll ---------- */
.v2 nav#nav { transition: backdrop-filter .35s var(--v2-ease), background .35s var(--v2-ease), border-color .35s var(--v2-ease); }
.v2 nav#nav.scrolled { backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); }
.v2 .nav-cta { transition: transform .25s var(--v2-ease), background .25s var(--v2-ease), box-shadow .25s var(--v2-ease); }
.v2 .nav-cta:hover { transform: translateY(-1px); box-shadow: 0 10px 24px -12px rgba(128,217,89,.6); }
.v2 .nav-logo-a img { transition: transform .5s var(--v2-ease); }
.v2 .nav-logo-a:hover img { transform: rotate(-6deg) scale(1.05); }
.v2 .nav-phone { transition: color .2s var(--v2-ease), transform .2s var(--v2-ease); }
.v2 .nav-phone:hover { color: var(--g); transform: translateY(-1px); }
.v2 .theme-toggle { transition: transform .35s var(--v2-ease), border-color .25s var(--v2-ease); }
.v2 .theme-toggle:hover { transform: rotate(-12deg); border-color: var(--g); }

/* ---------- Contact form refinements ---------- */
.v2 .v2-form { transition: border-color .3s var(--v2-ease), box-shadow .3s var(--v2-ease), transform .3s var(--v2-ease); }
.v2 .v2-form:focus-within { border-color: rgba(128,217,89,.35); box-shadow: 0 18px 42px -22px rgba(128,217,89,.3); }
.v2 .v2-field input,
.v2 .v2-field select,
.v2 .v2-field textarea { transition: border-color .2s var(--v2-ease), background .2s var(--v2-ease), box-shadow .25s var(--v2-ease); }
.v2 .v2-field input:focus,
.v2 .v2-field select:focus,
.v2 .v2-field textarea:focus { box-shadow: 0 0 0 4px rgba(128,217,89,.10); }
.v2 .v2-form-success-icon { animation: v2-success-pop .6s var(--v2-ease) both; }
@keyframes v2-success-pop {
  0%   { transform: scale(.4); opacity: 0; }
  60%  { transform: scale(1.08); opacity: 1; }
  100% { transform: scale(1); }
}

/* ---------- Contact-method cards & process steps ---------- */
.v2 .v2-contact-method,
.v2 .v2-step { transition: transform .35s var(--v2-ease), border-color .3s var(--v2-ease), background .3s var(--v2-ease), box-shadow .35s var(--v2-ease); }
.v2 .v2-contact-method:hover,
.v2 .v2-step:hover { transform: translateY(-3px); box-shadow: 0 16px 38px -22px rgba(128,217,89,.45); }
.v2 .v2-step-num { position: relative; }
.v2 .v2-step-num::before {
  content: "";
  display: inline-block;
  width: 0; height: 1px; vertical-align: middle;
  background: var(--g);
  margin-right: 0;
  transition: width .5s var(--v2-ease), margin-right .5s var(--v2-ease);
}
.v2 .v2-step:hover .v2-step-num::before { width: 22px; margin-right: 10px; }

/* ---------- Page enter (subtle slide — visibility-safe) ----------
   Same rule as the hero/data-anim above: animate transform only, never
   opacity. A paused animation must not leave the entire page invisible. */
.v2 main { animation: v2-page-in .55s var(--v2-ease-soft) both; }
@keyframes v2-page-in {
  from { transform: translateY(6px); }
  to   { transform: none; }
}

/* ---------- Scroll-pinned background tint (slow shift across page) ---------- */
.v2 main::before {
  content: "";
  position: fixed;
  inset: 0;
  background: radial-gradient(800px circle at calc(var(--scroll-x, 50%)) calc(var(--scroll-y, 30%)), rgba(128,217,89,.04), transparent 70%);
  pointer-events: none;
  z-index: 0;
  transition: background-position .4s linear;
}
.v2 main > * { position: relative; z-index: 1; }

/* ---------- Cookie banner & sticky CTA softening (legacy overlays still appear on v2) ---------- */
.v2 .cookie-banner { transition: transform .5s var(--v2-ease), opacity .5s var(--v2-ease); }
.v2 .cookie-banner.cookie-show { animation: v2-rise .55s var(--v2-ease) both; }

/* ---------- Footer link & social hover polish ---------- */
.v2 footer .ft-col a,
.v2 footer .ft-bottom a { position: relative; transition: color .2s var(--v2-ease); }
.v2 footer .ft-col a::after {
  content: "";
  position: absolute; left: 0; right: 0; bottom: -2px;
  height: 1px; background: var(--g);
  transform: scaleX(0); transform-origin: left;
  transition: transform .3s var(--v2-ease);
}
.v2 footer .ft-col a:hover::after { transform: scaleX(1); }
.v2 footer .ft-social a { transition: transform .3s var(--v2-ease), color .25s var(--v2-ease); }
.v2 footer .ft-social a:hover { transform: translateY(-3px); color: var(--g); }
.v2 footer .ft-pay { transition: transform .25s var(--v2-ease), border-color .25s var(--v2-ease), color .25s var(--v2-ease); }
.v2 footer .ft-pay:hover { transform: translateY(-2px); }

/* ============================================================
   v2 — Premium polish layer
   Small, considered details that lift the perceived quality:
   - System-respecting selection colour
   - Light-but-real focus ring on keyboard nav
   - Smoother heading kerning
   - Print-friendly defaults
   - Subtle scroll-snap on the products grid (where supported)
   - Refined custom scrollbar (light + dark)
   ============================================================ */

/* Selection — branded, accessible contrast */
.v2 ::selection { background: rgba(128,217,89,.32); color: #0C100A; }
[data-theme="light"] .v2 ::selection { background: rgba(128,217,89,.42); color: #0C100A; }

/* Focus rings — visible to keyboard users only */
.v2 :focus-visible {
  outline: 2px solid var(--g);
  outline-offset: 3px;
  border-radius: 6px;
}
.v2 .v2-btn:focus-visible,
.v2 .nav-cta:focus-visible,
.v2 .v2-product:focus-visible {
  outline-offset: 4px;
  box-shadow: 0 0 0 6px rgba(128,217,89,.18);
}

/* Premium typography polish */
.v2 .v2-h2,
.v2 .v2-hero h1,
.v2 .v2-final h1,
.v2 .v2-final h2 {
  text-rendering: optimizeLegibility;
  font-feature-settings: "ss01", "ss02", "kern" 1, "liga" 1;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-wrap: balance; /* progressive enhancement — Chromium 114+, Firefox 121+ */
}

/* Refined scrollbar — works in Chromium, Firefox via fallback */
.v2 { scrollbar-width: thin; scrollbar-color: rgba(128,217,89,.6) transparent; }
.v2::-webkit-scrollbar { width: 12px; height: 12px; }
.v2::-webkit-scrollbar-track { background: transparent; }
.v2::-webkit-scrollbar-thumb {
  background: linear-gradient(180deg, rgba(128,217,89,.55), rgba(128,217,89,.4));
  border: 3px solid transparent;
  background-clip: padding-box;
  border-radius: 999px;
}
.v2::-webkit-scrollbar-thumb:hover { background: linear-gradient(180deg, rgba(128,217,89,.85), rgba(128,217,89,.65)); background-clip: padding-box; border: 3px solid transparent; }

/* Subtle text-balance on cards too — shorter lines, prettier rags */
.v2 .v2-product h3, .v2 .v2-product p,
.v2 .v2-step h3, .v2 .v2-step p,
.v2 .v2-trust-stat span { text-wrap: pretty; }

/* Print stylesheet — clean, ink-saving */
@media print {
  .v2 nav#nav, .v2 .mobile-menu, .v2 footer .ft-payments, .v2 .cookie-banner,
  .v2 .sticky-cta, .v2 .v2-hero::before, .v2 .v2-hero::after,
  .v2 .v2-final::after, .v2 main::before, .v2 .theme-toggle, .v2 .nav-mob {
    display: none !important;
  }
  .v2 body { background: #fff !important; color: #000 !important; }
  .v2 .v2-h2, .v2 .v2-hero h1, .v2 a { color: #000 !important; }
  .v2 .accent { color: #000 !important; -webkit-text-fill-color: #000 !important; background: none !important; }
  .v2 a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.85em; color: #555; }
}

/* Smooth section anchor offsets — stops the fixed nav from covering targets */
.v2 :target { scroll-margin-top: 88px; }

/* ---------- Reduced-motion guard ---------- */
@media (prefers-reduced-motion: reduce) {
  .v2 *, .v2 *::before, .v2 *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .v2 [data-anim] { opacity: 1 !important; transform: none !important; filter: none !important; }
  .v2 .v2-hero h1 .accent { color: var(--g); -webkit-text-fill-color: var(--g); background: none; }
}

/* ============================================================
   v2 — PREMIUM PERSONALISATION + DEPTH LAYER
   Adds: greeting/savings hero block, frosted-glass cards,
   scroll-snap, scroll-progress bar, custom cursor, premium
   loader, odometer stat numbers, calculator stagger reveal.
   ============================================================ */

/* ---------- Hero greeting + savings stat ----------
   Note: animations animate transform only (NOT opacity) so paused
   animations on hidden / freshly-loading tabs never leave content
   invisible. Same rule as the rest of the v2-rise / v2-reveal-* family. */
.v2 .v2-hero-greeting {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 14px;
  font-family: var(--fb);
  font-size: 13px;
  font-weight: 600;
  color: rgba(255,255,255,.78);
  letter-spacing: .02em;
  animation: v2-greeting-in .8s cubic-bezier(.22,1,.36,1) .2s both;
}
[data-theme="light"] .v2 .v2-hero-greeting { color: rgba(0,0,0,.85); }
.v2 .v2-hero-greeting::before {
  content: "";
  width: 6px; height: 6px; border-radius: 50%;
  background: var(--g);
  box-shadow: 0 0 12px var(--g);
  animation: v2-greeting-pulse 2.4s ease-in-out infinite;
}
@keyframes v2-greeting-in { from { transform: translateY(-4px); } to { transform: none; } }
@keyframes v2-greeting-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(128,217,89,.55), 0 0 12px var(--g); }
  50%      { box-shadow: 0 0 0 6px rgba(128,217,89,0),  0 0 18px var(--g); }
}

.v2 .v2-hero-savings {
  display: inline-flex;
  align-items: baseline;
  flex-wrap: wrap;
  row-gap: 4px;
  gap: 8px;
  margin-top: 24px;
  padding: 10px 18px;
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(128,217,89,.12), rgba(128,217,89,.04));
  border: 1px solid rgba(128,217,89,.28);
  font-family: var(--fb);
  font-size: 13px;
  color: rgba(255,255,255,.85);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  max-width: 100%;
  box-sizing: border-box;
}
@media (max-width: 480px) {
  .v2 .v2-hero-savings { border-radius: 16px; padding: 10px 14px; font-size: 12px; }
}
[data-theme="light"] .v2 .v2-hero-savings { color: #0C100A; background: linear-gradient(135deg, rgba(128,217,89,.18), rgba(128,217,89,.06)); }
.v2 .v2-hero-savings strong {
  font-family: var(--fh);
  font-size: 19px;
  font-weight: 800;
  color: var(--g);
  letter-spacing: -.01em;
}
.v2 .v2-hero-savings small { font-size: 11px; color: rgba(255,255,255,.55); margin-left: 4px; }
[data-theme="light"] .v2 .v2-hero-savings small { color: rgba(0,0,0,.55); }

/* ---------- Frosted-glass depth on key cards ---------- */
.v2 .v2-product,
.v2 .v2-calc .calc-wrap,
.v2 .v2-form,
.v2 .v2-step,
.v2 .v2-contact-method,
.v2 .mg-rebate-card {
  backdrop-filter: blur(22px) saturate(160%);
  -webkit-backdrop-filter: blur(22px) saturate(160%);
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.06),
    inset 0 -1px 0 rgba(0,0,0,.18),
    0 1px 2px rgba(0,0,0,.04);
}
[data-theme="light"] .v2 .v2-product,
[data-theme="light"] .v2 .v2-calc .calc-wrap,
[data-theme="light"] .v2 .v2-form,
[data-theme="light"] .v2 .v2-step,
[data-theme="light"] .v2 .v2-contact-method,
[data-theme="light"] .v2 .mg-rebate-card {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.7),
    inset 0 -1px 0 rgba(0,0,0,.06),
    0 4px 24px rgba(0,0,0,.04);
}
.v2 .v2-product:hover,
.v2 .v2-step:hover,
.v2 .v2-contact-method:hover,
.v2 .mg-rebate-card:hover {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.10),
    inset 0 -1px 0 rgba(0,0,0,.18),
    0 24px 60px -28px rgba(128,217,89,.4);
}
[data-theme="light"] .v2 .v2-product:hover,
[data-theme="light"] .v2 .v2-step:hover,
[data-theme="light"] .v2 .v2-contact-method:hover,
[data-theme="light"] .v2 .mg-rebate-card:hover {
  box-shadow:
    inset 0 1px 0 rgba(255,255,255,.85),
    inset 0 -1px 0 rgba(0,0,0,.06),
    0 18px 48px -22px rgba(128,217,89,.35);
}

/* ---------- Scroll-snap on the homepage's main sections ----------
   Use proximity (forgiving) so users can scroll freely; snaps in
   only when they pause near a section boundary. */
.v2 main { scroll-snap-type: y proximity; }
.v2 .v2-hero,
.v2 #products,
.v2 .v2-trust,
.v2 .v2-case,
.v2 .v2-final { scroll-snap-align: start; scroll-snap-stop: normal; }

/* ---------- Scroll-progress bar (top of viewport) ----------
   Fixed thin bar that fills as the user scrolls. Driven by
   js/v2-motion.js using Motion's scroll() API for buttery 60fps. */
#mg-scroll-progress {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--g) 0%, hsl(110 70% 70%) 50%, var(--g) 100%);
  background-size: 200% 100%;
  transform-origin: left;
  transform: scaleX(0);
  z-index: 200;
  pointer-events: none;
  animation: v2-progress-shimmer 4s linear infinite;
}
@keyframes v2-progress-shimmer {
  0%, 100% { background-position: 0% 50%; }
  50%      { background-position: 100% 50%; }
}

/* ---------- Premium initial-load progress bar ----------
   Briefly shimmers across the top during page load. Removed by
   v2-motion.js once DOMContentLoaded fires. */
#mg-load-progress {
  position: fixed;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--g), transparent);
  background-size: 40% 100%;
  background-repeat: no-repeat;
  background-position: -40% 0;
  z-index: 201;
  pointer-events: none;
  animation: v2-load-sweep 1.4s ease-in-out infinite;
}
@keyframes v2-load-sweep {
  0%   { background-position: -40% 0; }
  100% { background-position: 140% 0; }
}

/* ---------- Calculator stagger reveal (item 18) ----------
   When new results land, each cell pops in with a brief delay so it
   feels like a card-by-card reveal. js/v2-motion.js sets --i. */
.v2 .v2-calc-cell.flash {
  animation: v2-cell-pop .55s cubic-bezier(.22, 1, .36, 1) both;
  animation-delay: calc(var(--i, 0) * 80ms);
}
@keyframes v2-cell-pop {
  0%   { transform: translateY(8px) scale(.985); box-shadow: 0 0 0 0 rgba(128,217,89,0); }
  50%  { box-shadow: 0 0 0 6px rgba(128,217,89,.18); }
  100% { transform: none; box-shadow: 0 0 0 0 rgba(128,217,89,0); }
}

/* ---------- Odometer-style stat numbers (item 22) ----------
   Each digit lives in a 1.05em tall window. JS sets a translateY on
   a vertical strip of digits 0–9 to reveal the right one with a
   spring. Falls back gracefully if JS fails — strip just shows 0. */
.v2 .v2-trust-stat strong .mg-odo {
  display: inline-flex;
  vertical-align: baseline;
}
.v2 .v2-trust-stat strong .mg-odo-digit {
  display: inline-block;
  width: .58em;
  height: 1em;
  overflow: hidden;
  position: relative;
  text-align: center;
}
.v2 .v2-trust-stat strong .mg-odo-strip {
  display: block;
  transition: transform .9s cubic-bezier(.22, 1, .36, 1);
  will-change: transform;
}
.v2 .v2-trust-stat strong .mg-odo-strip span { display: block; height: 1em; line-height: 1; }
.v2 .v2-trust-stat strong .mg-odo-static { display: inline-block; }

