/* Design tokens */
:root {

  --nv-brand-50:  #eef5fc;
  --nv-brand-100: #d8e8f7;
  --nv-brand-200: #b6d3ef;
  --nv-brand-300: #8bb9e4;
  --nv-brand-400: #629fd9;
  --nv-brand-500: #478cd1;
  --nv-brand-600: #3574b6;
  --nv-brand-700: #2b5d93;
  --nv-brand-800: #254c76;
  --nv-brand-900: #1e3d5e;

  --nv-steel-400: #a5a5a5;
  --nv-steel-500: #8b9199;

  --nv-iris-300:  #958cf7;
  --nv-azure-300: #5db4e5;
  --nv-aqua-300:  #3ECF8E;

  --nv-seq-1: #75639b;
  --nv-seq-2: #478c8c;
  --nv-seq-3: #a84d69;
  --nv-seq-4: #b78c42;
  --nv-seq-fg: var(--nv-white);

  --nv-accent-green: #3a7759;

  --nv-soft-teal: #478c8c;
  --nv-space-black: #03060a;
  --nv-hot-teal: #3ff4d8;
  --nv-voltage: #f0c14b;

  --nv-stroke-04: #4d4d53;

  --nv-grey-05: #b0b0ac;

  --nv-grey-07: #e3e3dd;

  --nv-primary-06: #3b79b8;

  --nv-primary-09: #add9f9;

  --nv-gradient-eyebrow: linear-gradient(180deg, #b2e0be 0%, #74c99e 100%);

  --nv-hero-badge-fill: rgba(71, 140, 140, 0.20);
  --nv-gradient-hero-badge-border: linear-gradient(90deg, #32649a 0%, #7fbff0 100%);
  --nv-hero-badge-spark-from: #d1d5db;
  --nv-hero-badge-spark-to:   #a6b1c3;

  --nv-gradient-hero-glow: linear-gradient(180deg, #d1d5db 0%, #a6b1c3 100%);
  --nv-hero-glow-opacity: 0.10;

  --nv-ink-950: #070c14;
  --nv-ink-900: #0a121c;
  --nv-ink-850: #0e141c;
  --nv-ink-800: #121a25;
  --nv-ink-700: #1a2431;
  --nv-ink-600: #334155;
  --nv-ink-500: #475569;
  --nv-ink-400: #64748b;
  --nv-ink-300: #94a3b8;
  --nv-ink-200: #cbd5e1;
  --nv-ink-100: #e2e8f0;
  --nv-ink-50:  #f1f5f9;
  --nv-white:   #ffffff;

  --nv-alpha-04: rgba(255, 255, 255, 0.04);
  --nv-alpha-07: rgba(255, 255, 255, 0.07);
  --nv-alpha-10: rgba(255, 255, 255, 0.10);
  --nv-alpha-14: rgba(255, 255, 255, 0.14);
  --nv-alpha-34: rgba(255, 255, 255, 0.34);
  --nv-alpha-68: rgba(255, 255, 255, 0.68);
  --nv-alpha-72: rgba(255, 255, 255, 0.72);
  --nv-alpha-86: rgba(255, 255, 255, 0.86);

  --nv-bg:             var(--nv-ink-900);
  --nv-bg-subtle:      var(--nv-ink-850);
  --nv-bg-raised:      var(--nv-ink-800);

  --nv-band-deep:      #212124;
  --nv-band-navy:      #003f7d;
  --nv-band-blue:      #0c1f33;

  --nv-footer-bg:      #212124;
  --nv-footer-bg-alt:  #1c2632;

  --nv-panel-fill-from:   rgba(144, 144, 150, 0.2);
  --nv-panel-fill-to:     rgba(51, 51, 50, 0.2);
  --nv-problem-fill-from: rgba(45, 68, 91, 0.2);
  --nv-problem-fill-to:   rgba(25, 41, 58, 0.2);
  --nv-product-fill-from: rgba(59, 130, 246, 0.1);
  --nv-product-fill-to:   rgba(59, 130, 246, 0.03);

  --nv-card-blue-bg:           rgba(43, 110, 198, 0.10);
  --nv-card-blue-bg-hover:     rgba(43, 110, 198, 0.16);
  --nv-card-blue-border:       rgba(91, 141, 239, 0.22);
  --nv-card-blue-border-hover: rgba(91, 141, 239, 0.34);

  --nv-chip-fill:       #478c8c33;
  --nv-chip-border:     #5992c5;
  --nv-tick:            #3ecf8e;
  --nv-eyebrow-flat:    #74c99e;

  --nv-scrim:           rgba(5, 9, 15, 0.62);
  --nv-header-shadow:   0 12px 32px rgba(4, 10, 20, 0.30);
  --nv-glass-bg-strong: rgba(255, 255, 255, 0.12);

  --nv-surface:        var(--nv-alpha-04);
  --nv-surface-raised: var(--nv-alpha-07);

  --nv-border:         var(--nv-alpha-10);
  --nv-border-strong:  var(--nv-alpha-14);

  --nv-surface-fill: var(--nv-alpha-04);
  --nv-surface-line: var(--nv-alpha-10);
  --nv-track-bg:     var(--nv-alpha-07);

  --nv-surface-hover:        var(--nv-alpha-07);
  --nv-surface-hover-strong: var(--nv-alpha-10);
  --nv-border-soft:          var(--nv-alpha-07);
  --nv-drawer-bg:            var(--nv-ink-850);
  --nv-loader-bg:            var(--nv-ink-950);

  --nv-text:           var(--nv-white);
  --nv-text-muted:     var(--nv-alpha-72);
  --nv-text-subtle:    var(--nv-alpha-68);
  --nv-text-brand:     var(--nv-brand-300);

  --nv-text-on-dark:        var(--nv-white);
  --nv-text-on-dark-muted:  var(--nv-alpha-72);
  --nv-text-on-dark-subtle: var(--nv-alpha-68);

  --nv-text-on-light:        var(--nv-ink-900);
  --nv-text-on-light-muted:  var(--nv-ink-500);
  --nv-text-on-light-subtle: var(--nv-ink-400);

  --nv-focus-ring: #7fb3ea;

  --nv-success-500: #10b981;
  --nv-warning-500: #f59e0b;
  --nv-danger-500:  #e11d48;

  --nv-gradient-heading: linear-gradient(266.61deg,
                           #5ee6d5 16.08%,
                           #5db4e5 41.09%,
                           #958cf7 64.24%);
  --nv-gradient-brand:   linear-gradient(115deg, var(--nv-brand-600) 0%, var(--nv-brand-500) 52%, #38bdf8 130%);
  --nv-gradient-cta:     linear-gradient(115deg, var(--nv-brand-700) 0%, var(--nv-brand-600) 55%, #2f6aa8 120%);
  --nv-gradient-line:    linear-gradient(90deg, transparent, rgba(71, 140, 209, 0.55), transparent);

  --nv-glass-bg:     rgba(255, 255, 255, 0.05);
  --nv-glass-border: var(--nv-alpha-14);
  --nv-glass-blur:   18px;

  --nv-font-display: "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
  --nv-font-body:    "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;
  --nv-font-mono:    ui-monospace, "SFMono-Regular", "JetBrains Mono", Menlo, monospace;

  --nv-fs-display: clamp(1.75rem, 1.15rem + 1.9vw, 2.5rem);
  --nv-fs-h1:      clamp(1.875rem, 1.25rem + 2.0vw, 2.75rem);
  --nv-fs-h2:      clamp(1.5rem, 1.1rem + 1.6vw, 2rem);
  --nv-fs-h3:      clamp(1.25rem, 1.05rem + 0.9vw, 1.625rem);
  --nv-fs-h4:      clamp(1.0625rem, 0.98rem + 0.4vw, 1.25rem);
  --nv-fs-h5:      1.0625rem;
  --nv-fs-h6:      1rem;
  --nv-fs-lead:    clamp(1rem, 0.94rem + 0.28vw, 1.125rem);
  --nv-fs-body:    1rem;
  --nv-fs-sm:      0.9375rem;
  --nv-fs-xs:      1rem;
  --nv-fs-2xs:     0.875rem;

  --nv-lh-tight:   1.06;
  --nv-lh-snug:    1.22;
  --nv-lh-normal:  1.5;
  --nv-lh-relaxed: 1.65;

  --nv-fw-regular:  400;
  --nv-fw-medium:   500;
  --nv-fw-semibold: 600;
  --nv-fw-bold:     700;
  --nv-fw-extra:    800;

  --nv-ls-tighter: -0.04em;
  --nv-ls-tight:   -0.02em;
  --nv-ls-snug:    -0.01em;
  --nv-ls-normal:  0;
  --nv-ls-wide:    0.08em;

  --nv-space-1:  0.25rem;   --nv-space-2:  0.5rem;
  --nv-space-3:  0.75rem;   --nv-space-4:  1rem;
  --nv-space-5:  1.25rem;   --nv-space-6:  1.5rem;
  --nv-space-7:  1.75rem;   --nv-space-8:  2rem;
  --nv-space-10: 2.5rem;    --nv-space-12: 3rem;
  --nv-space-14: 3.5rem;    --nv-space-16: 4rem;
  --nv-space-20: 5rem;      --nv-space-24: 6rem;
  --nv-space-32: 8rem;

  --nv-section-y:    clamp(4rem, 2.75rem + 5.5vw, 7.5rem);
  --nv-section-y-sm: clamp(2.75rem, 2rem + 3.5vw, 4.5rem);

  --nv-radius-xs:     4px;
  --nv-radius-sm:     6px;
  --nv-radius-md:     8px;
  --nv-radius-lg:     12px;
  --nv-radius-xl:     16px;
  --nv-radius-2xl:    24px;
  --nv-radius-pill:   999px;
  --nv-radius-circle: 50%;

  --nv-shadow-xs: 0 1px 2px rgba(4, 8, 14, 0.20);
  --nv-shadow-sm: 0 2px 6px rgba(4, 8, 14, 0.24), 0 1px 2px rgba(4, 8, 14, 0.18);
  --nv-shadow-md: 0 8px 24px rgba(4, 8, 14, 0.30), 0 2px 6px rgba(4, 8, 14, 0.20);
  --nv-shadow-lg: 0 18px 46px rgba(4, 8, 14, 0.38), 0 4px 12px rgba(4, 8, 14, 0.24);
  --nv-shadow-xl: 0 36px 90px rgba(4, 8, 14, 0.50), 0 8px 24px rgba(4, 8, 14, 0.28);

  --nv-shadow-brand:       0 10px 28px rgba(41, 79, 123, 0.46);
  --nv-shadow-brand-hover: 0 16px 40px rgba(41, 79, 123, 0.58);
  --nv-shadow-inset-top:   inset 0 1px 0 rgba(255, 255, 255, 0.12);

  --nv-shadow-media:
    0 2px 4px rgba(3, 7, 14, 0.30),
    0 12px 28px rgba(3, 7, 14, 0.42),
    0 48px 96px rgba(3, 7, 14, 0.55);

  --nv-glow-card:  0 0 0 1px rgba(91, 141, 239, 0.16), 0 14px 40px rgba(31, 88, 168, 0.24);
  --nv-glow-soft:  0 0 60px rgba(56, 128, 216, 0.22);

  --nv-btn-radius:      var(--nv-radius-md);
  --nv-btn-font-size:   var(--nv-fs-sm);
  --nv-btn-font-weight: var(--nv-fw-semibold);
  --nv-btn-gap:         var(--nv-space-2);

  --nv-btn-h-sm: 40px;   --nv-btn-px-sm: var(--nv-space-5);
  --nv-btn-h-md: 44px;   --nv-btn-px-md: var(--nv-space-6);
  --nv-btn-h-lg: 48px;   --nv-btn-px-lg: var(--nv-space-7);

  --nv-btn-primary-bg:       #294f7b;
  --nv-btn-primary-bg-hover: #33608f;
  --nv-btn-primary-fg:       var(--nv-white);

  /* Alpha tuned to clear WCAG 1.4.11 (3:1) for a UI boundary */
  --nv-btn-outline-border:       var(--nv-alpha-34);
  --nv-btn-outline-border-hover: rgba(255, 255, 255, 0.55);
  --nv-btn-outline-bg-hover:     var(--nv-alpha-07);

  --nv-btn-bright-fg:           #d6edff;
  --nv-btn-bright-border:       #d6edff;
  --nv-btn-bright-border-hover: var(--nv-white);
  --nv-btn-bright-icon:         #7fbbf0;

  --nv-btn-bright-radius:    6px;
  --nv-btn-bright-font-size: 16px;
  --nv-btn-bright-py:        14px;
  --nv-btn-bright-px:        20px;
  --nv-btn-bright-gap:       8px;
  --nv-btn-bright-icon-w:    15px;
  --nv-btn-bright-icon-h:    12.5px;

  --nv-card-bg:           rgba(255, 255, 255, 0.028);
  --nv-card-bg-hover:     rgba(255, 255, 255, 0.045);
  --nv-card-border:       var(--nv-alpha-10);
  --nv-card-border-hover: var(--nv-alpha-14);
  --nv-card-radius:       var(--nv-radius-xl);
  --nv-card-pad:          clamp(1.25rem, 0.9rem + 1.1vw, 1.75rem);

  --nv-container-max:    1440px;
  --nv-container-wide:   1440px;
  --nv-container-narrow: 820px;
  --nv-container-pad:    clamp(1.75rem, 29.88vw - 330px, 6.25rem);

  --nv-header-h:          72px;
  --nv-header-h-scrolled: 64px;

  --nv-header-surface:     #212124;
  --nv-header-bg:          rgba(33, 33, 36, 0.82);
  --nv-header-bg-solid:    var(--nv-header-surface);
  --nv-header-border:      rgba(255, 255, 255, 0.08);
  --nv-header-link:        var(--nv-alpha-86);
  --nv-header-link-hover:  var(--nv-white);

  --nv-dur-fast:   200ms;
  --nv-dur-base:   300ms;
  --nv-dur-slow:   500ms;
  --nv-dur-slower: 800ms;

  --nv-ease-out:    cubic-bezier(0.22, 1, 0.36, 1);
  --nv-ease-in-out: cubic-bezier(0.65, 0, 0.35, 1);
  --nv-ease-spring: cubic-bezier(0.34, 1.4, 0.64, 1);
  --nv-ease-soft:   cubic-bezier(0.4, 0, 0.2, 1);

  --nv-stagger-step: 80ms;

  --nv-cycle-slow:   14s;
  --nv-cycle-slower: 19s;
  --nv-cycle-slowest: 26s;

  --nv-noise-opacity: 0.028;

  --nv-z-base:    1;
  --nv-z-decor:   2;
  --nv-z-sticky:  100;
  --nv-z-header:  200;
  --nv-z-drawer:  300;
  --nv-z-overlay: 400;
  --nv-z-loader:  900;
  --nv-z-toast:   1000;

  --nv-icon-xs: 14px;
  --nv-icon-sm: 16px;
  --nv-icon-md: 18px;
  --nv-icon-lg: 20px;
  --nv-icon-xl: 24px;
}

@media (min-width: 1441px) {
  :root {
    --nv-container-max: 1600px;
  }
}

[data-surface="dark"] {
  --nv-bg:            var(--nv-ink-900);
  --nv-bg-subtle:     var(--nv-ink-850);
  --nv-surface:       var(--nv-alpha-04);
  --nv-surface-raised:var(--nv-alpha-07);
  --nv-border:        var(--nv-alpha-10);
  --nv-border-strong: var(--nv-alpha-14);
  --nv-text:          var(--nv-text-on-dark);
  --nv-text-muted:    var(--nv-text-on-dark-muted);
  --nv-text-subtle:   var(--nv-text-on-dark-subtle);
  --nv-text-brand:    var(--nv-brand-300);

  --nv-surface-fill:  var(--nv-alpha-04);
  --nv-surface-line:  var(--nv-alpha-10);
  --nv-track-bg:      var(--nv-alpha-07);

  --nv-aqua-300:  #3ECF8E;
  --nv-iris-300:  #a5b4fc;
  --nv-azure-300: #74a9f0;

  --nv-btn-outline-border:       var(--nv-alpha-34);
  --nv-btn-outline-border-hover: rgba(255, 255, 255, 0.55);
  --nv-btn-outline-bg-hover:     var(--nv-alpha-07);

  /* Dark-island contract: these sections stay dark in BOTH themes, so every
     token their content reads is re-pinned to its dark value here. */
  --nv-band-deep:      #212124;
  --nv-band-navy:      #003f7d;

  --nv-card-bg:           rgba(255, 255, 255, 0.028);
  --nv-card-bg-hover:     rgba(255, 255, 255, 0.045);
  --nv-card-border:       var(--nv-alpha-10);
  --nv-card-border-hover: var(--nv-alpha-14);

  --nv-card-blue-bg:           rgba(43, 110, 198, 0.10);
  --nv-card-blue-bg-hover:     rgba(43, 110, 198, 0.16);
  --nv-card-blue-border:       rgba(91, 141, 239, 0.22);
  --nv-card-blue-border-hover: rgba(91, 141, 239, 0.34);

  --nv-panel-fill-from: rgba(144, 144, 150, 0.2);
  --nv-panel-fill-to:   rgba(51, 51, 50, 0.2);

  --nv-surface-hover:        var(--nv-alpha-07);
  --nv-surface-hover-strong: var(--nv-alpha-10);
  --nv-border-soft:          var(--nv-alpha-07);

  --nv-glass-bg:        rgba(255, 255, 255, 0.05);
  --nv-glass-bg-strong: rgba(255, 255, 255, 0.12);
  --nv-glass-border:    var(--nv-alpha-14);

  --nv-btn-primary-bg:       #294f7b;
  --nv-btn-primary-bg-hover: #33608f;
  --nv-btn-primary-fg:       var(--nv-white);

  --nv-btn-bright-fg:           #d6edff;
  --nv-btn-bright-border:       #d6edff;
  --nv-btn-bright-border-hover: var(--nv-white);
  --nv-btn-bright-icon:         #7fbbf0;

  --nv-grey-05:    #b0b0ac;
  --nv-grey-07:    #e3e3dd;
  --nv-primary-06: #3b79b8;
  --nv-primary-09: #add9f9;
  --nv-stroke-04:  #4d4d53;
  --nv-soft-teal:  #478c8c;

  --nv-chip-fill:    #478c8c33;
  --nv-chip-border:  #5992c5;
  --nv-tick:         #3ecf8e;
  --nv-eyebrow-flat: #74c99e;
  --nv-gradient-eyebrow: linear-gradient(180deg, #b2e0be 0%, #74c99e 100%);

  --nv-shadow-md: 0 8px 24px rgba(4, 8, 14, 0.30), 0 2px 6px rgba(4, 8, 14, 0.20);
  --nv-shadow-lg: 0 18px 46px rgba(4, 8, 14, 0.38), 0 4px 12px rgba(4, 8, 14, 0.24);
  --nv-shadow-xl: 0 36px 90px rgba(4, 8, 14, 0.50), 0 8px 24px rgba(4, 8, 14, 0.28);
  --nv-shadow-brand:       0 10px 28px rgba(41, 79, 123, 0.46);
  --nv-shadow-brand-hover: 0 16px 40px rgba(41, 79, 123, 0.58);
  --nv-shadow-inset-top:   inset 0 1px 0 rgba(255, 255, 255, 0.12);
  --nv-shadow-media:
    0 2px 4px rgba(3, 7, 14, 0.30),
    0 12px 28px rgba(3, 7, 14, 0.42),
    0 48px 96px rgba(3, 7, 14, 0.55);
  --nv-glow-card: 0 0 0 1px rgba(91, 141, 239, 0.16), 0 14px 40px rgba(31, 88, 168, 0.24);
  --nv-glow-soft: 0 0 60px rgba(56, 128, 216, 0.22);

  --nv-focus-ring: #7fb3ea;
}

/* Light theme overrides */
[data-color-scheme="light"] {
  --nv-bg:             var(--nv-white);
  --nv-bg-subtle:      #f8fafc;
  --nv-bg-raised:      var(--nv-white);

  --nv-band-deep:      #f8fafc;
  --nv-band-navy:      #f3f8ff;
  --nv-band-blue:      #f3f8ff;

  --nv-footer-bg:      #f8fafc;
  --nv-footer-bg-alt:  #eef2f7;

  --nv-surface:        var(--nv-white);
  --nv-surface-raised: var(--nv-white);
  --nv-surface-fill:   #f8fafc;
  --nv-surface-line:   #e5e7eb;
  --nv-surface-hover:        #f1f5f9;
  --nv-surface-hover-strong: #e8edf3;
  --nv-track-bg:       #eef2f6;
  --nv-drawer-bg:      var(--nv-white);
  --nv-loader-bg:      var(--nv-white);

  --nv-border:         #e5e7eb;
  --nv-border-strong:  #d0d5dd;
  --nv-border-soft:    #eef0f4;

  --nv-text-on-light:        #111827;
  --nv-text-on-light-muted:  #475467;
  --nv-text-on-light-subtle: #667085;

  --nv-text:           var(--nv-text-on-light);
  --nv-text-muted:     var(--nv-text-on-light-muted);
  --nv-text-subtle:    var(--nv-text-on-light-subtle);
  --nv-text-brand:     #2563eb;

  --nv-grey-05:    #667085;
  --nv-grey-07:    #344054;
  --nv-primary-06: #2563eb;
  --nv-primary-09: #2563eb;
  --nv-stroke-04:  #e5e7eb;
  --nv-soft-teal:  #0f766e;

  /* Accents deepened for a white ground — same hues, AA-safe values */
  --nv-aqua-300:  #0d9488;
  --nv-iris-300:  #6366f1;
  --nv-azure-300: #2563eb;
  --nv-tick:         #059669;
  --nv-eyebrow-flat: #047857;
  --nv-gradient-eyebrow: linear-gradient(180deg, #10b981 0%, #047857 100%);

  --nv-card-bg:           var(--nv-white);
  --nv-card-bg-hover:     var(--nv-white);
  --nv-card-border:       #e4e7ec;
  --nv-card-border-hover: #cfd4dc;

  --nv-card-blue-bg:           #f3f8ff;
  --nv-card-blue-bg-hover:     #e8f1ff;
  --nv-card-blue-border:       #d6e4fb;
  --nv-card-blue-border-hover: #bcd4f7;

  --nv-panel-fill-from:   #ffffff;
  --nv-panel-fill-to:     #fcfdfe;
  --nv-problem-fill-from: #ffffff;
  --nv-problem-fill-to:   #fbfcfe;
  --nv-product-fill-from: #ffffff;
  --nv-product-fill-to:   #f7faff;

  --nv-chip-fill:   #eef4ff;
  --nv-chip-border: #2563eb;

  --nv-btn-outline-border:       #d0d5dd;
  --nv-btn-outline-border-hover: #2563eb;
  --nv-btn-outline-bg-hover:     #f8fafc;

  --nv-btn-bright-fg:           #1d4ed8;
  --nv-btn-bright-border:       #bcd4f7;
  --nv-btn-bright-border-hover: #2563eb;
  --nv-btn-bright-icon:         #2563eb;

  --nv-header-surface:    var(--nv-white);
  --nv-header-bg:         rgba(255, 255, 255, 0.96);
  --nv-header-bg-solid:   var(--nv-white);
  --nv-header-border:     #e5e7eb;
  --nv-header-link:       #475467;
  --nv-header-link-hover: #111827;
  --nv-header-shadow:     0 8px 24px rgba(16, 24, 40, 0.08);

  --nv-glass-bg:        rgba(255, 255, 255, 0.72);
  --nv-glass-bg-strong: rgba(255, 255, 255, 0.85);
  --nv-glass-border:    #e5e7eb;

  /* Neutral, low-spread elevation — light UIs read depth from contrast, not glow */
  --nv-shadow-xs: 0 1px 2px rgba(16, 24, 40, 0.05);
  --nv-shadow-sm: 0 1px 3px rgba(16, 24, 40, 0.10), 0 1px 2px rgba(16, 24, 40, 0.06);
  --nv-shadow-md: 0 4px 8px -2px rgba(16, 24, 40, 0.10), 0 2px 4px -2px rgba(16, 24, 40, 0.06);
  --nv-shadow-lg: 0 12px 16px -4px rgba(16, 24, 40, 0.08), 0 4px 6px -2px rgba(16, 24, 40, 0.03);
  --nv-shadow-xl: 0 20px 24px -4px rgba(16, 24, 40, 0.08), 0 8px 8px -4px rgba(16, 24, 40, 0.03);
  --nv-shadow-media:
    0 2px 4px rgba(16, 24, 40, 0.04),
    0 12px 28px rgba(16, 24, 40, 0.10),
    0 32px 64px rgba(16, 24, 40, 0.08);
  --nv-glow-card: 0 0 0 1px rgba(37, 99, 235, 0.08), 0 12px 28px rgba(16, 24, 40, 0.08);
  --nv-glow-soft: 0 0 48px rgba(37, 99, 235, 0.10);

  --nv-gradient-heading: linear-gradient(266.61deg,
                           #0d9488 16.08%,
                           #2563eb 41.09%,
                           #6366f1 64.24%);
  --nv-gradient-brand: linear-gradient(115deg, #2563eb 0%, #3b82f6 52%, #60a5fa 130%);
  --nv-gradient-cta:   linear-gradient(115deg, #1d4ed8 0%, #2563eb 55%, #3b82f6 120%);
  --nv-gradient-line:  linear-gradient(90deg, transparent, rgba(37, 99, 235, 0.28), transparent);

  --nv-scrim:      rgba(16, 24, 40, 0.45);
  --nv-focus-ring: #2563eb;
}

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

* {
  margin: 0;
  padding: 0;
}

html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  -moz-tab-size: 2;
  tab-size: 2;
}

body {
  min-height: 100vh;
  min-height: 100svh;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

img,
picture,
video,
canvas,
svg,
iframe {
  display: block;
  max-width: 100%;
}

img,
video {
  height: auto;
}

svg {
  fill: currentColor;
}

input,
button,
textarea,
select {
  font: inherit;
  color: inherit;
  letter-spacing: inherit;
}

button {
  background: none;
  border: 0;
  cursor: pointer;
}

textarea {
  resize: vertical;
}

input,
textarea {
  -webkit-appearance: none;
  appearance: none;
}

p,
h1, h2, h3, h4, h5, h6 {
  overflow-wrap: break-word;
}

h1, h2, h3, h4, h5, h6 {
  font-size: inherit;
  font-weight: inherit;
}

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

address {
  font-style: normal;
}

/* Safari/VoiceOver drops list semantics without the markup's role="list" */
ul[role="list"],
ol[role="list"] {
  list-style: none;
}

table {
  border-collapse: collapse;
  border-spacing: 0;
}

[hidden] {
  display: none !important;
}

body {
  font-family: var(--nv-font-body);
  font-size: var(--nv-fs-body);
  font-weight: var(--nv-fw-regular);
  line-height: var(--nv-lh-normal);
  letter-spacing: var(--nv-ls-normal);
  color: var(--nv-text);
}

h1, h2, h3, h4, h5, h6 {
  font-family: var(--nv-font-display);
  color: var(--nv-text);
  text-wrap: balance;
}

h1 {
  font-size: var(--nv-fs-h1);
  font-weight: var(--nv-fw-extra);
  line-height: var(--nv-lh-tight);
  letter-spacing: var(--nv-ls-tight);
}

h2 {
  font-size: var(--nv-fs-h2);
  font-weight: var(--nv-fw-bold);
  line-height: var(--nv-lh-snug);
  letter-spacing: var(--nv-ls-tight);
}

h3 {
  font-size: var(--nv-fs-h3);
  font-weight: var(--nv-fw-bold);
  line-height: var(--nv-lh-snug);
  letter-spacing: var(--nv-ls-snug);
}

h4 {
  font-size: var(--nv-fs-h4);
  font-weight: var(--nv-fw-semibold);
  line-height: 1.35;
  letter-spacing: var(--nv-ls-snug);
}

h5 {
  font-size: var(--nv-fs-h5);
  font-weight: var(--nv-fw-semibold);
  line-height: 1.4;
}

h6 {
  font-size: var(--nv-fs-h6);
  font-weight: var(--nv-fw-semibold);
  line-height: 1.4;
}

p {
  color: var(--nv-text-muted);
  line-height: var(--nv-lh-relaxed);
  text-wrap: pretty;
}

strong, b {
  font-weight: var(--nv-fw-semibold);
  color: var(--nv-text);
}

em, i {
  font-style: italic;
}

small {
  font-size: var(--nv-fs-xs);
}

code, kbd, samp, pre {
  font-family: var(--nv-font-mono);
  font-size: 0.9em;
}

blockquote {
  font-family: var(--nv-font-display);
  font-weight: var(--nv-fw-medium);
  line-height: 1.55;
  letter-spacing: var(--nv-ls-snug);
  color: var(--nv-text);
}

/* Typography: type roles */
.nv-display {
  font-family: var(--nv-font-display);
  font-size: var(--nv-fs-display);
  font-weight: var(--nv-fw-extra);
  line-height: var(--nv-lh-tight);
  letter-spacing: var(--nv-ls-tighter);
}

.nv-lead {
  font-size: var(--nv-fs-lead);
  line-height: var(--nv-lh-relaxed);
  color: var(--nv-text-muted);
}

.nv-eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--nv-space-2);
  font-family: var(--nv-font-body);
  font-size: var(--nv-fs-xs);
  font-weight: var(--nv-fw-semibold);
  line-height: 1.2;
  letter-spacing: var(--nv-ls-wide);
  text-transform: uppercase;
  color: var(--nv-text-brand);
}

/* Doubled class outranks the section-header colour that loads later */
.nv-eyebrow.nv-eyebrow--gradient {
  text-transform: none;
  line-height: 1.25;
  letter-spacing: 0;
  color: var(--nv-eyebrow-flat);
}

/* Solid colour fallback where background-clip: text is unsupported */
@supports (-webkit-background-clip: text) or (background-clip: text) {
  .nv-eyebrow.nv-eyebrow--gradient {
    background-image: var(--nv-gradient-eyebrow);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    /* Stops clipped descenders on the gradient-clipped text box */
    padding-block-end: 0.06em;
  }
}

.nv-caption {
  font-size: var(--nv-fs-xs);
  line-height: 1.55;
  color: var(--nv-text-subtle);
}

.nv-numeral {
  font-family: var(--nv-font-display);
  font-weight: var(--nv-fw-extra);
  line-height: 1.05;
  letter-spacing: var(--nv-ls-tight);
  font-variant-numeric: tabular-nums;
}

/* Typography: gradient text */
.nv-text-gradient {
  color: var(--nv-brand-600);
}

@supports (-webkit-background-clip: text) or (background-clip: text) {
  .nv-text-gradient {
    background-image: var(--nv-gradient-heading);
    -webkit-background-clip: text;
    background-clip: text;
    color: transparent;
    padding-block-end: 0.06em;
  }
}

a {
  color: var(--nv-text-brand);
  transition: color var(--nv-dur-fast) var(--nv-ease-out);
}

a:hover {
  color: var(--nv-brand-700);
}

[data-surface="dark"] a:hover {
  color: var(--nv-white);
}

.nv-measure    { max-width: 62ch; }
.nv-measure-sm { max-width: 46ch; }
.nv-measure-lg { max-width: 74ch; }

html {
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--nv-header-h) + var(--nv-space-6));
}

body {
  background-color: var(--nv-bg);
  color: var(--nv-text);
  overflow-x: hidden;
}

body.is-locked {
  overflow: hidden;
}

hr {
  border: 0;
  height: 1px;
  background-color: var(--nv-border);
}

/* Theme switch: every transition is suppressed for the one frame. */
.is-theme-switching,
.is-theme-switching *,
.is-theme-switching *::before,
.is-theme-switching *::after {
  transition: none !important;
}

/* Focus styles */
:focus-visible {
  outline: 3px solid var(--nv-focus-ring);
  outline-offset: 3px;
  border-radius: var(--nv-radius-xs);
}

:focus:not(:focus-visible) {
  outline: none;
}

/* Selection and scrollbar */
::selection {
  background-color: var(--nv-brand-500);
  color: var(--nv-white);
}

@supports selector(::-webkit-scrollbar) {
  ::-webkit-scrollbar {
    width: 10px;
    height: 10px;
  }

  ::-webkit-scrollbar-track {
    background: var(--nv-bg-subtle);
  }

  ::-webkit-scrollbar-thumb {
    background: var(--nv-ink-200);
    border-radius: var(--nv-radius-pill);
    border: 2px solid var(--nv-bg-subtle);
  }

  ::-webkit-scrollbar-thumb:hover {
    background: var(--nv-ink-300);
  }
}

img {
  height: auto;
  font-style: italic;
  color: var(--nv-text-subtle);
  background-repeat: no-repeat;
  background-size: cover;
}

img[data-src] {
  opacity: 0;
}

img.is-loaded {
  opacity: 1;
  transition: opacity var(--nv-dur-slow) var(--nv-ease-out);
}

input::placeholder,
textarea::placeholder {
  color: var(--nv-text-subtle);
  opacity: 1;
}

/* Page shell */
.nv-page {
  display: flex;
  flex-direction: column;
  min-height: 100svh;

  /* Neutral default: a page that declares nothing gets a footer that simply
     follows the section rhythm. See "Page layout: footer coupling" below. */
  --nv-footer-overlap: 0rem;
  --nv-footer-pad-top: var(--nv-section-y);
  /* The foot of the page is a page-level decision too: the sticky CTA is a
     child of <body>, so the shell — not the footer — knows when the last row
     needs to clear a fixed bar. See the sticky-CTA breakpoint below. */
  --nv-footer-pad-bottom: var(--nv-space-8);
}

/* Page layout: footer coupling
   How far the footer rises into the section above it is a page-level decision,
   not a footer one, so the footer itself owns no CTA-specific spacing. Put
   exactly one of these on <body>, alongside .nv-page:

     .nv-page--footer-overlap   a CTA card is the last section; the footer
                                rises so the card nests inside it
     .nv-page--footer-normal    no CTA (Contact, Pricing, Privacy, Terms…);
                                the footer sits on the normal section rhythm

   --nv-footer-overlap is the single source of truth for the distance:
   .nv-footer turns it into its negative margin and .nv-cta-band reads the same
   value to place the cut in its own gradient, so the two cannot drift apart.
   Lengths, never percentages — percentage margins resolve against width. */
.nv-page--footer-overlap {
  --nv-footer-overlap: 9.375rem;
  --nv-footer-pad-top: 12.5rem;
}

.nv-page--footer-normal {
  --nv-footer-overlap: 0rem;
  /* The section above already pays its own bottom padding, so the footer only
     needs to clear it — the same job the 3.125rem residue does in the overlap
     layout. A full --nv-section-y here would state that rhythm twice. */
  --nv-footer-pad-top: var(--nv-section-y-sm);
}

.nv-main {
  flex: 1 0 auto;

  background-color: var(--nv-band-deep);
}

/* Container */
.nv-container {
  width: 100%;
  max-width: var(--nv-container-max);
  margin-inline: auto;
  padding-inline: var(--nv-container-pad);
}

.nv-container--wide   { max-width: var(--nv-container-wide); }
.nv-container--narrow { max-width: var(--nv-container-narrow); }
.nv-container--full   { max-width: none; }

/* Section primitives */
.nv-section {
  position: relative;
  padding-block: var(--nv-section-y);
}

.nv-section--tight        { padding-block: var(--nv-section-y-sm); }
.nv-section--flush-top    { padding-block-start: 0; }
.nv-section--flush-bottom { padding-block-end: 0; }

.nv-section--subtle { background-color: var(--nv-bg-subtle); }

.nv-section--deep {
  background-color: var(--nv-band-deep);
}

.nv-section--blue {
  background-color: var(--nv-band-blue);
  background-image:
    radial-gradient(70% 90% at 78% 20%, rgba(43, 110, 198, 0.26) 0%, transparent 64%),
    linear-gradient(
      180deg,
      var(--nv-bg) 0%,
      var(--nv-band-blue) 11%,
      var(--nv-band-blue) 89%,
      var(--nv-bg) 100%
    );
}

/* Light: a dark-surface section drops its pinning and follows the page. Only
   the cards listed below stay dark, because they carry a dark screenshot or a
   deliberate blue fill. `inherit` pulls each value from the light block, so
   there is one source of truth. */
[data-color-scheme="light"] [data-surface="dark"]:not(.nv-cta) {
  --nv-bg: inherit;
  --nv-bg-subtle: inherit;
  --nv-surface: inherit;
  --nv-surface-raised: inherit;
  --nv-border: inherit;
  --nv-border-strong: inherit;
  --nv-text: inherit;
  --nv-text-muted: inherit;
  --nv-text-subtle: inherit;
  --nv-text-brand: inherit;
  --nv-surface-fill: inherit;
  --nv-surface-line: inherit;
  --nv-track-bg: inherit;
  --nv-aqua-300: inherit;
  --nv-iris-300: inherit;
  --nv-azure-300: inherit;
  --nv-btn-outline-border: inherit;
  --nv-btn-outline-border-hover: inherit;
  --nv-btn-outline-bg-hover: inherit;
  --nv-band-deep: inherit;
  --nv-band-navy: inherit;
  --nv-card-bg: inherit;
  --nv-card-bg-hover: inherit;
  --nv-card-border: inherit;
  --nv-card-border-hover: inherit;
  --nv-card-blue-bg: inherit;
  --nv-card-blue-bg-hover: inherit;
  --nv-card-blue-border: inherit;
  --nv-card-blue-border-hover: inherit;
  --nv-panel-fill-from: inherit;
  --nv-panel-fill-to: inherit;
  --nv-surface-hover: inherit;
  --nv-surface-hover-strong: inherit;
  --nv-border-soft: inherit;
  --nv-glass-bg: inherit;
  --nv-glass-bg-strong: inherit;
  --nv-glass-border: inherit;
  --nv-btn-primary-bg: inherit;
  --nv-btn-primary-bg-hover: inherit;
  --nv-btn-primary-fg: inherit;
  --nv-btn-bright-fg: inherit;
  --nv-btn-bright-border: inherit;
  --nv-btn-bright-border-hover: inherit;
  --nv-btn-bright-icon: inherit;
  --nv-grey-05: inherit;
  --nv-grey-07: inherit;
  --nv-primary-06: inherit;
  --nv-primary-09: inherit;
  --nv-stroke-04: inherit;
  --nv-soft-teal: inherit;
  --nv-chip-fill: inherit;
  --nv-chip-border: inherit;
  --nv-tick: inherit;
  --nv-eyebrow-flat: inherit;
  --nv-gradient-eyebrow: inherit;
  --nv-shadow-md: inherit;
  --nv-shadow-lg: inherit;
  --nv-shadow-xl: inherit;
  --nv-shadow-brand: inherit;
  --nv-shadow-brand-hover: inherit;
  --nv-shadow-inset-top: inherit;
  --nv-shadow-media: inherit;
  --nv-glow-card: inherit;
  --nv-glow-soft: inherit;
  --nv-focus-ring: inherit;
}

/* Light: Hero copy sits on a light ground now */
[data-color-scheme="light"] .nv-hero,
[data-color-scheme="light"] .nv-hero__title {
  color: var(--nv-text-on-light);
}

[data-color-scheme="light"] .nv-hero__lead {
  color: var(--nv-text-on-light-muted);
}

/* Light: the silver wash is invisible on white — a soft blue lift replaces it */
[data-color-scheme="light"] .nv-hero::before {
  background-image: radial-gradient(
    60% 100% at 50% 0%,
    rgba(37, 99, 235, 0.16) 0%,
    rgba(37, 99, 235, 0.05) 45%,
    transparent 100%
  );
  mix-blend-mode: normal;
  opacity: 1;
}

/* Light: a blue glow seats the dark dashboard on the light ground.
   The image itself is untouched — this paints behind it. */
[data-color-scheme="light"] .nv-hero__media::before {
  content: "";
  position: absolute;
  inset: -12% -8%;
  z-index: -1;
  border-radius: var(--nv-radius-2xl);
  background: radial-gradient(
    60% 60% at 50% 50%,
    rgba(37, 99, 235, 0.18) 0%,
    rgba(37, 99, 235, 0.06) 55%,
    transparent 100%
  );
  filter: blur(28px);
  pointer-events: none;
}

[data-color-scheme="light"] .nv-hero__shot {
  box-shadow: var(--nv-shadow-media);
}

/* Light: hero pill reads as a blue-tinted chip, not a teal one */
[data-color-scheme="light"] .nv-hero__badge {
  --nv-hero-badge-fill: rgba(37, 99, 235, 0.07);
  --nv-gradient-hero-badge-border: linear-gradient(90deg, #bcd4fb 0%, #93b8f5 100%);
}

/* Light: Founder — light ground, card unchanged, decor pulled right back */
[data-color-scheme="light"] .nv-founder {
  background-color: #f3f8ff;
  background-image: radial-gradient(
    144.83% 293.09% at 71.49% 54.39%,
    var(--nv-white) 0%,
    #eaf1fd 97.55%
  );
}

[data-color-scheme="light"] .nv-founder__glow {
  background-color: rgba(37, 99, 235, 0.06);
}

[data-color-scheme="light"] .nv-founder__grid--dots {
  background-color: rgba(37, 99, 235, 0.16);
}

[data-color-scheme="light"] .nv-founder__grid--sq-mid-right {
  background-color: rgba(71, 84, 103, 0.05);
}

[data-color-scheme="light"] .nv-founder__grid--sq-bottom-left {
  background-color: rgba(71, 84, 103, 0.06);
}

[data-color-scheme="light"] .nv-founder__grid--sq-bottom-right {
  background-color: rgba(71, 84, 103, 0.06);
}

/* Light: magazine founder stays open — no boxed card */
[data-color-scheme="light"] .nv-founder__card {
  border: 0;
  box-shadow: none;
}

[data-color-scheme="light"] .nv-founder__panel {
  background-color: transparent;
}


[data-color-scheme="light"] .nv-founder__caption {
  background-image: linear-gradient(
    180deg,
    rgba(214, 228, 251, 0) 0%,
    rgba(214, 228, 251, 0.86) 34%,
    rgba(214, 228, 251, 0.96) 62%,
    rgba(214, 228, 251, 0.98) 100%
  );
}

[data-color-scheme="light"] .nv-founder__name {
  color: var(--nv-text-on-light);
}

[data-color-scheme="light"] .nv-founder__role {
  color: var(--nv-text-on-light-muted);
}

[data-color-scheme="light"] .nv-founder__quote {
  background-image: none;
  border: 0;
}

[data-color-scheme="light"] .nv-founder__quote p {
  color: var(--nv-text-on-light);
}

[data-color-scheme="light"] .nv-founder__quote::before {
  color: #b45309;
  text-shadow: none;
}

[data-color-scheme="light"] .nv-founder__badge {
  color: var(--nv-text-on-light);
  background-color: #eef4ff;
  border-color: #c7dbff;
}

/* Light: Platform illustration needs the quietest ground on the page */
[data-color-scheme="light"] .nv-platform {
  background-color: var(--nv-white);
}

/* Light: bands ease into the page instead of butting against it as slabs */
[data-color-scheme="light"] .nv-section--deep,
[data-color-scheme="light"] .nv-audience {
  background-color: var(--nv-bg);
  background-image: linear-gradient(
    180deg,
    var(--nv-bg) 0%,
    var(--nv-band-deep) 9%,
    var(--nv-band-deep) 91%,
    var(--nv-bg) 100%
  );
}


[data-color-scheme="light"] .nv-cta-band {
  background-color: transparent;
  background-image: linear-gradient(
    180deg,
    var(--nv-bg) 0%,
    var(--nv-band-deep) 9%,
    var(--nv-band-deep) calc(100% - var(--nv-cta-overlap)),
    transparent calc(100% - var(--nv-cta-overlap))
  );
}

/* Light: a saturated tile shouts on white — tint the block, deepen the glyph */
[data-color-scheme="light"] .nv-card__icon {
  color: #047857;
  background-color: #ecfdf5;
  border-color: #d1fae5;
}

/* Light: cards carry their own elevation — a border alone reads as flat */
[data-color-scheme="light"] .nv-card {
  box-shadow: 0 1px 2px rgba(16, 24, 40, 0.04), 0 1px 3px rgba(16, 24, 40, 0.05);
}

@media (hover: hover) {
  [data-color-scheme="light"] .nv-card:not(.nv-card--plain):hover {
    box-shadow: 0 4px 8px -2px rgba(16, 24, 40, 0.08), 0 2px 4px -2px rgba(16, 24, 40, 0.05);
  }

    /* `[data-surface="dark"] a:hover` (0-2-1) still matches inside a section that
     has flipped light — the hero keeps the attribute — and it outranks
     .nv-btn--outline:hover (0-2-0), repainting the label white on the near-white
     hover fill. Restating the variant's own colour at 0-5-1 wins it back;
     --nv-text resolves white inside the cards that are still dark. */
  [data-color-scheme="light"] [data-surface="dark"] a.nv-btn--outline:hover,
  [data-color-scheme="light"] [data-surface="dark"] a.nv-btn--outline:focus-visible {
    color: var(--nv-text);
  }

  /* Light: How-it-works steps. Outranks .nv-lift's -6px lift and shadow-xl.
     The surface never changes — the card floats on a blue glow, it does not
     fill. Glow first (blurred, no spread edge, so it reads as light rather
     than a selection ring), then elevation, then a neutral contact shadow. */
  [data-color-scheme="light"] .nv-workflow__steps .nv-card {
    transition:
      border-color 250ms ease,
      box-shadow 250ms ease,
      transform 250ms ease;
  }

  /* The --gradient-edge overlay is full-bleed (inset: -1px) and the card
     isolates, so that negative-z layer paints OVER the card's own background —
     on a white card it fills it brand-blue. The glow below replaces it. */
  [data-color-scheme="light"] .nv-card--gradient-edge:hover::after,
  [data-color-scheme="light"] .nv-card--gradient-edge:focus-within::after {
    opacity: 0;
  }

  [data-color-scheme="light"] .nv-workflow__steps .nv-card:hover {
    border-color: #c7dbff;
    box-shadow:
      0 0 24px 2px rgba(37, 99, 235, 0.10),
      0 12px 32px rgba(37, 99, 235, 0.12),
      0 2px 6px rgba(16, 24, 40, 0.06);
    transform: translateY(-4px);
  }

  /* Light: Problem cards — same float, keyed to the section eyebrow's green
     (--nv-gradient-eyebrow, #10b981 -> #047857) instead of brand blue. */
  [data-color-scheme="light"] .nv-problem__grid .nv-card {
    transition:
      border-color 250ms ease,
      box-shadow 250ms ease,
      transform 250ms ease;
  }

  [data-color-scheme="light"] .nv-problem__grid .nv-card:hover {
    border-color: #a7f3d0;
    box-shadow:
      0 0 24px 2px rgba(16, 185, 129, 0.10),
      0 12px 32px rgba(5, 150, 105, 0.12),
      0 2px 6px rgba(16, 24, 40, 0.06);
    transform: translateY(-4px);
  }
}

/* The rule above outranks .nv-lift, so it must repeat its reduced-motion
   opt-out — colour still answers the pointer, the lift does not. */
@media (prefers-reduced-motion: reduce) {
  [data-color-scheme="light"] .nv-workflow__steps .nv-card,
  [data-color-scheme="light"] .nv-problem__grid .nv-card {
    transition: border-color 250ms ease, box-shadow 250ms ease;
  }

  [data-color-scheme="light"] .nv-workflow__steps .nv-card:hover,
  [data-color-scheme="light"] .nv-problem__grid .nv-card:hover {
    transform: none;
  }
}

/* Light: the sticky bar reads as chrome, not a tinted pane over the hero */
[data-color-scheme="light"] .nv-header {
  border-block-end-color: var(--nv-header-border);
}

[data-color-scheme="light"] .nv-section--blue {
  background-image:
    radial-gradient(70% 90% at 78% 20%, rgba(43, 110, 198, 0.07) 0%, transparent 64%),
    linear-gradient(
      180deg,
      var(--nv-bg) 0%,
      var(--nv-band-blue) 11%,
      var(--nv-band-blue) 89%,
      var(--nv-bg) 100%
    );
}

.nv-section--inverse {
  background-color: var(--nv-ink-900);
  color: var(--nv-text-on-dark);
}

.nv-section--hairline::before {
  content: "";
  position: absolute;
  inset-block-start: 0;
  inset-inline: 0;
  height: 1px;
  background-image: var(--nv-gradient-line);
  opacity: 0.35;
}

.nv-section__head {
  max-width: 720px;
}

.nv-section__head--center {
  margin-inline: auto;
  text-align: center;
}

.nv-section__title {
  margin-block-start: var(--nv-space-4);
}

.nv-section__lead {
  margin-block-start: var(--nv-space-5);
}

.nv-page::after {
  content: "";
  position: fixed;
  inset: 0;
  z-index: var(--nv-z-decor);
  pointer-events: none;
  opacity: var(--nv-noise-opacity);
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}

[data-color-scheme="light"] .nv-page::after {
  opacity: 0.014;
  mix-blend-mode: multiply;
}

/* Decorative layer */
.nv-decor {
  position: absolute;
  inset: 0;
  z-index: var(--nv-z-base);
  overflow: hidden;
  pointer-events: none;
}

.nv-decor > * {
  position: absolute;
}

.nv-section > .nv-container,
.nv-section > .container {
  position: relative;
  z-index: var(--nv-z-decor);
}

.container,
.container-fluid,
.container-sm,
.container-md,
.container-lg,
.container-xl,
/* Bootstrap grid bridge */
.container-xxl {
  --bs-gutter-x: var(--nv-space-6);
  padding-inline: var(--nv-container-pad);
}

/* Responsive: Large desktop */
@media (min-width: 1400px) {
  .container,
  .container-xxl {
    max-width: var(--nv-container-max);
  }
}

@media print {
  .nv-header,
  .nv-footer,
  .nv-loader,
  .nv-cursor,
  .nv-scroll-top,
  .nv-decor {
    display: none !important;
  }

  body {
    color: #000;
    background: #fff;
  }
}

/* Component: button */
.nv-btn {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--nv-btn-gap);

  min-height: var(--nv-btn-h-md);
  padding-inline: var(--nv-btn-px-md);

  font-family: var(--nv-font-body);
  font-size: var(--nv-btn-font-size);
  font-weight: var(--nv-btn-font-weight);
  line-height: 1.2;
  letter-spacing: var(--nv-ls-snug);
  white-space: nowrap;
  text-align: center;

  border: 1px solid transparent;
  border-radius: var(--nv-btn-radius);
  isolation: isolate;

  transition:
    transform var(--nv-dur-fast) var(--nv-ease-out),
    background-color var(--nv-dur-fast) var(--nv-ease-out),
    border-color var(--nv-dur-fast) var(--nv-ease-out),
    box-shadow var(--nv-dur-base) var(--nv-ease-out),
    color var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-btn:focus-visible {
  outline: 3px solid var(--nv-focus-ring);
  outline-offset: 3px;
  border-radius: var(--nv-btn-radius);
}

.nv-btn:active {
  transform: translate3d(0, 1px, 0);
  transition-duration: 80ms;
}

.nv-btn[disabled],
/* aria-disabled stays focusable, so affordances are suppressed by hand */
.nv-btn[aria-disabled="true"] {
  opacity: 0.45;
  cursor: not-allowed;
  box-shadow: none;
  filter: saturate(0.6);
}

.nv-btn[disabled] { pointer-events: none; }

.nv-btn[aria-disabled="true"]:hover,
.nv-btn[aria-disabled="true"]:active {
  transform: none;
  box-shadow: none;
}

.nv-btn[data-loading="true"] {
  color: transparent;
  pointer-events: none;
}

.nv-btn[data-loading="true"] .nv-btn__icon {
  opacity: 0;
}

.nv-btn[data-loading="true"]::before {
  content: "";
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: 50%;
  width: 1.125rem;
  height: 1.125rem;
  margin: -0.5625rem 0 0 -0.5625rem;

  border: 2px solid currentColor;
  border-block-start-color: var(--nv-btn-primary-fg);
  border-radius: var(--nv-radius-circle);
  opacity: 0.9;
  border-color: rgba(255, 255, 255, 0.32);
  border-block-start-color: var(--nv-white);

  animation: nv-spin 720ms linear infinite;
}

.nv-btn--outline[data-loading="true"]::before,
.nv-btn--ghost[data-loading="true"]::before {
  border-color: var(--nv-border-strong);
  border-block-start-color: var(--nv-text);
}

.nv-btn__icon {
  flex: none;
  width: var(--nv-icon-md);
  height: var(--nv-icon-md);
  transition: transform var(--nv-dur-base) var(--nv-ease-out);
}

.nv-btn:hover .nv-btn__icon--forward {
  transform: translate3d(3px, 0, 0);
}

.nv-btn--primary {
  color: var(--nv-btn-primary-fg);
  background-color: var(--nv-btn-primary-bg);
  box-shadow: var(--nv-shadow-inset-top);
}

.nv-btn--primary:hover {
  color: var(--nv-btn-primary-fg);
  background-color: var(--nv-btn-primary-bg-hover);
  box-shadow: var(--nv-shadow-brand), var(--nv-shadow-inset-top);
}

@media (hover: hover) {
  .nv-btn--primary:hover {
    transform: translate3d(0, -1px, 0) scale(1.01);
  }
}

.nv-btn--primary:active {
  box-shadow: var(--nv-shadow-inset-top);
}

.nv-btn--primary::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  border-radius: inherit;
  background-image: linear-gradient(
    100deg,
    transparent 35%,
    rgba(255, 255, 255, 0.22) 50%,
    transparent 65%
  );
  background-size: 250% 100%;
  background-position: 150% 0;
  background-repeat: no-repeat;
  transition: background-position var(--nv-dur-slower) var(--nv-ease-out);
}

@media (hover: hover) {
  .nv-btn--primary:hover::after {
    background-position: -50% 0;
  }
}

.nv-btn--outline {
  color: var(--nv-text);
  background-color: transparent;
  border-color: var(--nv-btn-outline-border);
}

.nv-btn--outline:hover {
  color: var(--nv-text);
  background-color: var(--nv-btn-outline-bg-hover);
  border-color: var(--nv-btn-outline-border-hover);
}

/* Hero secondary ("See the Platform"): --nv-btn-outline-border-hover resolves
   to #2563eb in light theme, which reads as a bright blue ring against the
   hero. Swap just the border for the brand primary so the hover stays subtle
   and matches the header's outlined buttons; the fill and every transition are
   inherited from the rule above. Scoped to the hero so the outlined buttons
   elsewhere ("Learn more", Sign In, drawer) keep their own hover. */
.nv-hero__actions .nv-btn--outline:hover {
  border-color: var(--nv-btn-primary-bg);
}

@media (hover: hover) {
  .nv-btn--outline:hover {
    transform: translate3d(0, -1px, 0) scale(1.01);
  }
}

.nv-btn--outline-bright {
  min-height: var(--nv-btn-h-lg);

  min-width: 119px;

  padding: var(--nv-btn-bright-py) var(--nv-btn-bright-px);
  gap: var(--nv-btn-bright-gap);

  font-size: var(--nv-btn-bright-font-size);
  font-weight: var(--nv-fw-medium);
  line-height: 1;
  letter-spacing: var(--nv-ls-normal);

  color: var(--nv-btn-bright-fg);
  border-color: var(--nv-btn-bright-border);
  border-radius: var(--nv-btn-bright-radius);
}

.nv-btn--outline-bright:hover {
  color: var(--nv-white);
  border-color: var(--nv-btn-bright-border-hover);
}

.nv-btn--outline-bright:focus-visible {
  border-radius: var(--nv-btn-bright-radius);
}

.nv-btn--outline-bright .nv-btn__icon {
  width: var(--nv-btn-bright-icon-w);
  height: var(--nv-btn-bright-icon-h);
  color: var(--nv-btn-bright-icon);
}

.nv-btn--outline-bright:hover .nv-btn__icon {
  color: var(--nv-btn-bright-icon);
}

.nv-btn--ghost {
  color: var(--nv-header-link);
  background-color: transparent;
}

.nv-btn--ghost:hover {
  color: var(--nv-header-link-hover);
  background-color: var(--nv-surface-hover);
}

.nv-btn--sm {
  min-height: var(--nv-btn-h-sm);
  padding-inline: var(--nv-btn-px-sm);
  font-size: var(--nv-fs-xs);
}

.nv-btn--lg {
  min-height: var(--nv-btn-h-lg);
  padding-inline: var(--nv-btn-px-lg);
}

.nv-btn--block {
  display: flex;
  width: 100%;
}

.nv-btn--icon {
  padding-inline: 0;
  aspect-ratio: 1;
  border-radius: var(--nv-radius-md);
}

@media (prefers-reduced-motion: reduce) {
  .nv-btn,
  .nv-btn:hover,
  .nv-btn:active {
    transform: none;
  }

  .nv-btn--primary::after {
    display: none;
  }

  .nv-btn[data-loading="true"]::before {
    animation-duration: 1.6s;
  }
}

/* Component: text link button */
.nv-btn-link {
  display: inline-flex;
  align-items: center;
  gap: var(--nv-space-2);

  font-size: var(--nv-fs-2xs);
  font-weight: var(--nv-fw-semibold);
  color: var(--nv-aqua-300);

  transition: color var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-btn-link:hover,
.nv-btn-link:focus-visible {
  color: var(--nv-white);
}

/* Component: badge */
.nv-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--nv-space-2);

  padding: var(--nv-space-2) var(--nv-space-4) var(--nv-space-2) var(--nv-space-3);

  font-size: var(--nv-fs-xs);
  font-weight: var(--nv-fw-medium);
  line-height: 1.3;
  letter-spacing: var(--nv-ls-snug);
  color: var(--nv-text-muted);

  background-color: var(--nv-surface-fill);
  border: 1px solid var(--nv-border-strong);
  border-radius: var(--nv-radius-pill);

  transition:
    border-color var(--nv-dur-base) var(--nv-ease-out),
    color var(--nv-dur-base) var(--nv-ease-out);
}

/* Opaque fallback below — not every engine can blur */
@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .nv-badge {
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
  }
}

a.nv-badge:hover,
button.nv-badge:hover {
  color: var(--nv-text);
  border-color: var(--nv-btn-outline-border);
}

.nv-badge__icon {
  flex: none;
  width: var(--nv-icon-sm);
  height: var(--nv-icon-sm);
  color: var(--nv-aqua-300);
}

.nv-badge__dot {
  flex: none;
  width: 6px;
  height: 6px;
  border-radius: var(--nv-radius-circle);
  background-color: var(--nv-success-500);
  box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.20);
}

.nv-badge--brand {
  color: var(--nv-brand-700);
  background-color: var(--nv-brand-50);
  border-color: var(--nv-brand-100);
}

/* Component: card */
.nv-card {
  position: relative;
  display: flex;
  flex-direction: column;
  gap: var(--nv-space-4);

  padding: var(--nv-card-pad);

  background-color: var(--nv-card-bg);
  background-image: var(--nv-card-bg-image, none);
  border: 1px solid var(--nv-card-border);
  border-radius: var(--nv-card-radius);

  transition:
    background-color var(--nv-dur-base) var(--nv-ease-out),
    border-color var(--nv-dur-base) var(--nv-ease-out),
    transform var(--nv-dur-base) var(--nv-ease-out),
    box-shadow var(--nv-dur-base) var(--nv-ease-out);
}

.nv-card::before {
  content: "";
  position: absolute;
  inset-block-start: 0;
  inset-inline: 12%;
  height: 1px;
  pointer-events: none;
  background-image: linear-gradient(90deg, transparent, var(--nv-alpha-14), transparent);
  opacity: 0;
  transition: opacity var(--nv-dur-base) var(--nv-ease-out);
}

@media (hover: hover) {
  .nv-card:hover::before { opacity: 1; }
}

@media (hover: hover) {
  .nv-card:not(.nv-card--plain):hover {
    background-color: var(--nv-card-bg-hover);
    border-color: var(--nv-card-border-hover);
    box-shadow: var(--nv-glow-card);
  }
}

.nv-card:not(.nv-card--plain):focus-within {
  background-color: var(--nv-card-bg-hover);
  border-color: var(--nv-card-border-hover);
  box-shadow: var(--nv-glow-card);
}

.nv-card__title {
  font-family: var(--nv-font-display);
  font-size: var(--nv-fs-h4);
  font-weight: var(--nv-fw-semibold);
  line-height: 1.35;
  letter-spacing: var(--nv-ls-snug);
  color: var(--nv-text);
}

.nv-card__text {
  font-size: var(--nv-fs-xs);
  line-height: var(--nv-lh-relaxed);
  color: var(--nv-text-muted);
}

.nv-card__foot {
  margin-block-start: auto;
  padding-block-start: var(--nv-space-2);
}

.nv-card__icon {
  display: grid;
  place-items: center;
  flex: none;
  width: 40px;
  height: 40px;
  padding: 9px;

  color: var(--nv-white);
  background-color: var(--nv-accent-green);
  border: 1px solid transparent;
  border-radius: var(--nv-radius-sm);

  transition:
    transform var(--nv-dur-base) var(--nv-ease-spring),
    background-color var(--nv-dur-base) var(--nv-ease-out);
}

@media (hover: hover) {
  .nv-card:hover .nv-card__icon {
    transform: scale(1.08);
    filter: brightness(1.14);
  }
}

.nv-card__seq {
  display: grid;
  place-items: center;
  flex: none;
  width: 40px;
  height: 40px;
  padding: 6.99px;

  font-family: var(--nv-font-display);
  font-size: 18px;
  font-weight: var(--nv-fw-semibold);
  font-variant-numeric: tabular-nums;
  line-height: 1;
  letter-spacing: 0;

  color: var(--nv-seq-fg);
  background-color: var(--nv-seq-1);
  border: 0;
  border-radius: 5.24px;
  box-shadow: none;

  transition: transform var(--nv-dur-base) var(--nv-ease-spring);
}

.nv-card__seq--2 { background-color: var(--nv-seq-2); }
.nv-card__seq--3 { background-color: var(--nv-seq-3); }
.nv-card__seq--4 { background-color: var(--nv-seq-4); }

@media (hover: hover) {
  .nv-card:hover .nv-card__seq {
    transform: scale(1.1) rotate(-4deg);
  }
}

.nv-card--flush { padding: 0; }

.nv-card--blue {
  background-color: var(--nv-card-blue-bg);
  border-color: var(--nv-card-blue-border);
}

@media (hover: hover) {
  .nv-card--blue:not(.nv-card--plain):hover {
    background-color: var(--nv-card-blue-bg-hover);
    border-color: var(--nv-card-blue-border-hover);
  }
}

.nv-card--gradient-edge::after {
  content: "";
  position: absolute;
  inset: -1px;
  z-index: -1;
  border-radius: inherit;
  background-image: var(--nv-gradient-brand);
  opacity: 0;
  transition: opacity var(--nv-dur-base) var(--nv-ease-out);
}

.nv-card--gradient-edge {
  isolation: isolate;
}

@media (hover: hover) {
  .nv-card--gradient-edge:hover::after { opacity: 0.55; }
}

.nv-card--gradient-edge:focus-within::after { opacity: 0.55; }

@media (prefers-reduced-motion: reduce) {
  .nv-card,
  .nv-card__icon,
  .nv-card__seq {
    transition: none;
    transform: none;
  }
}

/* Component: section header */
.nv-sectionhead {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  max-width: 46rem;
}

.nv-sectionhead__eyebrow {
  color: var(--nv-aqua-300);
}

.nv-sectionhead__title {
  margin-block-start: 1.125rem;
  font-size: var(--nv-fs-h2);
  font-weight: var(--nv-fw-bold);
  line-height: var(--nv-lh-snug);
  letter-spacing: var(--nv-ls-tight);
  color: var(--nv-text);
}

.nv-sectionhead__lead {
  margin-block-start: var(--nv-space-3);
  max-width: 40rem;
  font-size: var(--nv-fs-xs);
  line-height: 1.55;
  color: var(--nv-text-muted);
}

.nv-sectionhead--center {
  align-items: center;
  margin-inline: auto;
  text-align: center;
}

.nv-sectionhead--wide { max-width: 56rem; }

/* Component: check list */
.nv-checklist {
  display: grid;
  gap: var(--nv-space-3);
}

.nv-checklist--two-col {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  column-gap: var(--nv-space-6);
}

.nv-checklist__item {
  display: flex;
  align-items: flex-start;
  gap: var(--nv-space-3);

  font-size: var(--nv-fs-2xs);
  line-height: 1.55;
  color: var(--nv-text-muted);
}

.nv-checklist__icon {
  flex: none;
  width: var(--nv-icon-sm);
  height: var(--nv-icon-sm);
  margin-block-start: 1px;
  color: var(--nv-aqua-300);
}

/* Component: dot list */
.nv-dotlist {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nv-space-3) var(--nv-space-5);
}

.nv-dotlist__item {
  display: flex;
  align-items: center;
  gap: var(--nv-space-2);

  font-size: var(--nv-fs-2xs);
  font-weight: var(--nv-fw-medium);
  color: var(--nv-text-subtle);

  transition: color var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-dotlist__item::before {
  content: "";
  flex: none;
  width: 5px;
  height: 5px;
  border-radius: var(--nv-radius-circle);
  background-color: currentColor;
  opacity: 0.75;
  transition: opacity var(--nv-dur-fast) var(--nv-ease-out),
              transform var(--nv-dur-base) var(--nv-ease-spring);
}

@media (hover: hover) {
  .nv-dotlist__item:hover { color: var(--nv-text); }
  .nv-dotlist__item:hover::before { opacity: 1; transform: scale(1.4); }
}

@media (prefers-reduced-motion: reduce) {
  .nv-dotlist__item::before { transition: none; }
}

/* Component: loader */
/* Never shown without JS — nothing would dismiss it */
.no-js .nv-loader {
  display: none;
}

.nv-loader {
  position: fixed;
  inset: 0;
  z-index: var(--nv-z-loader);

  display: grid;
  place-content: center;
  justify-items: center;
  gap: var(--nv-space-6);

  background-color: var(--nv-loader-bg);

  transition:
    opacity var(--nv-dur-slow) var(--nv-ease-out),
    visibility 0s linear var(--nv-dur-slow);
}

.nv-loader.is-done {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

.nv-loader__mark {
  display: grid;
  place-items: center;
  animation: nv-loader-pulse 1.8s var(--nv-ease-in-out) infinite;
}

.nv-loader__mark img {
  width: 32px;
  height: 36px;
}

@keyframes nv-loader-pulse {
  0%, 100% { opacity: 0.55; transform: scale(0.96); }
  50%      { opacity: 1;    transform: scale(1); }
}

.nv-loader__bar {
  width: 140px;
  height: 2px;
  border-radius: var(--nv-radius-pill);
  background-color: var(--nv-track-bg);
  overflow: hidden;
}

.nv-loader__progress {
  display: block;
  height: 100%;
  border-radius: inherit;
  background-image: var(--nv-gradient-brand);
  transform: scaleX(var(--nv-progress, 0));
  transform-origin: left center;
  transition: transform var(--nv-dur-base) var(--nv-ease-out);
}

@media (prefers-reduced-motion: reduce) {
  .nv-loader__mark { animation: none; opacity: 1; }
}

/* Component: back to top */
.nv-scroll-top {
  position: fixed;
  inset-block-end: var(--nv-space-6);
  inset-inline-end: var(--nv-space-6);
  z-index: var(--nv-z-sticky);

  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;

  color: var(--nv-white);
  background-color: var(--nv-btn-primary-bg);
  border-radius: var(--nv-radius-md);
  box-shadow: var(--nv-shadow-brand);

  opacity: 0;
  visibility: hidden;
  transform: translate3d(0, 10px, 0);

  transition:
    opacity var(--nv-dur-base) var(--nv-ease-out),
    transform var(--nv-dur-base) var(--nv-ease-out),
    background-color var(--nv-dur-fast) var(--nv-ease-out),
    visibility 0s linear var(--nv-dur-base);
}

.nv-scroll-top.is-visible {
  opacity: 1;
  visibility: visible;
  transform: translate3d(0, 0, 0);
  transition-delay: 0s;
}

.nv-scroll-top:hover {
  background-color: var(--nv-btn-primary-bg-hover);
  box-shadow: var(--nv-shadow-brand-hover);
}

.nv-scroll-top svg {
  width: var(--nv-icon-lg);
  height: var(--nv-icon-lg);
}

/* Responsive: Mobile */
@media (max-width: 575.98px) {
  .nv-scroll-top {
    inset-block-end: var(--nv-space-4);
    inset-inline-end: var(--nv-space-4);
  }
}

@media (prefers-reduced-motion: reduce) {
  .nv-scroll-top { transition: opacity var(--nv-dur-fast) linear, visibility 0s; transform: none; }
  .nv-scroll-top.is-visible { transform: none; }
}

/* Navbar: bar */
.nv-header {
  position: fixed;
  inset-block-start: 0;
  inset-inline: 0;
  z-index: var(--nv-z-header);

  height: var(--nv-header-h);
  display: flex;
  align-items: center;

  background-color: var(--nv-header-surface);
  border-block-end: 1px solid transparent;
  box-shadow: none;

  transition:
    height var(--nv-dur-base) var(--nv-ease-out),
    background-color var(--nv-dur-base) var(--nv-ease-out),
    border-color var(--nv-dur-base) var(--nv-ease-out),
    box-shadow var(--nv-dur-base) var(--nv-ease-out);
}

.nv-header.is-scrolled {
  height: var(--nv-header-h-scrolled);
  background-color: var(--nv-header-bg-solid);
  border-block-end-color: var(--nv-header-border);

  box-shadow: var(--nv-header-shadow);
}

@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .nv-header.is-scrolled {
    background-color: var(--nv-header-bg);
    -webkit-backdrop-filter: blur(20px) saturate(190%);
    backdrop-filter: blur(20px) saturate(190%);
  }
}

.nv-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nv-space-6);
  width: 100%;
  max-width: var(--nv-container-max);
  margin-inline: auto;
  padding-inline: var(--nv-container-pad);
}

/* Navbar: brand */
.nv-header__brand {
  display: inline-flex;
  align-items: center;
  flex: none;
  border-radius: var(--nv-radius-sm);
  transition: opacity var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-header__brand:hover {
  opacity: 0.85;
}

.nv-header__brand {
  display: inline-grid;
}

.nv-header__logo {
  grid-area: 1 / 1;
  width: 126px;
  height: 36px;
  transition: opacity var(--nv-dur-base) var(--nv-ease-soft);
}

.nv-header__logo--light { opacity: 0; }

[data-color-scheme="light"] .nv-header__logo--dark  { opacity: 0; }
[data-color-scheme="light"] .nv-header__logo--light { opacity: 1; }

.nv-header__nav {
  display: flex;
  justify-content: center;
}

/* Navbar: navigation */
.nv-nav {
  display: flex;
  align-items: center;
  gap: var(--nv-space-10);
}

.nv-nav__link {
  position: relative;
  display: inline-block;
  padding-block: var(--nv-space-2);

  font-size: var(--nv-fs-sm);
  font-weight: var(--nv-fw-medium);
  color: var(--nv-header-link);
  letter-spacing: var(--nv-ls-snug);

  transition: color var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-nav__link:hover,
.nv-nav__link:focus-visible {
  color: var(--nv-header-link-hover);
}

.nv-nav__link::after {
  content: "";
  position: absolute;
  inset-block-end: 0;
  inset-inline: 0;
  height: 2px;
  border-radius: var(--nv-radius-pill);
  background-image: var(--nv-gradient-heading);

  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--nv-dur-base) var(--nv-ease-out);
}

.nv-nav__link:hover::after,
.nv-nav__link:focus-visible::after,
.nv-nav__link.is-active::after {
  transform: scaleX(1);
  transform-origin: left center;
}

.nv-nav__link.is-active {
  color: var(--nv-header-link-hover);
}

/* Navbar: actions */
.nv-header__actions {
  display: flex;
  align-items: center;
  gap: var(--nv-space-3);
  flex: none;
}

.nv-header__cta {
  min-height: 40px;
  white-space: nowrap;
}

@media (max-width: 1199.98px) and (min-width: 992px) {
  .nv-header__cta {
    font-size: 0.72rem;
    padding-inline: 0.8rem;
  }
}

.nv-header__signin {
  height: 38px;
  min-height: 0;
  gap: 8px;
  padding-inline: 16px;

  /* Same token .nv-btn--outline uses, so this matches "See the Platform"
     exactly: rgba(255,255,255,0.34) on dark, #d0d5dd on light */
  border: 1px solid var(--nv-btn-outline-border);
  border-radius: 6px;
  color: var(--nv-text);
  background-color: transparent;
}


@media (hover: hover) {
  .nv-header__signin:hover {
    background-color: var(--nv-surface-hover);
    border-color: var(--nv-btn-primary-bg);
    color: var(--nv-text);
    box-shadow: var(--nv-shadow-xs);
  }
}

/* Navbar: theme toggle */
.nv-theme-toggle {
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  flex: none;

  color: var(--nv-header-link);
  border-radius: var(--nv-radius-md);

  transition:
    color var(--nv-dur-fast) var(--nv-ease-out),
    background-color var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-theme-toggle:hover {
  color: var(--nv-header-link-hover);
  background-color: var(--nv-surface-hover);
}

.nv-theme-toggle__track {
  position: relative;
  display: grid;
  place-items: center;
  width: var(--nv-icon-xl);
  height: var(--nv-icon-xl);
}

.nv-theme-toggle__icon {
  grid-area: 1 / 1;
  width: var(--nv-icon-lg);
  height: var(--nv-icon-lg);
  transition:
    opacity var(--nv-dur-base) var(--nv-ease-out),
    transform var(--nv-dur-base) var(--nv-ease-spring);
}

.nv-theme-toggle__icon--sun {
  opacity: 1;
  transform: rotate(0deg) scale(1);
}

.nv-theme-toggle__icon--moon {
  opacity: 0;
  transform: rotate(-70deg) scale(0.6);
}

[data-color-scheme="light"] .nv-theme-toggle__icon--sun {
  opacity: 0;
  transform: rotate(70deg) scale(0.6);
}

[data-color-scheme="light"] .nv-theme-toggle__icon--moon {
  opacity: 1;
  transform: rotate(0deg) scale(1);
}

/* Navbar: hamburger */
.nv-burger {
  display: none;
  position: relative;
  width: 44px;
  height: 44px;
  flex: none;
  color: var(--nv-header-link-hover);
  border-radius: var(--nv-radius-md);
}

.nv-burger:hover {
  background-color: var(--nv-surface-hover);
}

.nv-burger__bar {
  position: absolute;
  inset-inline-start: 50%;
  inset-block-start: 50%;
  width: 20px;
  height: 2px;
  margin-inline-start: -10px;
  border-radius: var(--nv-radius-pill);
  background-color: currentColor;

  transition:
    transform var(--nv-dur-base) var(--nv-ease-out),
    opacity var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-burger__bar:nth-child(1) { transform: translate3d(0, -7px, 0); }
.nv-burger__bar:nth-child(2) { transform: translate3d(0, -1px, 0); }
.nv-burger__bar:nth-child(3) { transform: translate3d(0, 5px, 0); }

.nv-burger[aria-expanded="true"] .nv-burger__bar:nth-child(1) {
  transform: translate3d(0, -1px, 0) rotate(45deg);
}

.nv-burger[aria-expanded="true"] .nv-burger__bar:nth-child(2) {
  opacity: 0;
  transform: translate3d(0, -1px, 0) scaleX(0.3);
}

.nv-burger[aria-expanded="true"] .nv-burger__bar:nth-child(3) {
  transform: translate3d(0, -1px, 0) rotate(-45deg);
}

/* Navbar: mobile drawer */
.nv-drawer {
  position: fixed;
  inset: 0;
  z-index: var(--nv-z-drawer);
  visibility: hidden;
  pointer-events: none;
}

.nv-drawer.is-open {
  visibility: visible;
  pointer-events: auto;
}

.nv-drawer__scrim {
  position: absolute;
  inset: 0;
  background-color: var(--nv-scrim);
  opacity: 0;
  transition: opacity var(--nv-dur-base) var(--nv-ease-out);
}

.nv-drawer.is-open .nv-drawer__scrim {
  opacity: 1;
}

.nv-drawer__panel {
  position: absolute;
  inset-block: 0;
  inset-inline-end: 0;
  width: min(380px, 86vw);

  /* Three parts stacked: head, nav, actions. The panel itself never scrolls —
     only the nav does, so the action group stays put as items are added */
  display: flex;
  flex-direction: column;
  overflow: hidden;

  background-color: var(--nv-drawer-bg);
  border-inline-start: 1px solid var(--nv-border-soft);

  transform: translate3d(100%, 0, 0);
  transition: transform var(--nv-dur-slow) var(--nv-ease-out);
}

.nv-drawer.is-open .nv-drawer__panel {
  transform: translate3d(0, 0, 0);
}

/* Every section shares one gutter, so the logo, the links and the buttons all
   line up on the same two vertical edges */
.nv-drawer__head,
.nv-drawer__nav,
.nv-drawer__actions {
  padding-inline: var(--nv-space-6);
}

.nv-drawer__head {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--nv-space-4);
  min-height: var(--nv-header-h);
  padding-block: var(--nv-space-4);
  border-block-end: 1px solid var(--nv-border-soft);
}

/* Same two-image crossfade the header brand uses, so the drawer logo follows
   [data-color-scheme] on <html> the instant the toggle flips it */
.nv-drawer__brand {
  display: inline-grid;
  flex: none;
}

.nv-drawer__logo {
  grid-area: 1 / 1;
  width: 112px;
  height: 32px;
  transition: opacity var(--nv-dur-base) var(--nv-ease-soft);
}

.nv-drawer__logo--light { opacity: 0; }

[data-color-scheme="light"] .nv-drawer__logo--dark  { opacity: 0; }
[data-color-scheme="light"] .nv-drawer__logo--light { opacity: 1; }

.nv-drawer__close {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  color: var(--nv-text);
  border-radius: var(--nv-radius-md);
  background-color: var(--nv-surface-fill);
  transition: background-color var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-drawer__close:hover {
  background-color: var(--nv-surface-hover-strong);
}

.nv-drawer__close svg {
  width: var(--nv-icon-lg);
  height: var(--nv-icon-lg);
}

/* Only this region scrolls; it shrinks to its content, so the action group
   below it sits directly under the last link rather than at the panel foot */
.nv-drawer__nav {
  flex: 0 1 auto;
  min-height: 0;
  padding-block-start: var(--nv-space-5);

  overflow-y: auto;
  overscroll-behavior: contain;
}

.nv-drawer__list {
  display: flex;
  flex-direction: column;
  gap: var(--nv-space-1);
}

.nv-drawer__link {
  position: relative;
  display: flex;
  align-items: center;
  min-height: 52px;
  padding-inline: var(--nv-space-3);
  border-radius: var(--nv-radius-lg);

  font-family: var(--nv-font-display);
  font-size: var(--nv-fs-h4);
  font-weight: var(--nv-fw-semibold);
  letter-spacing: var(--nv-ls-snug);
  color: var(--nv-text);

  transition: color var(--nv-dur-fast) var(--nv-ease-out),
              background-color var(--nv-dur-fast) var(--nv-ease-out),
              transform var(--nv-dur-fast) var(--nv-ease-out);
}

/* The accent bar reads as the selection marker; it grows from the link's
   vertical centre so hover feels like a slide-in rather than a repaint */
.nv-drawer__link::before {
  content: "";
  position: absolute;
  inset-inline-start: 0;
  inset-block: 50%;
  width: 2px;
  border-radius: var(--nv-radius-pill);
  background-color: var(--nv-aqua-300);
  opacity: 0;
  transition: inset-block var(--nv-dur-base) var(--nv-ease-out),
              opacity var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-drawer__link:hover,
.nv-drawer__link:focus-visible,
.nv-drawer__link[aria-current="page"] {
  color: var(--nv-aqua-300);
  background-color: var(--nv-surface-hover);
}

.nv-drawer__link:hover::before,
.nv-drawer__link:focus-visible::before,
.nv-drawer__link[aria-current="page"]::before {
  inset-block: 25%;
  opacity: 1;
}

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

.nv-drawer__link:active {
  background-color: var(--nv-surface-hover-strong);
  transform: scale(0.99);
}

/* Sign In and the walkthrough CTA travel together, evenly spaced, one rhythm step
   below the nav — never pinned to the foot of the panel */
.nv-drawer__actions {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  gap: var(--nv-space-3);
  padding-block: var(--nv-space-5) calc(var(--nv-space-8) + env(safe-area-inset-bottom, 0px));
}

/* Responsive: Tablet */
@media (max-width: 991.98px) {
  /* Sign In leaves the bar with the nav and the CTA — the drawer carries its
     own copy, so nothing is lost */
  .nv-header__nav,
  .nv-header__cta,
  .nv-header__signin {
    display: none;
  }

  .nv-burger {
    display: grid;
    place-items: center;
  }

  .nv-header__inner {
    padding-inline: var(--nv-container-pad);
  }
}

/* Sticky demo CTA

   A separate element from .nv-header__cta, and a direct child of <body> on
   purpose: .nv-header.is-scrolled carries a backdrop-filter, and a
   backdrop-filter ancestor becomes the containing block for its fixed
   descendants — a copy inside the header would pin itself to the header the
   moment the page scrolled, instead of to the viewport.

   Hidden by default so it costs nothing above the breakpoint. */
.nv-sticky-cta {
  display: none;
}

@media (max-width: 768.98px) {
  :root {
    /* The bar's full footprint, including the home-indicator inset */
    --nv-sticky-cta-space: calc(var(--nv-btn-h-lg) + env(safe-area-inset-bottom, 0px));
  }

  .nv-sticky-cta {
    display: inline-flex;

    position: fixed;
    /* Both insets with width auto is what stretches it edge to edge */
    inset-inline: 0;
    inset-block-end: 0;
    z-index: var(--nv-z-sticky);

    /* Edge to edge: no gutter, no rounding, flush with the viewport bottom */
    border-radius: 0;

    min-height: var(--nv-btn-h-lg);
    /* The fill still reaches the very bottom; this keeps the label clear of
       the home indicator on notched phones (the pages set viewport-fit=cover) */
    padding-block-end: env(safe-area-inset-bottom, 0px);

    /* Upward spread lifts the bar off whatever scrolls under it */
    box-shadow: 0 -10px 28px -8px rgba(4, 8, 14, 0.55);
  }

  /* The same lift, dialled back for a light ground */
  [data-color-scheme="light"] .nv-sticky-cta {
    box-shadow: 0 -10px 28px -8px rgba(16, 24, 40, 0.20);
  }

  /* Back-to-top is fixed at bottom right and would sit on top of the bar */
  .nv-scroll-top {
    inset-block-end: calc(var(--nv-sticky-cta-space) + var(--nv-space-4));
  }

  /* A fixed bar covers whatever is under it for good, and the last thing on
     every page is the footer's legal row — this clears it.

     Set on the shell rather than on .nv-footer: the footer's own rule uses the
     padding-block shorthand and lives further down the sheet, so a
     padding-block-end here would be re-set by it at equal specificity and the
     legal row would stay hidden. Feeding the variable can't lose that race. */
  .nv-page {
    --nv-footer-pad-bottom: calc(var(--nv-space-8) + var(--nv-sticky-cta-space));
  }
}

/* Responsive: Mobile */
@media (max-width: 575.98px) {
  .nv-header__logo {
    width: 108px;
    height: 31px;
  }

  .nv-drawer__panel {
    width: min(340px, 92vw);
  }
}

/* Responsive: small phone — the panel takes the whole screen, so the sliver of
   scrim on the left and the edge rule that drew it are both gone */
@media (max-width: 425.98px) {
  .nv-drawer__panel {
    width: 100vw;
    max-width: 100%;
    inset-inline: 0;
    border-inline-start: 0;
  }
}

/* Responsive: very narrow phone

   Logo, theme toggle and burger share the bar, and at the ≤575.98px sizes the
   gaps and gutters around them leave the burger short of room. Every reduction
   here is horizontal; the two controls stay 40×40, so neither loses its tap
   target. */
@media (max-width: 341.98px) {
  .nv-header__inner {
    /* The bar buys its own gutter — the page-wide token stays at 1.25rem so
       no section below the header reflows */
    padding-inline: var(--nv-space-4);
    gap: var(--nv-space-3);
  }

  .nv-header__logo {
    /* 3.5:1, the same ratio as every other size of the mark */
    width: 100px;
    height: 29px;
  }

  .nv-header__actions {
    gap: var(--nv-space-2);
  }

  .nv-burger {
    /* 44 → 40, the floor rather than below it */
    width: 40px;
    height: 40px;
  }

  .nv-burger__bar {
    width: 18px;
    margin-inline-start: -9px;
  }
}

/* Responsive: Landscape phone */
@media (max-height: 520px) and (orientation: landscape) {
  .nv-drawer__head {
    min-height: 0;
    padding-block: var(--nv-space-3);
  }

  .nv-drawer__nav {
    padding-block-start: var(--nv-space-3);
  }

  .nv-drawer__actions {
    padding-block: var(--nv-space-3) calc(var(--nv-space-4) + env(safe-area-inset-bottom, 0px));
  }

  .nv-drawer__link {
    min-height: 42px;
    font-size: var(--nv-fs-body);
  }
}

@media (prefers-reduced-motion: reduce) {
  .nv-header,
  .nv-header__logo,
  .nv-drawer__logo,
  .nv-drawer__panel,
  .nv-drawer__link,
  .nv-drawer__link::before,
  .nv-theme-toggle__icon {
    transition: none;
  }

  .nv-drawer__link:active {
    transform: none;
  }

  .nv-drawer__panel {
    transition: transform 1ms linear;
  }
}

/* Footer: layout */
.nv-footer {
  position: relative;
  z-index: 1;
  /* Both values come from the .nv-page--footer-* modifier on <body>; the
     footer holds no layout opinion of its own */
  margin-block-start: calc(var(--nv-footer-overlap) * -1);

  padding-block: var(--nv-footer-pad-top) var(--nv-footer-pad-bottom);

  background-color: var(--nv-footer-bg);
  background-image: linear-gradient(0deg, var(--nv-footer-bg-alt) -60.53%, var(--nv-footer-bg) 157.74%);
}

.nv-footer__grid {
  /* Sized so the 131-character blurb wraps to exactly two lines at
     --nv-fs-xs (16px). It caps .nv-footer__blurb and sizes this column's
     track, so both stay in step. */
  --nv-footer-brand-w: 36rem;

  display: grid;
  /* Brand far left, Product centred, Contact to its right. The 1fr sits on the
     middle track so the slack lands between Product and Contact. */
  grid-template-columns: var(--nv-footer-brand-w) minmax(0, 1fr) max-content;
  gap: var(--nv-space-6);
}

/* The only <nav> in the grid is the Product column. justify-self shrinks it to
   its own width and centres it in the flexible track; its heading and links
   stay left-aligned inside. */
.nv-footer__grid > nav.nv-footer__col {
  justify-self: center;
}

.nv-footer__col {
  display: flex;
  flex-direction: column;
  gap: var(--nv-space-5);
}

.nv-footer__heading {
  font-family: var(--nv-font-body);
  font-size: 16px;
  font-weight: var(--nv-fw-semibold);
  line-height: 1.4;
  letter-spacing: 0;
  text-transform: none;
  color: var(--nv-grey-07);
}

.nv-footer__list,
.nv-footer__address {
  display: flex;
  flex-direction: column;
  gap: var(--nv-space-4);
}

.nv-footer__address > * {
  display: flex;
  align-items: flex-start;
  gap: var(--nv-space-3);
}

.nv-footer__icon {
  /* A declaration, not a markup attribute — the reset would override it */
  fill: none;
  flex: none;
  width: 18px;
  height: 18px;
  margin-block-start: 1px;
  color: var(--nv-grey-05);
}

/* The same crossfade the logos use, for icons that ship as two artworks
   rather than one currentColor glyph */
.nv-footer__icon-swap {
  display: inline-grid;
  flex: none;
  margin-block-start: 1px;
}

.nv-footer__icon-swap .nv-footer__icon {
  grid-area: 1 / 1;
  /* The wrapper carries the optical nudge now */
  margin-block-start: 0;
  transition: opacity var(--nv-dur-base) var(--nv-ease-soft);
}

.nv-footer__icon--light { opacity: 0; }

[data-color-scheme="light"] .nv-footer__icon--dark  { opacity: 0; }
[data-color-scheme="light"] .nv-footer__icon--light { opacity: 1; }

/* Footer: links */
.nv-footer__link {
  align-self: flex-start;
  font-size: var(--nv-fs-xs);
  color: var(--nv-text-muted);

  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-position: 0 100%;
  background-size: 0% 1px;

  transition:
    color var(--nv-dur-fast) var(--nv-ease-out),
    background-size var(--nv-dur-base) var(--nv-ease-out);
}

.nv-footer__link:hover,
.nv-footer__link:focus-visible {
  color: var(--nv-text);
  background-size: 100% 1px;
}

/* These links carry no href, so the cursor is restated */
.nv-footer__link[aria-disabled="true"] {
  cursor: default;
}

.nv-footer__legal-text {
  font-size: var(--nv-fs-xs);
  color: var(--nv-text-subtle);
}

.nv-footer__legal-status {
  margin: 0;
  max-width: 36em;
  font-size: var(--nv-fs-xs);
  line-height: 1.5;
  color: var(--nv-text-subtle);
  text-align: end;
}

.nv-footer__place {
  font-size: var(--nv-fs-xs);
  line-height: 1.7;
  color: var(--nv-text-muted);
}

.nv-footer__brand {
  gap: var(--nv-space-6);
}

.nv-footer__logo {
  align-self: flex-start;
  display: inline-grid;
  border-radius: var(--nv-radius-sm);
  transition: opacity var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-footer__logo:hover { opacity: 0.85; }

.nv-footer__logo-img {
  grid-area: 1 / 1;
  width: 126px;
  height: 36px;
  transition: opacity var(--nv-dur-base) var(--nv-ease-soft);
}

.nv-footer__logo-img--light { opacity: 0; }

[data-color-scheme="light"] .nv-footer__logo-img--dark  { opacity: 0; }
[data-color-scheme="light"] .nv-footer__logo-img--light { opacity: 1; }

.nv-footer__blurb {
  max-width: var(--nv-footer-brand-w);
  font-size: var(--nv-fs-xs);
  line-height: var(--nv-lh-relaxed);
  color: var(--nv-text-muted);
}

/* Footer: socials */
.nv-socials {
  display: flex;
  gap: var(--nv-space-6);
}

.nv-socials__link {
  display: grid;
  place-items: center;
  margin: -8px;
  padding: 8px;

  background-color: transparent;
  border: 0;

  transition: opacity var(--nv-dur-fast) var(--nv-ease-out);
}

.nv-socials__link svg,
.nv-socials__link img {
  width: 32px;
  height: 32px;
}

.nv-socials__link:hover,
.nv-socials__link:focus-visible {
  opacity: 0.78;
}

/* Footer: legal bar */
.nv-footer__bottom {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--nv-space-4);

  /* Matches the padding below the rule, so the divider sits centred in the
     gap between the two rows */
  margin-block-start: var(--nv-space-6);
  padding-block-start: var(--nv-space-6);
  border-block-start: 1px solid var(--nv-border);
}

.nv-footer__copy {
  font-size: var(--nv-fs-xs);
  color: var(--nv-text-subtle);
}

.nv-footer__legal {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: var(--nv-space-2) var(--nv-space-8);
}

/* Footer: responsive type and rhythm

   Below the desktop breakpoint the three columns start stacking, and at fixed
   16px every row costs the same vertical space as the one above it — the
   "stacked" look. Both the type ramp and the spacing ramp are declared as
   variables on .nv-footer and consumed below, so the whole footer scales off
   one place and nothing here leaks past 991.98px. */
@media (max-width: 991.98px) {
  .nv-footer {
    /* 14px at 360, reaching the desktop 16px right at the breakpoint */
    --nv-fs-xs: clamp(0.875rem, 0.79rem + 0.38vw, 1rem);
    /* Headings shed less than body text, so the hierarchy holds as both shrink */
    --nv-footer-fs-heading: clamp(0.9375rem, 0.89rem + 0.19vw, 1rem);

    /* One spacing ramp, three steps: between blocks, inside a block, between
       sibling lines. Keeping them proportional is what reads as rhythm. */
    --nv-footer-gap-block: clamp(1.75rem, 1.2rem + 2.4vw, 2.5rem);
    --nv-footer-gap-group: clamp(0.875rem, 0.65rem + 1vw, 1.25rem);
    --nv-footer-gap-line:  clamp(0.625rem, 0.5rem + 0.55vw, 1rem);
  }

  .nv-footer__grid {
    /* Rows are the stacked axis, so they get the block step; columns sit side
       by side and need less */
    gap: var(--nv-footer-gap-block) var(--nv-footer-gap-group);
  }

  .nv-footer__col {
    gap: var(--nv-footer-gap-group);
  }

  .nv-footer__brand {
    gap: var(--nv-footer-gap-group);
  }

  .nv-footer__list,
  .nv-footer__address {
    gap: var(--nv-footer-gap-line);
  }

  .nv-footer__heading {
    font-size: var(--nv-footer-fs-heading);
  }

  /* One line-height across blurb, links, address and copyright — mixed leading
     is most of what makes a shrunken footer look cluttered */
  .nv-footer__blurb {
    line-height: var(--nv-lh-relaxed);
  }

  .nv-footer__place,
  .nv-footer__link,
  .nv-footer__copy {
    line-height: var(--nv-lh-normal);
  }

  .nv-socials {
    gap: var(--nv-footer-gap-group);
  }

  .nv-footer__bottom {
    /* Still symmetric about the rule, just on the smaller step */
    margin-block-start: var(--nv-footer-gap-group);
    padding-block-start: var(--nv-footer-gap-group);
    gap: var(--nv-footer-gap-line) var(--nv-footer-gap-group);
  }

  .nv-footer__legal {
    gap: var(--nv-footer-gap-line) var(--nv-footer-gap-group);
  }

  .nv-footer__legal-status {
    text-align: start;
  }
}

/* Responsive: Tablet */
@media (max-width: 899.98px) {
  .nv-footer__grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* order: -1 is gone — the brand is the first child in the markup now */
  .nv-footer__brand {
    grid-column: 1 / -1;
  }

  /* Two equal columns leave nothing to centre in; align with Contact instead */
  .nv-footer__grid > nav.nv-footer__col {
    justify-self: start;
  }
}

/* Responsive: legal bar stacks

   Side by side there is no width left for three policy links plus the
   copyright, so the bottom row becomes one left-aligned stack and the legal
   list reads as a column like Product and Contact above it. */
@media (max-width: 767.98px) {
  .nv-footer__bottom {
    /* 12px at 360, 16px at the breakpoint — one step for the whole stack, so
       the copyright sits the same distance from the first link as the links
       sit from each other */
    --nv-footer-gap-legal: clamp(0.75rem, 0.53rem + 0.98vw, 1rem);

    flex-direction: column;
    align-items: flex-start;
    gap: var(--nv-footer-gap-legal);
  }

  .nv-footer__legal {
    flex-direction: column;
    align-items: flex-start;
    /* The base rule's flex-end applied to the row axis; as a column it would
       mean "pack to the bottom" */
    justify-content: flex-start;
    gap: var(--nv-footer-gap-legal);
  }

  .nv-footer__legal-status {
    text-align: start;
  }

  /* The copyright is the first child in the markup — where it belongs for
     reading order on desktop — so the stack reorders it visually rather than
     the pages duplicating the row. It is the last thing in the footer either
     way, so nothing is announced out of sequence. */
  .nv-footer__copy {
    order: 1;
    /* The column gap already pays 12–16px; this tops it up to 20–24px, giving
       the closing line a little more air than the links have between them */
    margin-block-start: var(--nv-space-2);
  }
}

/* Responsive: Mobile */
@media (max-width: 575.98px) {
  .nv-footer__grid {
    grid-template-columns: minmax(0, 1fr);
  }

  .nv-footer__bottom {
    justify-content: flex-start;
  }

  /* The bottom row is a single left-aligned stack down here, so the legal list
     starts on the same edge as the copyright instead of hanging right */
  .nv-footer__legal {
    justify-content: flex-start;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nv-socials__link,
  .nv-footer__icon-swap .nv-footer__icon { transition: none; }
}

/* Hero: section */
.nv-hero {
  /* Hero opts out of the site-wide small-text ramp */
  --nv-fs-xs:  0.875rem;
  --nv-fs-2xs: 0.75rem;
  --nv-btn-bright-font-size: 14px;

  position: relative;
  isolation: isolate;
  overflow: hidden;

  padding-block:
    calc(var(--nv-header-h) + clamp(3rem, 1.5rem + 4.5vw, 7.5rem))
    clamp(3.5rem, 2rem + 5vw, 8rem);

  color: var(--nv-text-on-dark);
  background-color: var(--nv-band-deep);

  background-image: radial-gradient(
    252.43% 376.4% at -22.19% 63.36%,
    var(--nv-band-deep) 0%,
    var(--nv-band-navy) 97.55%
  );
}

/* Type-led hero: space-black ground, no dashboard column, air around the headline */
.nv-hero--type {
  padding-block:
    calc(var(--nv-header-h) + clamp(5rem, 2.8rem + 8vw, 10.5rem))
    clamp(5.5rem, 3.2rem + 9vw, 11rem);
  background-color: var(--nv-space-black);
  background-image: none;
}

.nv-hero::before {
  content: "";
  position: absolute;
  z-index: var(--nv-z-base);
  pointer-events: none;

  top: clamp(-11rem, -9vw, -6rem);
  left: 50%;
  transform: translateX(-50%);

  width: min(56%, var(--nv-container-max));
  height: clamp(22rem, 34vw, 38rem);

  background-image: var(--nv-gradient-hero-glow);
  opacity: var(--nv-hero-glow-opacity);

  mix-blend-mode: screen;

  filter: blur(clamp(48px, 6vw, 96px));
  -webkit-mask-image: radial-gradient(
    62% 58% at 50% 40%,
    #000 0%,
    rgba(0, 0, 0, 0.5) 58%,
    transparent 100%
  );
  mask-image: radial-gradient(
    62% 58% at 50% 40%,
    #000 0%,
    rgba(0, 0, 0, 0.5) 58%,
    transparent 100%
  );
}

.nv-hero--type::before {
  display: none;
}

.nv-hero__drift {
  position: absolute;
  inset: 0;
  z-index: var(--nv-z-base);
  pointer-events: none;
  overflow: hidden;
}

.nv-hero__wash {
  position: absolute;
  inset: -20% -10%;
  background:
    radial-gradient(46% 38% at 72% 36%, rgba(63, 244, 216, 0.16) 0%, transparent 62%),
    radial-gradient(38% 42% at 18% 70%, rgba(240, 193, 75, 0.08) 0%, transparent 58%),
    radial-gradient(70% 50% at 50% 0%, rgba(94, 230, 213, 0.08) 0%, transparent 55%);
  animation: nv-hero-wash 18s var(--nv-ease-in-out) infinite alternate;
}

.nv-hero__field {
  position: absolute;
  inset: 0;
  opacity: 0.72;
  background-image:
    radial-gradient(1.2px 1.2px at 8% 18%, rgba(255, 255, 255, 0.55), transparent),
    radial-gradient(1px 1px at 16% 42%, rgba(63, 244, 216, 0.7), transparent),
    radial-gradient(1.4px 1.4px at 24% 12%, rgba(255, 255, 255, 0.4), transparent),
    radial-gradient(1px 1px at 33% 68%, rgba(240, 193, 75, 0.55), transparent),
    radial-gradient(1.2px 1.2px at 41% 28%, rgba(255, 255, 255, 0.5), transparent),
    radial-gradient(1px 1px at 48% 80%, rgba(63, 244, 216, 0.45), transparent),
    radial-gradient(1.6px 1.6px at 58% 16%, rgba(255, 255, 255, 0.62), transparent),
    radial-gradient(1px 1px at 66% 54%, rgba(240, 193, 75, 0.5), transparent),
    radial-gradient(1.3px 1.3px at 74% 34%, rgba(255, 255, 255, 0.7), transparent),
    radial-gradient(1px 1px at 81% 72%, rgba(63, 244, 216, 0.55), transparent),
    radial-gradient(1.5px 1.5px at 88% 22%, rgba(255, 255, 255, 0.48), transparent),
    radial-gradient(1px 1px at 92% 48%, rgba(240, 193, 75, 0.62), transparent),
    radial-gradient(1.2px 1.2px at 70% 8%, rgba(63, 244, 216, 0.4), transparent),
    radial-gradient(1px 1px at 12% 78%, rgba(255, 255, 255, 0.32), transparent);
  -webkit-mask-image: radial-gradient(ellipse 58% 52% at 74% 38%, #000 0%, transparent 72%);
  mask-image: radial-gradient(ellipse 58% 52% at 74% 38%, #000 0%, transparent 72%);
  animation: nv-hero-field 20s var(--nv-ease-in-out) infinite alternate;
}

.nv-hero__shaft {
  position: absolute;
  top: -20%;
  width: 7rem;
  height: 160%;
  background: linear-gradient(
    180deg,
    transparent 0%,
    rgba(63, 244, 216, 0.07) 38%,
    rgba(240, 193, 75, 0.05) 58%,
    transparent 100%
  );
  filter: blur(18px);
  transform-origin: center top;
}

.nv-hero__shaft--a {
  left: 58%;
  transform: rotate(18deg);
  animation: nv-hero-shaft 16s var(--nv-ease-in-out) infinite alternate;
}

.nv-hero__shaft--b {
  left: 72%;
  width: 4.5rem;
  transform: rotate(27deg);
  opacity: 0.7;
  animation: nv-hero-shaft 19s var(--nv-ease-in-out) infinite alternate-reverse;
}

.nv-hero__grain {
  position: absolute;
  inset: 0;
  opacity: 0.09;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

.nv-hero__glow {
  position: absolute;
  border-radius: var(--nv-radius-circle);
  filter: blur(80px);
  will-change: transform;
}

.nv-hero__glow--ne {
  top: -12%;
  right: -8%;
  width: min(52vw, 36rem);
  height: min(52vw, 36rem);
  background: radial-gradient(circle, rgba(63, 244, 216, 0.32) 0%, rgba(56, 128, 216, 0.1) 48%, transparent 72%);
  animation: nv-hero-drift 17s var(--nv-ease-in-out) infinite alternate;
}

.nv-hero__glow--west {
  top: 28%;
  left: -14%;
  width: min(46vw, 30rem);
  height: min(46vw, 30rem);
  background: radial-gradient(circle, rgba(71, 140, 209, 0.2) 0%, rgba(149, 140, 247, 0.08) 50%, transparent 74%);
  animation: nv-hero-drift 19s var(--nv-ease-in-out) infinite alternate-reverse;
}

.nv-hero__glow--gold {
  top: 42%;
  right: 18%;
  width: min(28vw, 18rem);
  height: min(28vw, 18rem);
  background: radial-gradient(circle, rgba(240, 193, 75, 0.22) 0%, transparent 70%);
  animation: nv-hero-drift 16s var(--nv-ease-in-out) infinite alternate;
}

@keyframes nv-hero-drift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to   { transform: translate3d(7%, 6%, 0) scale(1.12); }
}

@keyframes nv-hero-wash {
  from { transform: translate3d(0, 0, 0) scale(1); opacity: 0.85; }
  to   { transform: translate3d(-4%, 3%, 0) scale(1.08); opacity: 1; }
}

@keyframes nv-hero-field {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to   { transform: translate3d(-3%, 2%, 0) scale(1.06); }
}

@keyframes nv-hero-shaft {
  from { opacity: 0.35; transform: rotate(18deg) translate3d(0, 0, 0); }
  to   { opacity: 0.8; transform: rotate(22deg) translate3d(8%, 2%, 0); }
}

/* Hero: layout */
.nv-hero__inner {
  position: relative;
  z-index: var(--nv-z-decor);

  display: grid;
  /* Floor keeps the headline on its two authored lines */
  grid-template-columns: minmax(38rem, 0.955fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(1.75rem, 0.4rem + 2.4vw, 2.3125rem);
}

.nv-hero--type .nv-hero__inner {
  display: block;
  max-width: var(--nv-container-max);
}

.nv-hero--type .nv-hero__copy {
  max-width: min(54rem, 100%);
}

.nv-hero--type .nv-text-gradient {
  background-image: linear-gradient(90deg, #5ee6d5 8%, #5db4e5 48%, #958cf7 92%);
}

.nv-hero__badge {
  margin-inline-start: -1px;

  position: relative;
  background-color: var(--nv-hero-badge-fill);

  border-color: transparent;
}

.nv-hero__badge::before {
  content: "";
  position: absolute;
  inset: -1px;
  padding: 1px;
  border-radius: inherit;
  background: var(--nv-gradient-hero-badge-border);
  -webkit-mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  mask:
    linear-gradient(#000 0 0) content-box,
    linear-gradient(#000 0 0);
  /* border-color cannot carry a gradient, so the ring is masked */
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
}

/* Hero: typography */
.nv-hero__title {
  margin-block-start: var(--nv-space-6);
  color: var(--nv-text-on-dark);
  text-wrap: initial;

  font-family: var(--nv-font-display);
  font-size: clamp(1.75rem, 1.15rem + 1.9vw, 2.5rem);
  font-weight: var(--nv-fw-bold);
  line-height: 1.2;
  letter-spacing: -0.02em;
}

.nv-hero--type .nv-hero__title {
  margin-block-start: var(--nv-space-7);
  font-size: clamp(2.6rem, 1.35rem + 4.2vw, 4.85rem);
  font-weight: var(--nv-fw-extra);
  line-height: 0.98;
  letter-spacing: -0.042em;
}

.nv-hero__horizon {
  position: relative;
  display: inline;
}

.nv-hero--type .nv-hero__horizon.nv-text-gradient {
  background-image: linear-gradient(92deg, #5ee6d5 4%, #f0c14b 46%, #ffe08a 62%, #958cf7 100%);
  filter: drop-shadow(0 0 18px rgba(63, 244, 216, 0.28)) drop-shadow(0 0 42px rgba(240, 193, 75, 0.18));
}

.nv-hero__lead {
  margin-block-start: var(--nv-space-5);
  max-width: 32em;
  color: var(--nv-text-on-dark-muted);
}

.nv-hero--type .nv-hero__lead {
  margin-block-start: var(--nv-space-7);
  max-width: 36em;
  font-size: clamp(1.0625rem, 0.98rem + 0.35vw, 1.2rem);
  line-height: 1.65;
  color: var(--nv-text-on-dark);
}

.nv-hero__note {
  margin: var(--nv-space-4) 0 0;
  max-width: 36em;
  font-size: var(--nv-fs-sm);
  line-height: 1.55;
  color: var(--nv-text-on-dark-muted);
}

/* Hero: actions */
.nv-hero__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nv-space-4);
  margin-block-start: var(--nv-space-12);
}

.nv-hero__points {
  margin-block-start: var(--nv-space-12);
}

/* Hero: media */
.nv-hero__media {
  position: relative;
  align-self: center;
}

.nv-hero__frame {
  position: relative;
  /* One cell, so the dark and light shots stack instead of sitting in flow —
     the same single-cell grid .nv-header__brand uses for its two logos. Both
     shots share the same intrinsic size, so the cell measures exactly as the
     lone image did and the frame's geometry is unchanged. */
  display: grid;
}

.nv-hero__shot {
  grid-area: 1 / 1;

  display: block;
  width: 100%;

  height: auto;

  border-radius: var(--nv-radius-lg);
  transition: opacity var(--nv-dur-base) var(--nv-ease-soft);
}

/* Theme swap — identical to the logo pair in the header and footer */
.nv-hero__shot--light { opacity: 0; }

[data-color-scheme="light"] .nv-hero__shot--dark  { opacity: 0; }
[data-color-scheme="light"] .nv-hero__shot--light { opacity: 1; }

.js .nv-hero__badge,
.js .nv-hero__lead,
.js .nv-hero__actions,
.js .nv-hero__points {
  opacity: 0;
}

.is-ready .nv-hero__badge,
.is-ready .nv-hero__lead,
.is-ready .nv-hero__actions,
.is-ready .nv-hero__points {
  animation: nv-fade-up var(--nv-dur-slower) var(--nv-ease-out) both;
}

.is-ready .nv-hero__badge  { animation-delay: calc(var(--nv-stagger-step) * 0); }
.is-ready .nv-hero__lead   { animation-delay: calc(var(--nv-stagger-step) * 4); }
.is-ready .nv-hero__actions{ animation-delay: calc(var(--nv-stagger-step) * 5); }
.is-ready .nv-hero__points { animation-delay: calc(var(--nv-stagger-step) * 6); }

/* Responsive: Laptop */
@media (max-width: 1199.98px) {
  .nv-hero__inner {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.02fr);
    gap: var(--nv-space-8);
  }

  .nv-hero--type .nv-hero__inner {
    display: block;
  }

}

/* Responsive: Tablet */
@media (max-width: 991.98px) {
  .nv-hero::before {
    width: 86%;
  }

  .nv-hero__inner {
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(2.5rem, 5vw, 3.5rem);
  }

  .nv-hero__copy {
    max-width: 40rem;
  }
}

/* Responsive: Large mobile */
@media (max-width: 767.98px) {
  .nv-hero__actions,
  .nv-hero__points {
    margin-block-start: var(--nv-space-8);
  }

}

/* Responsive: Mobile */
@media (max-width: 575.98px) {
  .nv-hero__lead {
    max-width: none;
  }

  .nv-hero__actions .nv-btn {
    flex: 1 1 11rem;
  }

  .nv-hero__points {
    flex-direction: column;
    gap: var(--nv-space-3);
  }

  .nv-hero__grid {
    background-size: 56px 56px;
  }
}

/* Responsive: very small phones
   Below 359px the pilot badge no longer fits its one line. The string has no
   good break point, so it is held on one line and the box is tightened around
   it instead: the hero's own smaller step for the type, and one notch off the
   inline padding and the icon gap. Vertical padding, radius and colours are
   left alone, so the badge keeps its height and look. */
@media (max-width: 358.98px) {
  .nv-hero__badge {
    white-space: nowrap;
    font-size: var(--nv-fs-2xs);
    gap: var(--nv-space-1);
    padding-inline: var(--nv-space-2) var(--nv-space-3);
  }
}

/* Responsive: Landscape phone */
@media (max-height: 520px) and (orientation: landscape) {
  .nv-hero {
    padding-block: calc(var(--nv-header-h) + 2rem) 2.5rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .js .nv-hero__badge,
  .js .nv-hero__lead,
  .js .nv-hero__actions,
  .js .nv-hero__points,
  .is-ready .nv-hero__badge,
  .is-ready .nv-hero__lead,
  .is-ready .nv-hero__actions,
  .is-ready .nv-hero__points {
    opacity: 1;
    animation: none;
    transform: none;
  }

  .nv-hero__drift {
    display: none;
  }

  .nv-hero__glow,
  .nv-hero__wash,
  .nv-hero__field,
  .nv-hero__shaft {
    animation: none;
    will-change: auto;
  }
}

/* Problem: section */
.nv-problem {
  position: relative;
  padding-block: clamp(5.5rem, 3.5rem + 6vw, 8.5rem);
  background-image:
    radial-gradient(70% 50% at 100% 0%, rgba(240, 193, 75, 0.05) 0%, transparent 55%),
    radial-gradient(40% 40% at 0% 80%, rgba(63, 244, 216, 0.04) 0%, transparent 50%);
}

.nv-problem .nv-sectionhead__title {
  font-size: clamp(2.35rem, 1.35rem + 3vw, 3.85rem);
  line-height: 1.05;
}

.nv-sectionhead__lead--wide {
  max-width: 46rem;
  margin-block-start: var(--nv-space-5);
  font-size: var(--nv-fs-lead);
  line-height: 1.65;
}

.nv-problem__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
  gap: 3rem;
  margin-block-start: 3rem;

  --nv-card-bg-image: linear-gradient(
    110.28deg,
    var(--nv-problem-fill-from) 2.24%,
    var(--nv-problem-fill-to) 91.64%
  );
}

.nv-problem__grid .nv-card {
  --nv-card-pad: 1.25rem;
  gap: var(--nv-space-3);
}

.nv-problem__grid .nv-card__title {
  font-size: 1.0625rem;
  line-height: 1.3;
}

.nv-problem__grid .nv-card__text {
  line-height: 1.55;
}

/* Extra-safe list reset: even a partial stylesheet load must not show default <ol> markers */
.nv-loop ol,
.nv-loop__stations,
.nv-shift ol,
.nv-shift__grid {
  list-style: none;
  margin: 0;
  padding: 0;
}

.nv-loop li,
.nv-shift li {
  list-style: none;
}

.nv-loop li::marker,
.nv-shift li::marker {
  content: none;
}

/* Navika ring + outside EHR feed + inner memory well */
.nv-loop {
  --nv-loop-path: path("M 370 350 A 270 200 0 0 1 640 150 A 270 200 0 0 1 910 350 A 270 200 0 0 1 640 550");
  --nv-loop-fall-path: path("M 640 550 C 640 500 640 420 640 350");
  --nv-loop-feed-path: path("M 168 302 C 250 302 310 350 370 350");
  --nv-loop-clock: 6.5s;
  margin: clamp(3.5rem, 2rem + 4vw, 5.5rem) 0 0;
  padding: 0;
}

.nv-loop__stage {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  aspect-ratio: 1100 / 680;
  min-height: 0;
  border: 1px solid rgba(63, 244, 216, 0.14);
  background:
    radial-gradient(36% 32% at 58% 22%, rgba(63, 244, 216, 0.12) 0%, transparent 68%),
    radial-gradient(22% 22% at 58% 52%, rgba(240, 193, 75, 0.1) 0%, transparent 70%),
    #05080e;
}

.nv-loop__stage::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.08;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

.nv-loop__svg {
  display: block;
  width: 100%;
  height: auto;
}

.nv-loop__orbit {
  fill: none;
  stroke: rgba(148, 163, 184, 0.22);
  stroke-width: 1.5;
}

.nv-loop__orbit-flow {
  fill: none;
  stroke-width: 3;
  stroke-linecap: round;
  stroke-dasharray: 80 920;
  opacity: 0;
}

.nv-loop__feed,
.nv-loop__sink,
.nv-loop__spark,
.nv-loop__leg {
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}

.nv-loop__feed {
  stroke-width: 1.5;
  stroke-dasharray: 5 8;
  opacity: 0.72;
}

.nv-loop__feed-flow {
  fill: none;
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-dasharray: 18 82;
  opacity: 0;
}

.nv-loop__leg {
  stroke-width: 2;
  opacity: 0.72;
}

.nv-loop__sink {
  stroke-width: 1.75;
  opacity: 0.7;
}

.nv-loop__spark {
  stroke-width: 1.75;
  opacity: 0.7;
}

.nv-loop__pulse,
.nv-loop__pulse-halo,
.nv-loop__fall,
.nv-loop__in {
  visibility: hidden;
  opacity: 0;
}

.nv-loop__pulse,
.nv-loop__pulse-halo {
  offset-path: var(--nv-loop-path);
  offset-rotate: 0deg;
  offset-distance: 0%;
  fill: var(--nv-hot-teal);
}

.nv-loop__pulse-halo {
  fill: rgba(63, 244, 216, 0.18);
}

.nv-loop__fall {
  offset-path: var(--nv-loop-fall-path);
  offset-rotate: 0deg;
  offset-distance: 0%;
  fill: var(--nv-voltage);
}

.nv-loop__in {
  offset-path: var(--nv-loop-feed-path);
  offset-rotate: 0deg;
  offset-distance: 0%;
  fill: #9fb3c8;
}

.nv-loop__sat,
.nv-loop__station,
.nv-loop__memory {
  position: absolute;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  width: max-content;
  max-width: 10rem;
  transform: translate(-50%, -50%);
}

.nv-loop__stations {
  position: absolute;
  inset: 0;
}

.nv-loop__sat { left: 12%; top: 44.4%; }
.nv-loop__station--pre { left: 33.6%; top: 51.5%; }
.nv-loop__station--encounter { left: 58.2%; top: 22.1%; }
.nv-loop__station--claim { left: 82.7%; top: 51.5%; }
.nv-loop__station--remit { left: 58.2%; top: 80.9%; }
.nv-loop__memory { left: 58.2%; top: 51.5%; }

.nv-loop__dock {
  width: 18px;
  height: 18px;
  border: 1.5px solid rgba(176, 190, 204, 0.55);
  background: #0b1016;
  transform: rotate(45deg);
  box-shadow: 0 0 0 5px rgba(176, 190, 204, 0.06);
}

.nv-loop__core,
.nv-loop__memory-core {
  width: 13px;
  height: 13px;
  border-radius: var(--nv-radius-circle);
  border: 1.5px solid rgba(94, 230, 213, 0.45);
  background: #071018;
  box-shadow: 0 0 0 4px rgba(63, 244, 216, 0.06);
}

.nv-loop__station--encounter .nv-loop__core {
  width: 22px;
  height: 22px;
  border-color: var(--nv-hot-teal);
  background: var(--nv-hot-teal);
  box-shadow:
    0 0 0 8px rgba(63, 244, 216, 0.12),
    0 0 36px rgba(63, 244, 216, 0.5),
    0 0 64px rgba(240, 193, 75, 0.18);
}

.nv-loop__memory-core {
  width: 28px;
  height: 28px;
  border-color: rgba(240, 193, 75, 0.7);
  background:
    radial-gradient(circle, #f0c14b 0%, #3ff4d8 58%, #071018 100%);
  box-shadow:
    0 0 0 10px rgba(240, 193, 75, 0.08),
    0 0 28px rgba(240, 193, 75, 0.28),
    0 0 50px rgba(63, 244, 216, 0.16);
}

.nv-loop__rings {
  position: absolute;
  top: 11px;
  left: 50%;
  width: 70px;
  height: 70px;
  border: 1px solid rgba(63, 244, 216, 0.28);
  border-radius: var(--nv-radius-circle);
  transform: translate(-50%, -50%);
  box-shadow: 0 0 0 14px rgba(240, 193, 75, 0.05);
  pointer-events: none;
}

.nv-loop__label {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.nv-loop__label strong {
  font-family: var(--nv-font-display);
  font-size: 0.92rem;
  font-weight: var(--nv-fw-bold);
  letter-spacing: -0.02em;
  color: var(--nv-text);
}

.nv-loop__sat .nv-loop__label strong {
  font-size: 0.78rem;
  font-weight: var(--nv-fw-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--nv-text-subtle);
}

.nv-loop__station--encounter .nv-loop__label strong,
.nv-loop__memory .nv-loop__label strong {
  font-size: 1.05rem;
  color: #f4fffc;
  text-shadow: 0 0 16px rgba(63, 244, 216, 0.3);
}

.nv-loop__memory .nv-loop__label strong {
  color: #ffe7a3;
  text-shadow: 0 0 16px rgba(240, 193, 75, 0.32);
}

.nv-loop__brand,
.nv-loop__verb {
  position: absolute;
  z-index: 2;
  margin: 0;
  transform: translate(-50%, -50%);
  pointer-events: none;
}

.nv-loop__brand {
  left: 44%;
  top: 33%;
}

.nv-loop__brand strong {
  font-family: var(--nv-font-display);
  font-size: 0.82rem;
  font-weight: var(--nv-fw-bold);
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: #d7fff6;
  text-shadow: 0 0 16px rgba(63, 244, 216, 0.28);
}

.nv-loop__verb {
  font-size: 0.62rem;
  font-weight: var(--nv-fw-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: #c5d4e0;
}

.nv-loop__verb--feed { left: 23%; top: 39%; }
.nv-loop__verb--sink { left: 64.5%; top: 66%; }
.nv-loop__verb--return-pre { left: 46%; top: 47%; }
.nv-loop__verb--return-room { left: 61%; top: 38%; }

.nv-motion .nv-loop.is-live .nv-loop__orbit-flow {
  animation: nv-loop-dash var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__feed-flow {
  animation: nv-loop-feed var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__pulse,
.nv-motion .nv-loop.is-live .nv-loop__pulse-halo,
.nv-motion .nv-loop.is-live .nv-loop__fall,
.nv-motion .nv-loop.is-live .nv-loop__in {
  visibility: visible;
}

.nv-motion .nv-loop.is-live .nv-loop__pulse,
.nv-motion .nv-loop.is-live .nv-loop__pulse-halo {
  animation: nv-loop-rim var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__fall {
  animation: nv-loop-fall var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__in {
  animation: nv-loop-in var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__spark--pre {
  animation: nv-loop-return var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__spark--room {
  animation: nv-loop-return var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__station--pre .nv-loop__core {
  animation: nv-loop-hit var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__station--encounter .nv-loop__core {
  animation: nv-loop-hit-core var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__station--claim .nv-loop__core {
  animation: nv-loop-hit-claim var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__station--remit .nv-loop__core {
  animation: nv-loop-hit-gold var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__memory-core {
  animation: nv-loop-memory var(--nv-loop-clock) linear infinite;
}

.nv-motion .nv-loop.is-live .nv-loop__rings {
  animation: nv-loop-rings var(--nv-loop-clock) linear infinite;
}

@keyframes nv-loop-in {
  0%   { offset-distance: 0%; opacity: 0; }
  3%   { opacity: 1; }
  12%  { offset-distance: 100%; opacity: 1; }
  16%, 100% { offset-distance: 100%; opacity: 0; }
}

@keyframes nv-loop-rim {
  0%, 12% { offset-distance: 0%; opacity: 0; }
  14%     { offset-distance: 0%; opacity: 1; }
  50%     { offset-distance: 100%; opacity: 1; }
  54%, 100% { offset-distance: 100%; opacity: 0; }
}

@keyframes nv-loop-fall {
  0%, 50% { offset-distance: 0%; opacity: 0; }
  52%     { offset-distance: 0%; opacity: 1; }
  60%     { offset-distance: 100%; opacity: 1; }
  64%, 100% { offset-distance: 100%; opacity: 0; }
}

@keyframes nv-loop-dash {
  0%, 12% { stroke-dashoffset: 0; opacity: 0; }
  14%     { opacity: 0.95; }
  50%     { stroke-dashoffset: -1000; opacity: 0.95; }
  54%, 100% { stroke-dashoffset: -1000; opacity: 0; }
}

@keyframes nv-loop-feed {
  0%   { stroke-dashoffset: 0; opacity: 0; }
  3%   { opacity: 0.9; }
  12%  { stroke-dashoffset: -100; opacity: 0.9; }
  16%, 100% { stroke-dashoffset: -100; opacity: 0; }
}

@keyframes nv-loop-return {
  0%, 60% { opacity: 0.55; }
  64%, 72% { opacity: 1; }
  78%, 100% { opacity: 0.7; }
}

@keyframes nv-loop-hit {
  0%, 11% {
    background: #071018;
    border-color: rgba(94, 230, 213, 0.45);
    box-shadow: 0 0 0 4px rgba(63, 244, 216, 0.06);
  }
  12%, 18% {
    background: var(--nv-hot-teal);
    border-color: var(--nv-hot-teal);
    box-shadow: 0 0 0 6px rgba(63, 244, 216, 0.16), 0 0 22px rgba(63, 244, 216, 0.5);
  }
  22%, 100% {
    background: #071018;
    border-color: rgba(94, 230, 213, 0.45);
    box-shadow: 0 0 0 4px rgba(63, 244, 216, 0.06);
  }
}

@keyframes nv-loop-hit-claim {
  0%, 37% {
    background: #071018;
    border-color: rgba(94, 230, 213, 0.45);
    box-shadow: 0 0 0 4px rgba(63, 244, 216, 0.06);
  }
  38%, 44% {
    background: var(--nv-hot-teal);
    border-color: var(--nv-hot-teal);
    box-shadow: 0 0 0 6px rgba(63, 244, 216, 0.16), 0 0 22px rgba(63, 244, 216, 0.5);
  }
  48%, 100% {
    background: #071018;
    border-color: rgba(94, 230, 213, 0.45);
    box-shadow: 0 0 0 4px rgba(63, 244, 216, 0.06);
  }
}

@keyframes nv-loop-hit-gold {
  0%, 47% {
    background: #071018;
    border-color: rgba(240, 193, 75, 0.45);
    box-shadow: 0 0 0 4px rgba(240, 193, 75, 0.06);
  }
  48%, 54% {
    background: var(--nv-voltage);
    border-color: var(--nv-voltage);
    box-shadow: 0 0 0 6px rgba(240, 193, 75, 0.16), 0 0 26px rgba(240, 193, 75, 0.45);
  }
  58%, 100% {
    background: #071018;
    border-color: rgba(240, 193, 75, 0.45);
    box-shadow: 0 0 0 4px rgba(240, 193, 75, 0.06);
  }
}

@keyframes nv-loop-hit-core {
  0%, 24% {
    transform: scale(1);
    box-shadow:
      0 0 0 8px rgba(63, 244, 216, 0.12),
      0 0 36px rgba(63, 244, 216, 0.45),
      0 0 64px rgba(240, 193, 75, 0.2);
  }
  25%, 32% {
    transform: scale(1.12);
    box-shadow:
      0 0 0 10px rgba(63, 244, 216, 0.18),
      0 0 48px rgba(63, 244, 216, 0.6),
      0 0 80px rgba(240, 193, 75, 0.28);
  }
  36%, 100% {
    transform: scale(1);
    box-shadow:
      0 0 0 8px rgba(63, 244, 216, 0.12),
      0 0 36px rgba(63, 244, 216, 0.45),
      0 0 64px rgba(240, 193, 75, 0.2);
  }
}

@keyframes nv-loop-memory {
  0%, 55% {
    transform: scale(1);
    box-shadow:
      0 0 0 10px rgba(240, 193, 75, 0.08),
      0 0 28px rgba(240, 193, 75, 0.28);
  }
  58%, 70% {
    transform: scale(1.14);
    box-shadow:
      0 0 0 16px rgba(240, 193, 75, 0.16),
      0 0 46px rgba(240, 193, 75, 0.5),
      0 0 70px rgba(63, 244, 216, 0.28);
  }
  76%, 100% {
    transform: scale(1);
  }
}

@keyframes nv-loop-rings {
  0%, 24%, 36%, 100% { opacity: 0.55; transform: translate(-50%, -50%) scale(1); }
  25%, 32%           { opacity: 1; transform: translate(-50%, -50%) scale(1.08); }
}

.nv-opencols {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(1.75rem, 1rem + 3vw, 3.5rem);
  margin: clamp(3.5rem, 2rem + 4vw, 5.5rem) 0 0;
  padding: 0;
  list-style: none;
}

.nv-opencol {
  padding-block-start: 1.35rem;
  border-block-start: 1px solid var(--nv-border);
}

.nv-opencol__title {
  margin: 0;
  font-size: var(--nv-fs-h4);
  font-weight: var(--nv-fw-bold);
  letter-spacing: var(--nv-ls-tight);
  color: var(--nv-text);
}

.nv-opencol__text {
  margin: var(--nv-space-3) 0 0;
  font-size: var(--nv-fs-sm);
  line-height: 1.65;
  color: var(--nv-text-muted);
}

/* Responsive: Tablet */
@media (max-width: 991.98px) {
  .nv-problem {
    padding-block: var(--nv-section-y);
  }

  .nv-problem__grid {
    gap: var(--nv-space-6);
    margin-block-start: var(--nv-space-10);
  }

  .nv-opencols {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--nv-space-8);
  }
}

@media (max-width: 639.98px) {
  .nv-shift {
    overflow: visible;
  }

  .nv-loop__stage {
    overflow: visible;
  }

  .nv-loop__label strong {
    font-size: 0.8125rem;
  }

  .nv-loop__sat .nv-loop__label strong {
    font-size: 0.75rem;
  }

  .nv-loop__station--encounter .nv-loop__label strong,
  .nv-loop__memory .nv-loop__label strong {
    font-size: 0.875rem;
  }

  .nv-loop__brand strong {
    font-size: 0.75rem;
  }

  .nv-loop__verb {
    font-size: 0.75rem;
  }

  .nv-loop__sat,
  .nv-loop__station,
  .nv-loop__memory {
    max-width: 7.25rem;
    gap: 0.32rem;
  }

  .nv-loop__station--encounter {
    max-width: 8.5rem;
  }

  /* Same 1100×680 system — slight label nudges so EHR / Pre-visit and
     Memory / returns stay readable at ~390px without pinch-zoom */
  .nv-loop__sat { left: 10.5%; top: 43%; }
  .nv-loop__station--pre { left: 35%; top: 53.5%; }
  .nv-loop__station--encounter { left: 58.2%; top: 23.5%; }
  .nv-loop__verb--feed { left: 21.5%; top: 35.5%; }
  .nv-loop__verb--sink { left: 66.5%; top: 68%; }
  .nv-loop__verb--return-pre { left: 43%; top: 48.5%; }
  .nv-loop__verb--return-room { left: 63.5%; top: 36%; }
}

/* Founder: section */
.nv-founder {
  position: relative;
  isolation: isolate;
  overflow: hidden;

  padding-block: clamp(5rem, 3rem + 5vw, 8rem);

  background-color: var(--nv-band-deep);
  background-image: radial-gradient(
    144.83% 293.09% at 71.49% 54.39%,
    var(--nv-band-deep) 0%,
    var(--nv-band-navy) 97.55%
  );
}

.nv-founder__decor {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}

.nv-founder__glow {
  position: absolute;
  inset-block-start: 50%;
  inset-inline-start: 58%;
  width: 1068px;
  height: 605px;
  transform: translate(-50%, -50%);

  border-radius: var(--nv-radius-circle);
  background:
    radial-gradient(circle, rgba(63, 244, 216, 0.16) 0%, transparent 62%),
    radial-gradient(circle at 70% 40%, rgba(240, 193, 75, 0.1) 0%, transparent 55%);
  filter: blur(80px);
  animation: nv-hero-wash 18s var(--nv-ease-in-out) infinite alternate;
}

.nv-founder__grid {
  position: absolute;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}

.nv-founder__grid--dots {
  inset-block-start: 0;
  inset-inline-start: 0;
  width: 392px;
  height: 206px;
  background-color: rgba(255, 255, 255, 0.55);
  -webkit-mask-image: url("../assets/images/founder/dot-grid.png");
  mask-image: url("../assets/images/founder/dot-grid.png");
  -webkit-mask-size: contain;
  mask-size: contain;
}

.nv-founder__grid--sq-mid-right {
  inset-block-start: 5%;
  inset-inline-end: 0;
  width: 340px;
  height: 250px;
  background-color: rgba(255, 255, 255, 0.10);

  -webkit-mask-image: url("../assets/images/founder/square-grid-tall.png");
  mask-image: url("../assets/images/founder/square-grid-tall.png");
  -webkit-mask-size: 320px auto;
  mask-size: 320px auto;
  -webkit-mask-position: right top;
  mask-position: right top;
}

.nv-founder__grid--sq-bottom-left {
  inset-block-end: 0;
  inset-inline-start: 0;
  width: 300px;
  height: 330px;
  background-color: rgba(255, 255, 255, 0.12);

  -webkit-mask-image: url("../assets/images/founder/square-grid-tall.png");
  mask-image: url("../assets/images/founder/square-grid-tall.png");
  -webkit-mask-size: 300px auto;
  mask-size: 300px auto;
  -webkit-mask-position: left bottom;
  mask-position: left bottom;
}

.nv-founder__grid--sq-bottom-right {
  inset-block-end: 0;
  inset-inline-end: 0;
  width: 620px;
  height: 280px;
  background-color: rgba(255, 255, 255, 0.13);

  -webkit-mask-image: url("../assets/images/founder/square-grid-wide.png");
  mask-image: url("../assets/images/founder/square-grid-wide.png");
  -webkit-mask-size: 570px auto;
  mask-size: 570px auto;
  -webkit-mask-position: right bottom;
  mask-position: right bottom;
}

/* Founder: magazine pull-quote — open layout, not a cramped card */
.nv-founder__card {
  display: grid;
  grid-template-columns: minmax(16rem, 22rem) minmax(0, 1fr);
  align-items: center;
  gap: clamp(2rem, 3vw, 4.5rem);

  width: 100%;
  max-width: none;
  min-height: 0;
  margin: 0;

  border: 0;
  border-radius: 0;
  overflow: visible;
}

.nv-founder__media {
  position: relative;
  min-height: 0;
  aspect-ratio: 3 / 4;
  border-radius: 2px;
  overflow: hidden;
  box-shadow: 0 28px 80px rgba(0, 0, 0, 0.45);
}

/* Founder: portrait */
.nv-founder__portrait {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 18%;
  transition: transform var(--nv-dur-slower) var(--nv-ease-out);
}

@media (hover: hover) {
  .nv-founder__media:hover .nv-founder__portrait {
    transform: scale(1.03);
  }
}

.nv-founder__caption {
  position: absolute;
  inset-inline: 0;
  inset-block-end: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 0.15rem;
  padding: var(--nv-space-10) var(--nv-space-5) var(--nv-space-4);
  background-image: linear-gradient(180deg, transparent, rgba(4, 9, 16, 0.88) 62%);
}

.nv-founder__name {
  font-family: var(--nv-font-display);
  font-size: var(--nv-fs-sm);
  font-weight: var(--nv-fw-bold);
  color: var(--nv-white);
}

.nv-founder__role {
  font-size: var(--nv-fs-2xs);
  color: rgba(255, 255, 255, 0.74);
}

/* Founder: panel */
.nv-founder__panel {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  gap: 1.5rem;
  padding: 0;

  background-color: transparent;
}

@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .nv-founder__panel {
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
  }
}

.nv-founder__badge {
  align-self: flex-start;
  gap: 6px;

  min-height: 24px;
  padding: 4px 12px;

  font-family: var(--nv-font-body);
  font-size: 0.875rem;
  font-weight: var(--nv-fw-regular);
  line-height: 1.43;
  letter-spacing: 0;
  color: var(--nv-white);

  background-color: rgba(71, 140, 140, 0.2);
  border: 1px solid var(--nv-soft-teal);
  border-radius: 24px;
}

.nv-founder__quote {
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 16px;

  padding: 0;

  background-image: none;
  border: 0;
  border-radius: 0;
}

.nv-founder__quote::before {
  content: "“";
  display: block;
  margin-block-end: 0.15em;
  font-family: var(--nv-font-display);
  font-size: clamp(4.5rem, 3rem + 5vw, 7rem);
  font-style: normal;
  font-weight: var(--nv-fw-extra);
  line-height: 0.55;
  color: var(--nv-voltage);
  opacity: 0.88;
  text-shadow: 0 0 28px rgba(240, 193, 75, 0.35);
}

.nv-founder__quote p {
  font-family: var(--nv-font-display);
  font-size: clamp(1.28rem, 1.05rem + 0.95vw, 1.85rem);
  font-weight: var(--nv-fw-regular);
  font-style: italic;
  line-height: 1.42;
  letter-spacing: -0.025em;
  color: var(--nv-white);
}

.nv-founder__cta,
.nv-founder__note {
  margin: 0;
}

.nv-founder__note .nv-dotlist__item {
  font-size: var(--nv-fs-2xs);
}

/* Responsive: Tablet */
@media (max-width: 991.98px) {
  .nv-founder {
    padding-block: var(--nv-section-y);
  }

  .nv-founder__card {
    grid-template-columns: minmax(0, 1fr);
    width: 100%;
    max-width: 36rem;
    min-height: 0;
    margin-inline: auto;
  }

  .nv-founder__media {
    min-height: 0;
    aspect-ratio: 4 / 5;
  }

  .nv-founder__portrait {
    object-fit: cover;
    object-position: 50% 18%;
  }

  .nv-founder__panel {
    padding: var(--nv-space-6);
  }
}

/* Responsive: Mobile */
@media (max-width: 575.98px) {
  .nv-founder__grid {
    display: none;
  }

  .nv-founder__glow {
    width: 120%;
    height: 70%;
  }

  .nv-founder__cta .nv-btn {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nv-founder__portrait {
    transition: none;
    transform: none;
  }
}

/* Platform: section */
.nv-platform {
  padding-block: 6.5rem;
  background-color: var(--nv-band-deep);
}

.nv-platform__layout {
  display: grid;
  grid-template-columns: minmax(0, 490fr) minmax(0, 710fr);
  align-items: center;
  gap: 40px;
  margin-block-start: 3rem;
}

.nv-platform__figure {
  position: relative;
  width: 100%;
  aspect-ratio: 490 / 472;
}

.nv-platform__img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Platform: stages */
.nv-platform__stages {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 40px;
}

/* Responsive: Mobile */
@media (max-width: 479.98px) {
  .nv-platform__stages {
    grid-template-columns: minmax(0, 1fr);
  }
}

.nv-platform__stages .nv-card {
  --nv-card-pad: 0;
  --nv-card-bg: transparent;
  --nv-card-bg-hover: transparent;
  --nv-card-border: transparent;
  --nv-card-border-hover: transparent;

  gap: 12px;
  border-radius: 0;
  box-shadow: none;
}

/* Zeroed card tokens alone leave :hover and .nv-lift active */
.nv-platform__stages .nv-card::before,
.nv-platform__stages .nv-card::after {
  content: none;
}

.nv-platform__stages .nv-card,
.nv-platform__stages .nv-card:hover,
.nv-platform__stages .nv-card:focus-within {
  background-color: transparent;
  border-color: transparent;
  box-shadow: none;
  transform: none;
}

.nv-platform__stages .nv-card:hover .nv-card__seq {
  transform: none;
}

.nv-platform__stages .nv-card__title {
  font-size: 1.125rem;
  line-height: 1.3;
}

.nv-platform__stages .nv-card__text {
  font-family: var(--nv-font-body);
  font-size: var(--nv-fs-2xs);
  font-weight: var(--nv-fw-semibold);
  line-height: 1.4;
  letter-spacing: 0.44px;
  color: var(--nv-grey-05);
}

.nv-platform__stages .nv-card__seq {
  width: 36px;
  height: 36px;
  padding: 0;
  font-size: var(--nv-fs-xs);
  font-weight: var(--nv-fw-bold);
  border-radius: var(--nv-radius-md);
}

.nv-platform__callout {
  display: flex;
  align-items: center;
  gap: 16px;

  height: 80px;
  padding: 20px;
  margin-block-start: var(--nv-space-12);

  background-image: linear-gradient(
    110.28deg,
    var(--nv-panel-fill-from) 2.24%,
    var(--nv-panel-fill-to) 91.64%
  );
  border: 0;
  border-inline-start: 4px solid var(--nv-primary-06);
  border-radius: 0;
}

.nv-platform__callout p {
  max-width: none;
  font-family: var(--nv-font-body);
  font-size: var(--nv-fs-xs);
  font-weight: var(--nv-fw-regular);
  line-height: 1.45;
  letter-spacing: 0;
  color: var(--nv-grey-07);
}

.nv-platform__callout strong {
  font-weight: var(--nv-fw-bold);
  color: var(--nv-grey-07);
}

@media (prefers-reduced-motion: reduce) {
  .nv-platform__figure:hover .nv-platform__img {
    transform: none;
  }
}

/* Responsive: Laptop */
@media (max-width: 1099.98px) {
  .nv-platform .nv-sectionhead__title {
    text-wrap: balance;
  }
}

/* Responsive: Laptop */
@media (max-width: 1199.98px) {
  .nv-platform__callout {
    height: auto;
    min-height: 80px;
  }
}

/* Responsive: Tablet */
@media (max-width: 991.98px) {
  .nv-platform {
    padding-block: var(--nv-section-y);
  }

  .nv-platform__layout {
    grid-template-columns: minmax(0, 1fr);
    margin-block-start: var(--nv-space-10);
  }

  .nv-platform__figure {
    max-width: 24rem;
    margin-inline: auto;
  }

  .nv-platform__stages {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* Responsive: Mobile */
@media (max-width: 575.98px) {
  .nv-platform__stages {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--nv-space-8);
  }
}

/* Revenue Defense: section */
.nv-revdef {
  padding-block: 6.5rem;
  background-color: var(--nv-band-deep);
  background-image: radial-gradient(
    136.67% 342.37% at 77.47% 62.37%,
    var(--nv-band-deep) 0%,
    var(--nv-band-navy) 97.55%
  );
}

/* Revenue Defense: decorative backdrop

   Purely ornamental — it carries no information, so the markup marks it
   aria-hidden and .nv-decor already makes it pointer-events: none. No z-index
   of its own is needed: .nv-decor sits at --nv-z-base (1) and the shared
   `.nv-section > .nv-container` rule already lifts the content to
   --nv-z-decor (2). .nv-section is position: relative, so .nv-decor's inset: 0
   spans the whole section, padding included. */
.nv-revdef__bg {
  /* Low by design — the artwork adds depth, it never competes with the copy.
     One number to tune if it reads too strong or too faint. */
  --nv-revdef-bg-opacity: 0.1;

  inset-block: 0;
  inset-inline-end: 0;
  /* Anchored to the section's right edge, reaching a little past its midpoint */
  width: min(62%, 52rem);

  background-image: url("../assets/images/Product/Product-bg-image.webp");
  background-repeat: no-repeat;
  /* Authored mirrored: the rotation below turns the element's own axes with
     it, so `left` here is what lands against the section's right edge. */
  background-position: left center;
  /* Proportional: scaled to fit, never stretched and never cropped */
  background-size: contain;

  /* Half-turn. Rotating the element rather than the image keeps the box, and
     therefore the .nv-decor clip, exactly where it was. */
  transform: rotate(180deg);

  opacity: var(--nv-revdef-bg-opacity);

  /* Also mirrored for the rotation: post-turn this holds the artwork solid at
     the section edge and dissolves it toward the copy. */
  -webkit-mask-image: linear-gradient(to right, #000 62%, transparent 100%);
  mask-image: linear-gradient(to right, #000 62%, transparent 100%);
}

/* --plain does not exclude the hover highlight, so it is cancelled here */
.nv-revdef__stats::before {
  content: none;
}

/* Revenue Defense: feature cards

   Four horizontal cards in a 2x2 grid, sitting directly on the section. Type,
   colour and the green tick still come from .nv-checklist and
   .nv-checklist__item — only the box around each item is set here. */
.nv-revdef__features {
  /* Two equal columns rather than .nv-checklist's single stacked track */
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--nv-space-4);
  /* Was the panel's margin-block-start, so the gap under the heading holds */
  margin-block-start: var(--nv-space-10);
}

.nv-revdef__feature {
  /* .nv-checklist__item aligns to the top; a 65px row centres instead */
  align-items: center;
  /* 16px between the tick and the label, up from the checklist's 12px */
  gap: var(--nv-space-4);

  /* min-height, not height: a fixed 65px would spill its own text once a card
     narrows enough to wrap. It resolves to exactly 65px at every width where
     the label fits on one or two lines. */
  min-height: 65px;
  padding: 12px 16px;

  background-color: #2D3845;
  border-radius: 6px;
}

/* The tick's 1px nudge optically aligns it with a first line of text; centred
   in a fixed-height row it is no longer wanted */
.nv-revdef__feature .nv-checklist__icon {
  margin-block-start: 0;
}

/* Light theme: the card takes a lighter blue fill, and the content it wraps
   stays on the on-dark scale — otherwise light theme would paint #475467 body
   text onto it. */
[data-color-scheme="light"] .nv-revdef__feature {
  background-color: #295E97;

  /* Full white rather than the 72% on-dark muted, for contrast on the blue */
  --nv-text-muted: var(--nv-white);
  /* Unchanged — the tick keeps the green it already used here */
  --nv-aqua-300:   #3ECF8E;
}

/* Revenue Defense: actions */
.nv-revdef__actions {
  display: flex;
  flex-wrap: wrap;
  /* Sits at the bottom-right, under the feature grid */
  justify-content: flex-end;
  gap: var(--nv-space-3);
  /* Was the panel's row gap */
  margin-block-start: var(--nv-space-10);
}

.nv-revdef__stats {
  --nv-revdef-stats-pad: clamp(1.25rem, 0.9rem + 1.1vw, 1.75rem);

  gap: var(--nv-space-4);
  padding: var(--nv-revdef-stats-pad);
  background-color: rgba(9, 20, 36, 0.55);
  border-color: rgba(255, 255, 255, 0.10);
}

.nv-revdef__stats-title {
  font-size: var(--nv-fs-sm);
  font-weight: var(--nv-fw-semibold);
  letter-spacing: var(--nv-ls-snug);
  text-transform: none;
  color: var(--nv-white);

  margin-inline: calc(var(--nv-revdef-stats-pad) * -1);
  padding: 0 var(--nv-revdef-stats-pad) var(--nv-space-4);
  border-block-end: 1px solid rgba(255, 255, 255, 0.10);
}

.nv-revdef__total {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--nv-space-4);
  margin-block-start: calc(var(--nv-space-4) * -1 + var(--nv-space-1));
}

.nv-revdef__amount {
  font-size: clamp(1.5rem, 1.1rem + 1.4vw, 1.875rem);
  color: var(--nv-white);
}

.nv-revdef__delta {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  font-size: var(--nv-fs-2xs);
  font-weight: var(--nv-fw-semibold);
  color: var(--nv-aqua-300);
}

.nv-revdef__delta svg {
  width: var(--nv-icon-xs);
  height: var(--nv-icon-xs);
}

.nv-revdef__meta {
  font-size: var(--nv-fs-2xs);
  color: var(--nv-grey-05);
  margin-block-start: calc(var(--nv-space-4) * -1 + var(--nv-space-1));
}

.nv-revdef__payers {
  display: grid;
  gap: var(--nv-space-5);
  margin-block-start: var(--nv-space-2);
}

/* Revenue Defense: payer bars */
.nv-payer {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: var(--nv-space-2) var(--nv-space-4);
  align-items: baseline;
}

.nv-payer__name {
  font-size: var(--nv-fs-xs);
  color: var(--nv-grey-07);
}

.nv-payer__value {
  margin: 0;
  font-size: var(--nv-fs-xs);
  font-weight: var(--nv-fw-semibold);
  font-variant-numeric: tabular-nums;
  color: var(--nv-white);
}

.nv-payer__track {
  grid-column: 1 / -1;
  height: 3px;
  border-radius: var(--nv-radius-pill);
  background-color: rgba(255, 255, 255, 0.10);
  overflow: hidden;
}

.nv-payer__bar {
  display: block;
  height: 100%;
  border-radius: inherit;
  background-image: var(--nv-gradient-brand);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 1s var(--nv-ease-out);
  transition-delay: var(--nv-bar-delay, 0ms);
}

.nv-payer__bar.is-filled {
  transform: scaleX(var(--nv-bar, 0));
}

/* Responsive: Tablet */
@media (max-width: 991.98px) {
  .nv-revdef {
    padding-block: var(--nv-section-y);
  }

  /* Narrower cards wrap to a third line, so the 65px floor has to give */
  .nv-revdef__feature {
    min-height: 0;
  }
}

/* Below 986px the section grows taller than the artwork is proportionally
   tall, so `contain` starts letterboxing it — a gap opens above and below.
   `cover` scales it off the section height instead, keeping its top and bottom
   flush with the section edges and cropping horizontally instead.

   The element is still rotated 180deg, so background-position stays authored
   mirrored: `left bottom` here is what reads as the top-right corner once the
   half-turn is applied. */
@media (max-width: 985.98px) {
  .nv-revdef__bg {
    background-size: cover;
    background-position: left bottom;
  }
}

/* Responsive: Mobile */
/* Responsive: Large mobile */
@media (max-width: 767.98px) {
  /* Two columns get too narrow to read here */
  .nv-revdef__features {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 575.98px) {
  .nv-revdef__actions .nv-btn {
    flex: 1 1 10rem;
  }

  /* One column of full-width buttons reads better centred than right-aligned */
  .nv-revdef__actions {
    justify-content: stretch;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nv-payer__bar {
    transition: none;
    transform: scaleX(var(--nv-bar, 0));
  }
}

/* Workflow: steps */
.nv-workflow__steps {
  position: relative;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 14rem), 1fr));
  gap: var(--nv-space-4);
  margin-block-start: var(--nv-space-12);
}

.nv-workflow__steps .nv-card {
  gap: 0;

  --nv-card-bg: transparent;
  --nv-card-bg-hover: transparent;
  --nv-card-bg-image: linear-gradient(
    110.28deg,
    var(--nv-panel-fill-from) 2.24%,
    var(--nv-panel-fill-to) 91.64%
  );
}

.nv-workflow__steps .nv-card__title {
  margin-block-start: 20px;

  font-family: var(--nv-font-body);
  font-size: 16px;
  font-weight: var(--nv-fw-semibold);
  line-height: 1.4;
  letter-spacing: 0;
  color: var(--nv-text);
}

.nv-workflow__steps .nv-card__text {
  margin-block-start: 16px;

  font-family: var(--nv-font-body);
  font-size: 14px;
  font-weight: var(--nv-fw-medium);
  line-height: 1.4;
  letter-spacing: 0.44px;
  color: var(--nv-grey-05);
}

/* Products: section */
.nv-products {
  padding-block: 6.5rem;

  background-color: var(--nv-band-deep);
  background-image: radial-gradient(
    136.67% 342.37% at 77.47% 62.37%,
    var(--nv-band-deep) 0%,
    var(--nv-band-navy) 97.55%
  );
}

.nv-products .nv-sectionhead__lead {
  font-size: 16px;
  font-weight: var(--nv-fw-regular);
  line-height: 1.45;
  letter-spacing: 0;
  color: var(--nv-grey-07);
}

.nv-products__grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
  gap: 32px;
  margin-block-start: var(--nv-space-10);
}

.nv-products__card {
  --nv-products-card-gap: 40px;

  gap: var(--nv-products-card-gap);
  padding: clamp(1.5rem, 0.9rem + 1.9vw, 2.5rem);
  --nv-card-radius: 12px;

  --nv-card-bg: transparent;
  --nv-card-bg-hover: transparent;
  --nv-card-bg-image: linear-gradient(
    180deg,
    var(--nv-product-fill-from) 0%,
    var(--nv-product-fill-to) 100%
  );
}

.nv-products__badge {
  position: relative;
  align-self: flex-start;

  background-color: var(--nv-chip-fill);
  border-color: transparent;
}

@supports ((-webkit-mask-composite: xor) or (mask-composite: exclude)) {
  .nv-products__badge::before {
    content: "";
    position: absolute;
    inset: -1px;
    padding: 1px;
    border-radius: inherit;
    pointer-events: none;

    background-image: linear-gradient(90deg, #32649a 0%, #7fbff0 100%);

    -webkit-mask:
      linear-gradient(#000 0 0) content-box,
      linear-gradient(#000 0 0);
    mask:
      linear-gradient(#000 0 0) content-box,
      linear-gradient(#000 0 0);
    -webkit-mask-composite: xor;
    mask-composite: exclude;
  }
}

@supports not ((-webkit-mask-composite: xor) or (mask-composite: exclude)) {
  .nv-products__badge {
    border-color: var(--nv-chip-border);
  }
}

.nv-products__name {
  font-family: var(--nv-font-display);
  font-size: var(--nv-fs-h3);
  font-weight: var(--nv-fw-bold);
  letter-spacing: var(--nv-ls-tight);
  color: var(--nv-text);
}

.nv-products__name + .nv-card__text {
  margin-block-start: calc(var(--nv-products-card-gap) * -1 + 0.5rem);
}

.nv-products__features {
  margin-block-start: var(--nv-space-2);
}

.nv-products__features .nv-checklist__icon {
  color: var(--nv-tick);
}

.nv-products__features .nv-checklist__icon path {
  stroke-width: 2.5;
}

.nv-products__link {
  font-size: var(--nv-fs-xs);
  font-weight: var(--nv-fw-medium);
  color: var(--nv-text);
}

.nv-products__link:hover,
.nv-products__link:focus-visible {
  color: var(--nv-aqua-300);
}

.nv-products__link svg {
  width: var(--nv-icon-sm);
  height: var(--nv-icon-sm);
  transition: transform var(--nv-dur-base) var(--nv-ease-out);
}

.nv-products__link:hover svg,
.nv-products__link:focus-visible svg {
  transform: translate3d(3px, 0, 0);
}

@media (prefers-reduced-motion: reduce) {
  .nv-products__link svg { transition: none; }
}

/* Audience: section */
.nv-audience {
  padding-block: clamp(5.5rem, 3.5rem + 6vw, 8.5rem);
  background-color: var(--nv-space-black);
  background-image: radial-gradient(60% 50% at 0% 40%, rgba(63, 244, 216, 0.06) 0%, transparent 62%);
}

.nv-audience .nv-sectionhead__title {
  font-size: clamp(2rem, 1.25rem + 2.4vw, 3.25rem);
  line-height: 1.12;
  max-width: 18ch;
}

.nv-audience__aside {
  margin-block-start: var(--nv-space-8);
}

.nv-audience__layout {
  display: grid;
  grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr);
  align-items: center;
  gap: clamp(2rem, 0.5rem + 3vw, 3.5rem);
}

.nv-audience__specialties {
  margin-block-start: var(--nv-space-6);
}

@media (hover: hover) {
  .nv-audience__specialties .nv-dotlist__item:hover {
    color: var(--nv-primary-09);
  }
}

.nv-audience__quote {
  margin: 0;
  padding-block: var(--nv-space-3);
  padding-inline-start: var(--nv-space-6);
  border-inline-start: 3px solid var(--nv-brand-500);
}

.nv-audience__quote p {
  font-family: var(--nv-font-display);
  font-size: var(--nv-fs-h4);
  font-weight: var(--nv-fw-medium);
  line-height: 1.6;
  letter-spacing: var(--nv-ls-snug);
  color: var(--nv-text);
}

/* Responsive: Large mobile */
@media (max-width: 767.98px) {
  .nv-audience__layout {
    grid-template-columns: minmax(0, 1fr);
  }
}

/* Responsive: Small mobile
   These two bands are the only ones that keep their hand-set 6.5rem all the
   way down; every other section drops to --nv-section-y at 991.98px. Below
   426px that reads as 104px against everyone else's 60px, so they join the
   shared rhythm here. Placed after both base rules so it wins on source
   order — the same specificity, so position is what decides. */
@media (max-width: 425.98px) {
  .nv-products,
  .nv-audience {
    padding-block: var(--nv-section-y);
  }
}

/* CTA: band */
.nv-cta-band {
  /* Inherited from the page modifier, so the cut in this gradient and the
     footer's negative margin are always the same distance */
  --nv-cta-overlap: var(--nv-footer-overlap);

  position: relative;
  z-index: 2;
  padding-block: 0;

  background-image: linear-gradient(
    180deg,
    var(--nv-band-deep) 0,
    var(--nv-band-deep) calc(100% - var(--nv-cta-overlap)),
    transparent calc(100% - var(--nv-cta-overlap))
  );
}

.nv-cta-band--cinema {
  --nv-cta-overlap: 0rem;
  isolation: isolate;
  overflow: hidden;
  padding-block: clamp(5.5rem, 4rem + 7vw, 9rem);
  background-color: #02050a;
  background-image:
    radial-gradient(60% 90% at 22% 48%, rgba(63, 244, 216, 0.32) 0%, rgba(20, 90, 140, 0.12) 42%, transparent 68%),
    radial-gradient(38% 50% at 82% 30%, rgba(240, 193, 75, 0.16) 0%, transparent 60%),
    linear-gradient(180deg, #02050a 0%, #07141c 52%, #02050a 100%);
}

.nv-cta__glow {
  display: none;
}

.nv-cta-band--cinema .nv-cta__glow {
  display: block;
  position: absolute;
  inset: -12% -10%;
  z-index: 0;
  pointer-events: none;
  background:
    radial-gradient(38% 52% at 28% 48%, rgba(63, 244, 216, 0.34) 0%, transparent 68%);
  filter: blur(32px);
  animation: nv-cta-wash 18s var(--nv-ease-in-out) infinite alternate;
}

.nv-cta-band--cinema .nv-cta__glow--gold {
  inset: auto;
  top: -20%;
  right: -8%;
  width: min(48vw, 32rem);
  height: min(48vw, 32rem);
  background: radial-gradient(circle, rgba(240, 193, 75, 0.2) 0%, transparent 70%);
  animation: nv-hero-drift 16s var(--nv-ease-in-out) infinite alternate-reverse;
}

.nv-cta__grain {
  display: none;
}

.nv-cta-band--cinema .nv-cta__grain {
  display: block;
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.08;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

/* CTA: card */
.nv-cta {
  position: relative;
  isolation: isolate;
  overflow: hidden;

  padding: clamp(2rem, 1rem + 3.4vw, 3.75rem);
  border-radius: 40px;
  border: 0;

  background-color: #163352;
  background-image: linear-gradient(90deg, #163352 0%, #295e97 102.24%);

  box-shadow: none;
}

.nv-cta--cinema {
  padding: 0;
  border-radius: 0;
  background: none;
  box-shadow: none;
}

.nv-cta-band--cinema .nv-container {
  position: relative;
  z-index: 1;
}

.nv-cta__spot {
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(
    26rem circle at var(--nv-mx, 70%) var(--nv-my, 40%),
    rgba(148, 197, 255, 0.16),
    transparent 62%
  );
  transition: opacity var(--nv-dur-slow) var(--nv-ease-out);
}

@media (hover: hover) {
  .nv-cta:hover .nv-cta__spot { opacity: 1; }
}

.nv-cta__decor {
  position: absolute;
  inset: 0;
  z-index: -1;
  overflow: hidden;
  pointer-events: none;
}

.nv-cta__ring {
  position: absolute;
  inset-block: 0;
  inset-inline-end: 0;

  width: auto;
  height: auto;
  /* Pre-clipped half-asset: any right inset would expose the cut edge */
  aspect-ratio: 255 / 308;
  z-index: 0;
  pointer-events: none;

  background-image: url("../assets/images/cta/cta-arcs.png");
  background-repeat: no-repeat;
  background-position: right center;
  background-size: contain;
}

.nv-cta__light {
  position: absolute;
  inset-block-start: -43%;
  inset-inline-start: -17%;
  width: 597px;
  height: 253px;

  border-radius: var(--nv-radius-circle);
  transform: rotate(2.78deg);
  background-image: linear-gradient(180deg, #b2e0be 0%, #74c99e 100%);
  opacity: 0.5;
  filter: blur(100px);
}

.nv-cta__body {
  max-width: 34rem;
}

/* Responsive: Desktop */
@media (min-width: 992px) {
  .nv-cta__body {
    /* Wide enough to hold the three proof points on one row */
    max-width: 37rem;
  }
}

.nv-cta__title {
  font-size: var(--nv-fs-h2);
  font-weight: var(--nv-fw-bold);
  line-height: var(--nv-lh-snug);
  letter-spacing: var(--nv-ls-tight);
  color: var(--nv-white);
}

.nv-cta--cinema .nv-cta__title {
  font-size: clamp(2.4rem, 1.4rem + 3vw, 4rem);
  letter-spacing: -0.04em;
}

.nv-cta__lead {
  margin-block-start: var(--nv-space-3);
  font-size: var(--nv-fs-sm);
  line-height: var(--nv-lh-relaxed);
  color: var(--nv-text-on-dark-muted);
}

.nv-cta__points {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nv-space-3) var(--nv-space-6);
  margin-block-start: var(--nv-space-6);
}

.nv-cta__points .nv-checklist__item {
  color: var(--nv-text-on-dark-muted);
}

.nv-cta__points .nv-checklist__icon {
  color: #fbfbf8;
}

.nv-cta__actions .nv-btn--primary {
  --nv-btn-primary-bg: #d6edff;
  --nv-btn-primary-bg-hover: #c4e4ff;
  --nv-btn-primary-fg: #294f7b;
}

@media (hover: hover) {
  /* [data-magnetic] also removed from the markup — inline transforms outrank CSS */
  .nv-cta__actions .nv-btn--primary:hover {
    transform: none;
    box-shadow: var(--nv-shadow-inset-top);
  }
}

/* Beats [data-surface="dark"] a:hover, which would repaint the label white */
.nv-cta__actions .nv-btn--primary:hover,
.nv-cta__actions .nv-btn--primary:focus-visible {
  color: var(--nv-btn-primary-fg);
}

.nv-cta__actions {
  display: flex;
  flex-wrap: wrap;
  gap: var(--nv-space-4);
  margin-block-start: 22px;
}

/* Responsive: Mobile */
@media (max-width: 575.98px) {
  .nv-cta__actions .nv-btn {
    width: 100%;
  }
}

@media (prefers-reduced-motion: reduce) {
  .nv-cta__spot { display: none; }
}

/* Utilities: accessibility */
.u-sr-only {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.u-sr-only-focusable:not(:focus):not(:focus-within) {
  position: absolute !important;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

.u-text-center { text-align: center; }
.u-text-start  { text-align: start; }
.u-text-end    { text-align: end; }

.u-text-muted   { color: var(--nv-text-muted); }
.u-text-subtle  { color: var(--nv-text-subtle); }
.u-text-on-dark { color: var(--nv-text-on-dark); }
.u-text-brand   { color: var(--nv-text-brand); }

.u-balance { text-wrap: balance; }
.u-pretty  { text-wrap: pretty; }
.u-nowrap  { white-space: nowrap; }
/* Utilities: text */
.u-truncate {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.u-clamp-2,
.u-clamp-3 {
  display: -webkit-box;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.u-clamp-2 { -webkit-line-clamp: 2; line-clamp: 2; }
.u-clamp-3 { -webkit-line-clamp: 3; line-clamp: 3; }

.u-block       { display: block; }
.u-inline      { display: inline; }
.u-inline-block{ display: inline-block; }
.u-flex        { display: flex; }
.u-inline-flex { display: inline-flex; }
.u-grid        { display: grid; }
.u-hide        { display: none !important; }

.u-relative { position: relative; }
.u-absolute { position: absolute; }
.u-sticky   { position: sticky; }

.u-column          { flex-direction: column; }
.u-wrap            { flex-wrap: wrap; }
.u-items-center    { align-items: center; }
.u-items-start     { align-items: flex-start; }
.u-items-end       { align-items: flex-end; }
.u-justify-center  { justify-content: center; }
.u-justify-between { justify-content: space-between; }
.u-justify-end     { justify-content: flex-end; }

.u-gap-1  { gap: var(--nv-space-1); }
.u-gap-2  { gap: var(--nv-space-2); }
.u-gap-3  { gap: var(--nv-space-3); }
.u-gap-4  { gap: var(--nv-space-4); }
.u-gap-5  { gap: var(--nv-space-5); }
.u-gap-6  { gap: var(--nv-space-6); }
.u-gap-8  { gap: var(--nv-space-8); }
.u-gap-10 { gap: var(--nv-space-10); }
.u-gap-12 { gap: var(--nv-space-12); }

.u-mt-0  { margin-top: 0; }
.u-mt-2  { margin-top: var(--nv-space-2); }
.u-mt-3  { margin-top: var(--nv-space-3); }
.u-mt-4  { margin-top: var(--nv-space-4); }
.u-mt-5  { margin-top: var(--nv-space-5); }
.u-mt-6  { margin-top: var(--nv-space-6); }
.u-mt-8  { margin-top: var(--nv-space-8); }
.u-mt-10 { margin-top: var(--nv-space-10); }
.u-mt-12 { margin-top: var(--nv-space-12); }
.u-mt-16 { margin-top: var(--nv-space-16); }

.u-mb-0  { margin-bottom: 0; }
.u-mb-2  { margin-bottom: var(--nv-space-2); }
.u-mb-4  { margin-bottom: var(--nv-space-4); }
.u-mb-6  { margin-bottom: var(--nv-space-6); }
.u-mb-8  { margin-bottom: var(--nv-space-8); }
.u-mb-12 { margin-bottom: var(--nv-space-12); }

.u-mx-auto { margin-inline: auto; }

.u-w-full { width: 100%; }
.u-w-fit  { width: fit-content; }
.u-h-full { height: 100%; }

.u-rounded-sm   { border-radius: var(--nv-radius-sm); }
.u-rounded-md   { border-radius: var(--nv-radius-md); }
.u-rounded-lg   { border-radius: var(--nv-radius-lg); }
.u-rounded-xl   { border-radius: var(--nv-radius-xl); }
.u-rounded-pill { border-radius: var(--nv-radius-pill); }
.u-rounded-circle { border-radius: var(--nv-radius-circle); }

.u-shadow-sm { box-shadow: var(--nv-shadow-sm); }
.u-shadow-md { box-shadow: var(--nv-shadow-md); }
.u-shadow-lg { box-shadow: var(--nv-shadow-lg); }
.u-shadow-xl { box-shadow: var(--nv-shadow-xl); }

.u-bg-subtle  { background-color: var(--nv-bg-subtle); }
.u-bg-surface { background-color: var(--nv-surface); }
.u-bg-inverse { background-color: var(--nv-ink-900); }

/* Utilities: surfaces */
.u-glass {
  background-color: var(--nv-glass-bg-strong);
  border: 1px solid var(--nv-glass-border);
}

@supports ((-webkit-backdrop-filter: blur(1px)) or (backdrop-filter: blur(1px))) {
  .u-glass {
    background-color: var(--nv-glass-bg);
    -webkit-backdrop-filter: blur(var(--nv-glass-blur)) saturate(160%);
    backdrop-filter: blur(var(--nv-glass-blur)) saturate(160%);
  }
}

.u-gradient-border {
  border: 1px solid transparent;
  background-image:
    linear-gradient(var(--nv-surface), var(--nv-surface)),
    var(--nv-gradient-brand);
  background-origin: border-box;
  background-clip: padding-box, border-box;
}

/* Utilities: performance */
/* Own compositor layer — blur is the heaviest paint on the page */
.u-gpu {
  will-change: transform, opacity;
  transform: translate3d(0, 0, 0);
  backface-visibility: hidden;
}

.u-contain {
  content-visibility: auto;
  /* Reserves height so skipped offscreen work cannot jump the scrollbar */
  contain-intrinsic-size: auto 640px;
}

.u-no-select    { user-select: none; }
.u-pointer-none { pointer-events: none; }
.u-overflow-hidden { overflow: hidden; }

@media (max-width: 575.98px)  { .u-hide-below-sm { display: none !important; } }
@media (max-width: 767.98px)  { .u-hide-below-md { display: none !important; } }
@media (max-width: 991.98px)  { .u-hide-below-lg { display: none !important; } }
@media (min-width: 576px)     { .u-hide-from-sm  { display: none !important; } }
@media (min-width: 768px)     { .u-hide-from-md  { display: none !important; } }
@media (min-width: 992px)     { .u-hide-from-lg  { display: none !important; } }

/* Animations: keyframes */
@keyframes nv-fade-in {
  from { opacity: 0; }
  to   { opacity: 1; }
}

@keyframes nv-fade-up {
  from { opacity: 0; transform: translate3d(0, 24px, 0); }
  to   { opacity: 1; transform: translate3d(0, 0, 0); }
}

@keyframes nv-scale-in {
  from { opacity: 0; transform: scale3d(0.94, 0.94, 1); }
  to   { opacity: 1; transform: scale3d(1, 1, 1); }
}

@keyframes nv-mask-up {
  from { transform: translate3d(0, 110%, 0); }
  to   { transform: translate3d(0, 0, 0); }
}

@keyframes nv-float {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -14px, 0); }
}

@keyframes nv-blob-drift {
  0%   { transform: translate3d(0, 0, 0) scale(1); }
  33%  { transform: translate3d(4%, -6%, 0) scale(1.08); }
  66%  { transform: translate3d(-5%, 4%, 0) scale(0.95); }
  100% { transform: translate3d(0, 0, 0) scale(1); }
}

@keyframes nv-marquee {
  from { transform: translate3d(0, 0, 0); }
  to   { transform: translate3d(-50%, 0, 0); }
}

@keyframes nv-spin {
  to { transform: rotate(360deg); }
}

@keyframes nv-pulse-ring {
  0%   { opacity: 0.55; transform: scale(0.85); }
  70%  { opacity: 0;    transform: scale(1.6); }
  100% { opacity: 0;    transform: scale(1.6); }
}

@keyframes nv-shimmer {
  from { transform: translate3d(-100%, 0, 0); }
  to   { transform: translate3d(200%, 0, 0); }
}

@keyframes nv-ripple {
  from { opacity: 0.45; transform: scale(0); }
  to   { opacity: 0;    transform: scale(2.6); }
}

@keyframes nv-bloom {
  0%, 100% { transform: scale(1);    opacity: 0.82; }
  50%      { transform: scale(1.08); opacity: 1; }
}

@keyframes nv-drift-a {
  0%, 100% { transform: translate3d(0, 0, 0) scale(1); }
  50%      { transform: translate3d(5%, 4%, 0) scale(1.12); }
}

@keyframes nv-drift-b {
  0%, 100% { transform: translate3d(0, 0, 0) scale(1.06); }
  50%      { transform: translate3d(-6%, 5%, 0) scale(0.94); }
}

@keyframes nv-drift-c {
  0%, 100% { transform: translate3d(0, 0, 0) scale(0.96); }
  50%      { transform: translate3d(4%, -6%, 0) scale(1.1); }
}

@keyframes nv-float-soft {
  0%, 100% { transform: translate3d(0, 0, 0); }
  50%      { transform: translate3d(0, -8px, 0); }
}

@keyframes nv-orbit {
  to { transform: rotate(360deg); }
}

@keyframes nv-skeleton {
  from { background-position: 200% 0; }
  to   { background-position: -200% 0; }
}

.nv-motion [data-reveal] {
  opacity: 0;
  transform: translate3d(0, 32px, 0);
  transition:
    opacity 900ms var(--nv-ease-out),
    transform 900ms var(--nv-ease-out),
    filter 900ms var(--nv-ease-out);
  transition-delay: var(--nv-reveal-delay, 0ms);
}

.nv-motion [data-reveal="fade"]  { transform: none; }
.nv-motion [data-reveal="up"]    { transform: translate3d(0, 32px, 0); }
.nv-motion [data-reveal="down"]  { transform: translate3d(0, -32px, 0); }
.nv-motion [data-reveal="left"]  { transform: translate3d(-36px, 0, 0); }
.nv-motion [data-reveal="right"] { transform: translate3d(36px, 0, 0); }
.nv-motion [data-reveal="scale"] { transform: scale3d(0.94, 0.94, 1); }
.nv-motion [data-reveal="blur"]  { filter: blur(10px); transform: translate3d(0, 18px, 0); }

.nv-motion [data-reveal].is-inview {
  opacity: 1;
  transform: none;
  filter: none;
}

.nv-motion [data-reveal-group] > * {
  --nv-reveal-delay: calc(var(--nv-stagger-index, 0) * 110ms);
}

/* Animation: text reveal */
.nv-reveal-text {
  display: block;
}

.nv-reveal-text__line {
  display: block;
  overflow: hidden;
  padding-block-end: 0.08em;
  margin-block-end: -0.08em;
}

.nv-reveal-text__inner {
  display: block;
  transform: translate3d(0, 110%, 0);
}

.is-ready .nv-reveal-text__inner {
  animation: nv-mask-up var(--nv-dur-slower) var(--nv-ease-out) forwards;
  animation-delay: calc(var(--nv-line-index, 0) * 110ms + 120ms);
}

.js .nv-anim-up,
.js .nv-anim-fade,
.js .nv-anim-scale {
  opacity: 0;
}

.is-ready .nv-anim-up {
  animation: nv-fade-up var(--nv-dur-slower) var(--nv-ease-out) both;
  animation-delay: var(--nv-anim-delay, 0ms);
}

.is-ready .nv-anim-fade {
  animation: nv-fade-in var(--nv-dur-slow) var(--nv-ease-out) both;
  animation-delay: var(--nv-anim-delay, 0ms);
}

.is-ready .nv-anim-scale {
  animation: nv-scale-in var(--nv-dur-slower) var(--nv-ease-out) both;
  animation-delay: var(--nv-anim-delay, 0ms);
}

/* Animation: image reveal */
.nv-img-reveal {
  clip-path: inset(0 0 100% 0);
  transition: clip-path 1s var(--nv-ease-out);
}

.js .nv-img-reveal.is-inview,
.is-ready .nv-img-reveal--eager {
  clip-path: inset(0 0 0 0);
}

.nv-float {
  animation: nv-float 7s var(--nv-ease-in-out) infinite;
  animation-delay: var(--nv-float-delay, 0s);
}

.nv-blob {
  border-radius: var(--nv-radius-circle);
  filter: blur(90px);
  will-change: transform;
  animation: nv-blob-drift 22s var(--nv-ease-in-out) infinite;
  animation-delay: var(--nv-blob-delay, 0s);
}

/* Animation: underline */
.nv-underline {
  position: relative;
}

.nv-underline::after {
  content: "";
  position: absolute;
  inset-block-end: -4px;
  inset-inline: 0;
  height: 2px;
  border-radius: var(--nv-radius-pill);
  background-color: currentColor;
  transform: scaleX(0);
  transform-origin: right center;
  transition: transform var(--nv-dur-base) var(--nv-ease-out);
}

.nv-underline:hover::after,
.nv-underline:focus-visible::after,
.nv-underline.is-active::after {
  transform: scaleX(1);
  transform-origin: left center;
}

/* Hover elevation */
.nv-lift {
  transition:
    transform var(--nv-dur-base) var(--nv-ease-out),
    box-shadow var(--nv-dur-base) var(--nv-ease-out),
    border-color var(--nv-dur-base) var(--nv-ease-out);
}

@media (hover: hover) {
  .nv-lift:hover {
    transform: translate3d(0, -6px, 0);
    box-shadow: var(--nv-shadow-xl);
  }
}

.nv-lift:focus-within {
  transform: translate3d(0, -6px, 0);
  box-shadow: var(--nv-shadow-xl);
}

/* Animation: ripple */
.nv-ripple {
  position: absolute;
  border-radius: var(--nv-radius-circle);
  background-color: currentColor;
  opacity: 0;
  pointer-events: none;
  animation: nv-ripple var(--nv-dur-slower) var(--nv-ease-out) forwards;
}

/* Animation: spotlight */
.nv-spotlight {
  position: relative;
  isolation: isolate;
}

.nv-spotlight::before {
  content: "";
  position: absolute;
  inset: -1px;
  z-index: -1;
  border-radius: inherit;
  opacity: 0;
  pointer-events: none;
  background: radial-gradient(
    260px circle at var(--nv-mx, 50%) var(--nv-my, 50%),
    rgba(71, 140, 209, 0.18),
    transparent 62%
  );
  transition: opacity var(--nv-dur-base) var(--nv-ease-out);
}

@media (hover: hover) {
  .nv-spotlight:hover::before { opacity: 1; }
}

.nv-noise {
  position: absolute;
  inset: 0;
  z-index: var(--nv-z-decor);
  pointer-events: none;
  opacity: var(--nv-noise-opacity);
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)'/%3E%3C/svg%3E");
}

.nv-mesh {
  position: absolute;
  width: var(--nv-mesh-size, 40rem);
  aspect-ratio: 1;
  border-radius: var(--nv-radius-circle);
  background: radial-gradient(circle, var(--nv-mesh-color, rgba(56, 128, 216, 0.25)) 0%, transparent 68%);
  filter: blur(var(--nv-mesh-blur, 60px));
  will-change: transform;
  animation: var(--nv-mesh-anim, nv-drift-a) var(--nv-cycle-slower) var(--nv-ease-in-out) infinite;
  animation-delay: var(--nv-mesh-delay, 0s);
}

.nv-bloom {
  position: absolute;
  border-radius: var(--nv-radius-circle);
  background: radial-gradient(circle, var(--nv-bloom-color, rgba(56, 128, 216, 0.30)) 0%, transparent 66%);
  filter: blur(var(--nv-bloom-blur, 44px));
  will-change: transform, opacity;
  animation: nv-bloom var(--nv-cycle-slow) var(--nv-ease-in-out) infinite;
  animation-delay: var(--nv-bloom-delay, 0s);
}

.nv-float-soft {
  animation: nv-float-soft var(--nv-float-cycle, 9s) var(--nv-ease-in-out) infinite;
  animation-delay: var(--nv-float-delay, 0s);
}

/* Animation: skeleton */
.nv-skeleton {
  background-image: linear-gradient(
    90deg,
    var(--nv-ink-100) 25%,
    var(--nv-ink-50) 37%,
    var(--nv-ink-100) 63%
  );
  background-size: 400% 100%;
  border-radius: var(--nv-radius-md);
  animation: nv-skeleton 1.4s ease-in-out infinite;
}

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

  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  .nv-motion [data-reveal],
  .nv-motion [data-reveal].is-inview,
  .js [data-reveal],
  .js [data-reveal].is-inview {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
  }

  .nv-reveal-text__inner,
  .is-ready .nv-reveal-text__inner {
    transform: none !important;
    animation: none !important;
  }

  .js .nv-anim-up,
  .js .nv-anim-fade,
  .js .nv-anim-scale,
  .is-ready .nv-anim-up,
  .is-ready .nv-anim-fade,
  .is-ready .nv-anim-scale {
    opacity: 1 !important;
    animation: none !important;
  }

  .nv-img-reveal {
    clip-path: none !important;
  }

  .nv-float,
  .nv-blob,
  .nv-mesh,
  .nv-bloom,
  .nv-float-soft,
  .nv-skeleton {
    animation: none !important;
  }

  .nv-lift:hover {
    transform: none;
  }

  .nv-ripple {
    display: none;
  }
}

/* Responsive: Ultra-wide */
@media (min-width: 1800px) {
  :root {
    --nv-section-y: 9rem;
  }
}

/* Responsive: Laptop */
@media (max-width: 1199.98px) {
  :root {
    --nv-container-pad: 1.75rem;
  }
}

/* Responsive: Tablet */
@media (max-width: 991.98px) {
  :root {
    --nv-header-h: 68px;
    --nv-header-h-scrolled: 62px;
  }
}

/* Responsive: Large mobile */
@media (max-width: 767.98px) {
  :root {
    --nv-container-pad: 1.25rem;
    --nv-section-y: 3.75rem;
    --nv-section-y-sm: 2.75rem;
  }
}

/* Responsive: Mobile */
@media (max-width: 575.98px) {
  .nv-blob {
    filter: blur(64px);
    opacity: 0.42;
  }
}

/* Responsive: Landscape phone */
@media (max-height: 520px) and (orientation: landscape) {
  :root {
    --nv-section-y: 2.75rem;
  }
}

@media (hover: none) {
  .nv-lift:hover {
    transform: none;
    box-shadow: var(--nv-shadow-sm);
  }

  a,
  button {
    /* WCAG 2.2 AA minimum touch target */
    min-height: 44px;
  }

  p a,
  li a.nv-inline-link {
    min-height: 0;
  }
}

@media (forced-colors: active) {
  .nv-decor,
  .nv-blob {
    display: none;
  }

  .nv-text-gradient {
    background-image: none;
    color: CanvasText;
    -webkit-text-fill-color: CanvasText;
  }

  .u-glass,
  .u-gradient-border {
    background-image: none;
    background-color: Canvas;
    border: 1px solid CanvasText;
  }
}

/* Shift: Before / During / After — During is the glowing center of gravity */
.nv-shift {
  position: relative;
  isolation: isolate;
  overflow: hidden;
  padding-block: clamp(5.5rem, 3.5rem + 6vw, 8.5rem);
  background-color: var(--nv-space-black);
  background-image:
    radial-gradient(48% 70% at 50% 42%, rgba(63, 244, 216, 0.1) 0%, transparent 58%),
    radial-gradient(30% 40% at 88% 18%, rgba(240, 193, 75, 0.06) 0%, transparent 60%);
}

.nv-shift::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  opacity: 0.07;
  mix-blend-mode: overlay;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='140' height='140' filter='url(%23n)'/%3E%3C/svg%3E");
}

.nv-shift .nv-container {
  position: relative;
  z-index: 1;
}

.nv-shift__alias {
  position: absolute;
  inset: 0;
  pointer-events: none;
}

.nv-shift .nv-sectionhead__title,
.nv-ehr .nv-sectionhead__title {
  font-size: clamp(2rem, 1.25rem + 2.4vw, 3.25rem);
  line-height: 1.12;
}

.nv-anchor {
  position: relative;
  top: calc(var(--nv-header-h) * -1);
  height: 0;
  width: 0;
  overflow: hidden;
}

.nv-shift__grid {
  display: grid;
  grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.55fr) minmax(0, 0.82fr);
  align-items: start;
  gap: clamp(1.75rem, 1rem + 3vw, 3.5rem);
  margin: clamp(3.5rem, 2rem + 4vw, 5.5rem) 0 0;
  padding: 0;
  list-style: none;
}

.nv-shift__col {
  min-width: 0;
}

.nv-shift__col:not(.nv-shift__col--during) {
  margin-block-start: 1.75rem;
  opacity: 0.88;
}

.nv-shift__col--during {
  position: relative;
  padding: clamp(1.5rem, 1.1rem + 1.4vw, 2.25rem);
  border: 1px solid rgba(63, 244, 216, 0.28);
  background:
    radial-gradient(80% 70% at 50% 0%, rgba(63, 244, 216, 0.16) 0%, transparent 62%),
    radial-gradient(50% 50% at 80% 90%, rgba(240, 193, 75, 0.08) 0%, transparent 60%),
    rgba(8, 16, 22, 0.55);
  box-shadow:
    0 0 0 1px rgba(240, 193, 75, 0.08),
    0 24px 80px rgba(63, 244, 216, 0.12);
}

.nv-shift__num {
  display: block;
  font-family: var(--nv-font-display);
  font-size: 0.875rem;
  font-weight: var(--nv-fw-semibold);
  letter-spacing: 0.08em;
  line-height: 1;
}

.nv-shift__num--01 { color: #8eb7d8; }
.nv-shift__num--02 { color: var(--nv-hot-teal); }
.nv-shift__num--03 { color: #e2c36a; }

.nv-shift__title {
  margin: 0.85rem 0 0;
  font-size: var(--nv-fs-h4);
  font-weight: var(--nv-fw-bold);
  letter-spacing: var(--nv-ls-tight);
  color: var(--nv-text);
}

.nv-shift__text {
  margin: var(--nv-space-4) 0 0;
  font-size: var(--nv-fs-sm);
  line-height: 1.7;
  color: var(--nv-text-muted);
}

/* Revenue Defense: quiet type-led band */
.nv-shift__ehr {
  margin: clamp(2rem, 1.25rem + 2vw, 3rem) 0 0;
  max-width: 36em;
  font-size: var(--nv-fs-sm);
  line-height: 1.6;
  color: var(--nv-text-muted);
}

.nv-revquiet {
  padding-block: clamp(4rem, 2.5rem + 4vw, 6.5rem);
  background-color: var(--nv-ink-950);
  border-block: 1px solid var(--nv-border);
}

.nv-revquiet__title {
  margin: 1.25rem 0 0;
  max-width: 22ch;
  font-size: clamp(1.75rem, 1.15rem + 2vw, 2.75rem);
  font-weight: var(--nv-fw-bold);
  line-height: 1.18;
  letter-spacing: var(--nv-ls-tight);
  color: var(--nv-text);
}

/* EHR */
.nv-ehr {
  padding-block: clamp(5.5rem, 3.5rem + 6vw, 8.5rem);
  background-color: var(--nv-band-deep);
}

@media (max-width: 991.98px) {
  .nv-shift__grid {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--nv-space-10);
  }

  .nv-shift__col:not(.nv-shift__col--during) {
    margin-block-start: 0;
    opacity: 1;
  }

  .nv-shift .nv-sectionhead__title,
  .nv-ehr .nv-sectionhead__title,
  .nv-audience .nv-sectionhead__title,
  .nv-problem .nv-sectionhead__title {
    max-width: none;
  }
}

[data-color-scheme="light"] .nv-hero--type {
  background-color: var(--nv-white);
}

[data-color-scheme="light"] .nv-hero--type .nv-hero__lead,
[data-color-scheme="light"] .nv-hero__note {
  color: var(--nv-text-on-light);
}

[data-color-scheme="light"] .nv-hero__note {
  color: var(--nv-text-muted);
}

[data-color-scheme="light"] .nv-hero__glow--ne {
  background: radial-gradient(circle, rgba(37, 99, 235, 0.16) 0%, transparent 70%);
}

[data-color-scheme="light"] .nv-hero__glow--west {
  background: radial-gradient(circle, rgba(13, 148, 136, 0.12) 0%, transparent 70%);
}

[data-color-scheme="light"] .nv-hero__glow--gold {
  background: radial-gradient(circle, rgba(180, 130, 20, 0.12) 0%, transparent 70%);
}

[data-color-scheme="light"] .nv-hero__wash,
[data-color-scheme="light"] .nv-hero__shaft {
  opacity: 0.45;
}

[data-color-scheme="light"] .nv-hero--type .nv-hero__horizon.nv-text-gradient {
  filter: none;
}

[data-color-scheme="light"] .nv-shift,
[data-color-scheme="light"] .nv-revquiet,
[data-color-scheme="light"] .nv-audience {
  background-color: var(--nv-white);
  background-image: none;
}

[data-color-scheme="light"] .nv-shift__col--during {
  background: radial-gradient(80% 70% at 50% 0%, rgba(15, 118, 110, 0.08) 0%, transparent 62%), #f7fbfb;
  border-color: rgba(15, 118, 110, 0.22);
  box-shadow: none;
}

[data-color-scheme="light"] .nv-cta-band--cinema {
  background-color: #0b1a28;
  background-image:
    radial-gradient(70% 90% at 28% 48%, rgba(20, 120, 140, 0.42) 0%, transparent 58%),
    radial-gradient(50% 70% at 72% 40%, rgba(240, 193, 75, 0.16) 0%, transparent 62%),
    linear-gradient(180deg, #071018 0%, #0b1a28 50%, #071018 100%);
}

@keyframes nv-cta-wash {
  from { transform: translate3d(0, 0, 0) scale(1); opacity: 0.85; }
  to   { transform: translate3d(6%, -3%, 0) scale(1.12); opacity: 1; }
}

[data-color-scheme="light"] .nv-loop__stage {
  background:
    radial-gradient(36% 32% at 58% 22%, rgba(15, 118, 110, 0.08) 0%, transparent 68%),
    #f4f7fb;
  border-color: rgba(15, 118, 110, 0.16);
}

[data-color-scheme="light"] .nv-loop__label strong,
[data-color-scheme="light"] .nv-loop__sat .nv-loop__label strong {
  color: var(--nv-text-on-light);
}

[data-color-scheme="light"] .nv-loop__station--encounter .nv-loop__label strong {
  color: #0f3b3a;
  text-shadow: none;
}

[data-color-scheme="light"] .nv-loop__memory .nv-loop__label strong {
  color: #8a5a10;
  text-shadow: none;
}

[data-color-scheme="light"] .nv-loop__brand strong {
  color: #0f3b3a;
  text-shadow: none;
}

[data-color-scheme="light"] .nv-loop__verb {
  color: #3d4f5f;
}

[data-color-scheme="light"] .nv-loop__feed,
[data-color-scheme="light"] .nv-loop__leg,
[data-color-scheme="light"] .nv-loop__sink,
[data-color-scheme="light"] .nv-loop__spark {
  opacity: 0.88;
}

[data-color-scheme="light"] .nv-loop__feed {
  marker-end: url(#nv-loop-arrow-slate-on-light);
}

[data-color-scheme="light"] .nv-loop__leg {
  marker-end: url(#nv-loop-arrow-teal-on-light);
}

[data-color-scheme="light"] .nv-loop__leg--gold,
[data-color-scheme="light"] .nv-loop__sink {
  marker-end: url(#nv-loop-arrow-gold-on-light);
}

[data-color-scheme="light"] .nv-loop__spark {
  marker-end: url(#nv-loop-arrow-teal-on-light);
}

@media (prefers-reduced-motion: reduce) {
  .nv-loop__orbit-flow,
  .nv-loop__feed-flow,
  .nv-loop__pulse,
  .nv-loop__pulse-halo,
  .nv-loop__fall,
  .nv-loop__in,
  .nv-loop__spark,
  .nv-loop__rings,
  .nv-loop__horizon,
  .nv-loop__memory-well,
  .nv-loop__core,
  .nv-loop__memory-core {
    animation: none !important;
  }

  .nv-loop__pulse,
  .nv-loop__pulse-halo,
  .nv-loop__fall,
  .nv-loop__in,
  .nv-loop__orbit-flow,
  .nv-loop__feed-flow {
    visibility: hidden;
    opacity: 0;
  }

  .nv-loop__feed,
  .nv-loop__leg,
  .nv-loop__sink,
  .nv-loop__spark {
    opacity: 0.88;
  }

  .nv-cta-band--cinema .nv-cta__glow,
  .nv-founder__glow {
    animation: none;
  }
}
