/* ============================================================
   lumenore-insights-new.css
   Standalone stylesheet for lumenore-insights-new.html — a full
   redesign/rewrite of the Lumenore Insights product page. This file
   is a NEW, independent bundle: it does NOT modify or get loaded by
   the original lumenore-insights.html (that page keeps using
   insights-bundle.css, untouched).

   Base layer below (through the responsive breakpoints) is carried
   over from insights-bundle.css verbatim, since it defines the
   site's shared dark-canvas mechanics that this new page still
   needs: :root design tokens, body background, hero-stage/hero-orbs/
   hero-particles, trusted-logo marquee, buttons, and the .reveal
   scroll-in animation system. Every section-specific rule for THIS
   page's own content (Challenge, One Platform, Build & Explore, AI
   Intelligence, Share & Collaborate, Mid-Page CTA, Enterprise-Grade,
   Business Impact, Capabilities, Team Persona, Customer Impact,
   Product CTAs, FAQ, Bottom CTA) is new and lives in the
   "LUMENORE INSIGHTS — NEW PAGE SECTIONS" block appended at the end
   of this file, styled per Figma (UwNoD3i1IN0dtK5sJStZBJ, node
   3294:36232) using this site's own color/spacing/font tokens rather
   than Figma's raw pixel values.
   ============================================================ */

/* ── 1. index.css ─────────────────────────────────────────── */
/* ===========================================================
 * Lumenore — Homepage v2 (Figma: 994-29782)
 * Built on the same architecture as v2o/home.css. Token names
 * mirror the existing Figma-export pattern (var(--Name, #hex)),
 * values come from the Lumenore-New design variables.
 * ----------------------------------------------------------- */

:root{
    /* ---- Royal Blue ramp ---- */
    --Royal-Blue-Blue-50:  #e7eef8;
    --Royal-Blue-Blue-150: #b8d0fd;
    --Royal-Blue-Blue-200: #9fbae4;
    --Royal-Blue-Blue-350: #5886d0;
    --Royal-Blue-Blue-400: #4075c9;
    --Royal-Blue-Blue-450: #2863c3;
    --Royal-Blue-Blue-500: #0e48a5;
    --Royal-Blue-Blue-550: #0c3b87;
    --Royal-Blue-Blue-600: #0a3578;
    --Royal-Blue-Blue-750: #07214b;
    --Royal-Blue-Blue-850: #051A3C;
    --Royal-Blue-Blue-900: #051A3C;

    --Penn-Blue:        #001040;
    --Absolute-Black:   #212121;
    --Base-White:       #fcfcfc;

    /* ---- Violet ramp ---- */
    --Violet-Violet-50:  #f0ebf7;
    --Violet-Violet-250: #b499d7;
    --Violet-Violet-450: #7747b6;
    --Violet-Violet-500: #55298e;
    --Violet-Violet-550: #4d2580;

    /* ---- Sky Blue / Turquoise ---- */
    --SkyBlue-SkyBlue-50:    #e7f8fe;
    --SkyBlue-SkyBlue-500:   #12b6f8;
    --Turquoise-SkyBlue-50:  #e8f6fa;
    --Turquoise-SkyBlue-500: #1ca9c9;

    /* ---- Neutrals ---- */
    --Grey-Grey-100: #fbfbfb;
    --Grey-Grey-200: #f7f7f7;
    --Grey-Grey-600: #bbbbbb;
    --Grey-Grey-700: #8c8c8c;
    --Grey-Grey-800: #5e5e5e;
    --Grey-Grey-900: #2f2f2f;
    --Map-Grey:      #eaeaea;

    --blueGray-50:  #F8FAFC;
    --blueGray-200: #E2E8F0;
    --blueGray-400: #94A3B8;
    --blueGray-500: #64748B;
    --blueGray-600: #475569;
    --blueGray-700: #334155;

    /* Cool greys used in dashboard mock */
    --cool-101828: #101828;
    --cool-99a1af: #99a1af;
    --cool-6a7282: #6a7282;
    --cool-e5e7eb: #e5e7eb;
    --cool-f9fafb: #f9fafb;
    --cool-d1d5dc: #d1d5dc;

    /* ---- Gradients (exact Figma) ---- */
    --AI-Agents-Text: linear-gradient(83.02deg, #4AE7FF 51.42%, #4075C9 63.25%, #E879F9 76.03%);
    --Search-Glow:    linear-gradient(86.83deg, #22d3ee 0.77%, #3b82f6 50%, #e879f9 99.23%);
    --Explore-Button: linear-gradient(270deg, #7747b6 0%, #4075c9 50.7%, #1ca9c9 100%);
    --Compare-Button: linear-gradient(270deg, #7747b6 0%, #4075c9 50.7%, #1ca9c9 100%);
    --Tab-Bar-Bg:     linear-gradient(165.59deg, #ffffff 2.41%, #eef4ff 100.51%);
    --Active-Tab-Bg:  linear-gradient(157.45deg, #e9eff8 2.41%, #d9e3f5 100.51%);

    /* ---- Effects ---- */
    --Card-Shadow:        0 4px 14px 0 rgba(0, 0, 0, 0.25);
    --Card-Shadow-Soft:   0 2px 6px rgba(0, 0, 0, 0.08);
    --Tab-Active-Shadow:  0 10px 15px 0 rgba(0,0,0,.1), 0 4px 6px 0 rgba(0,0,0,.1);
    --Dash-Card-Shadow:   0 20px 25px -5px rgba(16,24,40,.05), 0 8px 10px -6px rgba(16,24,40,.05);
}

/* ===========================================================
 * Base reset + typography
 * ----------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
/* overflow-x: clip (not hidden) — clips horizontal overflow WITHOUT
   promoting html/body to a scroll container. Critical for
   .products-sticky (position: sticky), which silently breaks if
   html/body becomes the scroll container (overflow-x: hidden makes
   overflow-y compute to auto). `clip` does not alter overflow-y. */
html{ overflow-x: clip; }
body{
    margin: 0;
    padding: 0;
    overflow-x: clip;
    font-family: 'Inter', sans-serif;
    color: var(--Base-White, #fcfcfc);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    position: relative;
    /* Figma full-page background — navy at top, violet glow at bottom.
       Bottom matches Rectangle 1265: violet-500 #55298e → #031430 → #051A3C */
    background-color: var(--Royal-Blue-Blue-900, #051A3C);
    background-image:
        /* Center-top cyan glow (matches hero's mix-blend-plus-lighter ellipse) */
        radial-gradient(ellipse 1000px 520px at 50% 240px,
            rgba(28, 169, 201, .16) 0%,
            rgba(40, 99, 195, .08) 42%,
            transparent 72%),
        /* Upper-left fuchsia hint */
        radial-gradient(ellipse 700px 600px at 16% 6%,
            rgba(232, 121, 249, .05) 0%,
            transparent 62%),
        /* Upper-right blue hint */
        radial-gradient(ellipse 800px 700px at 84% 5%,
            rgba(64, 117, 201, .07) 0%,
            transparent 62%),
        /* Bottom violet glow (trust + CTA + footer block) */
        radial-gradient(ellipse 1500px 1100px at 50% 86%,
            rgba(85, 41, 142, .55) 0%,
            rgba(85, 41, 142, .22) 34%,
            transparent 62%),
        /* Main vertical depth gradient through the full page */
        linear-gradient(180deg,
            var(--Royal-Blue-Blue-900, #051A3C) 0%,
            var(--Royal-Blue-Blue-850, #051A3C) 7%,
            var(--Royal-Blue-Blue-900, #051A3C) 46%,
            var(--Royal-Blue-Blue-900, #051A3C) 74%,
            var(--Royal-Blue-Blue-850, #051A3C) 88%,
            #051A3C 100%);
}
/* Unified page-wide grain texture overlay (matches Figma "grain" frames at 6% opacity) */
body::before{
    content: "";
    position: fixed;
    inset: 0;
    background-image:
        radial-gradient(rgba(255, 255, 255, .035) 1px, transparent 1px),
        radial-gradient(rgba(255, 255, 255, .025) 1px, transparent 1px);
    background-size: 3px 3px, 7px 7px;
    background-position: 0 0, 1px 2px;
    pointer-events: none;
    z-index: 1;
    opacity: .65;
}
h1, h2, h3, h4{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    color: var(--cool-101828, #101828);
    margin: 0;
    font-variation-settings: 'SOFT' 0, 'WONK' 1;
}
h5, h6, p, a, li, button, input{
    font-family: 'Inter', sans-serif;
    margin: 0;
}
ul{ margin: 0; padding: 0; list-style: none; }
img{ max-width: 100%; }
a{ color: inherit; text-decoration: none; }

.container{
    width: 100%;
    max-width: 1500px;
    margin: 0 auto;
    padding: 0 32px;
}

/* Bootstrap-style 1320px ladder — matches index.html / final-home-bundle */
.hero-bg-page .container {
    width: 100%; max-width: 100%;
    margin-right: auto; margin-left: auto;
    padding-right: 1rem; padding-left: 1rem;
}
@media (min-width: 576px)  { .hero-bg-page .container { max-width: 540px; } }
@media (min-width: 768px)  { .hero-bg-page .container { max-width: 720px; } }
@media (min-width: 992px)  { .hero-bg-page .container { max-width: 960px; } }
@media (min-width: 1200px) { .hero-bg-page .container { max-width: 1140px; } }
@media (min-width: 1400px) { .hero-bg-page .container { max-width: 1320px; } }

/* ===========================================================
 * Site header — hello bar + nav bar (Figma 994:29783)
 * ----------------------------------------------------------- */
.site-top{
    position: sticky;
    top: 0;
    z-index: 200;
    border-bottom: 1px solid rgba(252, 252, 252, .2);
}

/* ── Hello bar ────────────────────────────────────────────── */
.hello-bar{
    background: var(--Royal-Blue-Blue-750, #07214b);
    border-bottom: 1px solid rgba(252, 252, 252, .2);
    padding: 10px 48px 11px;
    display: flex;
    align-items: center;
    gap: 10px;
}
.hello-bar .hello-left{
    flex: 1;
    display: flex;
    align-items: center;
    gap: 20px;
    min-width: 0;
}
.hello-bar .hello-badge{
    background: var(--Base-White, #fcfcfc);
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 14px;
    line-height: 16px;
    padding: 4px 10px;
    border-radius: 4px;
    white-space: nowrap;
}
.hello-bar .hello-message{
    color: rgba(255, 255, 255, .8);
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 14px;
    line-height: 16px;
    white-space: nowrap;
}
.hello-bar .hello-cta{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: var(--Base-White, #fcfcfc);
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    line-height: 16px;
    text-decoration: underline;
    text-underline-position: from-font;
    text-decoration-thickness: 1px;
    white-space: nowrap;
}
.hello-bar .hello-cta:hover{ color: var(--SkyBlue-SkyBlue-500, #12b6f8); }
.hello-bar .hello-cta svg{ width: 14px; height: 14px; }
.hello-bar .hello-login{
    color: rgba(255, 255, 255, .9);
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 25px;
    padding: 8px 0 8px 16px;
    margin-left: 8px;
    border-left: 1px solid rgba(255, 255, 255, .18);
    white-space: nowrap;
}
.hello-bar .hello-login:hover{ color: var(--SkyBlue-SkyBlue-500, #12b6f8); }
.hello-bar .hello-consult{
    color: rgba(255, 255, 255, .9);
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 25px;
    padding: 8px 0;
    white-space: nowrap;
}
.hello-bar .hello-consult:hover{ color: var(--SkyBlue-SkyBlue-500, #12b6f8); }

/* ── Main nav bar ─────────────────────────────────────────── */
.site-header{
    position: relative;
    z-index: 20;
    background: var(--Royal-Blue-Blue-900, #051A3C);
    border-bottom: 1px solid rgba(255, 255, 255, .1);
    height: 81px;
    padding: 20px 48px 21px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
}

/* Logo: L + UMENORE wordmark + AI superscript */
.site-header .brand-mark{
    display: inline-flex;
    align-items: center;
    height: 44px;
    color: var(--Base-White, #fcfcfc);
    text-decoration: none;
}
.site-header .brand-mark .brand-l{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 500;
    font-size: 30px;
    line-height: 30px;
    color: var(--SkyBlue-SkyBlue-500, #12b6f8);
    margin-right: 2px;
}
.site-header .brand-mark .brand-word{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 400;
    font-size: 17px;
    letter-spacing: .12em;
    color: var(--Base-White, #fcfcfc);
    position: relative;
    top: 2px;
}
.site-header .brand-mark .brand-ai{
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 10px;
    line-height: 1;
    color: var(--SkyBlue-SkyBlue-500, #12b6f8);
    margin-left: 4px;
    align-self: flex-start;
    margin-top: 2px;
}

/* Nav links with dropdown arrows */
.site-header .nav-links{
    display: flex;
    gap: 32px;
    align-items: center;
}
.site-header .nav-links > li > a{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    color: rgba(255, 255, 255, .9);
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 26px;
    white-space: nowrap;
    cursor: pointer;
}
.site-header .nav-links > li > a:hover{ color: var(--SkyBlue-SkyBlue-500, #12b6f8); }
.site-header .nav-links > li > a .caret{
    width: 8px;
    height: 4px;
    flex: 0 0 8px;
}
.site-header .nav-links > li > a .nav-ai-icon{
    width: 15px;
    height: 14px;
    flex: 0 0 15px;
}

/* Header CTA buttons */
.site-header .nav-actions{
    display: flex;
    align-items: center;
    gap: 12px;
}
.site-header .btn-demo{
    background:
        linear-gradient(var(--Royal-Blue-Blue-900, #051A3C), var(--Royal-Blue-Blue-900, #051A3C)) padding-box,
        var(--Explore-Button) border-box;
    border: 2px solid transparent;
    color: var(--Base-White, #fcfcfc);
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 13.5px;
    line-height: 1.2;
    padding: 8px 18px;
    border-radius: 6px;
    cursor: pointer;
    transition:
        transform .22s cubic-bezier(.22, .61, .36, 1),
        box-shadow .22s cubic-bezier(.22, .61, .36, 1),
        background .22s ease;
    white-space: nowrap;
}
.site-header .btn-demo:hover{
    background:
        linear-gradient(rgba(255,255,255,.07), rgba(255,255,255,.07)) padding-box,
        var(--Explore-Button) border-box;
    transform: translateY(-1px);
    box-shadow:
        0 8px 24px -8px rgba(64, 117, 201, .55),
        0 2px 10px -2px rgba(119, 71, 182, .4);
}
.site-header .btn-start{
    background: var(--Explore-Button);
    color: var(--Base-White, #fcfcfc);
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 25px;
    padding: 8px 16px;
    border-radius: 8px;
    border: none;
    cursor: pointer;
    white-space: nowrap;
    transition: filter .25s ease;
}
.site-header .btn-start:hover{ filter: brightness(1.1); }

/* ===========================================================
 * Section: Hero (Figma 994:29786)
 * ----------------------------------------------------------- */
.hero-section{
    position: relative;
    background: var(--Royal-Blue-Blue-900, #051A3C);
    overflow: hidden;
    color: var(--Base-White, #fcfcfc);
}
.hero-section .container{
    position: relative;
    z-index: 2;
}
.hero-content{
    max-width: 960px;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 32px;
    align-items: center;
}
.hero-section h1{
    font-size: 56px;
    line-height: 64px;
    letter-spacing: -0.8px;
    color: var(--Base-White, #fcfcfc);
    font-weight: 300;
}
.hero-section h1 .ai-agents-gradient{
    background: var(--AI-Agents-Text);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    font-weight: 400;
}
.hero-section .hero-sub{
    color: var(--Base-White, #fcfcfc);
    font-size: 20px;
    line-height: 30px;
    font-weight: 400;
    max-width: 760px;
    margin: 0 auto;
}

/* Hero search ── two layers: outer glass + inner cyan-bordered box */
.hero-search-wrap{
    position: relative;
    width: 800px;
    max-width: 100%;
    margin: 0 auto;
}
.hero-search-glow{
    position: absolute;
    left: 50%;
    top: 50%;
    transform: translate(-50%, -50%);
    width: 652px;
    height: 186px;
    border-radius: 350px;
    background: var(--Search-Glow);
    opacity: .3;
    filter: blur(125px);
    pointer-events: none;
}
.hero-search{
    position: relative;
    background: rgba(255, 255, 255, .1);
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 12px;
    padding: 12px;
    display: flex;
    flex-direction: column;
    gap: 8px;
    /* Motion DNA mirroring .scene-card.sc-1 from the persona section:
       ① transform → mouse parallax (CSS-var driven by JS wireParallax on
          #heroSearchWrap), composed at slightly damped amplitudes since
          this card is larger than the persona scene-card.
       ② translate (independent property) → idle ±8px Y-float, 6.5s
          ease-in-out alternate loop (heroFloat).
       ③ scale (independent property) → reserved for hover lift.
       Three properties stay separate so they NEVER fight each other. */
    transform: translate3d(calc(var(--mx, 0) * 6px), calc(var(--my, 0) * 4px), 0);
    transition: transform .25s ease-out, box-shadow .4s ease;
    animation:
        heroSearchReveal .65s cubic-bezier(.22, .61, .36, 1) .10s backwards,
        heroFloat 6.5s ease-in-out 1.0s infinite alternate;
    will-change: transform, translate;
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .06),
        0 24px 48px -20px rgba(14, 72, 165, .22),
        0 12px 24px -16px rgba(85, 41, 142, .10),
        inset 0 1px 0 rgba(255, 255, 255, .12);
}
.hero-search-wrap:hover .hero-search{
    scale: 1.005;
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .08),
        0 32px 64px -22px rgba(14, 72, 165, .32),
        0 18px 36px -16px rgba(85, 41, 142, .18),
        inset 0 1px 0 rgba(255, 255, 255, .18);
}
/* One-shot reveal — slide + scale + fade (same recipe as scReveal) */
@keyframes heroSearchReveal{
    from{ opacity: 0; transform: translate3d(0, 22px, 0) scale(.97); }
    to  { opacity: 1; transform: translate3d(0, 0, 0)    scale(1); }
}
/* Idle Y-float using `translate` so it composes with the parallax transform.
   Same ±8px amplitude / 6.5s cadence as .scene-card.sc-1 (scFloat1). */
@keyframes heroFloat{
    0%   { translate: 0 -8px; }
    100% { translate: 0  8px; }
}
@media (prefers-reduced-motion: reduce){
    .hero-search{ animation: none; transform: none; }
    .hero-search-wrap:hover .hero-search{ scale: 1; }
}
.hero-search-inner{
    background: rgba(15, 23, 42, .7);
    border: 1.666px solid var(--Turquoise-SkyBlue-500, #1ca9c9);
    border-radius: 8.884px;
    padding: 13.325px 13.325px 11.104px;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    min-height: 153.241px;
    text-align: left;
}
.hero-search-inner .placeholder-text{
    font-size: 14px;
    line-height: 1.3;
    color: var(--blueGray-200, #E2E8F0);
    letter-spacing: -.28px;
    /* Reserve a baseline so the inner panel doesn't reflow as characters land */
    min-height: 1.3em;
}
/* Blinking caret — pseudo element after the typed text. JS toggles
   .is-typing on the host while characters are streaming, and a separate
   .is-done state once typing finishes (caret keeps blinking). */
.hero-search-inner .placeholder-text::after{
    content: "";
    display: inline-block;
    width: 2px;
    height: 1.05em;
    margin-left: 3px;
    vertical-align: -2px;
    background: var(--Turquoise-SkyBlue-500, #1ca9c9);
    border-radius: 1px;
    animation: heroCaretBlink 1s steps(1, end) infinite;
    opacity: 0;
    transition: opacity .15s ease;
}
.hero-search-inner .placeholder-text.is-typing::after,
.hero-search-inner .placeholder-text.is-done::after{
    opacity: 1;
}
/* While actively streaming we hold the caret solid (no blink) so it
   reads as a moving insertion point; on .is-done it returns to blink. */
.hero-search-inner .placeholder-text.is-typing::after{
    animation: none;
}
@keyframes heroCaretBlink{
    0%, 50% { opacity: 1; }
    50.01%, 100% { opacity: 0; }
}
/* Tag chip hover + active polish — matches Figma royal-blue chip (#2863c3) */
.hero-search-tag{
    transition:
        background .25s cubic-bezier(.22, .61, .36, 1),
        border-color .25s cubic-bezier(.22, .61, .36, 1),
        color .25s ease,
        transform .2s ease;
}
.hero-search-tag:hover{
    background: rgba(255, 255, 255, .14);
    border-color: rgba(255, 255, 255, .28);
    color: #fff;
}
.hero-search-tag.is-active:hover{
    background: var(--Royal-Blue-Blue-450, #2863c3);
    transform: translateY(-1px);
}
.hero-search-tag.is-active{
    box-shadow: 0 6px 16px -8px rgba(40, 99, 195, .55);
}
@media (prefers-reduced-motion: reduce){
    .hero-search-inner .placeholder-text{ transition: none; }
    .hero-search-inner .placeholder-text::after{ animation: none; opacity: 0; }
    .hero-search-tag{ transition: none; }
}
.hero-search-inner .input-row{
    display: flex;
    align-items: center;
    gap: 6.663px;
    width: 100%;
}
.hero-search-inner .icon-btn{
    width: 35.534px;
    height: 35.534px;
    border-radius: 200px;
    background: var(--blueGray-700, #334155);
    border: none;
    color: var(--Base-White, #fcfcfc);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}
.hero-search-inner .tools-btn{
    height: 35.534px;
    padding: 0 16px 0 12px;
    border-radius: 50px;
    background: var(--blueGray-700, #334155);
    border: none;
    color: var(--Base-White, #fcfcfc);
    display: inline-flex;
    align-items: center;
    gap: 4.442px;
    font-size: 13.33px;
    font-weight: 400;
    line-height: 1.3;
    cursor: pointer;
    letter-spacing: -.27px;
}
.hero-search-inner .tools-btn svg{ width: 18px; height: 18px; }
.hero-search-inner .spacer{ flex: 1; }
.hero-search-inner .explore-btn{
    background: var(--Explore-Button);
    color: var(--Base-White, #fcfcfc);
    border: none;
    border-radius: 8px;
    padding: 8px 16px;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 15px;
    font-weight: 700;
    line-height: 25px;
    cursor: pointer;
}
.hero-search-inner .explore-btn svg{ width: 18px; height: 18px; }

/* Tag chips inside search card */
.hero-search-tags{
    display: flex;
    gap: 10px;
    padding: 4px 0 10px;
}
.hero-search-tag{
    height: 28px;
    padding: 6px 16px;
    border-radius: 50px;
    background: rgba(255, 255, 255, .08);
    border: 1px solid var(--Grey-Grey-800, #5e5e5e);
    color: var(--Grey-Grey-100, #fbfbfb);
    font-size: 12px;
    line-height: 16px;
    font-weight: 400;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}
.hero-search-tag.is-active{
    background: var(--Royal-Blue-Blue-450, #2863c3);
    border-color: transparent;
    color: var(--Base-White, #fcfcfc);
}

/* Footer of hero search: 100+ sources + overlap icons */
.hero-search-footer{
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 2.221px;
}
.hero-search-footer .src-label{
    display: inline-flex;
    align-items: center;
    gap: 6.663px;
    font-size: 13.325px;
    line-height: 1.3;
    color: var(--Base-White, #fcfcfc);
    letter-spacing: -.27px;
}
.hero-search-footer .src-label svg{ width: 20px; height: 20px; }
.hero-search-footer .src-stack{
    display: flex;
    align-items: center;
}
.hero-search-footer .src-stack .src-bubble{
    width: 28.872px;
    height: 28.872px;
    border-radius: 80.199px;
    background: var(--blueGray-600, #475569);
    border: 0.802px solid var(--blueGray-400, #94A3B8);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    margin-right: -4.812px;
    color: var(--Base-White, #fcfcfc);
    font-size: 9px;
    font-weight: 600;
    overflow: hidden;
}
.hero-search-footer .src-stack .src-bubble:last-child{ margin-right: 0; }
.hero-search-footer .src-stack .src-bubble svg{ width: 16px; height: 16px; }

/* ===========================================================
 * Section: Trusted / Logos (dark, matches page background)
 * ----------------------------------------------------------- */
.trusted-section{
    background: #051A3C;
    padding: 65px 0;
    text-align: center;
    position: relative;
    z-index: 2;
}
.trusted-section h2{
    /* Canonical sitewide H2 — Space Grotesk 300 / 44px / 54px / -0.6px tracking.
       Same scale used by features/personas/pricing/success/testimonial. */
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 44px;
    line-height: 54px;
    letter-spacing: -.6px;
    color: var(--Base-White, #fcfcfc);
    text-align: center;
    margin: 0 auto 50px;
    max-width: 920px;
}
.logo-slider{
    overflow: hidden;
    position: relative;
    white-space: nowrap;
    width: 100%;
}
.logo-track{
    display: inline-flex;
    align-items: center;
    animation: scroll-left 50s linear infinite;
}
.logo-track > div{
    flex: 0 0 auto;
    margin: 0 56px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.logo-track img{
    max-height: 52px;
    max-width: 180px;
    height: auto;
    width: auto;
    object-fit: contain;
    vertical-align: middle;
    opacity: 1;
}
@keyframes scroll-left{
    from { transform: translateX(0); }
    to   { transform: translateX(-50%); }
}

/* ===========================================================
 * Section: Products — tabbed (Figma 994:29832)
 * ----------------------------------------------------------- */
.section-products{
    /* Solid at top, fades transparent at bottom so features gradient bleeds through */
    background: linear-gradient(180deg,
        #051A3C 0%,
        #051A3C 65%,
        transparent 100%);
    /* Scroll track — the inner .products-sticky pins for (height − 100vh) of
       scrolling, split across the 3 products. 300vh ⇒ ~66vh of scroll each,
       giving the 3rd product enough hold time before exiting. */
    height: 300vh;
    padding: 0;
    position: relative;
    z-index: 3;
    color: var(--Base-White, #fcfcfc);
}
/* Centered section heading + subheading — pinned above the products (Figma 994:29829) */
.products-intro{
    text-align: center;
    margin-bottom: 20px;
}
.products-intro .products-title{
    /* Canonical sitewide H2 — Space Grotesk 300 / 44px / 54px / -0.6px tracking */
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 44px;
    line-height: 54px;
    letter-spacing: -.6px;
    color: var(--Base-White, #fcfcfc);
    text-align: center;
    font-variation-settings: 'SOFT' 0, 'WONK' 1;
    margin: 0 0 12px;
}
.products-intro .products-subtitle{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 22px;
    letter-spacing: -0.15px;
    color: rgba(255, 255, 255, .8);
    margin: 0;
}

/* Sticky pin — full-screen stage that stays fixed while the track scrolls */
.products-sticky{
    position: sticky;
    top: 0;
    height: 100vh;
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 36px 0;
    box-sizing: border-box;
    overflow: visible;
}
.products-sticky > .container{
    position: relative;
    z-index: 1;
    width: 100%;
}

/* ── Scroll progress dots ───────────────────────────────────── */
.product-progress{
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 22px;
}
.product-progress .pp-dot{
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: rgba(252, 252, 252, .2);
    transition: background .35s ease, width .35s ease;
}
.product-progress .pp-dot.is-active{
    width: 26px;
    border-radius: 50px;
    background: var(--SkyBlue-SkyBlue-500, #12b6f8);
}

/* ── Header row: eyebrow + segmented product switcher ───────── */
.section-products .products-head{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    flex-wrap: wrap;
    margin-bottom: 28px;
    padding-bottom: 20px;
    border-bottom: 1px solid rgba(159, 186, 228, .15);
}
.section-products .ph-eyebrow{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.165px;
    text-transform: uppercase;
    color: var(--SkyBlue-SkyBlue-500, #12b6f8);
    margin: 0;
}

/* Segmented pill switcher (glass on dark) */
.product-tabs{
    display: inline-flex;
    flex-wrap: wrap;
    gap: 6px;
    padding: 5px;
    background: rgba(252, 252, 252, .06);
    border: 1px solid rgba(159, 186, 228, .25);
    border-radius: 50px;
}
.product-tab{
    background: transparent;
    border: none;
    border-radius: 50px;
    padding: 9px 20px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 14px;
    line-height: 1;
    color: rgba(252, 252, 252, .55);
    cursor: pointer;
    white-space: nowrap;
    transition: color .25s ease, background .25s ease, box-shadow .25s ease;
}
.product-tab:hover{ color: var(--Base-White, #fcfcfc); background: rgba(252,252,252,.07); }
.product-tab.is-active{
    background: rgba(40, 99, 195, .55);
    color: var(--Base-White, #fcfcfc);
    font-weight: 600;
    box-shadow: 0 0 0 1.5px rgba(100, 149, 237, .5), 0 4px 16px rgba(40, 99, 195, .35);
}

/* ── Two-column stage ───────────────────────────────────────── */
.product-stage{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 56px;
    align-items: center;
    min-height: 0;
}

/* ── Left column: active product content ────────────────────── */
.product-detail{
    /* Per-product accent — overridden by variant classes below */
    --pd-accent: var(--Violet-Violet-450, #7747b6);
    --pd-accent-bg: rgba(119, 71, 182, .22);
    --pd-accent-border: rgba(119, 71, 182, .55);

    display: flex;
    flex-direction: column;
    align-items: flex-start;
    /* Grouped vertical rhythm via per-element margins (see below) rather than a
       single flat gap — keeps the label tight to the heading and separates the
       body / tags / proof groups. */
    gap: 0;
}
.product-detail.is-insights{
    --pd-accent: var(--Royal-Blue-Blue-450, #2863c3);
    --pd-accent-bg: rgba(40, 99, 195, .22);
    --pd-accent-border: rgba(40, 99, 195, .55);
}
.product-detail.is-datamagnet{
    --pd-accent: var(--Turquoise-SkyBlue-500, #1ca9c9);
    --pd-accent-bg: rgba(28, 169, 201, .22);
    --pd-accent-border: rgba(28, 169, 201, .55);
}

/* ── Premium switch animation (staggered slide-fade, no blink) ──
   Each child eases in from below; outgoing content lifts away fast. */
.product-detail > *{
    transition: opacity .22s ease, transform .22s cubic-bezier(.22, .61, .36, 1);
    will-change: opacity, transform;
}
.product-detail > *:nth-child(1){ transition-delay: 0s; }
.product-detail > *:nth-child(2){ transition-delay: .02s; }
.product-detail > *:nth-child(3){ transition-delay: .04s; }
.product-detail > *:nth-child(4){ transition-delay: .06s; }
.product-detail > *:nth-child(5){ transition-delay: .08s; }
.product-detail > *:nth-child(6){ transition-delay: .10s; }
/* Outgoing — quick, uniform lift + fade */
.product-detail.is-leaving > *{
    opacity: 0;
    transform: translateY(-6px);
    transition: opacity .08s ease-in, transform .08s ease-in;
    transition-delay: 0s;
}
/* Incoming start state — applied instantly, then released to settle in */
.product-detail.is-entering > *{
    opacity: 0;
    transform: translateY(12px);
    transition: none;
}

.product-detail .pd-pill{
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--pd-accent-bg);
    border: 1px solid var(--pd-accent-border);
    co lor: var(--pd-accent);
    padding: 6px 14px;
    border-radius: 50px;
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.165px;
    text-transform: uppercase;
    /* Uniform 34px rhythm between every block in the product-detail panel:
       pill → h3 → paragraph → chips → quote → cta. */
    margin-bottom: 34px;
}
.product-detail .pd-pill::before{
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--pd-accent);
}
.product-detail h3{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 500;
    font-size: 28px;
    line-height: 36px;
    letter-spacing: -0.3px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 34px;
   
}
.product-detail p{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 26px;
    color: rgba(252, 252, 252, .72);
    margin: 0 0 34px;
    max-width: 56ch;
}
.product-detail .pd-chips{
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 34px;
}
.product-detail .pd-chip{
    background: var(--pd-accent-bg);
    border: 1px solid var(--pd-accent-border);
    color: #fcfcfc;
    padding: 7px 14px;
    border-radius: 50px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 13px;
    line-height: 16px;
    display: inline-flex;
    align-items: center;
}
/* Customer quote — glass card with brand accent rail */
.product-detail .pd-quote{
    margin: 0 0 34px;
    background: rgba(252, 252, 252, .04);
    border: 1px solid rgba(159, 186, 228, .15);
    border-left: 3px solid var(--pd-accent);
    border-radius: 12px;
    padding: 14px 20px;
    max-width: 520px;
}
.product-detail .pd-quote[hidden]{ display: none; }
.product-detail .pd-quote blockquote{
    margin: 0 0 6px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-style: italic;
    font-size: 15px;
    line-height: 24px;
    color: var(--Base-White, #fcfcfc);
}
.product-detail .pd-quote figcaption{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13px;
    line-height: 18px;
    color: rgba(252, 252, 252, .6);
}
/* Explore link — accent text + nudging arrow */
.product-detail .pd-cta{
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: none;
    border: none;
    padding: 0;
    color: var(--pd-accent);
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 25px;
    text-decoration: none;
    cursor: pointer;
    transition: filter .25s ease;
}
.product-detail .pd-cta:hover{ filter: brightness(1.15); }
.product-detail .pd-cta .pd-cta-arrow{
    transition: transform .25s ease;
}
.product-detail .pd-cta:hover .pd-cta-arrow{ transform: translateX(4px); }

/* ── Right column: product visual ───────────────────────────── */
.product-visual{
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    min-width: 0;
    overflow: visible;
}
/* Soft accent wash behind the GIF — wide diffuse base layer */
.product-visual::before{
    content: "";
    position: absolute;
    inset: 10% 8%;
    z-index: 0;
    pointer-events: none;
    background: radial-gradient(60% 60% at 50% 50%,
        var(--pd-glow, rgba(119, 71, 182, .28)) 0%,
        transparent 70%);
    filter: blur(52px);
}
/* ── Per-product orb colors ─────────────────────────────────── */
.product-visual{
    --pv-orb-a: rgba(119, 71, 182, .72);
    --pv-orb-b: rgba(85,  41, 142, .52);
}
.product-detail.is-insights ~ .product-visual,
.product-stage:has(.is-insights) .product-visual{
    --pd-glow:  rgba(40, 99, 195, .30);
    --pv-orb-a: rgba(40, 99, 195, .72);
    --pv-orb-b: rgba(28, 169, 201, .52);
}
.product-stage:has(.is-datamagnet) .product-visual{
    --pd-glow:  rgba(28, 169, 201, .30);
    --pv-orb-a: rgba(28, 169, 201, .72);
    --pv-orb-b: rgba(18, 182, 248, .52);
}

/* ── Animated background orbs — centred on each side edge of the GIF ── */
.pv-orb{
    position: absolute;
    border-radius: 50%;
    filter: blur(60px);
    pointer-events: none;
    will-change: opacity, transform;
    z-index: 0;
    animation: glowBreathe 7s ease-in-out infinite alternate;
    transition: background .55s ease;
}
/* Left-edge orb: centre sits on the left border, half peeks outside */
.pv-orb-a{
    top: 50%;
    left: -18%;
    width: 60%;
    height: 80%;
    translate: 0 -50%;
    background: radial-gradient(circle, var(--pv-orb-a) 0%, transparent 65%);
    transform: translate3d(calc(var(--mx, 0) * -8px), calc(var(--my, 0) * -6px), 0);
}
/* Right-edge orb: centre sits on the right border, half peeks outside */
.pv-orb-b{
    top: 50%;
    right: -18%;
    width: 60%;
    height: 80%;
    translate: 0 -50%;
    background: radial-gradient(circle, var(--pv-orb-b) 0%, transparent 65%);
    animation-duration: 9s;
    animation-delay: 1.4s;
    transform: translate3d(calc(var(--mx, 0) * 6px), calc(var(--my, 0) * 5px), 0);
}
.product-visual img{
    position: relative;
    z-index: 1;
    display: block;
    width: 100%;
    height: auto;
    max-height: 52vh;
    object-fit: contain;
    border-radius: 12px;
    mix-blend-mode: lighten;
    /* Float + mouse parallax — same pattern as persona scene cards.
       scFloat1 uses the `translate` independent property so `transform`
       stays free for the mouse-parallax offset. */
    animation: scFloat1 6.5s ease-in-out 0.5s infinite alternate;
    transform: translate3d(calc(var(--mx, 0) * 12px), calc(var(--my, 0) * 8px), 0);
    transition: opacity .4s ease, transform .4s cubic-bezier(.22, .61, .36, 1);
    will-change: opacity, transform, translate;
}
.product-visual.is-leaving img{
    opacity: 0;
    transform: scale(.99) translateY(-5px);
    transition: opacity .08s ease-in, transform .08s ease-in;
}
.product-visual.is-entering img{
    opacity: 0;
    transform: scale(.99) translateY(10px);
    transition: none;
}

/* Respect reduced-motion — fade only, no movement */
@media (prefers-reduced-motion: reduce){
    .product-detail > *,
    .product-visual img{
        transition: opacity .2s ease !important;
        transform: none !important;
        transition-delay: 0s !important;
    }
    .product-detail.is-entering > *,
    .product-visual.is-entering img{ transform: none !important; }
}

/* ===========================================================
 * Section: Features & Capabilities (Figma 994:29843)
 * Horizontal-scroll of light cards on dark, fading into personas
 * ----------------------------------------------------------- */
.section-features{
    position: relative;
    padding: 120px 0 150px;
    background: transparent;
    z-index: 2;
}
/* Gradient bridge extends up into the Products section and fades in from a
   transparent navy (matching the dark page canvas) so there's no hard edge —
   then ramps navy → violet → royal blue → pale blue into Features. The final
   stop is a pale brand tint (NOT pure white) so the Personas section can pick
   up exactly that colour at its top and resolve to white inside — making the
   whole flow look like one continuous gradient with no visible seam. */
.section-features::before{
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: -220px;
    bottom: 0;
    /* Stops spread evenly so the bottom half ramps gently from sky-blue
       through pale brand into the Royal-Blue-Blue-50 anchor that the
       Personas fade picks up — no crowded band of light blue near the
       boundary, no visible stripe. */
    background: linear-gradient(180deg,
        #051A3C  0%,
        #1a1e52 24%,
        #32216e 36%,
        #55298e 48%,
        #2863c5 62%,
        #5886d0 73%,
        #9fbae4 83%,
        #c8d8ee 92%,
        var(--Royal-Blue-Blue-50, #e7eef8) 100%);
    z-index: -1;
    pointer-events: none;
}
.section-features .container{
    position: relative;
    z-index: 1;
}

/* Premium intro — eyebrow pill (on-dark variant), Space Grotesk h2 with
   gradient accent on the key phrase, muted-white sub. Matches the
   Persona / Pricing / Success intro pattern, retuned for dark bg. */
.features-intro{
    text-align: center;
    max-width: 880px;
    margin: 0 auto 56px;
}
.features-eyebrow{
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: var(--SkyBlue-SkyBlue-300, #67d3ff);
    background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .14);
    padding: 7px 16px;
    border-radius: 50px;
    margin: 0 0 22px;
    -webkit-backdrop-filter: blur(6px);
            backdrop-filter: blur(6px);
}
.features-eyebrow .fe-dot{
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--SkyBlue-SkyBlue-500, #12b6f8) 0%, var(--Violet-Violet-450, #7747b6) 100%);
    box-shadow: 0 0 0 3px rgba(18, 182, 248, .18);
}
.section-features h2{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 44px;
    line-height: 54px;
    color: var(--Base-White, #fcfcfc);
    text-align: center;
    margin: 0 0 18px;
    letter-spacing: -.6px;
    max-width: none;
  
    
}
.section-features h2 .fh-accent{
    /* Plain white — matches the rest of the heading. Italic stays for
       typographic emphasis. The parent h2's text-shadow now applies
       directly (no background-clip transparency to break it). */
    color: var(--Base-White, #fcfcfc);
    font-style: italic;
}
.section-features .section-sub{
    font-family: 'inter', serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 28px;
    text-align: center;
    max-width: 680px;
    margin: 0 auto;
}

/* ─────────────────────────────────────────────────────────────────
   FEATURES MARQUEE — single horizontal track, RIGHT → LEFT auto-scroll.
   All 12 feature cards live in one track. No clones — the JS handler
   shuffles cards through the DOM as they scroll past: when a card
   fully exits the left edge, it's appended to the end of the track
   and the track's translateX is shifted by exactly one card-width so
   the visual position is unchanged. Result: a true infinite loop
   with no visible duplication of any blog. Edges fade via mask-image
   so cards enter/exit smoothly. Hover pauses the scroll. */
.features-marquee{
    position: relative;
    overflow: hidden;
    margin: 0 -16px;
    padding: 14px 16px 28px;
    -webkit-mask-image: linear-gradient(90deg,
        transparent 0%,
        #000 7%,
        #000 93%,
        transparent 100%);
            mask-image: linear-gradient(90deg,
        transparent 0%,
        #000 7%,
        #000 93%,
        transparent 100%);
}
.features-track{
    display: flex;
    gap: 24px;
    width: max-content;
    will-change: transform;
}

/* Feature card — light grey with violet border */
.feature-card{
    flex: 0 0 313px;
    width: 313px;
    height: 278px;
    background: var(--Grey-Grey-200, #f7f7f7);
    border: 1px solid var(--Violet-Violet-250, #b499d7);
    border-radius: 8px;
    padding: 32px 24px 24px;
    display: flex;
    flex-direction: column;
    gap: 16px;
    align-items: flex-start;
    filter: drop-shadow(0 4px 4px rgba(0, 0, 0, .12));
    transition: transform .25s ease, box-shadow .25s ease;
}
.feature-card:hover{
    transform: translateY(-4px);
    box-shadow: 0 8px 16px rgba(85, 41, 142, .18);
}
.feature-card .fc-icon{
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: var(--Royal-Blue-Blue-50, #e7eef8);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    flex: 0 0 52px;
}
.feature-card .fc-icon svg{ width: 24px; height: 24px; }
.feature-card h5{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 400;
    font-size: 20px;
    line-height: 30px;
    color: var(--Absolute-Black, #242424);
    margin: 0;
    min-width: 100%;
}
.feature-card p{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 26px;
    color: var(--Absolute-Black, #242424);
    margin: 0;
}

/* ===========================================================
 * Section: Personas (Figma 994:29844)
 * ----------------------------------------------------------- */
/* Per-active-persona accent — set on .section-personas via JS. Defaults shown. */
.section-personas{
    --pa-accent: var(--Royal-Blue-Blue-500, #0e48a5);
    --pa-accent-secondary: var(--Violet-Violet-450, #7747b6);
    --pa-accent-glow-a: rgba(40, 99, 195, .55);
    --pa-accent-glow-b: rgba(119, 71, 182, .40);
    --pa-accent-glow-c: rgba(28, 169, 201, .25);
    --pa-accent-soft:  rgba(40, 99, 195, .08);
    --pa-accent-border: rgba(40, 99, 195, .40);

    background: var(--Base-White, #fcfcfc);
    color: var(--cool-101828, #101828);
    padding: 96px 0 132px;
    position: relative;
    z-index: 2;
    overflow: hidden;
    isolation: isolate;
}

/* Soft entry fade — smooths the dark→light transition above into white.
   Starts a hair ABOVE the section so it overlaps where the Features
   bridge ends (both sit at --Royal-Blue-Blue-50 there), then resolves
   to pure white over ~560px with many graduated stops so no band is
   visible. Reads as one continuous ramp from dark canvas → pale tint
   → white with zero seam between the sections. */
.section-personas .personas-fade{
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 560px;
    background: linear-gradient(180deg,
        /* Pin the top edge to EXACTLY #e7eef8 so the pixel at y=0 of
           Personas matches the pixel at the bottom of Features — zero
           subpixel mismatch, no visible boundary line. */
        var(--Royal-Blue-Blue-50, #e7eef8) 0%,
        rgba(231, 238, 248, 1) 6%,
        rgba(231, 238, 248, .92) 16%,
        rgba(231, 238, 248, .78) 28%,
        rgba(231, 238, 248, .62) 40%,
        rgba(231, 238, 248, .46) 52%,
        rgba(231, 238, 248, .30) 65%,
        rgba(231, 238, 248, .18) 77%,
        rgba(231, 238, 248, .08) 87%,
        rgba(231, 238, 248, .03) 94%,
        rgba(231, 238, 248, 0) 100%);
    pointer-events: none;
    z-index: 0;
}

/* Content sits above the fade */
.section-personas .container{
    position: relative;
    z-index: 1;
}

/* ── Intro: eyebrow + heading + sub ─────────────────────────────
   Editorial composition: a small dotted eyebrow above a Space Grotesk
   headline whose tail picks up a brand-color gradient. */
.personas-intro{
    text-align: center;
    max-width: 840px;
    margin: 0 auto 80px;
}
.personas-eyebrow{
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    background: linear-gradient(135deg, rgba(40, 99, 195, .08) 0%, rgba(119, 71, 182, .08) 100%);
    border: 1px solid rgba(40, 99, 195, .14);
    padding: 7px 16px;
    border-radius: 50px;
    margin-bottom: 24px;
}
.personas-eyebrow .pe-dot{
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: linear-gradient(135deg,
        var(--Royal-Blue-Blue-500, #0e48a5) 0%,
        var(--Violet-Violet-450, #7747b6) 100%);
    box-shadow: 0 0 0 3px rgba(40, 99, 195, .12);
}
.section-personas h2{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 44px;
    line-height: 54px;
    text-align: center;
    color: var(--cool-101828, #101828);
    margin: 0 0 18px;
    letter-spacing: -.6px;
}
/* Gradient-text accent on the trailing portion of the headline */
.section-personas h2 .ph-accent{
    background: linear-gradient(135deg,
        var(--Royal-Blue-Blue-500, #0e48a5) 0%,
        var(--Violet-Violet-450, #7747b6) 55%,
        var(--Turquoise-SkyBlue-500, #1ca9c9) 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    font-style: italic;
}
.section-personas .section-sub{
    font-family: 'inter', serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 30px;
    color: #4a5568;
    text-align: center;
    max-width: 720px;
    margin: 0 auto;
}

/* ── Persona Explorer: stepper (left) + dashboard showcase (right) ── */
/* ── Persona Explorer: content (left) + animated scene stage (right) ──
   The right stage holds four absolute-positioned scenes, one per persona.
   On persona change, the active scene fades + slides in while its layered
   cards stagger up sequentially — a content-first storytelling reveal. */
.persona-explorer{
    display: grid;
    grid-template-columns: minmax(320px, .95fr) minmax(0, 1.15fr);
    gap: 80px;
    align-items: center;
    position: relative;
}

/* LEFT column ───────────────────────────────────────────────── */
.pex-content{
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
/* Compact horizontal persona selector at the top of the left column */
.pex-selector{
    display: inline-flex;
    flex-wrap: wrap;
    gap: 4px;
    padding: 5px;
    background: #f1f5f9;
    border: none;
    box-shadow:
        inset 0 1px 2px rgba(16, 24, 40, .05),
        0 1px 3px rgba(16, 24, 40, .04);
    border-radius: 50px;
    margin-bottom: 32px;
}
.px-tab{
    border: none;
    background: transparent;
    color: #475467;
    padding: 9px 17px;
    border-radius: 50px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 13px;
    line-height: 1;
    cursor: pointer;
    letter-spacing: .1px;
    transition: color .3s ease, background .3s ease, box-shadow .35s ease,
                transform .35s cubic-bezier(.22, .61, .36, 1), border-color .3s ease;
    position: relative;
}
.px-tab:hover{
    color: var(--cool-101828, #101828);
    transform: translateY(-1px);
}
.px-tab.is-active{
    /* Filled brand gradient pill with glow shadow — strong hierarchy */
    background: linear-gradient(135deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    color: #ffffff;
    font-weight: 600;
    transform: scale(1.05);
    box-shadow:
        0 8px 22px -8px var(--pa-accent-glow-a, rgba(40, 99, 195, .55)),
        0 3px 6px -3px var(--pa-accent-glow-b, rgba(119, 71, 182, .35)),
        inset 0 1px 0 rgba(255, 255, 255, .30);
}
.px-tab.is-active:hover{
    transform: scale(1.05) translateY(-1px);
    color: #ffffff;
}
.pex-text{
    display: flex;
    flex-direction: column;
    align-items: flex-start;
}
.pex-role-label{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    color: var(--pa-accent, #0e48a5);
    margin-bottom: 18px;
    transition: color .35s ease;
}
.pex-role-label::before{
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--pa-accent);
    box-shadow: 0 0 8px var(--pa-accent);
    transition: background .35s ease, box-shadow .35s ease;
}
.pex-text h3{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 500;
    font-size: 28px;
    line-height: 36px;
    color: var(--cool-101828, #101828);
    margin: 0 0 22px;
    letter-spacing: -0.3px;
    max-width: 22ch;
}
.pex-text h3 .pquote{
    color: var(--pa-accent);
    opacity: .5;
    font-family: 'Space Grotesk', sans-serif;
    font-size: 34px;
    line-height: 1;
    margin: 0 1px;
    transition: color .35s ease;
}
.pex-text p{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 26px;
    color: #4a5568;
    margin: 0 0 24px;
    max-width: 48ch;
}
.persona-chips{
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.persona-chips .chip{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 13px;
    border-radius: 50px;
    background: var(--pa-accent-soft, rgba(40, 99, 195, .08));
    border: 1px solid var(--pa-accent-border, rgba(40, 99, 195, .35));
    color: var(--pa-accent, #0e48a5);
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 12.5px;
    line-height: 16px;
    box-shadow: 0 1px 3px rgba(14, 72, 165, .08);
    transition: background .25s ease, border-color .25s ease, color .35s ease, box-shadow .25s ease;
}
.persona-chips .chip:hover{
    background: var(--pa-accent-soft, rgba(40, 99, 195, .14));
    border-color: var(--pa-accent, rgba(40, 99, 195, .55));
    box-shadow: 0 2px 8px rgba(14, 72, 165, .14);
}
.persona-chips .chip svg{ width: 12px; height: 12px; }

/* RIGHT column ─────────────────────────────────────────────── */
.pex-stage{
    position: relative;
    width: 100%;
    min-height: 380px;
    aspect-ratio: 4 / 3;
    isolation: isolate;
}

/* Each scene stacks at the same coordinates; only the active is visible.
   Outgoing scene slides up + fades; incoming scene fades + slides in,
   then its inner cards stagger up sequentially — Lemni-style storytelling. */
.persona-scene,
.plan-scene{
    position: absolute;
    inset: 0;
    opacity: 0;
    visibility: hidden;
    transform: translateY(12px);
    transition: opacity .45s ease, transform .55s cubic-bezier(.22, .61, .36, 1), visibility 0s linear .55s;
    pointer-events: none;
}
.persona-scene.is-on,
.plan-scene.is-on{
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: opacity .45s ease, transform .55s cubic-bezier(.22, .61, .36, 1), visibility 0s linear 0s;
    pointer-events: auto;
}

/* Soft glowing gradient orbs INSIDE the scene — image background treatment.
   They retune per active persona via --pa-accent-glow-* and parallax-shift. */
.scene-glow{
    position: absolute;
    border-radius: 50%;
    filter: blur(80px);
    pointer-events: none;
    will-change: transform, background;
    z-index: 0;
    transition: background .55s ease;
}
.scene-glow-a{
    top: -12%;
    left: -10%;
    width: 70%;
    height: 70%;
    background: radial-gradient(circle, var(--pa-accent-glow-a) 0%, transparent 70%);
}
.scene-glow-b{
    bottom: -12%;
    right: -8%;
    width: 64%;
    height: 64%;
    background: radial-gradient(circle, var(--pa-accent-glow-b) 0%, transparent 70%);
}

/* ── Scene cards: base "glass" panel ─────────────────────────
   White card with brand-tinted layered shadow + hairline border.
   Floats above the glow. Three animation layers compose:
     • `transform`  → mouse parallax (CSS-var-driven via .pex-stage --mx/--my)
     • `translate`  → idle "float" keyframe (independent CSS property, composes
                      with transform — see scFloat1/2/3 below)
     • `animation:scReveal` → one-shot stagger reveal when scene becomes active
*/
.scene-card{
    position: absolute;
    z-index: 1;
    background: rgba(255, 255, 255, .94);
    -webkit-backdrop-filter: saturate(140%) blur(14px);
            backdrop-filter: saturate(140%) blur(14px);
    border: 1px solid rgba(255, 255, 255, .9);
    border-radius: 18px;
    padding: 18px 20px;
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .06),
        0 24px 48px -20px rgba(14, 72, 165, .22),
        0 12px 24px -16px rgba(85, 41, 142, .10),
        inset 0 1px 0 rgba(255, 255, 255, .6);
    color: var(--pa-accent);
    opacity: 0;
    /* Default off-state — mouse parallax baseline (mx/my default 0) */
    transform: translate3d(0, 0, 0);
    transition: transform .25s ease-out, box-shadow .4s ease;
    will-change: opacity, transform, translate;
}
/* Active scene: each card mouse-tracks at a different amplitude, plays the
   stagger reveal, then begins a slow infinite float — all composed cleanly. */
.persona-scene.is-on .scene-card,
.plan-scene.is-on    .scene-card{
    opacity: 1;
}
.persona-scene.is-on .scene-card.sc-1,
.plan-scene.is-on    .scene-card.sc-1{
    /* `backwards` (not `both`) so the reveal's from-state applies during the
       stagger delay, but the rule's transform reclaims control afterwards —
       letting the mouse-parallax CSS-var translate take effect post-reveal. */
    transform: translate3d(calc(var(--mx, 0) * 10px), calc(var(--my, 0) * 8px), 0);
    animation:
        scReveal .55s cubic-bezier(.22, .61, .36, 1) 0s backwards,
        scFloat1 6.5s ease-in-out 0.7s infinite alternate;
}
.persona-scene.is-on .scene-card.sc-2,
.plan-scene.is-on    .scene-card.sc-2{
    transform: translate3d(calc(var(--mx, 0) * -9px), calc(var(--my, 0) * 6px), 0);
    animation:
        scReveal .55s cubic-bezier(.22, .61, .36, 1) .10s backwards,
        scFloat2 7.5s ease-in-out 0.8s infinite alternate;
}
.persona-scene.is-on .scene-card.sc-3,
.plan-scene.is-on    .scene-card.sc-3{
    transform: translate3d(calc(var(--mx, 0) * 6px), calc(var(--my, 0) * -7px), 0);
    animation:
        scReveal .55s cubic-bezier(.22, .61, .36, 1) .18s backwards,
        scFloat3 8s   ease-in-out 0.9s infinite alternate;
}

/* Card positions — balanced layered cluster.
   Cards are stacked diagonally (top-left → mid-right → bottom-center) and
   *touch* with only a small overlap zone at each junction so the layered
   feel is preserved without obscuring content. sc-2 is also slimmer so it
   covers only the right edge of sc-1, never its primary content area. */
.scene-card.sc-1{ top: 0;    left: 0;    width: 70%; }
.scene-card.sc-2{ top: 28%;  right: 0;   width: 44%; }
.scene-card.sc-3{ top: 58%;  left: 18%;  width: 56%; }

/* ── One-shot reveal: slide + scale + fade ─────────────────── */
@keyframes scReveal{
    from{ opacity: 0; transform: translate3d(0, 22px, 0) scale(.97); }
    to  { opacity: 1; transform: translate3d(0, 0, 0)    scale(1); }
}
/* ── Idle float — uses `translate` (independent) so it composes with the
   mouse-parallax `transform` without overwriting it. */
@keyframes scFloat1{
    0%   { translate: 0 -8px; }
    100% { translate: 0  8px; }
}
@keyframes scFloat2{
    0%   { translate: 0  9px; }
    100% { translate: 0 -7px; }
}
@keyframes scFloat3{
    0%   { translate: -6px 0; }
    100% { translate:  6px 0; }
}

/* ── Stage perspective + depth backdrop ─────────────────────
   Perspective primes 3D-feel composition; the ::before adds a soft
   dot-grid texture behind the cards (5–10% opacity, masked toward the
   center) for premium depth without clutter. */
.pex-stage{
    perspective: 1400px;
    transform-style: preserve-3d;
}
.pex-stage::before{
    content: "";
    position: absolute;
    inset: -10% -6%;
    z-index: 0;
    pointer-events: none;
    background-image: radial-gradient(rgba(40, 99, 195, .055) 1px, transparent 1px);
    background-size: 26px 26px;
    -webkit-mask-image: radial-gradient(ellipse 75% 65% at 50% 50%, #000 30%, transparent 80%);
            mask-image: radial-gradient(ellipse 75% 65% at 50% 50%, #000 30%, transparent 80%);
    opacity: .9;
}

/* ── Breathing glows — slow infinite scale + opacity pulse ──
   Uses `scale` (independent property) so it composes with the JS-driven
   parallax `transform: translate3d(...)` instead of overwriting it. */
.scene-glow{
    animation: glowBreathe 7s ease-in-out infinite alternate;
}
.scene-glow-b{ animation-duration: 8.5s; animation-delay: 1.2s; }
@keyframes glowBreathe{
    0%   { scale: 1;    opacity: 1; }
    100% { scale: 1.08; opacity: .82; }
}

/* ── Chart content animations — fire when scene becomes active ── */

/* Sparkline draws on like ink across paper */
.persona-scene.is-on .sc-spark .draw-line{
    stroke-dasharray: 520;
    stroke-dashoffset: 520;
    animation: drawLine 1.4s cubic-bezier(.22, .61, .36, 1) .55s forwards;
}
@keyframes drawLine{ to{ stroke-dashoffset: 0; } }

/* Top-quarter / goal bars sweep in from the left */
.persona-scene.is-on .sc-bar i,
.persona-scene.is-on .sc-progress i{
    transform-origin: left center;
    animation: barGrow 1s cubic-bezier(.22, .61, .36, 1) .55s backwards;
}
@keyframes barGrow{
    from{ transform: scaleX(0); }
    to  { transform: scaleX(1); }
}

/* ── Idle "blink" indicator on active pipeline node + KPI dots ── */
.persona-scene.is-on .sc-node-active{
    animation: nodePulseGlow 2.6s ease-in-out infinite;
}
@keyframes nodePulseGlow{
    0%, 100% { box-shadow: 0 6px 14px -6px var(--pa-accent-glow-a, rgba(40,99,195,.45)); }
    50%      { box-shadow: 0 10px 22px -6px var(--pa-accent-glow-a, rgba(40,99,195,.7)); }
}

/* ── Stage hover: deeper shadow + intensified glow ────────── */
.pex-stage:hover .scene-card,
.px-stage:hover  .scene-card{
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .08),
        0 32px 64px -22px rgba(14, 72, 165, .32),
        0 18px 36px -16px rgba(85, 41, 142, .18),
        inset 0 1px 0 rgba(255, 255, 255, .7);
}
.pex-stage:hover .scene-glow-a,
.px-stage:hover  .scene-glow-a{ opacity: 1.08; }
.pex-stage:hover .scene-glow-b,
.px-stage:hover  .scene-glow-b{ opacity: 1.08; }

/* ── Reduced-motion: keep the reveal but suppress infinite motion ── */
@media (prefers-reduced-motion: reduce){
    .persona-scene.is-on .scene-card.sc-1,
    .persona-scene.is-on .scene-card.sc-2,
    .persona-scene.is-on .scene-card.sc-3,
    .plan-scene.is-on    .scene-card.sc-1,
    .plan-scene.is-on    .scene-card.sc-2,
    .plan-scene.is-on    .scene-card.sc-3{
        animation: scReveal .35s ease-out both;
        transform: none !important;
    }
    .scene-glow,
    .persona-scene.is-on .sc-node-active{ animation: none !important; }
    .persona-scene.is-on .sc-spark .draw-line{ animation: none; stroke-dashoffset: 0; }
    .persona-scene.is-on .sc-bar i,
    .persona-scene.is-on .sc-progress i{ animation: none; transform: none; }
}

/* ── Card interior atoms ─────────────────────────────────── */
.sc-hd{ display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.sc-eyebrow{
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 10.5px;
    line-height: 14px;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: var(--pa-accent);
    opacity: .85;
}
.sc-pill{
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 10.5px;
    color: var(--cool-99a1af, #99a1af);
    background: rgba(40, 99, 195, .06);
    border-radius: 50px;
    padding: 3px 9px;
}

/* Stat row used by the trend card */
.sc-stat-row{ display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.sc-num{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 30px;
    line-height: 1.05;
    color: var(--cool-101828, #101828);
    letter-spacing: -.5px;
}
.sc-num-sm{ font-size: 22px; }
.sc-delta{
    display: inline-flex;
    align-items: center;
    gap: 3px;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11.5px;
    color: #009966;
    background: rgba(0, 153, 102, .10);
    border-radius: 50px;
    padding: 3px 8px;
}
.sc-delta svg{ display: block; }
.sc-spark{ width: 100%; height: 56px; color: var(--pa-accent); display: block; }

/* Row list used by Top Quarters / Models / Jobs */
.sc-rows{ list-style: none; padding: 0; margin: 8px 0 0; display: flex; flex-direction: column; gap: 8px; }
.sc-rows li{
    display: grid;
    grid-template-columns: 76px 1fr auto;
    align-items: center;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-size: 12px;
    color: #4a5568;
}
.sc-rl{ color: var(--cool-101828, #101828); font-weight: 500; }
.sc-rv{ font-weight: 600; color: var(--cool-101828, #101828); font-size: 12px; }
.sc-bar{
    display: block;
    height: 5px;
    background: rgba(40, 99, 195, .08);
    border-radius: 50px;
    overflow: hidden;
}
.sc-bar i{
    display: block;
    height: 100%;
    background: linear-gradient(90deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    border-radius: 50px;
}

/* Insight & alert cards — single line of copy with a pulsing accent dot */
.sc-insight, .sc-alert{
    padding: 16px 18px;
    display: flex;
    align-items: flex-start;
    gap: 12px;
    background: linear-gradient(135deg, rgba(255,255,255,.98) 0%, rgba(248,250,253,.95) 100%);
}
.sc-pulse{
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--pa-accent);
    box-shadow: 0 0 0 4px var(--pa-accent-soft);
    flex: 0 0 8px;
    margin-top: 7px;
    animation: scPulse 2.2s ease-in-out infinite;
}
.sc-pulse-warn{ background: #f59e0b; box-shadow: 0 0 0 4px rgba(245, 158, 11, .14); }
@keyframes scPulse{
    0%,100%{ transform: scale(1); opacity: 1; }
    50%    { transform: scale(1.25); opacity: .8; }
}
.sc-text{
    margin: 0;
    font-family: 'Inter', sans-serif;
    font-size: 13px;
    line-height: 20px;
    color: var(--cool-101828, #101828);
}
.sc-text strong{ color: var(--pa-accent); font-weight: 700; }

/* KPI grid used by Business Leader's pulse card */
/* Business KPI grid — 1x4 horizontal row.
   A single row keeps the Business hero card the same height as the other
   personas' sc-1 cards, so the diagonal cluster overlap stays consistent
   across all scenes rather than ballooning for the 2×2 layout. */
.sc-grid{ display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; margin-top: 6px; }
.sc-kpi{
    padding: 10px 10px;
    background: linear-gradient(135deg, rgba(255,255,255,.65) 0%, var(--pa-accent-soft) 100%);
    border: 1px solid var(--pa-accent-border);
    border-radius: 12px;
    display: flex;
    flex-direction: column;
    gap: 3px;
    min-width: 0;
}
.sc-kpi .sc-num-sm{ font-size: 19px; line-height: 1.1; }
.sc-kpi .sc-lbl{ font-size: 10px; }
.sc-lbl{ font-family: 'Inter', sans-serif; font-size: 10.5px; color: var(--cool-99a1af, #99a1af); letter-spacing: .3px; }

/* Goal progress bar */
.sc-goal{ padding: 16px 18px; }
.sc-progress{
    height: 8px;
    background: rgba(40, 99, 195, .08);
    border-radius: 50px;
    overflow: hidden;
    margin: 6px 0 8px;
}
.sc-progress i{
    display: block;
    height: 100%;
    background: linear-gradient(90deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    border-radius: 50px;
}
.sc-meta{ font-family: 'Inter', sans-serif; font-size: 11.5px; color: var(--cool-99a1af, #99a1af); }
.sc-meta-r{ font-family: 'Inter', sans-serif; font-size: 12px; font-weight: 600; color: var(--pa-accent); }

/* Checklist for "this week's focus" */
.sc-checks{ list-style: none; padding: 0; margin: 8px 0 0; display: flex; flex-direction: column; gap: 8px; }
.sc-checks li{
    display: flex;
    align-items: center;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-size: 12.5px;
    color: var(--cool-101828, #101828);
}
.sc-check{
    width: 14px;
    height: 14px;
    border-radius: 4px;
    background: linear-gradient(135deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    position: relative;
    flex: 0 0 14px;
}
.sc-check::after{
    content: "";
    position: absolute;
    top: 3px;
    left: 4px;
    width: 5px;
    height: 8px;
    border: 2px solid #fff;
    border-top: 0;
    border-left: 0;
    transform: rotate(45deg);
}

/* Pipeline node strip — Model / ETL pipelines */
.sc-pipeline{ padding: 18px 18px 22px; }
.sc-nodes{
    display: flex;
    align-items: center;
    gap: 8px;
    margin-top: 12px;
    flex-wrap: wrap;
}
.sc-node{
    flex: 1;
    min-width: 0;
    text-align: center;
    padding: 10px 8px;
    background: rgba(40, 99, 195, .05);
    border: 1px solid var(--pa-accent-border);
    border-radius: 10px;
    font-family: 'Inter', sans-serif;
    font-size: 11.5px;
    font-weight: 500;
    color: var(--pa-accent);
    position: relative;
}
.sc-node + .sc-node::before{
    content: "";
    position: absolute;
    left: -8px;
    top: 50%;
    width: 8px;
    height: 1.5px;
    background: linear-gradient(90deg, transparent, var(--pa-accent));
    opacity: .5;
    transform: translateY(-50%);
}
.sc-node-active{
    background: linear-gradient(135deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    border-color: transparent;
    color: #fff;
    box-shadow: 0 6px 14px -6px var(--pa-accent-glow-a, rgba(40,99,195,.45));
}

/* Accuracy badges for the Models list */
.sc-badge{
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11.5px;
    padding: 3px 8px;
    border-radius: 50px;
}
.sc-good{ background: rgba(0, 153, 102, .12); color: #009966; }
.sc-mid { background: rgba(245, 158, 11, .14); color: #b45309; }

/* Status pills for Job Health */
.sc-status{
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11px;
    padding: 3px 9px;
    border-radius: 50px;
    text-transform: lowercase;
    letter-spacing: .3px;
}
.sc-ok  { background: rgba(0, 153, 102, .12); color: #009966; }
.sc-warn{ background: rgba(245, 158, 11, .14); color: #b45309; }

/* Big-number metric card used by Engineer's latency */
.sc-metric{
    padding: 18px 20px;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.sc-metric-num{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 40px;
    line-height: 1;
    color: var(--cool-101828, #101828);
    letter-spacing: -.5px;
}
.sc-metric-num small{
    font-size: 16px;
    color: var(--cool-99a1af, #99a1af);
    margin-left: 4px;
}
.sc-metric-foot{
    font-family: 'Inter', sans-serif;
    font-size: 11.5px;
    color: var(--cool-99a1af, #99a1af);
}

/* ===========================================================
 * Section: Pricing — Explore (Figma 994:29853 / 401:16954)
 * ----------------------------------------------------------- */
/* Per-active-plan accent palette — JS swaps these on .section-pricing on tab change.
   Defaults match Freemium (Turquoise → Sky Blue). */
.section-pricing{
    --pa-accent: var(--Turquoise-SkyBlue-500, #1ca9c9);
    --pa-accent-secondary: var(--SkyBlue-SkyBlue-500, #12b6f8);
    --pa-accent-glow-a: rgba(28, 169, 201, .50);
    --pa-accent-glow-b: rgba(18, 182, 248, .35);
    --pa-accent-glow-c: rgba(40, 99, 195, .20);
    --pa-accent-soft:  rgba(28, 169, 201, .08);
    --pa-accent-border: rgba(28, 169, 201, .25);

    background: var(--Base-White, #fcfcfc);
    padding: 96px 0 132px;
    position: relative;
    z-index: 2;
    overflow: hidden;
    isolation: isolate;
}

/* Desktop spacing tightening — no longer locked to 100vh so the
   section sizes to its content and doesn't add empty viewport space. */
@media (min-width: 992px){
    .section-pricing{
        padding-top: 72px;
        padding-bottom: 72px;
    }
    .section-pricing .pricing-intro{ margin-bottom: 64px; }
    .section-pricing .pricing-switcher{ margin-bottom: 64px; }
}

/* ── Intro: eyebrow + Space Grotesk heading with gradient accent + sub ─── */
.pricing-intro{
    text-align: center;
    max-width: 840px;
    margin: 0 auto 72px;
}
.pricing-eyebrow{
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: var(--pa-accent);
    background: linear-gradient(135deg, rgba(28, 169, 201, .08) 0%, rgba(18, 182, 248, .08) 100%);
    border: 1px solid rgba(28, 169, 201, .14);
    padding: 7px 16px;
    border-radius: 50px;
    margin-bottom: 24px;
    transition: color .4s ease;
}
.pricing-eyebrow .pe-dot{
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    box-shadow: 0 0 0 3px rgba(28, 169, 201, .12);
    transition: background .4s ease;
}
.section-pricing h2{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 44px;
    line-height: 54px;
    text-align: center;
    color: var(--cool-101828, #101828);
    margin: 0 0 18px;
    letter-spacing: -.6px;
}
.section-pricing h2 .ph-accent{
    background: linear-gradient(135deg,
        var(--pa-accent) 0%,
        var(--pa-accent-secondary) 55%,
        var(--Violet-Violet-450, #7747b6) 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    font-style: italic;
}
.section-pricing .section-sub{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 19px;
    line-height: 30px;
    color: #4a5568;
    text-align: center;
    margin: 0 auto;
    max-width: 720px;
}

/* ═══════════════════════════════════════════════════════════════════
   PRICING COMPRESSION SHOWCASE — fresh, content-first layout
   No persona copy: vertical flow → big plan toggle → compression banner
   → 3+2 feature grid → centered CTA. All accents drive off --pa-accent-*.
   ═══════════════════════════════════════════════════════════════════ */

/* ── 2) Big plan toggle ─────────────────────────────────────────
   Centered, oversized pill switcher. Active state is the unmissable
   focal point: gradient fill + glow halo + slight scale up. */
.pricing-switcher{
    display: flex;
    justify-content: center;
    gap: 8px;
    padding: 7px;
    background: #ffffff;
    border: 1px solid rgba(40, 99, 195, .12);
    border-radius: 50px;
    margin: 0 auto 64px;
    width: fit-content;
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .04),
        0 14px 32px -16px rgba(14, 72, 165, .15);
}
.ps-pill{
    display: inline-flex;
    align-items: center;
    gap: 14px;
    padding: 12px 24px 12px 16px;
    border-radius: 50px;
    background: transparent;
    border: none;
    cursor: pointer;
    color: #4a5568;
    transition:
        background .35s ease,
        color .3s ease,
        box-shadow .35s ease,
        transform .35s cubic-bezier(.22, .61, .36, 1);
}
.ps-pill:hover{
    color: var(--cool-101828, #101828);
    transform: translateY(-1px);
}
.ps-pill.is-active{
    background: linear-gradient(135deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    color: #ffffff;
    transform: scale(1.03);
    box-shadow:
        0 12px 28px -8px var(--pa-accent-glow-a),
        0 4px 8px -3px var(--pa-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .30);
}
.ps-pill.is-active:hover{ transform: scale(1.03) translateY(-1px); color: #fff; }
.ps-icon{
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--pa-accent-soft);
    color: var(--pa-accent);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 34px;
    transition: background .35s ease, color .35s ease;
}
.ps-pill.is-active .ps-icon{
    background: rgba(255, 255, 255, .22);
    color: #ffffff;
}
.ps-label{ display: flex; flex-direction: column; text-align: left; line-height: 1; }
.ps-name{
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 15px;
    line-height: 20px;
}
.ps-pill.is-active .ps-name{ font-weight: 700; }
.ps-caption{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 11.5px;
    line-height: 15px;
    margin-top: 2px;
    opacity: .85;
}

/* ── Showcase panel: TWO premium cards in a left/right split.
   LEFT  = plan decision area (title, note, 5 numbered bullets, CTA)
   RIGHT = supporting story (eyebrow, h4, sub-bullets, stat + GIF)
   A small "→" flow indicator visually bridges them, communicating
   the compression story (this plan → this outcome). */
/* No panel box, no divider — two zones sit directly on the section
   background, separated only by the column gap. */
.pricing-showcase{
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.32fr);
    column-gap: 56px;
    align-items: stretch;
    position: relative;
    background: none;
    border: none;
    border-radius: 0;
    padding: 0;
    box-shadow: none;
}

/* Comparison-flow indicator floats over the seam between the two cards.
   Absolute-centered so the cards keep their clean rectangular silhouettes,
   while the icon visually links them as a "compression flow" cue. */
.ps-flow{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: linear-gradient(135deg, #ffffff 0%, var(--pa-accent-soft) 100%);
    border: 1px solid var(--pa-accent-border);
    color: var(--pa-accent);
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .06),
        0 10px 22px -8px var(--pa-accent-glow-a);
    z-index: 3;
    animation: psFlowFloat 4.5s ease-in-out infinite alternate;
    transition: background .4s ease, border-color .4s ease, color .4s ease;
}
@keyframes psFlowFloat{
    0%   { transform: translate(-50%, -50%) translateX(-3px); }
    100% { transform: translate(-50%, -50%) translateX(3px); }
}

/* LEFT zone — premium floating box wrapping the whole plan summary.
   Soft white surface, 1px pale border, multi-layer shadow with subtle
   brand-tinted depth, gentle idle Y-float so it feels alive.
   On hover the whole box lifts, glows with brand-accent shadow, gets
   a soft accent border + glassy inset top-edge highlight.
   Three motion channels compose without conflict:
     · translate (individual)  — idle Y-float
     · transform               — hover lift (translateY)
     · scale (individual)      — hover slight scale-up
   Children (the chip cards) consume the --mx / --my parallax vars set
   on this container by the JS handler, so the chips inside still drift
   with cursor while the box itself stays anchored. */
.ps-left{
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    padding: 36px 32px 32px;
    background: rgba(255, 255, 255, .96);
    border: 1px solid rgba(228, 232, 243, .85);
    border-radius: 24px;
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .04),
        0 18px 40px -20px rgba(14, 72, 165, .12),
        0 10px 22px -14px rgba(85, 41, 142, .06);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
    will-change: translate, transform, scale, box-shadow;
    animation: psLeftIdleFloat 7.5s ease-in-out 1.4s infinite alternate;
    transition:
        transform .55s cubic-bezier(.22, .61, .36, 1),
        scale .45s cubic-bezier(.22, .61, .36, 1),
        box-shadow .55s cubic-bezier(.22, .61, .36, 1),
        border-color .4s ease,
        background .4s ease;
}
.ps-left::before{ content: none; }

@keyframes psLeftIdleFloat{
    0%   { translate: 0 -3px; }
    100% { translate: 0  3px; }
}

.ps-left:hover{
    transform: translateY(-4px);
    scale: 1.005;
    border-color: var(--pa-accent-border);
    background: rgba(255, 255, 255, .99);
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .05),
        0 32px 64px -24px var(--pa-accent-glow-a),
        0 18px 36px -18px var(--pa-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .9);
}
.ps-left-head{
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 18px;
}
/* Plan tag — small uppercase pill, soft brand fill */
.ps-plan-tag{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 5px 12px;
    border-radius: 50px;
    background: var(--pa-accent-soft);
    border: 1px solid var(--pa-accent-border);
    color: var(--pa-accent);
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    transition: color .4s ease, background .4s ease, border-color .4s ease;
}
.ps-title{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 30px;
    line-height: 40px;
    letter-spacing: -.3px;
    color: var(--cool-101828, #101828);
    margin: 0 0 14px;
    max-width: 22ch;
    transition: color .35s ease;
}
.ps-note{
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 15px;
    line-height: 24px;
    color: var(--cool-101828, #101828);
    margin: 0 0 28px;
    letter-spacing: -.1px;
}
/* "What's included" eyebrow — tiny uppercase label above the bullets,
   with a subtle gradient tail mark so it reads as a section delimiter. */
.ps-included-eyebrow{
    margin: 0 0 12px;
    padding: 0;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: #4a5568;
    display: flex;
    align-items: center;
    gap: 10px;
    transition: color .4s ease;
}
.ps-included-eyebrow > span{ flex: 0 0 auto; }
.ps-included-eyebrow::after{
    content: "";
    flex: 1 1 auto;
    height: 1px;
    background: linear-gradient(90deg, rgba(228, 232, 243, .9), transparent);
    opacity: .9;
}
/* Light, minimal bullet rows — no per-row card styling, no heavy active fill.
   Inactive = muted grey body text with a small number marker.
   Active   = brand-colored text + brand-gradient number marker + soft accent rail.
   Hover    = subtle text darken + faint accent background.
   The bullets read as a clean vertical text list, not card-like blocks. */
/* ─────────────────────────────────────────────────────────────────
   FLOATING CHIP BULLETS — Launch-Strategy-inspired clickable cards.
   Each chip is a soft white floating surface with its own shadow,
   border, and depth. Active state lights up with brand-soft gradient
   + accent text + brand-glow shadow. Three composing motions:
     · translate (individual)  — idle Y-drift  (varied rhythm)
     · transform               — mouse parallax (varied intensity)
     · scale (individual)      — hover lift
   --mx / --my come from the parallax handler on .ps-left.
   ───────────────────────────────────────────────────────────────── */
.ps-bullets{
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 32px;
    width: 100%;
    perspective: 1000px;
}
.psb{
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    border-radius: 14px;
    background: rgba(255, 255, 255, .94);
    border: 1px solid rgba(228, 232, 243, .85);
    color: var(--cool-101828, #101828);
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13.5px;
    line-height: 20px;
    cursor: pointer;
    text-align: left;
    width: 100%;
    position: relative;
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        0 6px 16px -10px rgba(14, 72, 165, .10);
    -webkit-backdrop-filter: blur(6px);
            backdrop-filter: blur(6px);
    will-change: translate, transform, scale;
    /* --psb-hover-lift is 0 by default, -4px on hover. It rides inside the
       parallax transform so the lift composes with cursor parallax without
       fighting it. Idle (translate) and scale (hover) live on their own
       individual properties — three independent motion channels. */
    --psb-hover-lift: 0px;
    transform: translate3d(
        calc(var(--mx, 0) * var(--psb-parax-x, 4px)),
        calc(var(--my, 0) * var(--psb-parax-y, 2px) + var(--psb-hover-lift)),
        0
    );
    transition:
        transform .5s cubic-bezier(.22, .61, .36, 1),
        scale .4s cubic-bezier(.22, .61, .36, 1),
        box-shadow .5s cubic-bezier(.22, .61, .36, 1),
        background .4s ease,
        border-color .4s ease,
        color .35s ease;
    /* Stagger reveal + gentle idle Y-float. nth-child rules below tune
       both the reveal delay and the idle rhythm per chip. */
    animation:
        psbEnter .55s cubic-bezier(.22, .61, .36, 1) var(--psb-enter-delay, 0s) backwards,
        psbIdleFloat var(--psb-idle-dur, 6s) ease-in-out var(--psb-idle-delay, 1s) infinite alternate;
}
.psb-text{ flex: 1 1 auto; min-width: 0; }
/* Right-edge arrow — faint by default, animates in on hover/active.
   Sits on a brand-accent color so it harmonises with the active state. */
.psb-arrow{
    flex: 0 0 auto;
    margin-left: 8px;
    color: var(--pa-accent);
    font-size: 15px;
    line-height: 1;
    opacity: .35;
    will-change: transform, opacity;
    transition:
        transform .35s cubic-bezier(.22, .61, .36, 1),
        opacity .3s ease,
        color .35s ease;
}
.psb:hover .psb-arrow{
    opacity: .9;
    transform: translateX(3px);
}
.psb.is-active .psb-arrow{
    opacity: 1;
    transform: translateX(2px);
}
.psb.is-active:hover .psb-arrow{
    transform: translateX(4px);
}

/* Stagger + idle rhythms — different per chip = layered depth */
.psb:nth-child(1){ --psb-enter-delay: 0s;    --psb-idle-dur: 5.5s; --psb-idle-delay: 1s;   --psb-parax-x: 6px; --psb-parax-y: 3px; }
.psb:nth-child(2){ --psb-enter-delay: .07s;  --psb-idle-dur: 6.2s; --psb-idle-delay: 1.2s; --psb-parax-x: 4px; --psb-parax-y: 2px; }
.psb:nth-child(3){ --psb-enter-delay: .14s;  --psb-idle-dur: 5.8s; --psb-idle-delay: 1.4s; --psb-parax-x: 2px; --psb-parax-y: 1px; }
.psb:nth-child(4){ --psb-enter-delay: .21s;  --psb-idle-dur: 6.5s; --psb-idle-delay: 1.6s; --psb-parax-x: 5px; --psb-parax-y: 2px; }
.psb:nth-child(5){ --psb-enter-delay: .28s;  --psb-idle-dur: 6s;   --psb-idle-delay: 1.8s; --psb-parax-x: 7px; --psb-parax-y: 3px; }

/* Premium hover: lift, slight scale-up, deeper brand-glow shadow,
   accent border, and a soft inset top-edge highlight that gives the
   chip a glassy "lit-from-above" look. All transitions are smoothed
   on a single cubic-bezier curve so the lift / glow / scale move in
   lockstep. */
.psb:hover{
    --psb-hover-lift: -4px;
    scale: 1.025;
    border-color: var(--pa-accent-border);
    background: rgba(255, 255, 255, .98);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .06),
        0 24px 48px -16px var(--pa-accent-glow-a),
        0 12px 24px -10px var(--pa-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .9);
}

.psb.is-active{
    bac kground: var(--pa-accent-soft);
    border-color: var(--pa-accent-border);
    color: var(--pa-accent);
    font-weight: 500;
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .06),
        0 18px 36px -14px var(--pa-accent-glow-a),
        0 8px 18px -8px var(--pa-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .85);
}
.psb.is-active:hover{
    --psb-hover-lift: -4px;
    scale: 1.03;
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .07),
        0 28px 56px -16px var(--pa-accent-glow-a),
        0 14px 28px -10px var(--pa-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .9);
}

@keyframes psbEnter{
    from { opacity: 0; translate: -8px 4px; scale: .98; }
    to   { opacity: 1; translate: 0 0;      scale: 1;   }
}
@keyframes psbIdleFloat{
    0%   { translate: 0 -2px; }
    100% { translate: 0  2px; }
}

.ps-cta{
    margin-top: auto;
    align-self: flex-start;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 12px 22px;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    color: #ffffff;
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 14.5px;
    line-height: 22px;
    text-decoration: none;
    box-shadow:
        0 10px 24px -10px var(--pa-accent-glow-a),
        0 3px 6px -3px var(--pa-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .22);
    transition: transform .3s ease, box-shadow .35s ease;
    cursor: pointer;
}
.ps-cta:hover{
    transform: translateY(-2px);
    box-shadow:
        0 16px 32px -12px var(--pa-accent-glow-a),
        0 6px 10px -4px var(--pa-accent-glow-b);
}
.ps-cta .ps-cta-arrow{ display: inline-flex; transition: transform .3s ease; }
.ps-cta:hover .ps-cta-arrow{ transform: translateX(4px); }

/* RIGHT zone — content-only column inside the unified panel.
   No card border, no card shadow, no background — just content. */
.ps-right{
    position: relative;
    background: none;
    border: none;
    border-radius: 0;
    padding: 0;
    box-shadow: none;
    display: flex;
    flex-direction: column;
    overflow: visible;
}
.ps-right::before{ content: none; }
.ps-right > *{ position: relative; z-index: 1; }

/* Mid-swap state — JS adds .is-swapping briefly, swaps content, removes class.
   Content fades + lifts during the swap so the change feels intentional. */
.ps-right .psr-eyebrow,
.ps-right .psr-title,
.ps-right .psr-comp-chip,
.ps-right .psr-bullets,
.ps-right .psr-stat,
.ps-right .psr-stage{
    transition:
        opacity .35s ease,
        transform .45s cubic-bezier(.22, .61, .36, 1);
}
.ps-right.is-swapping .psr-eyebrow,
.ps-right.is-swapping .psr-title,
.ps-right.is-swapping .psr-comp-chip,
.ps-right.is-swapping .psr-bullets,
.ps-right.is-swapping .psr-stat,
.ps-right.is-swapping .psr-stage{
    opacity: 0;
    transform: translateY(8px);
}
/* Staggered reveal — when .is-swapping is removed, content blocks fade
   back in one after another for a premium cascade. */
.ps-right .psr-eyebrow   { transition-delay: 0s;    }
.ps-right .psr-title     { transition-delay: .04s;  }
.ps-right .psr-comp-chip { transition-delay: .08s;  }
.ps-right .psr-bullets   { transition-delay: .12s;  }
.ps-right .psr-stat      { transition-delay: .18s;  }
.ps-right .psr-stage     { transition-delay: .24s;  }
/* But during the leaving (is-swapping ON) state, kill the delays so the
   exit is uniform-quick — only the entrance is staggered. */
.ps-right.is-swapping .psr-eyebrow,
.ps-right.is-swapping .psr-title,
.ps-right.is-swapping .psr-comp-chip,
.ps-right.is-swapping .psr-bullets,
.ps-right.is-swapping .psr-stat,
.ps-right.is-swapping .psr-stage{
    transition-delay: 0s;
}

.psr-eyebrow{
    display: inline-block;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    color: var(--pa-accent);
    margin-bottom: 14px;
    transition: color .4s ease;
}
.psr-title{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 400;
    font-size: 22px;
    line-height: 32px;
    color: var(--cool-101828, #101828);
    margin: 0 0 18px;
    letter-spacing: -.2px;
    
}
.psr-bullets{
    list-style: none;
    padding: 0;
    margin: 0 0 28px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.psr-bullets li{
    position: relative;
    padding-left: 24px;
    font-family: 'Inter', sans-serif;
    font-size: 14px;
    line-height: 22px;
    color: #4a5568;
}
.psr-bullets li::before{
    content: "";
    position: absolute;
    left: 4px;
    top: 8px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    box-shadow: 0 0 0 3px var(--pa-accent-soft);
    transition: background .4s ease, box-shadow .4s ease;
}

/* Legacy .psr-bottom wrapper (no longer used in markup, but retained for any
   stragglers); kept neutral so it doesn't paint or layout. */
.psr-bottom{
    display: contents;
}
.psr-bottom::after{ content: none; }
/* Comp-chip caption — equal visual weight to the bullet list. Same Inter
   400 14/22 grey body text, no italic, no box, no arrow. Sits between h4
   and the bulleted list as a one-line "from/to" context line. */
.psr-comp-chip{
    display: block;
    margin: 0 0 12px;
    padding: 0;
    background: none;
    border: none;
    box-shadow: none;
    color: #4a5568;
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-style: normal;
    font-size: 14px;
    line-height: 22px;
    letter-spacing: 0;
}
.psr-comp-chip strong{
    color: inherit;
    font-weight: inherit;
    font-style: inherit;
    background: none;
    padding: 0;
}

/* Stat — flat inline row beneath the GIF. Brand-accent serif number on the
   left, muted body caption on the right. No rail, no eyebrow, no box. */
.psr-stat{
    position: relative;
    padding: 0;
    background: none;
    border: none;
    border-radius: 0;
    display: flex;
    align-items: baseline;
    gap: 16px;
    box-shadow: none;
    transition: color .4s ease;
}
.psr-stat::before{ content: none; }
.psr-stat-num{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 36px;
    line-height: 1;
    margin: 0;
    letter-spacing: -.5px;
    color: var(--pa-accent);
    flex: 0 0 auto;
    transition: color .4s ease;
    /* Brief scale-pulse on each new render so the number "lands" */
    animation: psrStatNumPulse .9s cubic-bezier(.22, .61, .36, 1) both;
    transform-origin: left center;
}
.psr-stat-num small{
    font-size: 20px;
    margin-left: 2px;
    opacity: .7;
    font-weight: 300;
    color: var(--pa-accent);
}
.psr-stat-cap{
    font-family: 'Inter', sans-serif;
    font-size: 13.5px;
    line-height: 19px;
    color: #4a5568;
    margin: 0;
    flex: 1 1 auto;
    align-self: center;
    max-width: none;
}
@keyframes psrStatNumPulse{
    0%   { opacity: 0; transform: translateY(6px) scale(.96); }
    60%  { opacity: 1; transform: translateY(0)   scale(1.02); }
    100% { opacity: 1; transform: translateY(0)   scale(1); }
}
/* ─────────────────────────────────────────────────────────────────
   LAYERED VISUAL STAGE — premium "Launch-Strategy"-style composition.
   The stage is a relative container holding:
     · .psr-stage-bg   — ambient brand-tinted backdrop (breathes)
     · .psr-media      — main GIF visual hero (idle Y-float, mouse parallax)
     · .psr-float-top  — floating "live sync" chip overlapping top-right
     · .psr-float-bottom — floating mini-metric card overlapping bottom-left
   Each layer animates on a different rhythm and parallaxes at a
   different intensity, producing layered z-depth.
   --mx / --my are CSS variables set by the parallax JS handler in
   the [-0.5, 0.5] range.
   ───────────────────────────────────────────────────────────────── */
.psr-stage{
    position: relative;
    margin-top: 22px;
    padding: 10px 10px 14px;
    isolation: isolate;
}

/* Ambient brand-tinted backdrop — soft radial wash behind the GIF.
   Counter-parallax (moves opposite cursor) for furthest-back depth. */
.psr-stage-bg{
    position: absolute;
    inset: 0;
    background:
        radial-gradient(60% 70% at 50% 55%, var(--pa-accent-soft) 0%, transparent 72%);
    filter: blur(8px);
    opacity: .55;
    z-index: 0;
    pointer-events: none;
    border-radius: 24px;
    transform: translate3d(
        calc(var(--mx, 0) * -4px),
        calc(var(--my, 0) * -3px),
        0
    );
    animation: psrStageBreathe 8s ease-in-out infinite alternate;
    transition: transform .6s cubic-bezier(.22, .61, .36, 1);
}
@keyframes psrStageBreathe{
    0%   { opacity: .42; scale: .96; }
    100% { opacity: .68; scale: 1.04; }
}

/* Main GIF — matches the Persona scene-card "sc-1" motion DNA:
     · transform   → mouse parallax CO-direction with cursor (10px × mx,
                     8px × my) so it reads as the foreground layer.
     · translate   → idle Y-float ±8px, 6.5s ease-in-out infinite alternate
                     (mirror of scFloat1).
     · scale + translate via psrMediaEnter → one-shot slide-up + scale-up
                     reveal (22px / .97), backwards fill so the from-state
                     applies during the .10s pre-delay.
   These three motion channels live on three different CSS properties
   (transform, translate, scale) so they compose without fighting. */
.psr-media{
    position: relative;
    z-index: 1;
    width: 100%;
    aspect-ratio: 16 / 9;
    border-radius: 14px;
    overflow: hidden;
    backg round: linear-gradient(135deg, var(--pa-accent-soft) 0%, rgba(255, 255, 255, 1) 100%);
    border: 1px solid rgba(255, 255, 255, .9);
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .06),
        0 24px 48px -20px rgba(14, 72, 165, .22),
        0 12px 24px -16px rgba(85, 41, 142, .10),
        inset 0 1px 0 rgba(255, 255, 255, .6);
    animation:
        psrMediaEnter .65s cubic-bezier(.22, .61, .36, 1) .10s backwards,
        psrMediaFloat 6.5s ease-in-out 1s infinite alternate;
    will-change: translate, transform, box-shadow;
    transform: translate3d(
        calc(var(--mx, 0) * 10px),
        calc(var(--my, 0) *  8px),
        0
    );
    transition:
        box-shadow .4s ease,
        transform .25s ease-out;
}
.psr-media:hover{
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .08),
        0 32px 60px -20px rgba(14, 72, 165, .28),
        0 18px 34px -16px rgba(85, 41, 142, .14),
        inset 0 1px 0 rgba(255, 255, 255, .7);
}
@keyframes psrMediaEnter{
    from { opacity: 0; translate: 0 22px; scale: .97; }
    to   { opacity: 1; translate: 0 0;    scale: 1;   }
}
@keyframes psrMediaFloat{
    0%   { translate: 0 -8px; }
    100% { translate: 0  8px; }
}
.psr-media img,
.psr-media video{
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: opacity .35s ease, transform .45s cubic-bezier(.22, .61, .36, 1);
}
.ps-right.is-swapping .psr-media img,
.ps-right.is-swapping .psr-media video{
    opacity: 0;
    transform: scale(.985);
}

/* Swap state — fade the ambient backdrop alongside the GIF. */
.ps-right.is-swapping .psr-stage-bg{
    opacity: 0;
    transition: opacity .3s ease;
}

/* Reduced-motion — strip all idle/parallax/pulse animation in the stage. */
@media (prefers-reduced-motion: reduce){
    .ps-right .psr-eyebrow,
    .ps-right .psr-title,
    .ps-right .psr-comp-chip,
    .ps-right .psr-bullets,
    .ps-right .psr-stat,
    .ps-right .psr-stage,
    .psr-media img,
    .psr-media video{
        transition: opacity .2s ease !important;
        transform: none !important;
    }
    .psr-media,
    .psr-stage-bg{
        animation: none !important;
        transform: none !important;
    }
    /* Strip the left-chip motion suite too — keep static chips */
    .psb{
        animation: none !important;
        transform: none !important;
        translate: 0 0 !important;
        scale: 1 !important;
        transition: background .2s ease, color .2s ease, border-color .2s ease !important;
    }
    /* And the left box's idle float + hover lift — keep static */
    .ps-left{
        animation: none !important;
        transform: none !important;
        translate: 0 0 !important;
        scale: 1 !important;
        transition: box-shadow .2s ease, border-color .2s ease, background .2s ease !important;
    }
    /* Success + Testimonial — kill idle/parallax/reveal animations */
    .story-card,
    .testimonial-card,
    .testimonial-tab{
        animation: none !important;
        transform: none !important;
        translate: 0 0 !important;
        scale: 1 !important;
        opacity: 1 !important;
    }
    /* Features marquee — stop the infinite loop; let the track scroll
       horizontally instead so the cards remain accessible. */
    .features-track{
        animation: none !important;
        transform: none !important;
    }
    .features-marquee{
        overflow-x: auto;
        -webkit-mask-image: none !important;
                mask-image: none !important;
    }
}

/* ===========================================================
 * Section: Success Stories — carousel (Figma 994:29866)
 * ----------------------------------------------------------- */
/* ─────────────────────────────────────────────────────────────────
   SUCCESS STORIES — premium SaaS theme. Brand palette (Turquoise /
   SkyBlue) drives accent on the eyebrow, gradient on the headline,
   and the glow tints inside card shadows.
   Cards use the same motion DNA as Persona scene cards:
     · transform   → mouse parallax co-direction
     · translate   → idle Y-float (varied rhythms via nth-child)
     · scale       → hover lift
   Stagger reveal fires when the carousel enters the viewport. */
.section-success{
    --ss-accent: var(--Turquoise-SkyBlue-500, #1ca9c9);
    --ss-accent-secondary: var(--SkyBlue-SkyBlue-500, #12b6f8);
    --ss-accent-glow-a: rgba(28, 169, 201, .22);
    --ss-accent-glow-b: rgba(18, 182, 248, .14);
    --ss-accent-soft:  rgba(28, 169, 201, .08);
    --ss-accent-border: rgba(28, 169, 201, .22);

    background: var(--Base-White, #fcfcfc);
    padding: 88px 0 96px;
    position: relative;
    z-index: 2;
    isolation: isolate;
}
.success-intro{
    text-align: center;
    max-width: 840px;
    margin: 0 auto 48px;
}
.success-eyebrow{
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: var(--ss-accent);
    background: linear-gradient(135deg, var(--ss-accent-soft) 0%, rgba(18, 182, 248, .08) 100%);
    border: 1px solid var(--ss-accent-border);
    padding: 7px 16px;
    border-radius: 50px;
    margin: 0 0 22px;
}
.success-eyebrow .se-dot{
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--ss-accent) 0%, var(--ss-accent-secondary) 100%);
    box-shadow: 0 0 0 3px rgba(28, 169, 201, .12);
}
.section-success h2{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 44px;
    line-height: 54px;
    text-align: center;
    color: var(--cool-101828, #101828);
    margin: 0 0 18px;
    letter-spacing: -.6px;
}
.section-success h2 .sh-accent{
    background: linear-gradient(135deg,
        var(--ss-accent) 0%,
        var(--ss-accent-secondary) 55%,
        var(--Violet-Violet-450, #7747b6) 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    font-style: italic;
}
.section-success .section-sub{
    font-family: 'inter', serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 28px;
    color: #4a5568;
    text-align: center;
    max-width: 640px;
    margin: 0 auto;
}

/* Carousel container — keeps grid layout; sets --mx/--my for cards. */
.stories-carousel{
    display: grid;
    grid-template-columns: 44px 1fr 44px;
    gap: 28px;
    align-items: center;
    width: 100%;
    margin: 0 auto;
    position: relative;
}

/* "See all case studies" CTA — centered below the carousel (Figma 994:29867).
   The button itself is .btn-primary (canonical gradient pill); this wrapper
   only handles centering and top spacing so the CTA breathes from the cards. */
.success-cta{
    display: flex;
    justify-content: center;
    margin-top: 36px;
    /* Subtle entry — fades and slides up when the section scrolls into view,
       reusing the storiesCarousel reveal trigger (.is-revealed sets on the
       carousel; we tie the CTA's transition to it via the parent .container). */
    opacity: 0;
    transform: translateY(8px);
    transition:
        opacity .55s cubic-bezier(.22, .61, .36, 1) .35s,
        transform .55s cubic-bezier(.22, .61, .36, 1) .35s;
}
.stories-carousel.is-revealed ~ .success-cta,
.section-success .stories-carousel.is-revealed + .success-cta{
    opacity: 1;
    transform: translateY(0);
}
@media (prefers-reduced-motion: reduce){
    .success-cta{ opacity: 1; transform: none; transition: none; }
}

/* Premium round arrow buttons — soft white surface, brand-glow shadow,
   hover lift + scale matching the chip/box hover language. */
.stories-arrow{
    width: 44px;
    height: 44px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    background: rgba(255, 255, 255, .96);
    border: 1px solid rgba(228, 232, 243, .85);
    color: var(--ss-accent);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .05),
        0 8px 18px -10px var(--ss-accent-glow-a);
    -webkit-backdrop-filter: blur(6px);
            backdrop-filter: blur(6px);
    transition:
        transform .4s cubic-bezier(.22, .61, .36, 1),
        scale .35s cubic-bezier(.22, .61, .36, 1),
        box-shadow .4s ease,
        border-color .35s ease,
        color .35s ease;
}
.stories-arrow:hover{
    scale: 1.06;
    transform: translateY(-2px);
    border-color: var(--ss-accent-border);
    color: var(--ss-accent-secondary);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .07),
        0 16px 30px -12px var(--ss-accent-glow-a),
        0 8px 18px -8px var(--ss-accent-glow-b);
}
.stories-arrow:disabled,
.stories-arrow.is-disabled{
    opacity: .35;
    cursor: not-allowed;
    pointer-events: none;
}
.stories-arrow svg{ width: 16px; height: 16px; }

.stories-viewport{
    overflow: hidden;
    padding: 8px 4px 32px; /* room for hover lift + idle float */
    margin: -8px -4px -32px;
}
.stories-track{
    display: flex;
    gap: 24px;
    transition: transform .65s cubic-bezier(.22, .61, .36, 1);
    will-change: transform;
}

/* Story card — premium floating card with multi-layer brand-tinted
   shadow + bright white border for that glassy "lit-from-above" feel.
   Idle Y-float on `translate`, mouse parallax on `transform`, hover
   lift via `scale` + an extra translateY ride inside the parallax calc
   through `--story-hover-lift`. */
.story-card{
    flex: 0 0 360px;
    width: 360px;
    background: rgba(255, 255, 255, .96);
    border: 1px solid rgba(255, 255, 255, .9);
    border-radius: 20px;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    text-decoration: none;
    position: relative;
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .05),
        0 18px 36px -18px rgba(14, 72, 165, .14),
        0 10px 22px -14px rgba(85, 41, 142, .08),
        inset 0 1px 0 rgba(255, 255, 255, .6);
    --story-hover-lift: 0px;
    transform: translate3d(
        calc(var(--mx, 0) * 6px),
        calc(var(--my, 0) * 4px + var(--story-hover-lift)),
        0
    );
    transition:
        transform .55s cubic-bezier(.22, .61, .36, 1),
        scale .4s cubic-bezier(.22, .61, .36, 1),
        box-shadow .5s cubic-bezier(.22, .61, .36, 1),
        border-color .4s ease;
    /* Reveal hidden until the carousel enters the viewport */
    opacity: 0;
    translate: 0 18px;
    will-change: translate, transform, scale, box-shadow;
}
/* Once the JS adds .is-revealed on the carousel, cards stagger in
   with their own delay AND begin a gentle idle Y-float on different
   rhythms — borrowed straight from the Persona scene-card pattern. */
.stories-carousel.is-revealed .story-card{
    animation:
        storyCardReveal .7s cubic-bezier(.22, .61, .36, 1) var(--story-enter-delay, 0s) forwards,
        storyCardIdle var(--story-idle-dur, 6.5s) ease-in-out var(--story-idle-delay, 1.4s) infinite alternate;
}
.story-card:nth-child(1){ --story-enter-delay:  0s;    --story-idle-dur: 6.4s; --story-idle-delay: 1.2s; }
.story-card:nth-child(2){ --story-enter-delay:  .08s;  --story-idle-dur: 7.0s; --story-idle-delay: 1.4s; }
.story-card:nth-child(3){ --story-enter-delay:  .16s;  --story-idle-dur: 6.6s; --story-idle-delay: 1.6s; }
.story-card:nth-child(4){ --story-enter-delay:  .24s;  --story-idle-dur: 7.4s; --story-idle-delay: 1.8s; }
.story-card:nth-child(5){ --story-enter-delay:  .32s;  --story-idle-dur: 6.8s; --story-idle-delay: 2.0s; }

@keyframes storyCardReveal{
    from { opacity: 0; translate: 0 18px; }
    to   { opacity: 1; translate: 0 0;    }
}
@keyframes storyCardIdle{
    0%   { translate: 0 -4px; }
    100% { translate: 0  4px; }
}

.story-card:hover{
    --story-hover-lift: -4px;
    scale: 1.015;
    border-color: var(--ss-accent-border);
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .07),
        0 28px 56px -20px var(--ss-accent-glow-a),
        0 16px 32px -16px var(--ss-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .8);
}

.story-card .story-image{
    height: 200px;
    overflow: hidden;
    background: linear-gradient(135deg, var(--ss-accent-soft) 0%, rgba(255, 255, 255, 1) 100%);
    position: relative;
}
.story-card .story-image img{
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: scale .6s cubic-bezier(.22, .61, .36, 1);
}
.story-card:hover .story-image img{
    scale: 1.04;
}
.story-card .story-body{
    padding: 22px 22px 24px;
    display: flex;
    flex-direction: column;
    flex: 1;
    gap: 0;
}
.story-card .story-eyebrow{
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11px;
    line-height: 16px;
    color: var(--ss-accent);
    text-transform: uppercase;
    letter-spacing: 1.4px;
    margin: 0 0 14px;
}
.story-card .story-eyebrow .story-eyebrow-dot{
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--ss-accent) 0%, var(--ss-accent-secondary) 100%);
    box-shadow: 0 0 0 3px var(--ss-accent-soft);
}
.story-card .story-title{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 400;
    font-size: 19px;
    line-height: 28px;
    color: var(--cool-101828, #101828);
    letter-spacing: -.3px;
    margin: 0 0 22px;
    flex: 1;
}
.story-card .story-link{
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 13.5px;
    line-height: 20px;
    color: var(--ss-accent);
    letter-spacing: -.1px;
    align-self: flex-start;
    transition: color .35s ease, gap .35s cubic-bezier(.22, .61, .36, 1);
}
.story-card:hover .story-link{
    color: var(--ss-accent-secondary);
    gap: 12px;
}
.story-card .story-link svg{
    width: 14px;
    height: 14px;
    transition: transform .35s cubic-bezier(.22, .61, .36, 1);
}
.story-card:hover .story-link svg{ transform: translateX(2px); }

/* ===========================================================
 * Section: Testimonials — tabs + big quote (Figma 994:29873)
 * ----------------------------------------------------------- */
/* ─────────────────────────────────────────────────────────────────
   TESTIMONIALS — premium SaaS theme. Brand palette: Royal Blue +
   Violet. Outer card is a single floating glass surface; tabs are
   chip cards (mirroring the pricing .psb hover/active language);
   quote text is Space Grotesk serif for editorial weight. Auto-tab
   rotation in JS triggers a fade swap via .is-swapping. */
.section-testimonial{
    --ts-accent: var(--Royal-Blue-Blue-500, #0e48a5);
    --ts-accent-secondary: var(--Violet-Violet-450, #7747b6);
    --ts-accent-glow-a: rgba(14, 72, 165, .18);
    --ts-accent-glow-b: rgba(85, 41, 142, .14);
    --ts-accent-soft:  rgba(14, 72, 165, .07);
    --ts-accent-border: rgba(14, 72, 165, .22);

    /* Long, many-stop fade from solid white to fully transparent —
       gives the blurred Figma gradient (painted by .page-finale::before
       extending up into this zone) plenty of runway to bloom through
       gradually. No abrupt opacity step = no perceptible band. */
    background: linear-gradient(180deg,
        var(--Base-White, #fcfcfc) 0%,
        var(--Base-White, #fcfcfc) 58%,
        rgba(252, 252, 252, .92) 68%,
        rgba(252, 252, 252, .75) 76%,
        rgba(252, 252, 252, .55) 83%,
        rgba(252, 252, 252, .35) 89%,
        rgba(252, 252, 252, .18) 94%,
        rgba(252, 252, 252, .06) 97%,
        rgba(252, 252, 252, 0) 100%);
    padding: 96px 0 180px;
    position: relative;
    /* Higher than .page-finale so the testimonial card paints over
       the page-finale's blurred ::before that reaches up into here. */
    z-index: 3;
    isolation: isolate;
}
.section-testimonial::after{ content: none; }
.testimonial-intro{
    text-align: center;
    max-width: 840px;
    margin: 0 auto 56px;
    position: relative;
    z-index: 2;
}
.testimonial-eyebrow{
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 11px;
    line-height: 16px;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: var(--ts-accent);
    background: linear-gradient(135deg, var(--ts-accent-soft) 0%, rgba(85, 41, 142, .06) 100%);
    border: 1px solid var(--ts-accent-border);
    padding: 7px 16px;
    border-radius: 50px;
    margin: 0 0 22px;
}
.testimonial-eyebrow .te-dot{
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--ts-accent) 0%, var(--ts-accent-secondary) 100%);
    box-shadow: 0 0 0 3px rgba(14, 72, 165, .12);
}
.section-testimonial h2{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 44px;
    line-height: 54px;
    text-align: center;
    color: var(--cool-101828, #101828);
    margin: 0 0 18px;
    letter-spacing: -.6px;
}
.section-testimonial h2 .th-accent{
    background: linear-gradient(135deg,
        var(--ts-accent) 0%,
        var(--ts-accent-secondary) 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    font-style: italic;
}
.section-testimonial .section-sub{
    font-family: 'inter', serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 28px;
    color: #4a5568;
    text-align: center;
    max-width: 640px;
    margin: 0 auto;
}

/* Outer testimonial card — premium floating glass surface with
   multi-layer brand-tinted shadow + bright white inset highlight.
   Gentle idle Y-float so it feels alive, and a subtle cursor parallax
   driven by --mx / --my (set by the JS handler attached to this card). */
.testimonial-card{
    position: relative;
    z-index: 2;
    background: rgba(255, 255, 255, .98);
    border: 1px solid rgba(255, 255, 255, .9);
    border-radius: 28px;
    padding: 56px 56px 52px;
    width: 100%;
    margin: 0 auto;
    display: flex;
    flex-direction: column;
    gap: 44px;
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .05),
        0 32px 64px -28px var(--ts-accent-glow-a),
        0 18px 36px -22px var(--ts-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .7);
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
    will-change: translate, transform, box-shadow;
    transform: translate3d(
        calc(var(--mx, 0) * 6px),
        calc(var(--my, 0) * 4px),
        0
    );
    animation: testimonialCardIdle 8s ease-in-out 1.5s infinite alternate;
    transition:
        transform .55s cubic-bezier(.22, .61, .36, 1),
        box-shadow .5s cubic-bezier(.22, .61, .36, 1),
        border-color .4s ease;
}
@keyframes testimonialCardIdle{
    0%   { translate: 0 -3px; }
    100% { translate: 0  3px; }
}
.testimonial-card:hover{
    border-color: var(--ts-accent-border);
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .06),
        0 40px 80px -28px var(--ts-accent-glow-a),
        0 22px 44px -22px var(--ts-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .85);
}

/* ── Tabs row — chip cards mirroring the pricing .psb hover language ── */
.testimonial-tabs{
    display: flex;
    gap: 12px;
    align-items: stretch;
    justify-content: flex-start;
    width: 100%;
    flex-wrap: wrap;
}
.testimonial-tab{
    background: rgba(255, 255, 255, .94);
    border: 1px solid rgba(228, 232, 243, .85);
    border-radius: 14px;
    padding: 12px 16px;
    cursor: pointer;
    text-align: left;
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 240px;
    flex: 0 1 auto;
    position: relative;
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        0 6px 16px -10px var(--ts-accent-glow-a);
    --tt-hover-lift: 0px;
    transform: translate3d(0, var(--tt-hover-lift), 0);
    transition:
        transform .5s cubic-bezier(.22, .61, .36, 1),
        scale .4s cubic-bezier(.22, .61, .36, 1),
        box-shadow .45s cubic-bezier(.22, .61, .36, 1),
        background .4s ease,
        border-color .4s ease,
        color .35s ease;
}
.testimonial-tab .tt-name{
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 14px;
    line-height: 20px;
    color: var(--cool-101828, #101828);
    white-space: nowrap;
    transition: color .35s ease;
}
.testimonial-tab .tt-role{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 12px;
    line-height: 16px;
    color: #4a5568;
    white-space: nowrap;
}
.testimonial-tab:hover:not(.is-active){
    --tt-hover-lift: -3px;
    scale: 1.02;
    border-color: var(--ts-accent-border);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .05),
        0 14px 28px -12px var(--ts-accent-glow-a),
        0 6px 14px -8px var(--ts-accent-glow-b);
}
.testimonial-tab.is-active{
    backg round: var(--ts-accent-soft);
    border-color: var(--ts-accent-border);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .05),
        0 18px 36px -14px var(--ts-accent-glow-a),
        0 8px 18px -8px var(--ts-accent-glow-b),
        inset 0 1px 0 rgba(255, 255, 255, .9);
}
.testimonial-tab.is-active .tt-name{
    color: var(--ts-accent);
    font-weight: 600;
}

/* ── Quote body — editorial Space Grotesk text, brand-gradient quote mark ── */
.testimonial-body{
    display: flex;
    gap: 36px;
    align-items: flex-start;
    width: 100%;
    transition:
        opacity .4s ease,
        transform .5s cubic-bezier(.22, .61, .36, 1);
}
.testimonial-card.is-swapping .testimonial-body{
    opacity: 0;
    transform: translateY(8px);
}
.testimonial-body .quote-mark{
    flex: 0 0 80px;
    width: 80px;
    height: 80px;
    color: var(--ts-accent);
    opacity: .35;
    /* Brand-gradient via mask so the SVG fill becomes a gradient */
    background: linear-gradient(135deg, var(--ts-accent) 0%, var(--ts-accent-secondary) 100%);
    -webkit-mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80'><path d='M22 12c-7.2 0-13 5.8-13 13 0 7.2 5.8 13 13 13 1.4 0 2.7-.2 4-.6-1.5 6.2-6 11.4-12.2 13.6L18 60c12-3 21-13.4 21-26V25c0-7.2-5.8-13-13-13h-4zm32 0c-7.2 0-13 5.8-13 13 0 7.2 5.8 13 13 13 1.4 0 2.7-.2 4-.6-1.5 6.2-6 11.4-12.2 13.6L50 60c12-3 21-13.4 21-26V25c0-7.2-5.8-13-13-13h-4z' fill='black'/></svg>");
            mask-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 80 80'><path d='M22 12c-7.2 0-13 5.8-13 13 0 7.2 5.8 13 13 13 1.4 0 2.7-.2 4-.6-1.5 6.2-6 11.4-12.2 13.6L18 60c12-3 21-13.4 21-26V25c0-7.2-5.8-13-13-13h-4zm32 0c-7.2 0-13 5.8-13 13 0 7.2 5.8 13 13 13 1.4 0 2.7-.2 4-.6-1.5 6.2-6 11.4-12.2 13.6L50 60c12-3 21-13.4 21-26V25c0-7.2-5.8-13-13-13h-4z' fill='black'/></svg>");
    -webkit-mask-size: contain;
            mask-size: contain;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    opacity: .85;
}
.testimonial-body .quote-mark svg{ display: none; }
.testimonial-body .quote-content{
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 28px;
}
.testimonial-body .quote-text{
    font-family: 'inter', serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 36px;
    color: var(--cool-101828, #101828);
    margin: 0;
    letter-spacing: -.2px;
    white-space: pre-wrap;
	font-style: italic;
}
.testimonial-body .quote-meta{
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.testimonial-body .quote-stars{
    display: inline-flex;
    align-items: center;
    gap: 2px;
    height: 14px;
    margin-bottom: 8px;
}
.testimonial-body .quote-stars svg{
    width: 14px;
    height: 14px;
    color: var(--ts-accent);
    filter: drop-shadow(0 1px 2px var(--ts-accent-glow-a));
}
.testimonial-body .quote-name{
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 24px;
    color: var(--cool-101828, #101828);
    margin: 0;
}
.testimonial-body .quote-role{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13.5px;
    line-height: 22px;
    color: #4a5568;
    margin: 0;
}

/* ===========================================================
 * Section: Trust / Before You Decide / CTA  (Figma 994:29874)
 * ----------------------------------------------------------- */
/* Page finale wrapper — reproduces Figma Rectangle 1265 (node 994:29996)
   EXACTLY: a tall violet→navy linear gradient rectangle with
   `filter: blur(100px)` that physically extends ABOVE the page-finale
   into the testimonial's transparent bottom zone. The heavy blur
   diffuses the rectangle's top edge softly across the section
   boundary, so the transition from white → violet → navy reads as one
   continuous Gaussian wash with zero separation line. */
.page-finale{
    position: relative;
    z-index: 2;
    /* No solid bg — the blurred ::before is the sole gradient paint
       across the section so there's no "solid-vs-blurred" color
       mismatch at the testimonial boundary. Body's dark navy bg sits
       behind it as a fallback, fully obscured by ::before. */
    background: transparent;
    overflow: visible;
    isolation: isolate;
}
.page-finale::before{
    content: "";
    position: absolute;
    /* Stays within page-finale's width — blur diffuses ~100px outward,
       which the body's overflow-x: hidden clips harmlessly. */
    left: 0;
    right: 0;
    /* Extends UP further into the testimonial's transparent zone so
       the ::before's own top blur-edge is well above where it becomes
       visible — by the time the testimonial reveals it, the gradient
       is at fully-saturated solid violet, no top-edge softening. */
    top: -400px;
    /* Stops at page-finale's bottom — no off-screen extension below
       (the gradient is already at solid #051A3C here, so the blur edge
       blends invisibly into the body's dark navy bg). Saves 240px of
       extra scroll height at the bottom of the page. */
    bottom: 0;
    /* Exact Figma stops (Rectangle 1265, node 994:29996) */
    background: linear-gradient(179deg,
        #55298E 0%,
        #55298E 16.14%,
        #031430 58.228%,
        #051A3C 78.04%,
        #051A3C 100%);
    /* Heavy Gaussian blur — matches Figma's filter: blur(100px). */
    filter: blur(100px);
    pointer-events: none;
    z-index: 0;
}

.section-trust{
    position: relative;
    background: transparent;
    color: var(--Base-White, #fcfcfc);
    padding: 80px 0 64px;
    overflow: hidden;
    z-index: 2;
}
.section-trust .container{ position: relative; z-index: 2; }
.trust-row{
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 56px;
    align-items: center;
    padding-bottom: 56px;
    border-bottom: 1px solid rgba(159, 186, 228, .15);
}
.trust-row h2{
    /* Canonical sitewide H2 — Space Grotesk 300 / 44px / 54px / -0.6px tracking.
       Alignment stays left here because this H2 sits in a 2-column grid
       beside the compliance badges, not a centered heading layout. */
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 44px;
    line-height: 54px;
    letter-spacing: -.6px;
    color: var(--Base-White, #fcfcfc);
    margin: 0;
}
.trust-badges{
    display: flex;
    gap: 28px;
    align-items: center;
}
.trust-badges img{
    width: 140px;
    height: 140px;
    object-fit: contain;
    display: block;
}
.before-decide{
    display: grid;
    /* Intro stays compact on the left; FAQ takes whatever remains of
       the container width. Drops the previous 370+590 fixed-width
       cluster so the whole row spans the full container. */
    grid-template-columns: minmax(280px, 380px) 1fr;
    gap: 64px;
    padding: 56px 0 0;
    border-bottom: none;
    align-items: start;
}
.before-decide .bd-intro{
    display: flex;
    flex-direction: column;
    gap: 28px;
}
.before-decide h3{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 500;
    font-size: 28px;
    line-height: 36px;
    letter-spacing: -0.3px;
    color: var(--Base-White, #fcfcfc);
    margin: 0;
}
.before-decide .lead{
    color: var(--Map-Grey, #eaeaea);
    font-size: 15px;
    line-height: 26px;
    margin: 0;
}

/* FAQ accordion (right column) */
.bd-faq{
    width: 100%;
}
.bd-faq .faq-item{
    border-top: 1px solid rgba(251, 251, 251, .22);
    padding: 24px 0;
}
.bd-faq .faq-item:last-child{
    border-bottom: 1px solid rgba(251, 251, 251, .22);
}
.bd-faq .faq-q{
    display: flex;
    gap: 31px;
    align-items: flex-start;
    cursor: pointer;
    background: none;
    border: none;
    padding: 0;
    width: 100%;
    text-align: left;
}
.bd-faq .faq-num{
    flex: 0 0 32px;
    width: 32px;
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 26px;
    color: var(--Base-White, #fcfcfc);
}
.bd-faq .faq-text{
    flex: 1;
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 25px;
    color: var(--Grey-Grey-100, #fbfbfb);
}
.bd-faq .faq-toggle{
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    margin-top: 4px;
    position: relative;
    transition: transform .25s ease;
    color: var(--Base-White, #fcfcfc);
}
.bd-faq .faq-toggle::before,
.bd-faq .faq-toggle::after{
    content: "";
    position: absolute;
    background: currentColor;
    border-radius: 2px;
}
.bd-faq .faq-toggle::before{ /* horizontal bar */
    top: 50%;
    left: 0;
    width: 16px;
    height: 2px;
    transform: translateY(-50%);
}
.bd-faq .faq-toggle::after{ /* vertical bar */
    left: 50%;
    top: 0;
    width: 2px;
    height: 16px;
    transform: translateX(-50%);
    transition: opacity .25s ease;
}
.bd-faq .faq-item.is-open .faq-toggle::after{ opacity: 0; }
.bd-faq .faq-answer{
    max-height: 0;
    overflow: hidden;
    transition: max-height .35s ease, padding .35s ease, opacity .3s ease;
    opacity: 0;
    padding-left: 63px;
}
.bd-faq .faq-item.is-open .faq-answer{
    max-height: 320px;
    opacity: 1;
    padding-top: 16px;
}
.bd-faq .faq-answer p{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 15px;
    line-height: 26px;
    color: var(--Map-Grey, #eaeaea);
    margin: 0;
}
/* ===========================================================
 * Section: Footer (now contains the "Got more questions?" banner)
 * ----------------------------------------------------------- */
.site-footer{
    background: transparent;
    color: var(--Base-White, #fcfcfc);
    padding: 72px 0 32px;
    position: relative;
    z-index: 2;
}

/* Footer CTA banner — premium glass panel with brand-tinted background,
   pale brand-blue border, soft violet halo behind, and a sparkle eyebrow.
   Was washing out at 18-22% opacity against the navy footer; bumped to
   richer brand gradient + brighter border + radial halo glow so the
   panel clearly reads as a CTA without competing with the body copy. */
.footer-cta{
    position: relative;
    isolation: isolate;
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 32px;
    padding: 36px 44px;
    border-radius: 22px;
    background:
        linear-gradient(135deg,
            rgba(85, 41, 142, .42) 0%,
            rgba(14, 72, 165, .36) 50%,
            rgba(28, 169, 201, .26) 100%);
    border: 1px solid rgba(159, 186, 228, .35);
    box-shadow:
        0 1px 2px rgba(0, 0, 0, .25),
        0 24px 56px -22px rgba(85, 41, 142, .55),
        0 8px 24px -10px rgba(28, 169, 201, .25),
        inset 0 1px 0 rgba(255, 255, 255, .14),
        inset 0 0 0 1px rgba(255, 255, 255, .04);
    -webkit-backdrop-filter: blur(14px);
            backdrop-filter: blur(14px);
    margin-bottom: 64px;
    overflow: hidden;
    transition:
        transform .35s cubic-bezier(.22, .61, .36, 1),
        border-color .35s ease,
        box-shadow .45s ease;
}
/* Decorative soft halo — large radial gradient that bleeds violet light
   into the bottom-left corner. Pure decoration; pointer-events off. */
.footer-cta-halo{
    position: absolute;
    z-index: -1;
    inset: -40% -10% -10% -10%;
    background:
        radial-gradient(ellipse 55% 70% at 20% 80%, rgba(119, 71, 182, .35) 0%, transparent 60%),
        radial-gradient(ellipse 50% 65% at 85% 25%, rgba(28, 169, 201, .22) 0%, transparent 60%);
    filter: blur(20px);
    pointer-events: none;
    opacity: .9;
    transition: opacity .45s ease;
}
/* Subtle moving shimmer along the top edge — animates 10s, very gentle */
.footer-cta::before{
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: linear-gradient(105deg,
        transparent 30%,
        rgba(255, 255, 255, .06) 50%,
        transparent 70%);
    background-size: 220% 100%;
    background-position: 0% 0%;
    pointer-events: none;
    animation: footerCtaShimmer 11s ease-in-out infinite;
    z-index: 0;
}
@keyframes footerCtaShimmer{
    0%, 100% { background-position: -120% 0%; opacity: .6; }
    50%      { background-position: 120% 0%; opacity: 1; }
}
.footer-cta:hover{
    transform: translateY(-2px);
    border-color: rgba(159, 186, 228, .55);
    box-shadow:
        0 1px 2px rgba(0, 0, 0, .28),
        0 32px 68px -22px rgba(85, 41, 142, .68),
        0 12px 30px -10px rgba(28, 169, 201, .32),
        inset 0 1px 0 rgba(255, 255, 255, .2),
        inset 0 0 0 1px rgba(255, 255, 255, .06);
}
.footer-cta:hover .footer-cta-halo{ opacity: 1; }
.footer-cta-text{
    flex: 1 1 auto;
    min-width: 280px;
    position: relative;
    z-index: 1;
}
/* Eyebrow chip — sparkle + label, sets visual hierarchy and signals "this
   is a CTA, not body copy" before the heading even reads. */
.footer-cta-eyebrow{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 12px 4px 10px;
    margin-bottom: 12px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .08);
    border: 1px solid rgba(159, 186, 228, .28);
    color: #cfe2ff;
    font-family: 'Inter', sans-serif;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .35px;
    text-transform: uppercase;
    -webkit-backdrop-filter: blur(8px);
            backdrop-filter: blur(8px);
}
.footer-cta-eyebrow svg{
    color: var(--Turquoise-SkyBlue-500, #1ca9c9);
    animation: footerCtaSparkle 3.6s linear infinite;
}
@keyframes footerCtaSparkle{
    0%, 100% { transform: rotate(0); opacity: 1; }
    50%      { transform: rotate(180deg); opacity: .7; }
}
.footer-cta-text h3{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 500;
    font-size: 28px;
    line-height: 36px;
    color: #ffffff;
    margin: 0 0 8px;
    letter-spacing: -0.3px;
    /* Tiny shadow lifts the white off the busy backdrop without looking heavy */
    text-shadow: 0 2px 12px rgba(0, 0, 0, .25);
}
.footer-cta-text p{
    color: rgba(255, 255, 255, .86);
    font-size: 15px;
    line-height: 24px;
    margin: 0;
    max-wi dth: 560px;
}
/* The Get-in-Touch CTA inside the banner sits above all decorative layers */
.footer-cta .footer-cta-button{ position: relative; z-index: 1; }

@media (prefers-reduced-motion: reduce){
    .footer-cta::before{ animation: none; opacity: .4; }
    .footer-cta-eyebrow svg{ animation: none; }
    .footer-cta:hover{ transform: none; }
}
.footer-cta-button{
    display: inline-flex;
    align-items: center;
    gap: 8px;
    background: var(--Base-White, #fcfcfc);
    color: var(--Royal-Blue-Blue-700, #0a2d68);
    padding: 12px 22px;
    border-radius: 50px;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 14.5px;
    line-height: 20px;
    border: 1px solid transparent;
    text-decoration: none;
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .12),
        0 10px 24px -10px rgba(14, 72, 165, .45);
    transition:
        transform .35s cubic-bezier(.22, .61, .36, 1),
        box-shadow .4s ease,
        background .35s ease,
        color .35s ease;
    white-space: nowrap;
}
.footer-cta-button svg{ transition: transform .35s cubic-bezier(.22, .61, .36, 1); }
.footer-cta-button:hover{
    transform: translateY(-2px);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .14),
        0 16px 30px -10px rgba(14, 72, 165, .55);
}
.footer-cta-button:hover svg{ transform: translateX(3px); }

.site-footer .footer-nav{
    display: grid;
    grid-template-columns: 1.3fr repeat(5, 1fr);
    gap: 40px;
    padding-top: 56px;
    border-top: 1px solid rgba(159, 186, 228, .12);
}
.brand-col .brand-logo{
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 28px;
}
.brand-col .brand-logo-img{
    height: 32px;
    width: auto;
    display: block;
}
.brand-col .gptw-badge{
    height: 48px;
    width: auto;
    display: block;
}
.ask-ai-box{
    background: rgba(252, 252, 252, .04);
    border: 1px solid rgba(159, 186, 228, .15);
    border-radius: 12px;
    padding: 18px;
    margin-bottom: 28px;
    max-width: 220px;
}
.ask-ai-box .ask-ai-label{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 18px;
    line-height: 26px;
    color: var(--Base-White, #fcfcfc);
    margin-bottom: 14px;
}
.ask-ai-icons{ display: flex; gap: 8px; }
.ask-ai-icons a{
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .05);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(159, 186, 228, .12);
    transition: background .25s ease;
}
.ask-ai-icons a:hover{ background: rgba(255, 255, 255, .1); }
.follow-us-label{
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .12em;
    color: rgba(252, 252, 252, .6);
    margin: 0 0 14px;
}
.social-list{ display: flex; gap: 10px; }
.social-list a{
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .05);
    border: 1px solid rgba(159, 186, 228, .12);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: var(--Base-White, #fcfcfc);
    transition: background .25s ease;
}
.social-list a:hover{ background: var(--Royal-Blue-Blue-500, #0e48a5); }
.footer-col h4{
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 16px;
    color: var(--SkyBlue-SkyBlue-500, #12b6f8);
    margin: 0 0 16px;
    padding-bottom: 12px;
    border-bottom: 1px solid rgba(159, 186, 228, .12);
}
.footer-col h4.col-spaced{ margin-top: 32px; }
.footer-col ul li{ margin-bottom: 10px; }
.footer-col ul li a{
    color: var(--Base-White, #fcfcfc);
    font-size: 14px;
    line-height: 20px;
    transition: color .2s ease;
}
.footer-col ul li a:hover{ color: var(--SkyBlue-SkyBlue-500, #12b6f8); }
.copyright{
    margin-top: 32px;
    padding-top: 20px;
    border-top: 1px solid rgba(159, 186, 228, .12);
    display: flex;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 16px;
    align-items: center;
}
.copyright p{
    color: rgba(252, 252, 252, .7);
    font-size: 14px;
}
.legal-links{ display: flex; gap: 26px; }
.legal-links a{
    color: rgba(252, 252, 252, .7);
    font-size: 14px;
}
.legal-links a:hover{ color: var(--SkyBlue-SkyBlue-500, #12b6f8); }

/* ===========================================================
 * Responsive
 * ----------------------------------------------------------- */
@media (max-width: 1199px){
    .site-footer .footer-nav{ grid-template-columns: 1fr repeat(3, 1fr); row-gap: 48px; }
    .brand-col{ grid-column: 1 / -1; }
    .product-stage{ gap: 40px; }
}
@media (max-width: 991px){
    /* Wrap instead of hiding — keeps the full promo message + Register
       Now link visible on every width (matches index.html's pattern).
       Doubled-class + !important: this bundle has an unconditional
       .hello-bar{ padding: 1px !important } rule (for the transparent
       hero header) that a plain selector here can't beat regardless of
       source order — matching final-home-bundle.css's fix. */
    .hello-bar.hello-bar{ padding: 18px 24px 20px !important; flex-wrap: wrap; row-gap: 12px; }
    .hello-bar .hello-left{ flex-wrap: wrap; row-gap: 12px; }
    .hello-bar .hello-badge.hello-badge{ font-size: 10px !important; padding: 3px 8px !important; }
    .hello-bar .hello-msg-group{ flex-wrap: wrap; row-gap: 6px; }
    .hello-bar .hello-message{ white-space: normal; }
    /* Reachable inside the mobile-nav-panel instead, as a plain nav item. */
    .hello-bar .hello-login{ display: none; }
    .site-header{ padding: 14px 24px; height: auto; }
    .site-header .nav-links{ display: none; }
    .site-header .btn-demo{ display: none; }
    /* Still reachable as a full-width CTA inside the mobile-nav-panel —
       just decluttering the header row itself (matches index.html). */
    .site-header .btn-start.btn-primary{ display: none; }
    .hero-section{ padding: 70px 0 90px; min-height: auto; }
    .hero-section h1{ font-size: 44px; line-height: 54px; }
    .hero-section .hero-sub{ font-size: 17px; line-height: 26px; }
    .hero-search-wrap{ width: 100%; }
    .hero-search-inner{ min-height: auto; gap: 14px; }
    .hero-search-footer{ flex-direction: column; gap: 12px; align-items: flex-start; }
    /* Un-pin the product section on tablet/mobile — a 100vh pin would clip stacked content */
    .section-products{ height: auto; }
    .products-intro{ margin-bottom: 28px; }
    .products-sticky{ position: static; height: auto; min-height: 0; padding: 64px 0; overflow: visible; }
    .product-progress{ display: none; }
    .product-stage{ grid-template-columns: 1fr; gap: 40px; min-height: 0; }
    .product-detail{ padding: 0; }
    .product-detail h3{ font-size: 24px; line-height: 32px; }
    .trusted-section h3{ font-size: 19px; line-height: 28px; }
    .products-head{ margin-bottom: 40px; }
    .feature-grid,
    .story-grid{ grid-template-columns: 1fr; }
    .persona-explorer{ grid-template-columns: 1fr; gap: 48px; }
    .pex-stage{ min-height: 380px; aspect-ratio: auto; }
    .pex-text h3{ font-size: 24px; line-height: 32px; }
    .px-tab{ font-size: 12.5px; padding: 7px 14px; }
    .personas-intro{ margin-bottom: 56px; }
    .pricing-switcher{ flex-wrap: wrap; margin-bottom: 48px; }
    .ps-pill{ padding: 10px 18px 10px 12px; gap: 10px; }
    .ps-name{ font-size: 14px; }
    .ps-caption{ font-size: 11px; }
    /* Showcase stacks vertically on tablet. No panel, no divider. */
    .pricing-showcase{
        grid-template-columns: 1fr;
        row-gap: 36px;
        column-gap: 0;
        padding: 0;
    }
    .ps-flow{ display: none; }
    .ps-left{ padding: 30px 28px 28px; border-radius: 20px; }
    .ps-right{ padding: 0; }
    .ps-title{ font-size: 26px; line-height: 36px; }
    .pricing-intro{ margin-bottom: 56px; }
    /* Unified tablet H2 sizing for every section, matching the canonical
       site-wide H2 scale (44px desktop → 34px tablet → 26px mobile). */
    .trusted-section h2,
    .products-intro .products-title,
    .section-features h2,
    .section-personas h2,
    .section-pricing h2,
    .section-success h2,
    .section-testimonial h2,
    .trust-row h2{ font-size: 34px; line-height: 44px; }
    .success-intro,
    .testimonial-intro,
    .features-intro{ margin-bottom: 44px; }
    .features-track{ gap: 18px; animation-duration: 72s; }
    .stories-carousel{ grid-template-columns: 40px 1fr 40px; gap: 20px; }
    .story-card{ flex: 0 0 320px; width: 320px; }
    .testimonial-card{ padding: 44px 36px 40px; border-radius: 22px; }
    .testimonial-body{ flex-direction: column; gap: 24px; }
    .testimonial-body .quote-mark{ flex: 0 0 56px; width: 56px; height: 56px; }
    .testimonial-body .quote-text{ font-size: 15px; line-height: 32px; }
    .trust-row{ grid-template-columns: 1fr; text-align: center; }
    .trust-badges{ justify-content: center; }
    .before-decide{ grid-template-columns: 1fr; gap: 32px; }
    .before-decide ul{ grid-template-columns: 1fr; }
    .site-footer .footer-nav{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 575px){
    .container{ padding: 0 20px; }
    .hello-bar.hello-bar{ padding: 18px 20px 20px !important; gap: 12px; row-gap: 12px; }
    .hello-bar .hello-consult{ display: none; }
    .site-header{ padding: 12px 20px; }
    .site-header .brand-mark .brand-word{ font-size: 15px; }
    .hero-section h1{ font-size: 34px; line-height: 44px; }
    .hero-section .hero-sub{ font-size: 15px; line-height: 24px; }
    .trusted-section h2,
    .section-products h2,
    .products-intro .products-title,
    .section-features h2,
    .section-personas h2,
    .section-pricing h2,
    .section-success h2,
    .section-testimonial h2,
    .trust-row h2{ font-size: 26px; line-height: 36px; }
    .before-decide h3,
    .footer-cta-text h3,
    .trusted-section h3{ font-size: 20px; line-height: 28px; }
    .product-detail h3{ font-size: 20px; line-height: 28px; }
    .product-tab{ font-size: 13px; padding: 8px 14px; }
    .pex-stage{ min-height: 360px; aspect-ratio: auto; }
    .pex-text h3{ font-size: 20px; line-height: 28px; }
    .scene-card{ padding: 14px 16px; border-radius: 14px; }
    .scene-card.sc-1{ width: 72%; }
    .scene-card.sc-2{ width: 60%; }
    .scene-card.sc-3{ width: 70%; }
    /* On tiny screens, the 1×4 KPI row gets too cramped — fall back to 2×2 */
    .sc-grid{ grid-template-columns: 1fr 1fr; gap: 8px; }
    .sc-num{ font-size: 24px; }
    .sc-metric-num{ font-size: 32px; }
    .sc-spark{ height: 44px; }
    /* Pricing — mobile compaction */
    /* Pricing — mobile compaction */
    .pricing-switcher{ width: 100%; padding: 5px; }
    .ps-pill{ flex: 1; justify-content: center; padding: 10px 12px; }
    .pricing-showcase{ padding: 0; }
    .ps-left{ padding: 24px 22px 22px; border-radius: 18px; }
    .ps-title{ font-size: 22px; line-height: 32px; }
    .psr-title{ font-size: 19px; line-height: 28px; }
    .psr-stat-num{ font-size: 32px; }
    .psr-stat-num small{ font-size: 20px; }
    .psr-stat{ gap: 12px; }
    .ps-cta{ width: 100%; justify-content: center; }
    .psr-stage{ padding: 6px 4px 10px; margin-top: 16px; }
    /* Success Stories — mobile compaction */
    .success-intro,
    .testimonial-intro,
    .features-intro{ margin-bottom: 32px; }
    .features-track{ gap: 14px; animation-duration: 80s; }
    .features-marquee{ padding: 12px 12px 22px; margin: 0 -12px; }
    .stories-carousel{ grid-template-columns: 36px 1fr 36px; gap: 12px; }
    .stories-arrow{ width: 36px; height: 36px; }
    .story-card{ flex: 0 0 280px; width: 280px; border-radius: 16px; }
    .story-card .story-image{ height: 168px; }
    .story-card .story-body{ padding: 18px; }
    .story-card .story-title{ font-size: 16px; line-height: 24px; }
    .testimonial-card{ padding: 32px 24px 28px; border-radius: 18px; gap: 32px; }
    .testimonial-tab{ min-width: 100%; }
    .testimonial-body .quote-text{ font-size: 15px; line-height: 28px; }
    .testimonial-body .quote-mark{ flex: 0 0 48px; width: 48px; height: 48px; }
    .footer-cta{ flex-direction: column; align-items: flex-start; padding: 28px; margin-bottom: 48px; }
    .footer-cta-button{ width: 100%; justify-content: center; }
    .site-footer .footer-nav{ padding-top: 48px; }
    .site-footer .footer-nav{ grid-template-columns: 1fr; }
    .copyright{ flex-direction: column; align-items: flex-start; }
    .legal-links{ flex-wrap: wrap; gap: 16px; }
}

/* ===================================================================
   EXPLORE OVERLAY — "Click to explore" → Ask Me demo
   Mirrors the Figma prototype (node 801:13966): 10-scene storyboard
   showing the simulated Ask Me AI workflow, ending in a free-message
   paywall + signup modal.

   Layout: full-viewport fixed overlay → 240px sidebar + flexible main
   pane → top bar / scrollable canvas / composer. Brand palette
   (royal blue → violet → turquoise) used for accents; backgrounds are
   the same dark navy stack used in the page-finale / Trusted band.
   =================================================================== */
.explore-overlay{
    position: fixed; inset: 0;
    z-index: 9000;
    background: #0B1124;
    opacity: 0;
    visibility: hidden;
    transition: opacity .35s cubic-bezier(.22,.61,.36,1), visibility 0s linear .35s;
    color: #e2e8f0;
    font-family: 'Inter', system-ui, sans-serif;
}
.explore-overlay.is-open{
    opacity: 1; visibility: visible;
    transition: opacity .35s cubic-bezier(.22,.61,.36,1), visibility 0s;
}
body.explore-locked{ overflow: hidden; }

.explore-shell{
    position: relative;
    width: 100%; height: 100%;
    display: grid;
    grid-template-columns: 240px 1fr;
    background:
        radial-gradient(ellipse at 18% 0%, rgba(85,41,142,.22) 0%, transparent 55%),
        radial-gradient(ellipse at 100% 100%, rgba(14,72,165,.18) 0%, transparent 60%),
        linear-gradient(180deg, #0B1124 0%, #0A0F22 100%);
}

/* ---------- Sidebar ---------- */
.ex-sidebar{
    position: relative;
    border-right: 1px solid rgba(255,255,255,.06);
    padding: 18px 12px;
    display: flex; flex-direction: column; gap: 24px;
}
.ex-sidebar-top{
    display: flex; align-items: center; justify-content: space-between;
    padding: 4px 6px;
}
.ex-brand{
    display: inline-flex; align-items: center; gap: 6px;
    font-weight: 700; letter-spacing: 1.5px; font-size: 12px;
}
.ex-brand-mark{
    width: 22px; height: 22px; display: grid; place-items: center;
    border-radius: 5px;
    background: linear-gradient(135deg, #7747B6, #4075C9 55%, #1CA9C9);
    color: #fff; font-weight: 800; font-size: 13px;
}
.ex-brand-text{ color: #cbd5e1; font-weight: 600; }
.ex-sidebar-collapse{
    width: 26px; height: 26px;
    background: transparent; border: 0; color: #94a3b8; cursor: pointer;
    border-radius: 6px;
}
.ex-sidebar-collapse:hover{ background: rgba(255,255,255,.04); color: #e2e8f0; }
.ex-nav{ display: flex; flex-direction: column; gap: 4px; }
.ex-nav-item{
    display: inline-flex; align-items: center; gap: 10px;
    padding: 8px 10px;
    background: transparent; border: 0;
    color: #cbd5e1; font-size: 13px; text-align: left; cursor: pointer;
    border-radius: 8px;
    transition: background .18s, color .18s;
}
.ex-nav-item:hover{ background: rgba(255,255,255,.04); color: #fff; }
.ex-nav-item.is-active{
    background: rgba(64,117,201,.16);
    color: #fff;
    box-shadow: inset 0 0 0 1px rgba(64,117,201,.32);
}

/* ---------- Main pane ---------- */
.ex-main{
    display: grid;
    grid-template-rows: 56px 1fr auto;
    min-height: 0;
    position: relative;
}
.ex-topbar{
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 24px;
    border-bottom: 1px solid rgba(255,255,255,.05);
    background: rgba(11,17,36,.4);
    backdrop-filter: blur(8px);
}
.ex-back{
    display: inline-flex; align-items: center; gap: 8px;
    padding: 6px 12px;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.08);
    color: #cbd5e1; font-size: 13px;
    border-radius: 999px; cursor: pointer;
    transition: background .18s, color .18s, transform .18s;
}
.ex-back:hover{ background: rgba(255,255,255,.08); color: #fff; transform: translateX(-2px); }
.ex-top-actions{ display: inline-flex; gap: 8px; }
.ex-top-btn{
    padding: 7px 14px;
    border-radius: 999px;
    font-size: 13px; font-weight: 500; cursor: pointer;
    transition: transform .18s, box-shadow .18s, background .18s;
    border: 1px solid transparent;
}
.ex-signin{
    background: transparent; color: #e2e8f0;
    border-color: rgba(255,255,255,.14);
}
.ex-signin:hover{ background: rgba(255,255,255,.06); }
.ex-signup{
    background: linear-gradient(90deg, #4075C9 0%, #1CA9C9 100%);
    color: #fff; font-weight: 600;
    box-shadow: 0 6px 18px -8px rgba(28,169,201,.55);
}
.ex-signup:hover{ transform: translateY(-1px); box-shadow: 0 10px 22px -8px rgba(28,169,201,.7); }

/* ---------- Chat canvas ---------- */
.ex-canvas{
    overflow-y: auto;
    padding: 28px 0 16px;
    scroll-behavior: smooth;
}
.ex-stream{
    max-width: 880px;
    margin: 0 auto;
    padding: 0 24px;
    display: flex; flex-direction: column; gap: 18px;
}

/* Row + bubble */
.ex-row{ display: flex; }
.ex-row--user{ justify-content: flex-end; }
.ex-row--ai{ justify-content: flex-start; }
.ex-bubble{
    max-width: 70%;
    padding: 14px 16px;
    border-radius: 14px;
    font-size: 14px; line-height: 1.55;
    color: #e6edf7;
}
.ex-bubble--user{
    background: rgba(64,117,201,.18);
    border: 1px solid rgba(64,117,201,.32);
    border-bottom-right-radius: 4px;
}
.ex-bubble--small{ font-size: 13px; padding: 10px 14px; }
.ex-source-chip{
    display: inline-flex; align-items: center; gap: 6px;
    padding: 4px 8px 4px 4px;
    margin-bottom: 8px;
    background: rgba(34,197,94,.14);
    border: 1px solid rgba(34,197,94,.22);
    border-radius: 999px;
    font-size: 11px; color: #86efac; font-weight: 600;
}
.ex-source-chip svg{ width: 12px; height: 12px; padding: 2px; background: rgba(34,197,94,.18); border-radius: 50%; }
.ex-source-x{ color: #86efac; opacity: .7; font-weight: 400; }
.ex-bubble-text{ color: #f1f5f9; }

/* Processing pill */
.ex-process{
    display: inline-flex; align-items: center; gap: 10px;
    padding: 10px 14px;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 10px;
    font-size: 13px; color: #cbd5e1;
}
.ex-process--inline{ background: transparent; border: 0; padding: 4px 0; color: #94a3b8; font-size: 13px; }
.ex-spark{
    display: inline-grid; place-items: center;
    width: 22px; height: 22px;
    color: #1CA9C9;
    animation: exSparkSpin 3.6s linear infinite;
}
.ex-process-dots{ display: inline-flex; gap: 3px; }
.ex-process-dots i{
    width: 4px; height: 4px; border-radius: 50%;
    background: #64748b;
    animation: exDot 1.2s ease-in-out infinite;
}
.ex-process-dots i:nth-child(2){ animation-delay: .15s; }
.ex-process-dots i:nth-child(3){ animation-delay: .30s; }
.ex-process-chev{ color: #64748b; }
@keyframes exSparkSpin{ from { transform: rotate(0); } to { transform: rotate(360deg); } }
@keyframes exDot{
    0%, 100% { opacity: .35; transform: scale(.85); }
    50% { opacity: 1; transform: scale(1.1); background: #1CA9C9; }
}

/* AI cards */
.ex-card{
    width: 100%;
    max-width: 100%;
    padding: 18px 20px;
    background: rgba(255,255,255,.025);
    border: 1px solid rgba(255,255,255,.06);
    border-radius: 14px;
    font-size: 14px; line-height: 1.6; color: #cbd5e1;
}
.ex-card-title{
    margin: 0 0 8px;
    font-size: 15px; color: #fff; font-weight: 600;
    display: flex; align-items: baseline; gap: 8px;
}
.ex-card-title--mt{ margin-top: 20px; }
.ex-card-meta{ font-size: 12px; font-weight: 400; color: #94a3b8; }
.ex-card-lead{ margin: 0 0 8px; color: #cbd5e1; }
.ex-card-lead--mt{ margin-top: 14px; }
.ex-card-note{ margin: 10px 0 0; color: #94a3b8; font-size: 13px; font-style: italic; }
.ex-card em{ font-style: normal; color: #fde68a; font-weight: 500; }
.ex-bullets{ margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 6px; }
.ex-bullets li{ display: flex; align-items: center; gap: 10px; }
.ex-bullets--plain li{ padding-left: 16px; position: relative; }
.ex-bullets--plain li::before{
    content: ""; position: absolute; left: 0; top: .65em;
    width: 5px; height: 5px; border-radius: 50%; background: #64748b;
}
.ex-bullets strong{ color: #fff; font-weight: 600; }
.ex-dot{
    width: 8px; height: 8px; border-radius: 50%; flex-shrink: 0;
}
.ex-dot--up{ background: #22c55e; box-shadow: 0 0 0 3px rgba(34,197,94,.18); }
.ex-dot--down{ background: #f97316; box-shadow: 0 0 0 3px rgba(249,115,22,.18); }

/* Action groups (Recommended Actions) */
.ex-action-group{ margin-top: 10px; }
.ex-action-head{
    margin: 0 0 4px;
    color: #e2e8f0; font-weight: 500;
    display: flex; align-items: center; gap: 6px;
}
.ex-check{
    display: inline-grid; place-items: center;
    width: 16px; height: 16px; border-radius: 50%;
    background: rgba(34,197,94,.18); color: #22c55e;
    font-size: 10px; font-weight: 700;
}

/* Follow-up chips */
.ex-followups{
    margin-top: 16px;
    display: flex; flex-wrap: wrap; gap: 8px;
}
.ex-followup{
    padding: 8px 14px;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(64,117,201,.28);
    border-radius: 999px;
    color: #c7d4e8; font-size: 12.5px; cursor: pointer;
    transition: background .2s, border-color .2s, color .2s, transform .2s;
}
.ex-followup:hover{
    background: rgba(64,117,201,.18);
    border-color: rgba(64,117,201,.55);
    color: #fff;
    transform: translateY(-1px);
}

/* Chart card */
.ex-card--chart{ padding: 18px 20px 20px; }
.ex-chart-head{
    display: flex; align-items: center; justify-content: space-between;
    margin-bottom: 14px;
}
.ex-chart-legend{
    display: inline-flex; gap: 14px;
    font-size: 11.5px; color: #94a3b8;
}
.ex-chart-legend span{ display: inline-flex; align-items: center; gap: 6px; }
.ex-leg{ width: 10px; height: 10px; border-radius: 2px; display: inline-block; }
.ex-leg--gain{ background: #4075C9; }
.ex-leg--loss{ background: #f97316; }
.ex-chart-wrap{
    display: grid;
    grid-template-columns: 1fr 220px;
    gap: 20px;
    align-items: stretch;
}
.ex-chart{
    display: grid;
    grid-template-columns: 36px 1fr;
    height: 220px;
    background: rgba(255,255,255,.015);
    border-radius: 10px;
    padding: 10px 12px 28px;
    position: relative;
}
.ex-chart-y{
    display: flex; flex-direction: column; justify-content: space-between;
    font-size: 10px; color: #64748b;
    padding-right: 8px;
    text-align: right;
}
.ex-chart-bars{
    display: flex; align-items: flex-end; justify-content: space-around;
    gap: 16px;
    border-left: 1px solid rgba(255,255,255,.08);
    padding-left: 6px;
    position: relative;
}
.ex-chart-bars::before,
.ex-chart-bars::after{
    content: ""; position: absolute; left: 6px; right: 0;
    height: 1px; background: rgba(255,255,255,.04);
}
.ex-chart-bars::before{ top: 25%; }
.ex-chart-bars::after{ top: 50%; }
.ex-bar-col{
    display: flex; flex-direction: column; align-items: center;
    flex: 1; height: 100%;
    justify-content: flex-end;
    position: relative;
}
.ex-bar{
    width: 100%;
    max-width: 48px;
    height: var(--ex-h, 50%);
    border-radius: 4px 4px 0 0;
    position: relative;
    background: linear-gradient(180deg, #5694e5 0%, #4075C9 100%);
    box-shadow: 0 0 0 1px rgba(64,117,201,.22) inset, 0 6px 14px -8px rgba(64,117,201,.6);
    animation: exBarRise .9s cubic-bezier(.22,.61,.36,1) backwards;
}
.ex-bar--loss{
    background: linear-gradient(180deg, #fb923c 0%, #f97316 100%);
    box-shadow: 0 0 0 1px rgba(249,115,22,.28) inset, 0 6px 14px -8px rgba(249,115,22,.6);
}
.ex-bar-col:nth-child(1) .ex-bar{ animation-delay: .05s; }
.ex-bar-col:nth-child(2) .ex-bar{ animation-delay: .15s; }
.ex-bar-col:nth-child(3) .ex-bar{ animation-delay: .25s; }
.ex-bar-col:nth-child(4) .ex-bar{ animation-delay: .35s; }
.ex-bar-col:nth-child(5) .ex-bar{ animation-delay: .45s; }
@keyframes exBarRise{
    from{ transform: scaleY(0); opacity: 0; }
    to{ transform: scaleY(1); opacity: 1; }
}
.ex-bar{ transform-origin: bottom; }
.ex-bar-lbl{
    position: absolute; top: -18px; left: 50%; transform: translateX(-50%);
    font-size: 10.5px; color: #cbd5e1; font-weight: 600;
}
.ex-bar-x{
    position: absolute; bottom: -22px;
    font-size: 11px; color: #94a3b8;
}

/* Data summary side panel */
.ex-data-summary{
    background: rgba(255,255,255,.025);
    border: 1px solid rgba(255,255,255,.06);
    border-radius: 10px;
    padding: 14px;
    font-size: 11.5px;
    color: #94a3b8;
}
.ex-data-summary h5{
    margin: 0 0 6px;
    font-size: 12px; color: #cbd5e1; font-weight: 600;
}
.ex-ds-meta{ margin: 0 0 10px; color: #94a3b8; }
.ex-ds-meta strong{ color: #e2e8f0; }
.ex-ds-group{ margin: 10px 0 4px; }
.ex-ds-tag{
    display: inline-block;
    padding: 2px 8px;
    background: rgba(119,71,182,.18);
    border: 1px solid rgba(119,71,182,.3);
    border-radius: 999px;
    color: #c4b5fd; font-size: 10px; font-weight: 600; letter-spacing: .2px;
}
.ex-ds-list{ margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
.ex-ds-list li{ display: flex; justify-content: space-between; gap: 8px; line-height: 1.4; }
.ex-ds-k{ color: #cbd5e1; }
.ex-ds-v{ color: #1CA9C9; font-weight: 500; }
.ex-card-interp{
    margin: 14px 0 0; padding-top: 14px;
    border-top: 1px solid rgba(255,255,255,.06);
    font-size: 13px; color: #cbd5e1;
}
.ex-card-interp strong{ color: #fff; }

/* Reveal animation for any block appended after the sequence starts */
.ex-reveal{
    animation: exReveal .55s cubic-bezier(.22,.61,.36,1) backwards;
}
@keyframes exReveal{
    from{ opacity: 0; transform: translateY(10px); }
    to{ opacity: 1; transform: translateY(0); }
}

/* ---------- Composer ---------- */
.ex-composer{
    padding: 16px 24px 12px;
    border-top: 1px solid rgba(255,255,255,.05);
    background: rgba(11,17,36,.55);
    backdrop-filter: blur(6px);
}
.ex-composer-row{
    max-width: 880px; margin: 0 auto;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 12px;
    padding: 12px 14px;
    margin-bottom: 8px;
}
.ex-input-text{ color: #64748b; font-size: 13.5px; }
.ex-composer-actions{
    max-width: 880px; margin: 0 auto;
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.ex-comp-btn{
    width: 30px; height: 30px;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 50%;
    color: #cbd5e1; cursor: pointer;
    display: inline-grid; place-items: center;
    transition: background .18s, color .18s;
}
.ex-comp-btn:hover{ background: rgba(255,255,255,.08); color: #fff; }
.ex-comp-pill{
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 12px;
    background: rgba(64,117,201,.16);
    border: 1px solid rgba(64,117,201,.28);
    border-radius: 999px;
    color: #c7d4e8; font-size: 12px; cursor: pointer;
    transition: background .18s;
}
.ex-comp-pill:hover{ background: rgba(64,117,201,.24); }
.ex-comp-spacer{ flex: 1; }
.ex-comp-preview{
    display: inline-flex; align-items: center; gap: 6px;
    padding: 6px 12px;
    background: transparent;
    border: 1px solid rgba(255,255,255,.1);
    border-radius: 999px;
    color: #94a3b8; font-size: 12px; cursor: pointer;
    transition: color .18s, border-color .18s;
}
.ex-comp-preview:hover{ color: #e2e8f0; border-color: rgba(255,255,255,.2); }
.ex-comp-microcopy{
    max-width: 880px; margin: 8px auto 0;
    font-size: 11px; color: #475569; text-align: center;
}
.ex-comp-microcopy a{ color: #64748b; text-decoration: underline; }

/* ---------- Paywall (free message limit) ---------- */
.ex-paywall{
    position: absolute; inset: 56px 0 0 240px;
    display: flex; align-items: flex-end; justify-content: center;
    background: linear-gradient(180deg, rgba(11,17,36,0) 0%, rgba(11,17,36,.7) 50%, rgba(11,17,36,.92) 100%);
    backdrop-filter: blur(6px);
    pointer-events: none;
    opacity: 0;
    transition: opacity .4s cubic-bezier(.22,.61,.36,1);
    padding-bottom: 140px;
    z-index: 4;
}
.ex-paywall.is-open{ opacity: 1; pointer-events: auto; }
.ex-paywall-card{
    max-width: 460px; width: 90%;
    padding: 22px 24px;
    background: rgba(15,23,42,.88);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 14px;
    text-align: center;
    box-shadow: 0 30px 60px -20px rgba(0,0,0,.6);
    transform: translateY(20px);
    transition: transform .4s cubic-bezier(.22,.61,.36,1);
}
.ex-paywall.is-open .ex-paywall-card{ transform: translateY(0); }
.ex-paywall-spark{
    display: inline-grid; place-items: center;
    width: 36px; height: 36px;
    margin-bottom: 10px;
    color: #1CA9C9;
}
.ex-paywall-title{ margin: 0 0 6px; font-size: 17px; color: #fff; font-weight: 600; }
.ex-paywall-sub{ margin: 0 0 14px; font-size: 13px; color: #94a3b8; }
.ex-paywall-actions{ display: inline-flex; gap: 10px; }
.ex-paywall-btn{
    padding: 8px 18px;
    border-radius: 999px;
    font-size: 13px; cursor: pointer; font-weight: 500;
    background: transparent;
    border: 1px solid rgba(255,255,255,.16);
    color: #e2e8f0;
    transition: background .18s, transform .18s;
}
.ex-paywall-btn:hover{ background: rgba(255,255,255,.06); }
.ex-paywall-btn--primary{
    background: linear-gradient(90deg, #4075C9 0%, #1CA9C9 100%);
    border-color: transparent; color: #fff; font-weight: 600;
    box-shadow: 0 6px 18px -8px rgba(28,169,201,.55);
}
.ex-paywall-btn--primary:hover{ transform: translateY(-1px); }

/* ---------- Sign in / Sign up modal ---------- */
.ex-modal{
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    background: rgba(2,6,23,.65);
    backdrop-filter: blur(10px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .35s cubic-bezier(.22,.61,.36,1);
    z-index: 5;
}
.ex-modal.is-open{ opacity: 1; pointer-events: auto; }
.ex-modal-card{
    position: relative;
    width: 90%; max-width: 380px;
    padding: 28px 28px 24px;
    background: #0f1a32;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 16px;
    text-align: center;
    box-shadow: 0 30px 80px -20px rgba(0,0,0,.7), 0 0 0 1px rgba(64,117,201,.1);
    transform: translateY(16px) scale(.96);
    transition: transform .4s cubic-bezier(.22,.61,.36,1);
}
.ex-modal.is-open .ex-modal-card{ transform: translateY(0) scale(1); }
.ex-modal-close{
    position: absolute; top: 12px; right: 12px;
    width: 28px; height: 28px; border-radius: 8px;
    background: transparent; border: 0;
    color: #94a3b8; cursor: pointer;
    display: grid; place-items: center;
    transition: background .18s, color .18s;
}
.ex-modal-close:hover{ background: rgba(255,255,255,.06); color: #fff; }
.ex-modal-spark{
    display: inline-grid; place-items: center;
    margin-bottom: 6px;
}
.ex-modal-title{ margin: 0 0 6px; font-size: 18px; color: #fff; font-weight: 600; }
.ex-modal-sub{ margin: 0 0 18px; font-size: 12.5px; color: #94a3b8; line-height: 1.5; }
.ex-social-btn{
    width: 100%;
    display: inline-flex; align-items: center; justify-content: center; gap: 10px;
    padding: 10px 14px;
    margin-bottom: 8px;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 10px;
    color: #e2e8f0; font-size: 13px; cursor: pointer;
    transition: background .18s, border-color .18s;
}
.ex-social-btn:hover{ background: rgba(255,255,255,.08); border-color: rgba(255,255,255,.2); }
.ex-or{
    display: flex; align-items: center; gap: 10px;
    margin: 12px 0;
    color: #475569; font-size: 11px;
}
.ex-or::before, .ex-or::after{
    content: ""; flex: 1; height: 1px; background: rgba(255,255,255,.08);
}
.ex-more-options{
    width: 100%;
    padding: 10px 14px;
    background: transparent;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 10px;
    color: #cbd5e1; font-size: 13px; cursor: pointer;
    transition: background .18s, color .18s;
}
.ex-more-options:hover{ background: rgba(255,255,255,.06); color: #fff; }

/* ---------- Responsive ---------- */
@media (max-width: 900px){
    .explore-shell{ grid-template-columns: 60px 1fr; }
    .ex-brand-text{ display: none; }
    .ex-nav-item span, .ex-nav-item{ font-size: 0; }
    .ex-nav-item svg{ width: 18px; height: 18px; }
    .ex-paywall{ inset: 56px 0 0 60px; }
    .ex-chart-wrap{ grid-template-columns: 1fr; }
    .ex-data-summary{ font-size: 11px; }
}
@media (max-width: 600px){
    .ex-topbar{ padding: 0 12px; }
    .ex-stream{ padding: 0 14px; }
    .ex-card{ padding: 14px; }
    .ex-bubble{ max-width: 85%; }
    .ex-composer{ padding: 12px 14px 10px; }
    .ex-modal-card{ padding: 22px 18px 18px; }
}

@media (prefers-reduced-motion: reduce){
    .explore-overlay, .ex-paywall, .ex-paywall-card, .ex-modal, .ex-modal-card{ transition: none !important; }
    .ex-reveal, .ex-bar, .ex-spark, .ex-process-dots i{ animation: none !important; }
    .ex-bar{ transform: none !important; }
}

/* ===================================================================
   CANONICAL PRIMARY BUTTON — .btn-primary
   One signature CTA used everywhere a high-emphasis action lives:
   top nav "Start for Free", hero "Click to explore", product CTA,
   pricing CTA, footer banner, overlay top, paywall.
   Visual language: violet → royal-blue → turquoise gradient pill
   (the brand's signature mix), white bold text, optional arrow that
   slides on hover.
   Motion (theme-matched, easing cubic-bezier(.22,.61,.36,1)):
     ① Breathing gradient — background-position pans subtly to feel alive
     ② Hover sheen sweep — diagonal white highlight crosses the surface
     ③ Hover lift -2px + intensified brand-violet glow shadow
     ④ Arrow slides +4px right (matches existing .pd-cta / .ps-cta pattern)
   Selector specificity uses :where() so it overrides via cascade-position
   only — keeps existing per-section rules intact unless they specifically
   conflict. Placed at end of stylesheet to sit last in the cascade.
   =================================================================== */
:where(.btn-primary){
    /* Reset across <a> and <button> hosts */
    -webkit-appearance: none; appearance: none;
    border: 0; outline: 0;
    cursor: pointer; user-select: none;
    text-decoration: none;
    font-family: 'Inter', sans-serif;
}
/* Doubled-class selector .btn-primary.btn-primary bumps specificity to (0,2,0)
   so it beats per-section rules like .site-header .btn-start and
   .product-detail .pd-cta on cascade order. */
.btn-primary.btn-primary{
    position: relative;
    isolation: isolate;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    padding: 10px 22px;
    min-height: 48px;
    border-radius: 6px;
    font-size: 15px;
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: -.1px;
    color: #fff;
    white-space: nowrap;
    /* Brand gradient — exact Figma 994:29784 "Start for Free" button spec:
       linear-gradient(to left, #7747B6 0%, #4075C9 50.718%, #1CA9C9 100%).
       Direction `to left` matches Figma's bg-gradient-to-l: turquoise on
       the left, royal-blue at the 50.718% middle stop, violet on the right. */
    background-image: linear-gradient(to left,
        #7747B6 0%,
        #4075C9 50.718%,
        #1CA9C9 100%);
    background-color: transparent;
    background-size: 100% 100%;
    background-position: 50% 50%;
    box-shadow:
        0 8px 22px -10px rgba(64, 117, 201, .55),
        0 2px 8px -2px rgba(119, 71, 182, .35),
        inset 0 1px 0 rgba(255, 255, 255, .14);
    transition:
        transform .25s cubic-bezier(.22, .61, .36, 1),
        box-shadow .25s cubic-bezier(.22, .61, .36, 1),
        filter .35s cubic-bezier(.22, .61, .36, 1);
    /* Subtle brightness pulse — keeps the button feeling alive without
       drifting the colors away from the Figma spec (no gradient pan). */
    animation: btnBreathe 6s ease-in-out infinite;
    overflow: hidden;
}
/* Sheen sweep — a diagonal white highlight that crosses the button on hover */
.btn-primary.btn-primary::before{
    content: "";
    position: absolute;
    top: -50%; bottom: -50%;
    left: -120%;
    width: 60%;
    background: linear-gradient(105deg,
        transparent 0%,
        rgba(255, 255, 255, 0) 35%,
        rgba(255, 255, 255, .35) 50%,
        rgba(255, 255, 255, 0) 65%,
        transparent 100%);
    transform: skewX(-18deg);
    pointer-events: none;
    z-index: -1;
    transition: left .9s cubic-bezier(.22, .61, .36, 1);
}
.btn-primary.btn-primary:hover{
    transform: translateY(-2px);
    /* Slightly brighten on hover (overrides per-section :hover filters
       like .product-detail .pd-cta:hover and .site-header .btn-start:hover
       so the primary motion language is the only thing that fires). */
    filter: brightness(1.06) !important;
    box-shadow:
        0 14px 32px -10px rgba(64, 117, 201, .7),
        0 6px 14px -4px rgba(119, 71, 182, .45),
        inset 0 1px 0 rgba(255, 255, 255, .22);
}
.btn-primary.btn-primary:hover::before{ left: 130%; }
.btn-primary.btn-primary:active{ transform: translateY(0); transition-duration: .1s; }
.btn-primary.btn-primary:focus-visible{
    outline: 2px solid #c4b5fd;
    outline-offset: 3px;
}
/* Arrow icon (any nested SVG or arrow span) — slides on hover */
.btn-primary.btn-primary svg,
.btn-primary.btn-primary .btn-arrow,
.btn-primary.btn-primary .pd-cta-arrow,
.btn-primary.btn-primary .ps-cta-arrow{
    display: inline-flex;
    align-items: center;
    transition: transform .35s cubic-bezier(.22, .61, .36, 1);
}
.btn-primary.btn-primary:hover svg,
.btn-primary.btn-primary:hover .btn-arrow,
.btn-primary.btn-primary:hover .pd-cta-arrow,
.btn-primary.btn-primary:hover .ps-cta-arrow{
    transform: translateX(4px);
}
/* Size variants */
.btn-primary.btn-primary.btn-primary--sm{
    padding: 8px 18px;
    min-height: 36px;
    font-size: 13.5px;
    gap: 8px;
}
.btn-primary.btn-primary.btn-primary--lg{
    padding: 14px 30px;
    min-height: 48px;
    font-size: 16px;
    gap: 12px;
}
/* Ghost variant — neutral pill for placements where the gradient would
   compete with surrounding accent. Same shape + sheen, no gradient. */
.btn-primary.btn-primary.btn-primary--ghost{
    background-image: none;
    background-color: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .14);
    color: #f1f5f9;
    animation: none;
    box-shadow: none;
}
.btn-primary.btn-primary.btn-primary--ghost:hover{
    background-color: rgba(255, 255, 255, .12);
    border-color: rgba(255, 255, 255, .22);
}
/* Breathing pulse — gentle brightness oscillation (1.0 → 1.03 → 1.0).
   Replaces the previous background-position pan so the gradient colors
   stay locked to the Figma spec at every frame; only the overall
   luminance breathes. */
@keyframes btnBreathe{
    0%, 100% { filter: brightness(1); }
    50%      { filter: brightness(1.03); }
}
@media (prefers-reduced-motion: reduce){
    .btn-primary{ animation: none !important; transition: none !important; }
    .btn-primary::before{ display: none; }
    .btn-primary:hover{ transform: none; }
    .btn-primary:hover svg,
    .btn-primary:hover .btn-arrow,
    .btn-primary:hover .pd-cta-arrow,
    .btn-primary:hover .ps-cta-arrow{ transform: none; }
}



/* ════════════════════════════════════════════════════════════════
   HOME.HTML INLINE STYLES — moved from inline <style> block
   These overrides were previously embedded inside home.html's <head>.
   Source order: this block sits at the END of index.css so it wins
   the cascade against earlier rules (same behaviour as when these
   styles were inline after the <link> tag in home.html).
   ════════════════════════════════════════════════════════════════ */
/* Desktop content width */
.container{ max-width: 1500px; padding: 0 40px; }

/* Hello bar + nav: full-width background, content aligned to the 1500px container.
   Gutter = centering offset for a 1500px zone + the container's 40px inner padding. */
.hello-bar{ padding: 10px max(40px, calc((100% - 1500px) / 2 + 40px)) 11px; }
.site-header{ padding: 20px max(40px, calc((100% - 1500px) / 2 + 40px)) 21px; }

/* Hello bar gaps match Figma exactly: badge → message-group = 10px; message → Register Now = 20px */
.hello-bar .hello-left{ gap: 10px; }
.hello-bar .hello-msg-group{
    display: flex;
    align-items: center;
    gap: 20px;
    min-width: 0;
}

/* Ideal section spacing — modern SaaS rhythm (Stripe / Linear / Vercel).
   Most content sections get 96px top + 96px bottom = 192px between
   any two consecutive sections. Hero gets extra bottom for the CTA
   to breathe, the logo band is compact, and the testimonial keeps
   its long bottom runway for the blurred page-finale gradient bleed.
   Special: .section-products is a scroll-pinned 220vh track and
   stays at 0. */
.hero-section{
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 0;
    padding: 96px 0 120px;
}
.trusted-section{ padding: 80px 0; }
.section-products{ padding: 0; }
.section-features{ padding: 96px 0; }
.section-personas{ padding: 96px 0; }
.section-pricing{ padding: 96px 0; }
.section-success{ padding: 96px 0; }
.section-testimonial{ padding: 96px 0 180px; }
.section-trust{ padding: 96px 0; }
.site-footer{ padding: 64px 0 24px; }

/* Standardised heading → content gap inside every section.
   Each section has its own *-intro (or .{section}-intro) wrapper that
   holds eyebrow + h2 + section-sub. Force a single bottom-margin so
   the gap from copy to first content block is identical everywhere. */
.success-intro,
.testimonial-intro,
.personas-intro,
.products-intro{ margin-bottom: 56px; }

/* Calmer heading-to-content gaps */
.trusted-section h2{ margin-bottom: 40px; }

/* Uniform client-logo sizing — auto-width so wide wordmarks are never clipped */
.logo-track > div{
    margin: 0 56px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.logo-track img{
    max-height: 48px;
    max-width: 180px;
    height: auto;
    width: auto;
    object-fit: contain;
}
/* Drop the per-logo inline height override (e.g. TechnoDuxx) so all match */
.logo-track img[style]{ height: auto !important; }
.section-products .products-head{ margin-bottom: 28px; }
.section-personas .section-sub{ margin-bottom: 0; }
.section-pricing h2{ margin-bottom: 18px; }

/* Keep the big hero/section headings from feeling oversized on laptop displays */
        

/* ════════════ PREMIUM FEATURE CARDS (index.html only) ════════════
   Cards only — the section background is intentionally left untouched.
   Clean white surface, layered depth shadows, a gradient icon chip, an
   animated gradient top-accent, and a soft corner glow on hover. */
.section-features .feature-card{
    position: relative;
    overflow: hidden;
    background: #ffffff;
    border: 1px solid rgba(85, 41, 142, .10);
    border-radius: 18px;
    padding: 30px 26px 28px;
    filter: none; /* replace the old flat drop-shadow with layered box-shadows */
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        0 12px 30px -14px rgba(14, 72, 165, .20);
    transition:
        transform .45s cubic-bezier(.22, .61, .36, 1),
        box-shadow .45s cubic-bezier(.22, .61, .36, 1),
        border-color .45s ease;
}
/* Soft diagonal glow in the top-right corner — adds depth, intensifies on hover */
.section-features .feature-card::before{
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: radial-gradient(125% 90% at 100% 0%,
        rgba(18, 182, 248, .10) 0%,
        rgba(85, 41, 142, .06) 32%,
        transparent 62%);
    opacity: .75;
    transition: opacity .45s ease;
}
/* Thin gradient accent that wipes across the top edge on hover */
.section-features .feature-card::after{
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    z-index: 2;
    background: linear-gradient(90deg, #12b6f8 0%, #2863c5 48%, #7747b6 100%);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .5s cubic-bezier(.22, .61, .36, 1);
}
/* Keep card content above the corner glow */
.section-features .feature-card > *{ position: relative; z-index: 1; }

.section-features .feature-card:hover{
    transform: translateY(-6px);
    border-color: rgba(85, 41, 142, .20);
    box-shadow:
        0 2px 4px rgba(16, 24, 40, .05),
        0 22px 48px -18px rgba(40, 99, 195, .38);
}
.section-features .feature-card:hover::before{ opacity: 1; }
.section-features .feature-card:hover::after{ transform: scaleX(1); }

/* Gradient icon chip with white glyph + soft colored glow */
.section-features .feature-card .fc-icon{
    border-radius: 14px;
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    color: #ffffff;
    box-shadow: 0 8px 18px -8px rgba(40, 99, 195, .55);
    transition:
        transform .45s cubic-bezier(.22, .61, .36, 1),
        box-shadow .45s ease;
}
.section-features .feature-card:hover .fc-icon{
    transform: translateY(-2px) scale(1.06);
    box-shadow: 0 12px 24px -8px rgba(85, 41, 142, .6);
}

/* Type refinement: strong heading, softer slate body for clean hierarchy */
.section-features .feature-card h5{
    color: #101828;
    letter-spacing: -.01em;
}
.section-features .feature-card p{ color: #475467; }

@media (max-width: 991px){
    .container{ padding: 0 24px; }
    .hello-bar{ padding: 10px 24px 11px; }
    .site-header{ padding: 14px 24px; }
          
    .hero-section{ padding: 64px 0 80px; }
    .section-products{ padding: 0; }
    .section-features{ padding: 72px 0; }
    .section-personas{ padding: 72px 0; }
    .section-pricing{ padding: 72px 0; }
    .section-success{ padding: 72px 0; }
    .section-testimonial{ padding: 72px 0 120px; }
    .section-trust{ padding: 72px 0; }
    .trusted-section{ padding: 56px 0; }
    .success-intro,
    .testimonial-intro,
    .personas-intro,
    .products-intro{ margin-bottom: 40px; }
    .hero-section h1{ font-size: 44px; line-height: 54px; }
}
@media (max-width: 575px){
    .container{ padding: 0 18px; }
    .hello-bar{ padding: 8px 18px; }
    .site-header{ padding: 12px 18px; }
    .hero-section h1{ font-size: 34px; line-height: 44px; }
}

/* ── Nav logo (SVG) ───────────────────────────────────── */
.site-header .brand-mark{ height: 44px; }
.site-header .nav-logo-img{
    height: 42px;
    width: auto;
    display: block;
    /* Keep the logo crisp and clearly visible over the busy hero canvas in full-screen */
    filter: drop-shadow(0 2px 10px rgba(3, 13, 30, .55));
}
/* No borders on the bars — use a soft colored glow under the nav for separation.
   .site-top wraps both bars, so its bottom hairline must go too; otherwise a
   faint line still renders directly under the nav. */
.site-top{ border-bottom: none; }
.hello-bar{ border-bottom: none; }
.site-header{
    border-bottom: none;
    /* Subtle, soft, hero-toned glow (cyan → violet) instead of a hard line */
    box-shadow:
        0 12px 28px -20px rgba(18, 182, 248, .30),
        0 6px 16px -14px rgba(85, 41, 142, .22);
}

/* ── Hello bar motion ─────────────────────────────────── */
/* Gentle pulsing glow on the "Webinar" badge */
.hello-bar .hello-badge{
    animation: badgePulse 2.4s ease-in-out infinite;
    will-change: transform, box-shadow;
}
@keyframes badgePulse{
    0%, 100%{
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(252, 252, 252, .45);
    }
    50%{
        transform: scale(1.06);
        box-shadow: 0 0 0 6px rgba(252, 252, 252, 0);
    }
}
/* Subtle shimmer sweeping across the message text */
.hello-bar .hello-message{
    background: linear-gradient(90deg,
        rgba(255, 255, 255, .8) 0%,
        rgba(255, 255, 255, .8) 35%,
        #ffffff 50%,
        rgba(255, 255, 255, .8) 65%,
        rgba(255, 255, 255, .8) 100%);
    background-size: 220% 100%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    animation: shimmer 4s linear infinite;
}
@keyframes shimmer{
    0%{ background-position: 120% 0; }
    100%{ background-position: -120% 0; }
}
/* Looping nudge on the Register Now arrow */
.hello-bar .hello-cta svg{
    animation: arrowNudge 1.6s ease-in-out infinite;
}
@keyframes arrowNudge{
    0%, 100%{ transform: translateX(0); }
    50%{ transform: translateX(4px); }
}
/* Respect reduced-motion preferences */
@media (prefers-reduced-motion: reduce){
    .hello-bar .hello-badge,
    .hello-bar .hello-message,
    .hello-bar .hello-cta svg{ animation: none; }
    .hello-bar .hello-message{
        -webkit-text-fill-color: rgba(255, 255, 255, .8);
        color: rgba(255, 255, 255, .8);
    }
}

/* ════════════ HERO PREMIUM EFFECTS (index.html only) ════════════ */

/* Low-opacity tech grid overlay, faded toward the edges */
.hero-grid{
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background-image:
        linear-gradient(to right, rgba(159, 186, 228, .055) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(159, 186, 228, .055) 1px, transparent 1px);
    background-size: 56px 56px;
    -webkit-mask-image: radial-gradient(125% 85% at 50% 28%, #000 0%, rgba(0,0,0,.55) 55%, transparent 80%);
            mask-image: radial-gradient(125% 85% at 50% 28%, #000 0%, rgba(0,0,0,.55) 55%, transparent 80%);
}

/* Glowing gradient orbs toward the bottom */
.hero-orbs{
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
    will-change: transform;
}
.hero-orb{
    position: absolute;
    border-radius: 50%;
    filter: blur(90px);
    opacity: .55;
    will-change: transform;
    mix-blend-mode: screen;
}
.hero-orb.orb-violet{
    width: 460px; height: 460px;
    left: 6%; bottom: -180px;
    background: radial-gradient(circle at 50% 50%,
        rgba(119, 71, 182, .95) 0%, rgba(85, 41, 142, .5) 45%, transparent 70%);
    animation: orbFloat 11s ease-in-out infinite;
}
.hero-orb.orb-cyan{
    width: 380px; height: 380px;
    left: 45%; bottom: -210px;
    background: radial-gradient(circle at 50% 50%,
        rgba(28, 169, 201, .85) 0%, rgba(18, 182, 248, .4) 45%, transparent 70%);
    animation: orbFloat 13s ease-in-out infinite .8s;
}
.hero-orb.orb-blue{
    width: 430px; height: 430px;
    right: 4%; bottom: -185px;
    background: radial-gradient(circle at 50% 50%,
        rgba(64, 117, 201, .9) 0%, rgba(14, 72, 165, .45) 45%, transparent 70%);
    animation: orbFloat 12s ease-in-out infinite .4s;
}
@keyframes orbFloat{
    0%, 100%{ transform: translate3d(0, 0, 0) scale(1); }
    50%{ transform: translate3d(0, -28px, 0) scale(1.06); }
}

/* Small floating glowing particles */
.hero-particles{
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
}
.hero-particles .particle{
    position: absolute;
    width: 4px; height: 4px;
    border-radius: 50%;
    background: rgba(231, 248, 254, .95);
    box-shadow: 0 0 8px 2px rgba(18, 182, 248, .55);
    opacity: .6;
    animation: particleFloat 9s ease-in-out infinite, particlePulse 3.2s ease-in-out infinite;
}
.hero-particles .particle:nth-child(1){ left: 10%; top: 26%; animation-duration: 10s, 3s;   animation-delay: 0s, 0s; }
.hero-particles .particle:nth-child(2){ left: 20%; top: 58%; width: 3px; height: 3px; animation-duration: 12s, 3.6s; animation-delay: 1.1s, .4s; }
.hero-particles .particle:nth-child(3){ left: 32%; top: 38%; animation-duration: 8.5s, 2.8s; animation-delay: .6s, .9s; }
.hero-particles .particle:nth-child(4){ left: 41%; top: 70%; width: 5px; height: 5px; animation-duration: 11s, 3.4s; animation-delay: 2s, .2s; }
.hero-particles .particle:nth-child(5){ left: 52%; top: 30%; width: 3px; height: 3px; animation-duration: 9.5s, 3.1s; animation-delay: .3s, 1.3s; }
.hero-particles .particle:nth-child(6){ left: 60%; top: 64%; animation-duration: 13s, 3.8s; animation-delay: 1.6s, .6s; }
.hero-particles .particle:nth-child(7){ left: 68%; top: 42%; width: 3px; height: 3px; animation-duration: 10.5s, 2.9s; animation-delay: .9s, 1.1s; }
.hero-particles .particle:nth-child(8){ left: 76%; top: 72%; width: 5px; height: 5px; animation-duration: 12.5s, 3.5s; animation-delay: 2.3s, .3s; }
.hero-particles .particle:nth-child(9){ left: 84%; top: 34%; animation-duration: 9s, 3.2s; animation-delay: .5s, .8s; }
.hero-particles .particle:nth-child(10){ left: 90%; top: 60%; width: 3px; height: 3px; animation-duration: 11.5s, 3.7s; animation-delay: 1.4s, .5s; }
.hero-particles .particle:nth-child(11){ left: 15%; top: 46%; width: 3px; height: 3px; animation-duration: 10s, 3s; animation-delay: 1.9s, 1s; }
.hero-particles .particle:nth-child(12){ left: 47%; top: 50%; animation-duration: 12s, 3.3s; animation-delay: .8s, .2s; }
@keyframes particleFloat{
    0%, 100%{ transform: translate3d(0, 0, 0); }
    50%{ transform: translate3d(6px, -24px, 0); }
}
@keyframes particlePulse{
    0%, 100%{ opacity: .25; }
    50%{ opacity: .85; }
}

/* Hero stage — nav bar + hero share one continuous premium canvas.
   Bars and hero go transparent so the grid/orbs/particles flow through. */
.hero-stage{
    position: relative;
    overflow-x: clip;
    background: transparent;
    /* Full-screen: nav + hero together fill exactly one viewport */
    min-height: 100vh;
    min-height: 100svh;
    display: flex;
    flex-direction: column;
}
.hero-stage .site-top{ position: sticky; top: 0; z-index: 200; background: transparent; }
.hero-st age .hello-bar{ background: transparent; }
.hero-stage .site-header{ background: transparent; }
.hero-stage .hero-section{
    position: relative;
    z-index: 3;
    background: transparent;
}
/* Grid now spans nav → hero: fade softly at the very top and into the logos below */
.hero-grid{
    -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.35) 0%, #000 18%, #000 78%, transparent 100%);
            mask-image: linear-gradient(180deg, rgba(0,0,0,.35) 0%, #000 18%, #000 78%, transparent 100%);
}

@media (prefers-reduced-motion: reduce){
    .hero-orb,
    .hero-particles .particle{ animation: none; }
    .hero-orbs{ transform: none !important; }
}

/* ════════════════════════════════════════════════════════════════
   UNIFIED THEME OVERRIDE — home.html only
   Every section previously had its own accent palette (Royal Blue
   on personas/testimonial, Turquoise on pricing/success, etc.).
   Here we pin every section to ONE canonical brand palette so the
   page reads as a single design language end-to-end:

     Primary    Royal Blue  #2863c3  (center of brand gradient)
     Secondary  Violet      #7747b6  (warm complement)
     Tertiary   Turquoise   #1ca9c9  (cool complement)

   Specificity uses the standard selector — these rules sit at the
   bottom of the inline <style> block (loaded AFTER index.css), so
   they win the cascade over the per-section defaults in the
   stylesheet by being defined later.
   ════════════════════════════════════════════════════════════════ */

/* ── Personas / Pricing share `--pa-accent*` variables ── */
.section-personas,
.section-pricing{
    --pa-accent: #2863c3;
    --pa-accent-secondary: #7747b6;
    --pa-accent-glow-a: rgba(40, 99, 195, .42);
    --pa-accent-glow-b: rgba(119, 71, 182, .30);
    --pa-accent-glow-c: rgba(28, 169, 201, .20);
    --pa-accent-soft:  rgba(40, 99, 195, .08);
    --pa-accent-border: rgba(40, 99, 195, .40);
}

/* ── Success uses its own `--ss-accent*` variables ── */
.section-success{
    --ss-accent: #2863c3;
    --ss-accent-secondary: #7747b6;
    --ss-accent-glow-a: rgba(40, 99, 195, .22);
    --ss-accent-glow-b: rgba(119, 71, 182, .14);
    --ss-accent-soft:  rgba(40, 99, 195, .08);
    --ss-accent-border: rgba(40, 99, 195, .22);
}

/* ── Testimonial uses its own `--ts-accent*` variables ── */
.section-testimonial{
    --ts-accent: #2863c3;
    --ts-accent-secondary: #7747b6;
    --ts-accent-glow-a: rgba(40, 99, 195, .18);
    --ts-accent-glow-b: rgba(119, 71, 182, .14);
    --ts-accent-soft:  rgba(40, 99, 195, .07);
    --ts-accent-border: rgba(40, 99, 195, .22);
}

/* ── H2 gradient accents — unify the .ph-accent / .sh-accent /
      .th-accent gradient text to the canonical brand gradient
      (matches .btn-primary's violet→royal-blue→turquoise sweep).

      IMPORTANT: use `background-image` (not `background` shorthand) —
      the shorthand resets `background-clip` back to `border-box`,
      which would render the gradient as a solid rectangle instead
      of being clipped to the text glyphs. background-image keeps
      the clip intact. ── */
.section-personas h2 .ph-accent,
.section-pricing h2 .ph-accent,
.section-success h2 .sh-accent,
.section-testimonial h2 .th-accent{
    background-image: linear-gradient(135deg,
        #7747b6 0%,
        #2863c3 50%,
        #1ca9c9 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
}
/* Remove italic from every H2 gradient accent across the page.
   The original .X-accent rules in index.css set `font-style: italic`
   for editorial emphasis — overridden here to keep the H2 reading
   upright across all sections. */
.section-features h2 .fh-accent,
.section-personas h2 .ph-accent,
.section-pricing h2 .ph-accent,
.section-success h2 .sh-accent,
.section-testimonial h2 .th-accent{
    font-style: normal;
}

/* ── Pricing-plan switcher (.ps-pill) — Apple-style segmented control.
      The earlier attempt left both pills looking nearly identical
      on reload because (a) parent was white + active pill was
      white = invisible elevation, and (b) inactive text was
      slate-with-blue-undertone which read as the same hue family
      as the brand-blue active state.

      Fix:
      · Parent container tinted soft slate (#f1f5f9) so the
        white active pill clearly LIFTS off the surface
      · Inactive uses TRUE neutral grays (no blue undertone)
      · Active uses brand royal-blue everywhere
      · 88px breathing room below the switcher group. ── */
.pricing-switcher{
    background: #f1f5f9;
    border-color: rgba(15, 23, 42, .06);
    box-shadow: inset 0 1px 2px rgba(16, 24, 40, .04);
    margin-bottom: 88px;
}

/* INACTIVE — truly neutral, distinctly "not selected" */
.ps-pill{ color: #1f2937; }
.ps-pill .ps-icon{
    background: #ffffff;
    color: #9ca3af;
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, .06);
}
.ps-pill .ps-name{
    color: #1f2937;
    font-weight: 600;
}
.ps-pill .ps-caption{
    color: #6b7280;
}

/* ACTIVE — clean white card with brand-blue identity */
.ps-pill.is-active{
    background: #ffffff;
    color: var(--pa-accent);
    transform: none;
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .06),
        0 10px 22px -10px rgba(15, 23, 42, .14),
        inset 0 0 0 1px rgba(40, 99, 195, .28);
}
.ps-pill.is-active:hover{
    transform: translateY(-1px);
    color: var(--pa-accent);
}
.ps-pill.is-active .ps-icon{
    background: var(--pa-accent-soft);
    color: var(--pa-accent);
    box-shadow: none;
}
.ps-pill.is-active .ps-name{
    color: var(--pa-accent);
    font-weight: 600;
}
.ps-pill.is-active .ps-caption{
    color: rgba(40, 99, 195, .72);
}

/* ── Section eyebrows — unify dot/border/text colors so every chip
      reads as one component family rather than 5 variants. ── */
.personas-eyebrow .pe-dot,
.pricing-eyebrow .pre-dot,
.success-eyebrow .se-dot,
.testimonial-eyebrow .te-dot{
    background: linear-gradient(135deg, #2863c3 0%, #7747b6 100%) !important;
    box-shadow: 0 0 0 3px rgba(40, 99, 195, .14) !important;
}
.personas-eyebrow,
.pricing-eyebrow,
.success-eyebrow,
.testimonial-eyebrow{
    color: #2863c3 !important;
    border-color: rgba(40, 99, 195, .22) !important;
    background: rgba(40, 99, 195, .07) !important;
}

/* ── Product variants — each one gets its own brand-color identity,
      matching the testimonial / persona tab pattern. Three products,
      three brand colors:

        Ask Me        (default)        → Violet      #7747b6
        Insights      (.is-insights)   → Royal Blue  #2863c3
        Data Magnet   (.is-datamagnet) → Turquoise   #1ca9c9

      The .product-detail variant class is added by JS when you
      switch tabs. All eyebrow/pill/chip/quote/CTA accents inside
      the panel read from --pd-accent / --pd-accent-bg /
      --pd-accent-border, so swapping the variable trio is enough. ── */
.product-detail{
    /* Ask Me default — Violet */
    --pd-accent: #7747b6;
    --pd-accent-bg: rgba(119, 71, 182, .22);
    --pd-accent-border: rgba(119, 71, 182, .55);
}
.product-detail.is-insights{
    /* Insights — Royal Blue */
    --pd-accent: #2863c3;
    --pd-accent-bg: rgba(40, 99, 195, .22);
    --pd-accent-border: rgba(40, 99, 195, .55);
}
.product-detail.is-datamagnet{
    /* Data Magnet — Turquoise */
    --pd-accent: #1ca9c9;
    --pd-accent-bg: rgba(28, 169, 201, .22);
    --pd-accent-border: rgba(28, 169, 201, .55);
}

/* ── Product switcher tabs (top of the products section) — each
      tab now paints with its product's accent when active, so
      the tab row itself shows three distinct colors instead of
      a generic white-tint pill regardless of selection. ── */
.product-tab[data-product="askme"].is-active{
    background: rgba(119, 71, 182, .16);
    color: #ffffff;
    box-shadow:
        inset 0 0 0 1px rgba(119, 71, 182, .42),
        0 6px 18px -8px rgba(119, 71, 182, .55);
}
.product-tab[data-product="insights"].is-active{
    background: rgba(40, 99, 195, .16);
    color: #ffffff;
    box-shadow:
        inset 0 0 0 1px rgba(40, 99, 195, .42),
        0 6px 18px -8px rgba(40, 99, 195, .55);
}
.product-tab[data-product="datamagnet"].is-active{
    background: rgba(28, 169, 201, .16);
    color: #ffffff;
    box-shadow:
        inset 0 0 0 1px rgba(28, 169, 201, .42),
        0 6px 18px -8px rgba(28, 169, 201, .55);
}

/* ── Pricing-plan switcher (.psb hover/active idle) — unify
      variants Freemium/Enterprise so chips don't flip identity. ── */
.psb,
.psb.is-active,
.ps-pill.is-active{
    --psb-accent: #2863c3;
    --psb-accent-secondary: #7747b6;
}

/* ── Story-card eyebrow dot — unify the per-card colour rotation
      (was healthcare/manufacturing/agriculture variants in different
      hues) so every story chip reads with the same brand dot. ── */
.story-card .story-eyebrow-dot{
    background: linear-gradient(135deg, #2863c3 0%, #7747b6 100%) !important;
}
.story-card .story-link{
    color: #2863c3 !important;
}

/* ── Testimonial tabs — give each tab its own accent identity
      when active, mirroring the product-section pattern where
      Insights / Ask Me / Data Magnet each have distinct colors.
      Tab 1 (Arvind) → Royal Blue, Tab 2 (Vicente) → Violet,
      Tab 3 (Sara) → Turquoise. The whole .testimonial-tab.is-active
      styling already uses --ts-accent* variables, so we just
      redefine them per nth-child. ── */
.testimonial-tab:nth-child(1){
    --ts-accent: #2863c3;            /* Royal Blue 450 */
    --ts-accent-secondary: #7747b6;
    --ts-accent-glow-a: rgba(40, 99, 195, .35);
    --ts-accent-glow-b: rgba(40, 99, 195, .22);
    --ts-accent-soft:  rgba(40, 99, 195, .08);
    --ts-accent-border: rgba(40, 99, 195, .30);
}
.testimonial-tab:nth-child(2){
    --ts-accent: #7747b6;            /* Violet 450 */
    --ts-accent-secondary: #2863c3;
    --ts-accent-glow-a: rgba(119, 71, 182, .35);
    --ts-accent-glow-b: rgba(119, 71, 182, .22);
    --ts-accent-soft:  rgba(119, 71, 182, .08);
    --ts-accent-border: rgba(119, 71, 182, .30);
}
.testimonial-tab:nth-child(3){
    --ts-accent: #1ca9c9;            /* Turquoise/SkyBlue 500 */
    --ts-accent-secondary: #12b6f8;
    --ts-accent-glow-a: rgba(28, 169, 201, .35);
    --ts-accent-glow-b: rgba(28, 169, 201, .22);
    --ts-accent-soft:  rgba(28, 169, 201, .08);
    --ts-accent-border: rgba(28, 169, 201, .30);
}

/* ── Personas role tabs (Analyst / Leader / Scientist / Engineer)
      — each tab gets a distinct brand-color identity when active,
      same pattern as the testimonial tabs above. .px-tab.is-active
      uses `linear-gradient(135deg, var(--pa-accent), var(--pa-accent-secondary))`
      for its filled pill background plus shadow glows from the
      --pa-accent-glow-* tokens, so redefining those tokens per
      :nth-child swaps the entire active appearance. ── */
.px-tab:nth-child(1){
    --pa-accent: #2863c3;            /* Royal Blue 450 */
    --pa-accent-secondary: #7747b6;  /* → Violet 450 */
    --pa-accent-glow-a: rgba(40, 99, 195, .55);
    --pa-accent-glow-b: rgba(119, 71, 182, .35);
}
.px-tab:nth-child(2){
    --pa-accent: #7747b6;            /* Violet 450 */
    --pa-accent-secondary: #a855f7;  /* → lighter violet */
    --pa-accent-glow-a: rgba(119, 71, 182, .55);
    --pa-accent-glow-b: rgba(168, 85, 247, .35);
}
.px-tab:nth-child(3){
    --pa-accent: #1ca9c9;            /* Turquoise/SkyBlue 500 */
    --pa-accent-secondary: #12b6f8;  /* → SkyBlue 500 */
    --pa-accent-glow-a: rgba(28, 169, 201, .55);
    --pa-accent-glow-b: rgba(18, 182, 248, .35);
}
.px-tab:nth-child(4){
    --pa-accent: #12b6f8;            /* SkyBlue 500 */
    --pa-accent-secondary: #2863c3;  /* → Royal Blue 450 */
    --pa-accent-glow-a: rgba(18, 182, 248, .55);
    --pa-accent-glow-b: rgba(40, 99, 195, .35);
}

/* ── Personas LEFT column — uniform 34px rhythm between every block,
      same pattern as the product-detail panel:
        tabs row → eyebrow → headline → description → chips.
      The chips row is the last item, so no margin-bottom on it. ── */
.pex-selector{ margin-bottom: 34px; }
.pex-role-label{ margin-bottom: 34px; }
.pex-text h3{ margin: 0 0 34px; }
.pex-text p{ margin: 0 0 34px; }

/* ════════════════════════════════════════════════════════════════
   SITE NAV — frosted-glass treatment
   Replace the solid dark navy bar with a translucent, blurred,
   subtly brand-tinted glass surface so the page content shows
   through (premium SaaS feel, matches the dropdown panels).
   Adds:
     · semi-transparent navy fill + 16px Gaussian backdrop blur
     · 1px white inner-highlight rim along the top edge
     · 1px brand-gradient hairline along the bottom edge
     · soft brand glow shadow beneath
   Doubled-class selector ensures we beat the linked stylesheet's
   equal-specificity `background: #051A3C` solid fill.
   ════════════════════════════════════════════════════════════════ */
.site-top.site-top{
    position: sticky;
    top: 0;
    z-index: 200;
    background: transparent;
    border-bottom: none;
}
.hello-bar.hello-bar{
    background: rgba(7, 33, 75, .55);
    -webkit-backdrop-filter: blur(16px) saturate(150%);
            backdrop-filter: blur(16px) saturate(150%);
    border-bottom: 1px solid rgba(255, 255, 255, .06);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .04);
}
.site-header.site-header{
    position: relative;
    background: rgba(3, 13, 30, .55);
    -webkit-backdrop-filter: blur(18px) saturate(155%);
            backdrop-filter: blur(18px) saturate(155%);
    border-bottom: 1px solid rgba(255, 255, 255, .06);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, .05),
        0 8px 24px -16px rgba(0, 0, 0, .35);
}
/* Subtle brand-gradient hairline along the bottom edge of the
   main nav — ties the header to the same accent language used on
   every dropdown's top edge. */
.site-header.site-header::after{
    content: "";
    position: absolute;
    left: 0; right: 0;
    bottom: -1px;
    height: 1px;
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(119, 71, 182, .35) 22%,
        rgba(40, 99, 195, .42) 50%,
        rgba(28, 169, 201, .35) 78%,
        transparent 100%);
    pointer-events: none;
}
/* .is-scrolled — solid, no blur. */
.site-header.is-scrolled.is-scrolled{
    background: rgba(5, 20, 55, .95);
    -webkit-backdrop-filter: none;
            backdrop-filter: none;
    border-bottom: 1px solid rgba(255, 255, 255, .1);
}
/* Hero stage's transparent override (line 387 in this file) would
   strip our glass on the hero — re-apply the glass background and
   keep the stacking high enough to sit above hero orbs. */
.hero-stage .site-top{
    background: transparent;
}
.hero-stage .site-header{ z-index: 60; }

/* ════════════════════════════════════════════════════════════════
   NAV MEGA-MENU DROPDOWNS
   Each top-level nav <li.has-dropdown> contains a positioned
   .nav-mega panel that fades + slides in on hover/focus. Three
   layouts:
     .nav-mega--1col → simple list (Pricing, Company)
     .nav-mega--2col → two columns (Solutions)
     .nav-mega--3col → three columns (Platform, Resources)
   The .nav-mega-list--2col modifier splits any list into two
   CSS columns for dense link sets (Capabilities, Industries).
   ════════════════════════════════════════════════════════════════ */
.nav-links{ position: relative; }
/* Wide megas need .site-header as their containing block, so override
   .nav-links back to static inside the header. */
.site-header .nav-links{ position: static; }
.nav-item{
    position: relative;
}
/* Hover bridge — invisible padding under each trigger so the cursor
   can travel from the trigger down into the dropdown without losing
   hover state. */
.nav-item.has-dropdown::after{
    content: "";
    position: absolute;
    left: 0; right: 0;
    top: 100%;
    height: 18px;
    pointer-events: none;
}
.nav-item.has-dropdown:hover::after,
.nav-item.has-dropdown:focus-within::after{
    pointer-events: auto;
}
/* Wide-mega nav-items must not be positioned ancestors so .site-header
   becomes the containing block — top:100% on the mega then lands
   exactly at the header's bottom edge with zero gap. */
.nav-item--platform,
.nav-item--solutions,
.nav-item--resources,
.nav-item--company {
    position: static;
}
/* No CSS hover bridge needed for wide megas — the mega starts flush
   at the header bottom; the JS 200ms delay handles traversal. */
.nav-item--platform.has-dropdown::after,
.nav-item--solutions.has-dropdown::after,
.nav-item--resources.has-dropdown::after,
.nav-item--company.has-dropdown::after {
    display: none;
}
.nav-trigger .caret{
    transition: transform .3s cubic-bezier(.22, .61, .36, 1);
}
.nav-item.has-dropdown:hover .nav-trigger .caret,
.nav-item.has-dropdown:focus-within .nav-trigger .caret{
    transform: rotate(180deg);
}

.nav-mega{
    position: absolute;
    top: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(-6px);
    min-width: 280px;
    /* Roomier padding — 32px sides + 28px top/bottom — lets the
       link list breathe and stops the menu reading as a tight block. */
    padding: 28px 32px;
    background: rgba(7, 14, 32, .96);
    border: 1px solid rgba(255, 255, 255, .08);
    border-radius: 14px;
    box-shadow:
        0 1px 2px rgba(0, 0, 0, .35),
        0 30px 60px -20px rgba(0, 0, 0, .55),
        0 12px 30px -10px rgba(85, 41, 142, .22),
        inset 0 1px 0 rgba(255, 255, 255, .05);
    -webkit-backdrop-filter: blur(16px);
            backdrop-filter: blur(16px);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 50;
    transition:
        opacity .25s cubic-bezier(.22, .61, .36, 1),
        transform .25s cubic-bezier(.22, .61, .36, 1),
        visibility 0s linear .25s;
    overflow: hidden;
}
/* Transparent bridge fills the gap between trigger and menu */
.nav-mega::after{ content: ""; position: absolute; top: -12px; left: 0; right: 0; height: 12px; background: transparent; }
/* Subtle brand-gradient accent on the top edge — same violet→royal-blue→turquoise
   sweep as .btn-primary. Ties the dropdown visually to the site's primary
   CTA language without overwhelming the menu. */
.nav-mega::before{
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 1px;
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(119, 71, 182, .55) 25%,
        rgba(40, 99, 195, .55) 50%,
        rgba(28, 169, 201, .55) 75%,
        transparent 100%);
    pointer-events: none;
}
.nav-item.has-dropdown:hover > .nav-mega,
.nav-item.has-dropdown:focus-within > .nav-mega,
.nav-item.has-dropdown.is-open > .nav-mega{
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
    transition:
        opacity .25s cubic-bezier(.22, .61, .36, 1),
        transform .25s cubic-bezier(.22, .61, .36, 1),
        visibility 0s;
}

/* Layout variants — widened for cleaner reading */
.nav-mega--1col{
    min-width: 260px;
    padding: 22px 28px;
}
.nav-mega--2col{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 44px;
    min-width: 640px;
}
.nav-mega--3col{
    display: grid;
    grid-template-columns: 1fr 1.7fr 1.4fr;
    gap: 44px;
    min-width: 860px;
}

/* Column titles + links */
.nav-mega-title{
    margin: 0 0 18px;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 10.5px;
    line-height: 1;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .42);
}
.nav-mega-list{
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}
/* Dense 2-column list (Capabilities, By Industry) — keep a calm
   row gap and a generous column gap so it doesn't read as a wall. */
.nav-mega-list--2col{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 4px 32px;
}
.nav-mega-list li a{
    display: block;
    padding: 9px 12px;
    margin: 0 -12px;
    color: rgba(255, 255, 255, .82);
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13.5px;
    line-height: 20px;
    text-decoration: none;
    border-radius: 8px;
    transition: background .18s ease, color .18s ease, transform .25s cubic-bezier(.22, .61, .36, 1);
    white-space: nowrap;
}
.nav-mega-list li a:hover,
.nav-mega-list li a:focus-visible{
    background: rgba(64, 117, 201, .14);
    color: #ffffff;
    transform: translateX(2px);
}

/* Allow the Recent Releases / similar long-text links to wrap
   instead of trying to fit on one line in a narrow column. */
.nav-mega-col .nav-mega-list li a{
    white-space: nowrap;
}
.nav-mega--3col .nav-mega-col:last-child .nav-mega-list li a{
    white-space: normal;
    line-height: 19px;
}

/* On smaller widths, scale down the wide mega layouts so they
   don't exceed the viewport. The 3-col Platform/Resources menus
   are the widest; they shrink first. */
@media (max-width: 1280px){
    .nav-mega--3col{ min-width: 760px; grid-template-columns: 1fr 1.5fr 1.2fr; gap: 32px; padding: 24px 28px; }
    .nav-mega--2col{ min-width: 560px; gap: 36px; }
}
@media (max-width: 1100px){
    .nav-mega--3col{ min-width: 660px; gap: 24px; padding: 22px 24px; }
    .nav-mega--2col{ min-width: 480px; gap: 28px; }
}
@media (max-width: 991px){
    /* Below desktop, the nav-links container hides under the mobile
       menu (existing behavior); the mega-menus follow it out of view. */
    .nav-mega{ display: none; }
}

/* ════════════════════════════════════════════════════════════════
   PLATFORM MEGA-MENU — 3-column rich layout
     Col 1 (240px) — Products + Capabilities nav list
     Col 2 (1fr)    — Dynamic detail panel (JS swaps content)
     Col 3 (280px) — Recent Releases sidebar with View All CTA
   Hovering any item in Col 1 fires platformShow(key) which
   re-renders Col 2's innerHTML from the platformData object.
   ════════════════════════════════════════════════════════════════ */
.nav-mega--platform,
.nav-mega--solutions,
.nav-mega--resources{
    display: grid;
    gap: 0;
    padding: 0;
    /* Wide megas live as direct children of .site-header (position:relative)
       so top:100% always lands exactly at the header's bottom edge —
       no JS measurement needed. */
    position: absolute;
    top: 100%;
    left:  max(40px, calc((100vw - 1500px) / 2 + 40px));
    right: max(40px, calc((100vw - 1500px) / 2 + 40px));
    min-width: 0;
    width: auto;
    border-top-left-radius: 0;
    border-top-right-radius: 0;
    border-top: none;
    transform: translateY(-6px);
}
/* The nav bar's brand-gradient hairline now visually seams the two
   together — drop the dropdown's own ::before accent so we don't
   double up two lines at the same edge. */
.nav-mega--platform::before,
.nav-mega--solutions::before,
.nav-mega--resources::before{
    display: none;
}
/* 3-col layout for Platform / Solutions */
.nav-mega--platform,
.nav-mega--solutions{ grid-template-columns: 240px 1fr 280px; }
/* 2-col layout for Resources — wide nav block | sidebar */
.nav-mega--resources{ grid-template-columns: 1fr 320px; }
/* Resources Col 1 — Watch / Read / Learn as three equal columns
   with subtle vertical dividers between them so each group reads
   as its own distinct section. Double-class selector
   (.np-nav.np-nav--wide) bumps specificity to (0,2,0) so it
   beats the base .np-nav rule (which sets display:flex/column). */
.np-nav.np-nav--wide{
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 0;
    padding: 28px 0;
    border-right: 1px solid rgba(255, 255, 255, .06);
}
.np-nav.np-nav--wide .np-nav-section{
    gap: 0;
    padding: 0 32px;
    border-right: 1px solid rgba(255, 255, 255, .06);
}
.np-nav.np-nav--wide .np-nav-section:last-child{
    border-right: none;
}

/* Re-bind the show/hide transform for the fixed-position panels
   (the base rule used translateX -50% which we no longer want). */
/* Wide megas are children of .site-header; use :has() to show them */
.site-header:has(.nav-item--platform:hover)       #platformMega,
.site-header:has(.nav-item--platform:focus-within) #platformMega,
.site-header:has(.nav-item--platform.is-open)      #platformMega,
.site-header:has(.nav-item--solutions:hover)        #solutionMega,
.site-header:has(.nav-item--solutions:focus-within) #solutionMega,
.site-header:has(.nav-item--solutions.is-open)      #solutionMega,
.site-header:has(.nav-item--resources:hover)        #resourcesMega,
.site-header:has(.nav-item--resources:focus-within) #resourcesMega,
.site-header:has(.nav-item--resources.is-open)      #resourcesMega,
.site-header:has(.nav-item--company:hover)          #companyMega,
.site-header:has(.nav-item--company:focus-within)   #companyMega,
.site-header:has(.nav-item--company.is-open)        #companyMega{
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateY(0);
    transition:
        opacity .25s cubic-bezier(.22, .61, .36, 1),
        transform .25s cubic-bezier(.22, .61, .36, 1),
        visibility 0s;
}
/* Tablet step — when the hello-bar is hidden or header tightens,
   the top offset shrinks accordingly. */
/* No hard-coded tablet step needed — JS-measured --nav-height
   already adapts to whatever the actual rendered nav height is. */
/* Column 1 — nav list */
.np-nav{
    padding: 28px 22px 28px 28px;
    border-right: 1px solid rgba(255, 255, 255, .06);
    display: flex;
    flex-direction: column;
    gap: 22px;
}
.np-nav-section{
    display: flex;
    flex-direction: column;
}
.np-nav-title{
    margin: 0 0 12px;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 10.5px;
    line-height: 1;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .42);
}
.np-nav-list{
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 1px;
}
.np-nav-list a{
    display: block;
    padding: 8px 12px;
    margin: 0 -12px;
    color: rgba(255, 255, 255, .78);
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13px;
    line-height: 18px;
    text-decoration: none;
    border-radius: 8px;
    transition: background .18s ease, color .18s ease, transform .25s cubic-bezier(.22, .61, .36, 1);
    position: relative;
}
.np-nav-list a:hover,
.np-nav-list a.is-active{
    background: rgba(64, 117, 201, .16);
    color: #ffffff;
    transform: translateX(2px);
}
/* Active indicator — small brand bar on the left of the active item */
.np-nav-list a.is-active::before{
    content: "";
    position: absolute;
    left: 2px;
    top: 50%;
    transform: translateY(-50%);
    width: 3px;
    height: 16px;
    border-radius: 2px;
    background: linear-gradient(180deg, #7747b6 0%, #2863c3 50%, #1ca9c9 100%);
}
/* Capabilities "see-all" link — arrow on the right, hairline above
   the section to set it apart from the Products section. */
.np-nav-section:has(.np-cap-link){
    margin-top: 4px;
    padding-top: 18px;
    border-top: 1px solid rgba(255, 255, 255, .06);
}
.np-nav-list a.np-cap-link{
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-weight: 500;
    color: rgba(255, 255, 255, .92);
}
.np-nav-list a.np-cap-link svg{
    color: rgba(255, 255, 255, .42);
    transition: transform .25s cubic-bezier(.22, .61, .36, 1), color .25s ease;
}
.np-nav-list a.np-cap-link:hover svg,
.np-nav-list a.np-cap-link.is-active svg{
    color: #67d3ff;
    transform: translateX(2px);
}

/* Column 2 — capability grid (all 12 at a glance) */
.np-detail{
    padding: 28px 28px 24px;
    display: flex;
    flex-direction: column;
    min-height: 360px;
    min-width: 0;
}
.np-grid-title{
    margin-bottom: 16px;
}
.np-grid{
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 8px;
}
/* HTML's `hidden` attribute defaults to display:none, but an
   explicit `display: grid/flex` on the element overrides it.
   Force-hide the grid + grid title + product pane when their
   `hidden` attribute is set so the swap actually works. */
.np-grid[hidden],
.np-grid-title[hidden],
.np-product-pane[hidden]{
    display: none;
}
.np-grid-card{
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 12px 14px;
    border-radius: 10px;
    background: rgba(255, 255, 255, .02);
    border: 1px solid rgba(255, 255, 255, .06);
    color: rgba(255, 255, 255, .88);
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 12.5px;
    line-height: 16px;
    text-decoration: none;
    transition:
        background .22s ease,
        border-color .22s ease,
        color .22s ease,
        transform .25s cubic-bezier(.22, .61, .36, 1);
}
.np-grid-card .np-grid-ic{
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    padding: 6px;
    border-radius: 8px;
    background: rgba(40, 99, 195, .12);
    color: #aec7f0;
    transition: background .22s ease, color .22s ease;
}
.np-grid-card:hover,
.np-grid-card.is-active{
    background: rgba(64, 117, 201, .14);
    border-color: rgba(64, 117, 201, .38);
    color: #ffffff;
    transform: translateY(-1px);
}
.np-grid-card:hover .np-grid-ic,
.np-grid-card.is-active .np-grid-ic{
    background: rgba(40, 99, 195, .24);
    color: #ffffff;
}
.np-pane{
    display: flex;
    flex-direction: column;
    opacity: 0;
    transform: translateY(6px);
    transition:
        opacity .22s cubic-bezier(.22, .61, .36, 1),
        transform .22s cubic-bezier(.22, .61, .36, 1);
}
.np-pane.is-entering{
    opacity: 1;
    transform: translateY(0);
}
.np-pane-kind{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    align-self: flex-start;
    padding: 4px 10px;
    background: rgba(40, 99, 195, .12);
    border: 1px solid rgba(40, 99, 195, .28);
    border-radius: 999px;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 9.5px;
    letter-spacing: 1.3px;
    text-transform: uppercase;
    color: #aec7f0;
    margin-bottom: 14px;
}
.np-pane-kind .np-kind-dot{
    width: 5px; height: 5px; border-radius: 50%;
    background: linear-gradient(135deg, #7747b6, #2863c3, #1ca9c9);
}
.np-pane-title{
    margin: 0 0 8px;
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 400;
    font-size: 26px;
    line-height: 32px;
    letter-spacing: -.4px;
    color: #ffffff;
}
.np-pane-tagline{
    margin: 0 0 14px;
    font-family: 'Inter', sans-serif;
    font-size: 12.5px;
    font-weight: 500;
    letter-spacing: .25px;
    text-transform: uppercase;
    color: #67d3ff;
}
.np-pane-desc{
    margin: 0 0 14px;
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13.5px;
    line-height: 22px;
    color: rgba(255, 255, 255, .72);
    max-width: 460px;
}
/* Inline "Learn more →" text link — sits right under the description
   as a secondary, contextual action. Visually subtle so the bottom
   Start Free / Pricing CTAs remain the primary destinations. */
.np-learn-more{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-bottom: 22px;
    padding: 0;
    color: #67d3ff;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 13px;
    line-height: 18px;
    text-decoration: none;
    border-bottom: 1px solid rgba(103, 211, 255, .22);
    padding-bottom: 2px;
    align-self: flex-start;
    transition: color .25s ease, border-color .25s ease, gap .25s cubic-bezier(.22, .61, .36, 1);
}
.np-learn-more:hover{
    color: #ffffff;
    border-color: rgba(255, 255, 255, .55);
    gap: 10px;
}
/* Product CTAs row */
.np-pane-actions{
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: auto;
    padding-top: 4px;
}
.np-cta{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 9px 16px;
    border-radius: 8px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 12.5px;
    text-decoration: none;
    transition: background .25s ease, border-color .25s ease, color .25s ease, transform .25s cubic-bezier(.22, .61, .36, 1);
}
.np-cta--primary{
    background-image: linear-gradient(to left, #7747b6 0%, #4075c9 50.718%, #1ca9c9 100%);
    background-color: transparent;
    color: #ffffff;
    font-weight: 600;
    box-shadow: 0 6px 16px -8px rgba(40, 99, 195, .55);
}
.np-cta--primary:hover{ transform: translateY(-1px); filter: brightness(1.06); }
.np-cta--secondary{
    background: transparent;
    border: 1px solid rgba(255, 255, 255, .14);
    color: rgba(255, 255, 255, .88);
}
.np-cta--secondary:hover{
    background: rgba(255, 255, 255, .06);
    border-color: rgba(255, 255, 255, .26);
}
/* Capability sub-feature list */
.np-pane-features{
    list-style: none;
    margin: 0 0 8px;
    padding: 0;
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px 24px;
}
.np-pane-features li{
    display: flex;
    align-items: flex-start;
    gap: 8px;
    font-family: 'Inter', sans-serif;
    font-size: 13px;
    line-height: 18px;
    color: rgba(255, 255, 255, .82);
}
.np-pane-features li::before{
    content: "";
    flex: 0 0 5px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    margin-top: 7px;
    background: linear-gradient(135deg, #2863c3, #7747b6);
}

/* Column 3 — Recent Releases */
.np-releases{
    background: rgba(0, 0, 0, .18);
    border-left: 1px solid rgba(255, 255, 255, .06);
    padding: 28px 24px;
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.np-release{
    display: flex;
    flex-direction: column;
    gap: 4px;
    padding: 12px 14px;
    margin: 0 -6px;
    border-radius: 10px;
    text-decoration: none;
    transition: background .2s ease, transform .25s cubic-bezier(.22, .61, .36, 1);
}
.np-release:hover{
    background: rgba(64, 117, 201, .12);
    transform: translateX(2px);
}
.np-release-tag{
    align-self: flex-start;
    padding: 2px 7px;
    background: linear-gradient(135deg, #1ca9c9, #2863c3);
    color: #ffffff;
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 9px;
    letter-spacing: .8px;
    text-transform: uppercase;
    border-radius: 999px;
    margin-bottom: 2px;
}
.np-release-title{
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 13px;
    line-height: 18px;
    color: #ffffff;
}
.np-release-sub{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 11.5px;
    line-height: 16px;
    color: rgba(255, 255, 255, .56);
}
.np-view-all{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin-top: 6px;
    padding: 8px 0 0;
    border-top: 1px solid rgba(255, 255, 255, .08);
    color: #67d3ff;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 12px;
    text-decoration: none;
    transition: color .25s ease, gap .25s ease;
}
.np-view-all:hover{
    color: #ffffff;
    gap: 10px;
}

/* Tighter responsive: scale column widths on smaller desktops */
@media (max-width: 1280px){
    .nav-mega--platform,
    .nav-mega--solutions{ grid-template-columns: 220px 1fr 250px; }
    .nav-mega--resources{ grid-template-columns: 1fr 290px; }
    .np-pane-title{ font-size: 24px; line-height: 30px; }
}
@media (max-width: 1100px){
    .nav-mega--platform,
    .nav-mega--solutions{ grid-template-columns: 200px 1fr 230px; }
    .nav-mega--resources{ grid-template-columns: 1fr 260px; }
    .np-nav{ padding: 22px 16px 22px 22px; }
    .np-nav.np-nav--wide{ grid-template-columns: 1fr 1fr 1fr; gap: 0; padding: 22px 0; }
    .np-nav.np-nav--wide .np-nav-section{ padding: 0 22px; }
    .np-detail{ padding: 24px 22px; }
    .np-releases{ padding: 22px 18px; }
}


/* ════════════════════════════════════════════════════════════════
   PRICING — asymmetric split layout (Lumenore SaaS comparison)
     LEFT (1fr)   main panel: plan switcher + tag + heading + sub
                  + capability cards (2-col grid, plan-driven count)
                  + Compare Plans CTA
     RIGHT (360px) column of 3 stacked insight cards:
                  Value (h4 + 3 checked sub-bullets — swaps per cap)
                  KPI (stat number + caption — swaps per cap)
                  Workflow (static 4-node pipeline visual)
   Active capability card has a brand-gradient border via masked
   ::after; the workflow line pulses with a brand-gradient highlight.
   ════════════════════════════════════════════════════════════════ */
.pricing-grid{
    display: grid;
    grid-template-columns: 3fr 2fr;
    gap: 24px;
    margin-top: 48px;
    align-items: stretch;
}

/* ── LEFT — main pricing panel ───────────────────────────── */
.pricing-main{
    position: relative;
    isolation: isolate;
    padding: 32px 36px 36px;
    border-radius: 28px;
    background:
        radial-gradient(ellipse 80% 60% at 0% 0%, rgba(40, 99, 195, .05) 0%, transparent 60%),
        radial-gradient(ellipse 60% 50% at 100% 100%, rgba(28, 169, 201, .04) 0%, transparent 60%),
        linear-gradient(155deg, #ffffff 0%, #f7faff 100%);
    border: 1px solid rgba(40, 99, 195, .08);
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .04),
        0 24px 56px -28px rgba(40, 99, 195, .14);
    display: flex;
    flex-direction: column;
}

/* Plan switcher — compact pill, two chips inline */
.pm-switcher{
    display: inline-flex;
    align-self: flex-start;
    padding: 4px;
    margin-bottom: 28px;
    background: #f1f5f9;
    border-radius: 999px;
    box-shadow: inset 0 1px 2px rgba(16, 24, 40, .04);
}
.pm-plan{
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 16px;
    background: transparent;
    border: none;
    border-radius: 999px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 13px;
    color: #475467;
    cursor: pointer;
    transition: background .25s ease, color .25s ease, box-shadow .25s ease;
}
.pm-plan svg{ color: #9ca3af; transition: color .25s ease; }
.pm-plan:hover{ color: #1f2937; }
.pm-plan.is-active{
    background: #ffffff;
    color: #2863c3;
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .06),
        0 4px 12px -6px rgba(40, 99, 195, .25),
        inset 0 0 0 1px rgba(40, 99, 195, .22);
}
.pm-plan.is-active svg{ color: #2863c3; }

.pm-tag{
    display: inline-flex;
    align-items: center;
    gap: 8px;
    align-self: flex-start;
    padding: 6px 14px;
    background: rgba(40, 99, 195, .08);
    border: 1px solid rgba(40, 99, 195, .18);
    border-radius: 999px;
    color: #2863c3;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11px;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    margin-bottom: 18px;
}
.pm-tag-dot{
    width: 6px; height: 6px;
    border-radius: 50%;
    background: linear-gradient(135deg, #1ca9c9, #7747b6);
    box-shadow: 0 0 8px rgba(40, 99, 195, .55);
}
.pm-title{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 400;
    font-size: 32px;
    line-height: 42px;
    color: #101828;
    margin: 0 0 28px;
    max-width: 540px;
    letter-spacing: -.4px;
    font-variation-settings: 'SOFT' 0, 'WONK' 1;
    transition: opacity .22s ease;
}
.pm-sub{
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 15px;
    line-height: 25px;
    color: #101828;
    margin: 0 0 28px;
    max-width: 520px;
    transition: opacity .22s ease;
}

/* Capability cards — 2-col grid, count is driven by plan */
.pm-cards{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin: 0 0 28px;
}
.pm-card{
    position: relative;
    isolation: isolate;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 16px 18px;
    background: #ffffff;
    border: 1px solid rgba(15, 23, 42, .06);
    border-radius: 16px;
    cursor: pointer;
    text-align: left;
    font-family: 'Inter', sans-serif;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .03);
    transition:
        transform .35s cubic-bezier(.22, .61, .36, 1),
        box-shadow .35s cubic-bezier(.22, .61, .36, 1),
        border-color .25s ease;
}
.pm-card::after{
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    padding: 1px;
    background: linear-gradient(135deg, #1ca9c9 0%, #4075c9 50%, #7747b6 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;
    opacity: 0;
    transition: opacity .35s ease;
    pointer-events: none;
    z-index: 1;
}
.pm-card-num{
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
    display: inline-grid;
    place-items: center;
    border-radius: 8px;
    background: rgba(40, 99, 195, .08);
    color: #2863c3;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11px;
    letter-spacing: .3px;
    transition: background .25s ease, color .25s ease;
}
.pm-card-title{
    flex: 1;
    color: #101828;
    font-weight: 500;
    font-size: 13.5px;
    line-height: 19px;
}
.pm-card-arrow{
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    color: #98a2b3;
    transition: transform .35s cubic-bezier(.22, .61, .36, 1), color .25s ease;
}
.pm-card:hover{
    transform: translateY(-3px) scale(1.01);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        0 18px 36px -16px rgba(40, 99, 195, .22),
        0 8px 18px -10px rgba(119, 71, 182, .12);
    border-color: transparent;
}
.pm-card:hover::after,
.pm-card.is-active::after{ opacity: 1; }
.pm-card:hover .pm-card-arrow,
.pm-card.is-active .pm-card-arrow{
    transform: translateX(3px);
    color: #2863c3;
}
.pm-card.is-active{
    transform: translateY(-2px);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        0 16px 32px -14px rgba(40, 99, 195, .26),
        0 8px 18px -10px rgba(119, 71, 182, .16);
    border-color: transparent;
}
.pm-card.is-active .pm-card-num{
    background: linear-gradient(135deg, #1ca9c9 0%, #4075c9 50%, #7747b6 100%);
    color: #ffffff;
    box-shadow: 0 6px 14px -6px rgba(40, 99, 195, .55);
}

.pm-cta{ align-self: flex-start; margin-top: auto; }

/* ── RIGHT — 3 stacked cards ─────────────────────────────── */
.pricing-aside{
    display: grid;
    grid-template-rows: auto auto auto;
    gap: 16px;
}
.pa-card{
    position: relative;
    padding: 22px 24px;
    background: #ffffff;
    border: 1px solid rgba(15, 23, 42, .06);
    border-radius: 22px;
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .04),
        0 12px 28px -16px rgba(15, 23, 42, .08);
    transition: transform .35s cubic-bezier(.22, .61, .36, 1), box-shadow .35s ease;
}
.pa-card:hover{
    transform: translateY(-2px);
    box-shadow:
        0 1px 3px rgba(16, 24, 40, .05),
        0 18px 36px -16px rgba(40, 99, 195, .14);
}
.pa-label{
    display: inline-block;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 10.5px;
    line-height: 1;
    letter-spacing: 1.4px;
    text-transform: uppercase;
    color: #2863c3;
    margin-bottom: 10px;
}
.pa-title{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 400;
    font-size: 18px;
    line-height: 26px;
    color: #101828;
    margin: 0 0 14px;
    font-variation-settings: 'SOFT' 0, 'WONK' 1;
    transition: opacity .22s ease;
}
/* GIF preview inside the Value card — sits at the top, swaps when the
   active capability changes. Image scales to a 16:10-ish container with
   rounded corners and a subtle brand-tinted backdrop. */
.pa-card--value .pa-media{
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 10;
    border-radius: 14px;
    overflow: hidden;
    margin: 0 0 16px;
    background:
        radial-gradient(ellipse 70% 60% at 50% 50%, rgba(40, 99, 195, .08) 0%, transparent 70%),
        #f7faff;
    border: 1px solid rgba(40, 99, 195, .08);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .6);
    transition: opacity .22s ease;
}
.pa-card--value .pa-media img{
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
    display: block;
}
/* Swap-fade applies to the media too */
.is-swapping .pa-media{ opacity: 0; }

.pa-card--value .pa-checklist{
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 10px;
    transition: opacity .22s ease;
}
.pa-card--value .pa-checklist li{
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13.5px;
    line-height: 20px;
    color: #344054;
}
.pa-check{
    flex: 0 0 16px;
    width: 16px;
    height: 16px;
    margin-top: 2px;
    padding: 3px;
    border-radius: 50%;
    background: linear-gradient(135deg, #1ca9c9, #4075c9);
    color: #ffffff;
}

.pa-card--kpi{
    padding: 24px 26px;
    background:
        radial-gradient(ellipse 80% 80% at 100% 0%, rgba(28, 169, 201, .08) 0%, transparent 60%),
        #ffffff;
}
.pa-kpi-icon{
    display: inline-grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 10px;
    background: rgba(40, 99, 195, .08);
    color: #2863c3;
    margin-bottom: 12px;
}
.pa-kpi-icon svg{ width: 18px; height: 18px; }
.pa-kpi-stat{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 300;
    font-size: 52px;
    line-height: 56px;
    color: #101828;
    margin: 0 0 6px;
    letter-spacing: -1.5px;
    font-variation-settings: 'SOFT' 0, 'WONK' 1;
    background: linear-gradient(135deg, #2863c3 0%, #7747b6 100%);
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    transition: opacity .22s ease;
}
.pa-kpi-stat > span:last-child{
    font-size: 32px;
    margin-left: 2px;
    -webkit-text-fill-color: transparent;
            color: transparent;
}
.pa-kpi-cap{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13px;
    line-height: 20px;
    color: #475467;
    margin: 0;
    transition: opacity .22s ease;
}

.pa-card--flow{ overflow: hidden; }
.pa-flow{
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 14px 4px 6px;
}
.pa-flow-line{
    position: absolute;
    left: 18px;
    right: 18px;
    top: 50%;
    transform: translateY(calc(-50% - 8px));
    height: 2px;
    border-radius: 1px;
    background: linear-gradient(90deg,
        rgba(28, 169, 201, .25) 0%,
        rgba(64, 117, 201, .35) 50%,
        rgba(119, 71, 182, .25) 100%);
    z-index: 0;
    overflow: hidden;
}
.pa-flow-line::before{
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg,
        transparent 0%,
        rgba(255, 255, 255, .9) 50%,
        transparent 100%);
    transform: translateX(-100%);
    animation: paFlowPulse 3.6s ease-in-out infinite;
}
@keyframes paFlowPulse{
    0%   { transform: translateX(-100%); }
    60%  { transform: translateX(120%); }
    100% { transform: translateX(120%); }
}
.pa-flow-node{
    position: relative;
    z-index: 1;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    animation: paFlowFloat 4s ease-in-out infinite alternate;
    animation-delay: calc(var(--i) * .35s);
}
@keyframes paFlowFloat{
    0%   { translate: 0 -2px; }
    100% { translate: 0  2px; }
}
.pa-flow-node svg{
    width: 18px;
    height: 18px;
    padding: 8px;
    box-sizing: content-box;
    border-radius: 50%;
    background: #ffffff;
    color: #2863c3;
    box-shadow:
        0 0 0 1px rgba(40, 99, 195, .14),
        0 4px 10px -4px rgba(40, 99, 195, .22);
}
.pa-flow-node span{
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 10.5px;
    color: #475467;
    letter-spacing: .2px;
}

/* Swap fade — when content changes, briefly fade content opacity */
.is-swapping .pm-title,
.is-swapping .pm-sub,
.is-swapping .pm-cards,
.is-swapping .pa-title,
.is-swapping .pa-checklist,
.is-swapping .pa-kpi-stat,
.is-swapping .pa-kpi-cap{
    opacity: 0;
}

/* Soft fade-in on first paint */
.pricing-main, .pricing-aside .pa-card{
    opacity: 0;
    translate: 0 8px;
    animation: pricingFadeIn .65s cubic-bezier(.22, .61, .36, 1) forwards;
}
.pricing-aside .pa-card:nth-child(1){ animation-delay: .08s; }
.pricing-aside .pa-card:nth-child(2){ animation-delay: .18s; }
.pricing-aside .pa-card:nth-child(3){ animation-delay: .28s; }
@keyframes pricingFadeIn{
    from { opacity: 0; translate: 0 8px; }
    to   { opacity: 1; translate: 0 0; }
}

/* Responsive */
@media (max-width: 1100px){
    .pricing-grid{ grid-template-columns: 2fr 3fr; gap: 20px; }
    .pricing-main{ padding: 28px 28px 28px; }
    .pm-title{ font-size: 28px; line-height: 38px; }
}
@media (max-width: 900px){
    .pricing-grid{ grid-template-columns: 1fr; }
    .pricing-aside{ grid-template-rows: none; grid-template-columns: 1fr 1fr 1fr; }
}
@media (max-width: 700px){
    .pm-cards{ grid-template-columns: 1fr; }
    .pricing-aside{ grid-template-columns: 1fr; }
    .pm-title{ font-size: 26px; line-height: 34px; }
}

@media (prefers-reduced-motion: reduce){
    .pricing-main, .pricing-aside .pa-card, .pa-flow-node, .pa-flow-line::before{
        animation: none !important;
        opacity: 1 !important;
        translate: 0 0 !important;
    }
}


/* ════════════════════════════════════════════════════════════════
   PRICING — per-plan color theming + GIF float animation
   Variables on .section-pricing[data-active-plan="..."] swap the
   pricing UI's accent palette:
     Freemium    → Turquoise + Sky-Blue (fresh, individual feel)
     Enterprise  → Violet + Royal-Blue  (premium, organizational feel)
   The data attribute is updated by setPlan() in home.html, so all
   variable-bound rules retune together on plan switch.
   Selectors below use `.section-pricing` ancestor scope so they
   beat the earlier hardcoded-color rules at equal specificity.
   ════════════════════════════════════════════════════════════════ */

/* Default (Freemium) palette */
.section-pricing[data-active-plan="freemium"]{
    --pp-accent:    #1ca9c9;
    --pp-accent-2:  #12b6f8;
    --pp-grad:      linear-gradient(135deg, #1ca9c9 0%, #12b6f8 100%);
    --pp-grad-text: linear-gradient(135deg, #1ca9c9 0%, #2863c3 100%);
    --pp-soft:      rgba(28, 169, 201, .08);
    --pp-soft-2:    rgba(18, 182, 248, .14);
    --pp-border:    rgba(28, 169, 201, .25);
    --pp-glow:      rgba(28, 169, 201, .28);
    --pp-glow-2:    rgba(18, 182, 248, .18);
}
/* Enterprise palette */
.section-pricing[data-active-plan="enterprise"]{
    --pp-accent:    #7747b6;
    --pp-accent-2:  #2863c3;
    --pp-grad:      linear-gradient(135deg, #7747b6 0%, #2863c3 100%);
    --pp-grad-text: linear-gradient(135deg, #2863c3 0%, #7747b6 100%);
    --pp-soft:      rgba(119, 71, 182, .08);
    --pp-soft-2:    rgba(40, 99, 195, .14);
    --pp-border:    rgba(119, 71, 182, .25);
    --pp-glow:      rgba(119, 71, 182, .30);
    --pp-glow-2:    rgba(40, 99, 195, .20);
}

/* Switcher active pill — color + inset border use plan accent */
.section-pricing .pm-plan.is-active{
    color: var(--pp-accent);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .06),
        0 4px 12px -6px var(--pp-glow),
        inset 0 0 0 1px var(--pp-border);
    transition:
        background .25s ease,
        color .35s ease,
        box-shadow .35s ease;
}
.section-pricing .pm-plan.is-active svg{
    color: var(--pp-accent);
    transition: color .35s ease;
}

/* Tag pill — softer plan tint */
.section-pricing .pm-tag{
    background: var(--pp-soft);
    border-color: var(--pp-border);
    color: var(--pp-accent);
    transition: background .35s ease, border-color .35s ease, color .35s ease;
}
.section-pricing .pm-tag-dot{
    background: var(--pp-grad);
    box-shadow: 0 0 8px var(--pp-glow);
    transition: background .35s ease, box-shadow .35s ease;
}

/* Capability card hover & active — gradient border uses plan grad */
.section-pricing .pm-card::after{
    background: var(--pp-grad);
}
.section-pricing .pm-card:hover{
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        0 18px 36px -16px var(--pp-glow),
        0 8px 18px -10px var(--pp-glow-2);
}
.section-pricing .pm-card:hover .pm-card-arrow,
.section-pricing .pm-card.is-active .pm-card-arrow{
    color: var(--pp-accent);
}
.section-pricing .pm-card.is-active{
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        0 16px 32px -14px var(--pp-glow),
        0 8px 18px -10px var(--pp-glow-2);
}
.section-pricing .pm-card.is-active .pm-card-num{
    background: var(--pp-grad);
    box-shadow: 0 6px 14px -6px var(--pp-glow);
    transition: background .35s ease, box-shadow .35s ease;
}

/* Right column — Value card label + checks + KPI stat + card backdrops */
.section-pricing .pa-label{
    color: var(--pp-accent);
    transition: color .35s ease;
}
.section-pricing .pa-check{
    background: var(--pp-grad);
    transition: background .35s ease;
}
.section-pricing .pa-kpi-stat{
    background: var(--pp-grad-text);
    -webkit-background-clip: text;
            background-clip: text;
    transition: background .35s ease;
}
.section-pricing .pa-card--kpi{
    background:
        radial-gradient(ellipse 80% 80% at 100% 0%, var(--pp-soft-2) 0%, transparent 60%),
        #ffffff;
    transition: background .35s ease;
}

/* Value-card GIF backdrop picks up a faint plan tint too */
.section-pricing .pa-card--value .pa-media{
    background:
        radial-gradient(ellipse 70% 60% at 50% 50%, var(--pp-soft-2) 0%, transparent 70%),
        #f7faff;
    border-color: var(--pp-border);
    transition: background .35s ease, border-color .35s ease, opacity .22s ease;
}

/* ════════════════════════════════════════════════════════════════
   GIF FLOATING ANIMATION — mirrors the persona section's motion DNA
   Three independent motion channels compose without colliding:
     ① transform → mouse parallax (mx/my CSS vars set by wireParallax
        on #paValueCard, propagates to the .pa-media descendant)
     ② translate → idle ±6px Y-float keyframe, 6.5s ease-in-out
     ③ scale     → reserved for hover lift (untouched)
   ════════════════════════════════════════════════════════════════ */
.section-pricing .pa-card--value .pa-media{
    transform: translate3d(calc(var(--mx, 0) * 8px), calc(var(--my, 0) * 6px), 0);
    animation: paMediaFloat 6.5s ease-in-out 1s infinite alternate;
    will-change: transform, translate;
}
@keyframes paMediaFloat{
    0%   { translate: 0 -6px; }
    100% { translate: 0  6px; }
}

@media (prefers-reduced-motion: reduce){
    .section-pricing .pa-card--value .pa-media{
        animation: none;
        transform: none;
        translate: 0 0;
    }
}


/* ════════════════════════════════════════════════════════════════
   PRICING — Larger, more prominent plan switcher
   Overrides the earlier compact pill design. Each pill is now a
   sizable two-line chip (icon + name + sub) so Freemium ↔ Enterprise
   reads as a deliberate "choose your plan" UI element rather than a
   small toggle. Active pill lifts visibly on a layered shadow and
   shows a colored icon disc in the plan's accent.
   ════════════════════════════════════════════════════════════════ */
.section-pricing .pm-switcher{
    display: inline-flex;
    align-self: flex-start;
    gap: 6px;
    padding: 6px;
    margin-bottom: 32px;
    background: #f1f5f9;
    border-radius: 16px;
    box-shadow:
        inset 0 1px 2px rgba(16, 24, 40, .05),
        0 1px 3px rgba(16, 24, 40, .04);
}
.section-pricing .pm-plan{
    display: inline-flex;
    align-items: center;
    gap: 12px;
    padding: 10px 18px 10px 12px;
    background: transparent;
    border: none;
    border-radius: 12px;
    cursor: pointer;
    color: #475467;
    font-family: 'Inter', sans-serif;
    transition:
        background .25s ease,
        color .35s ease,
        box-shadow .35s ease,
        transform .25s cubic-bezier(.22, .61, .36, 1);
}
.section-pricing .pm-plan-icon{
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    display: inline-grid;
    place-items: center;
    border-radius: 10px;
    background: #ffffff;
    color: #9ca3af;
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        inset 0 0 0 1px rgba(15, 23, 42, .04);
    transition: background .35s ease, color .35s ease, box-shadow .35s ease;
}
.section-pricing .pm-plan-label{
    display: inline-flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    line-height: 1;
    text-align: left;
}
.section-pricing .pm-plan-name{
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 15px;
    color: #1f2937;
    transition: color .35s ease;
}
.section-pricing .pm-plan-sub{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 11.5px;
    color: #6b7280;
    transition: color .35s ease;
}
.section-pricing .pm-plan:hover{
    background: rgba(255, 255, 255, .55);
}
.section-pricing .pm-plan:hover .pm-plan-icon{
    color: var(--pp-accent);
}
.section-pricing .pm-plan:hover .pm-plan-name{
    color: #0f172a;
}

/* ── Active state — stronger contrast, plan-accent icon, lifted ── */
.section-pricing .pm-plan.is-active{
    background: #ffffff;
    color: var(--pp-accent);
    transform: translateY(-1px);
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .06),
        0 8px 22px -10px var(--pp-glow),
        inset 0 0 0 1px var(--pp-border);
}
.section-pricing .pm-plan.is-active .pm-plan-icon{
    background: var(--pp-grad);
    color: #ffffff;
    box-shadow:
        0 6px 14px -6px var(--pp-glow),
        inset 0 1px 0 rgba(255, 255, 255, .25);
}
.section-pricing .pm-plan.is-active .pm-plan-name{
    color: var(--pp-accent);
    font-weight: 700;
}
.section-pricing .pm-plan.is-active .pm-plan-sub{
    color: var(--pp-accent);
    opacity: .78;
}
.section-pricing .pm-plan.is-active svg{
    color: #ffffff;
}

/* ── Responsive — stack the pills on narrow viewports ───────────── */
@media (max-width: 700px){
    .section-pricing .pm-switcher{
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 6px;
        width: 100%;
    }
    .section-pricing .pm-plan{
        padding: 10px 14px 10px 10px;
        justify-content: flex-start;
    }
    .section-pricing .pm-plan-sub{ font-size: 10.5px; }
}

@media (prefers-reduced-motion: reduce){
    .section-pricing .pm-plan,
    .section-pricing .pm-plan-icon{
        transition: none !important;
    }
    .section-pricing .pm-plan.is-active{ transform: none; }
}

/* ════════════════════════════════════════════════════════════════
   HOME PAGE — page-scoped overrides (moved from home.html <style>)
   ════════════════════════════════════════════════════════════════ */
/* Desktop content width */
.container{ max-width: 1500px; padding: 0 40px; }

/* Hello bar + nav: full-width background, content aligned to the 1500px container.
   Gutter = centering offset for a 1500px zone + the container's 40px inner padding. */
.hello-bar{ padding: 10px max(40px, calc((100% - 1500px) / 2 + 40px)) 11px; }
.site-header{ padding: 20px max(40px, calc((100% - 1500px) / 2 + 40px)) 21px; }

/* Hello bar gaps match Figma exactly: badge → message-group = 10px; message → Register Now = 20px */
.hello-bar .hello-left{ gap: 10px; }
.hello-bar .hello-msg-group{
    display: flex;
    align-items: center;
    gap: 20px;
    min-width: 0;
}

/* Ideal section spacing — modern SaaS rhythm (Stripe / Linear / Vercel).
   Most content sections get 96px top + 96px bottom = 192px between
   any two consecutive sections. Hero gets extra bottom for the CTA
   to breathe, the logo band is compact, and the testimonial keeps
   its long bottom runway for the blurred page-finale gradient bleed.
   Special: .section-products is a scroll-pinned 220vh track and
   stays at 0. */
.hero-section{
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    justify-content: center;
    min-height: 0;
    padding: 96px 0 120px;
}
.trusted-section{ padding: 80px 0; background: #051A3C; }
.section-products{ padding: 0; }
.section-features{ padding: 96px 0; }
.section-personas{ padding: 96px 0; }
.section-pricing{ padding: 96px 0; }
.section-success{ padding: 96px 0; }
.section-testimonial{ padding: 96px 0 180px; }
.section-trust{ padding: 96px 0; }
.site-footer{ padding: 64px 0 24px; }

/* Standardised heading → content gap inside every section.
   Each section has its own *-intro (or .{section}-intro) wrapper that
   holds eyebrow + h2 + section-sub. Force a single bottom-margin so
   the gap from copy to first content block is identical everywhere. */
.success-intro,
.testimonial-intro,
.personas-intro,
.products-intro{ margin-bottom: 56px; }

/* Calmer heading-to-content gaps */
.trusted-section h2{ margin-bottom: 40px; }

/* Uniform client-logo sizing — auto-width so wide wordmarks are never clipped */
.logo-track > div{
    margin: 0 56px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.logo-track img{
    max-height: 48px;
    max-width: 180px;
    height: auto;
    width: auto;
    object-fit: contain;
}
/* Drop the per-logo inline height override (e.g. TechnoDuxx) so all match */
.logo-track img[style]{ height: auto !important; }
.section-products .products-head{ margin-bottom: 28px; }
.section-personas .section-sub{ margin-bottom: 0; }
.section-pricing h2{ margin-bottom: 18px; }

/* Keep the big hero/section headings from feeling oversized on laptop displays */


/* ════════════ PREMIUM FEATURE CARDS (index.html only) ════════════
   Cards only — the section background is intentionally left untouched.
   Clean white surface, layered depth shadows, a gradient icon chip, an
   animated gradient top-accent, and a soft corner glow on hover. */
.section-features .feature-card{
    position: relative;
    overflow: hidden;
    background: #ffffff;
    border: 1px solid rgba(85, 41, 142, .10);
    border-radius: 18px;
    padding: 30px 26px 28px;
    filter: none; /* replace the old flat drop-shadow with layered box-shadows */
    box-shadow:
        0 1px 2px rgba(16, 24, 40, .04),
        0 12px 30px -14px rgba(14, 72, 165, .20);
    transition:
        transform .45s cubic-bezier(.22, .61, .36, 1),
        box-shadow .45s cubic-bezier(.22, .61, .36, 1),
        border-color .45s ease;
}
/* Soft diagonal glow in the top-right corner — adds depth, intensifies on hover */
.section-features .feature-card::before{
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: radial-gradient(125% 90% at 100% 0%,
        rgba(18, 182, 248, .10) 0%,
        rgba(85, 41, 142, .06) 32%,
        transparent 62%);
    opacity: .75;
    transition: opacity .45s ease;
}
/* Thin gradient accent that wipes across the top edge on hover */
.section-features .feature-card::after{
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0;
    height: 3px;
    z-index: 2;
    background: linear-gradient(90deg, #12b6f8 0%, #2863c5 48%, #7747b6 100%);
    transform: scaleX(0);
    transform-origin: left center;
    transition: transform .5s cubic-bezier(.22, .61, .36, 1);
}
/* Keep card content above the corner glow */
.section-features .feature-card > *{ position: relative; z-index: 1; }

.section-features .feature-card:hover{
    transform: translateY(-6px);
    border-color: rgba(85, 41, 142, .20);
    box-shadow:
        0 2px 4px rgba(16, 24, 40, .05),
        0 22px 48px -18px rgba(40, 99, 195, .38);
}
.section-features .feature-card:hover::before{ opacity: 1; }
.section-features .feature-card:hover::after{ transform: scaleX(1); }

/* Gradient icon chip with white glyph + soft colored glow */
.section-features .feature-card .fc-icon{
    border-radius: 14px;
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    color: #ffffff;
    box-shadow: 0 8px 18px -8px rgba(40, 99, 195, .55);
    transition:
        transform .45s cubic-bezier(.22, .61, .36, 1),
        box-shadow .45s ease;
}
.section-features .feature-card:hover .fc-icon{
    transform: translateY(-2px) scale(1.06);
    box-shadow: 0 12px 24px -8px rgba(85, 41, 142, .6);
}

/* Type refinement: strong heading, softer slate body for clean hierarchy */
.section-features .feature-card h5{
    color: #101828;
    letter-spacing: -.01em;
}
.section-features .feature-card p{ color: #475467; }

@media (max-width: 991px){
    .container{ padding: 0 24px; }
    .hello-bar{ padding: 10px 24px 11px; }
    .site-header{ padding: 14px 24px; }
  
    .hero-section{ padding: 64px 0 80px; }
    .section-products{ padding: 0; }
    .section-features{ padding: 72px 0; }
    .section-personas{ padding: 72px 0; }
    .section-pricing{ padding: 72px 0; }
    .section-success{ padding: 72px 0; }
    .section-testimonial{ padding: 72px 0 120px; }
    .section-trust{ padding: 72px 0; }
    .trusted-section{ padding: 56px 0; }
    .success-intro,
    .testimonial-intro,
    .personas-intro,
    .products-intro{ margin-bottom: 40px; }
    .hero-section h1{ font-size: 44px; line-height: 54px; }
}
@media (max-width: 575px){
    .container{ padding: 0 18px; }
    .hello-bar{ padding: 8px 18px; }
    .site-header{ padding: 12px 18px; }
    .hero-section h1{ font-size: 34px; line-height: 44px; }
}

/* ── Nav logo (SVG) ───────────────────────────────────── */
.site-header .brand-mark{ height: 44px; }
.site-header .nav-logo-img{
    height: 42px;
    width: auto;
    display: block;
    /* Keep the logo crisp and clearly visible over the busy hero canvas in full-screen */
    filter: drop-shadow(0 2px 10px rgba(3, 13, 30, .55));
}
/* No borders on the bars — use a soft colored glow under the nav for separation.
   .site-top wraps both bars, so its bottom hairline must go too; otherwise a
   faint line still renders directly under the nav. */
.site-top{ border-bottom: none; }
.hello-bar{ border-bottom: none; }
.site-header{
    border-bottom: none;
    /* Subtle, soft, hero-toned glow (cyan → violet) instead of a hard line */
    box-shadow:
        0 12px 28px -20px rgba(18, 182, 248, .30),
        0 6px 16px -14px rgba(85, 41, 142, .22);
}

/* ── Hello bar motion ─────────────────────────────────── */
/* Gentle pulsing glow on the "Webinar" badge */
.hello-bar .hello-badge{
    animation: badgePulse 2.4s ease-in-out infinite;
    will-change: transform, box-shadow;
}
@keyframes badgePulse{
    0%, 100%{
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(252, 252, 252, .45);
    }
    50%{
        transform: scale(1.06);
        box-shadow: 0 0 0 6px rgba(252, 252, 252, 0);
    }
}
/* Subtle shimmer sweeping across the message text */
.hello-bar .hello-message{
    background: linear-gradient(90deg,
        rgba(255, 255, 255, .8) 0%,
        rgba(255, 255, 255, .8) 35%,
        #ffffff 50%,
        rgba(255, 255, 255, .8) 65%,
        rgba(255, 255, 255, .8) 100%);
    background-size: 220% 100%;
    -webkit-background-clip: text;
            background-clip: text;
    -webkit-text-fill-color: transparent;
            color: transparent;
    animation: shimmer 4s linear infinite;
}
@keyframes shimmer{
    0%{ background-position: 120% 0; }
    100%{ background-position: -120% 0; }
}
/* Looping nudge on the Register Now arrow */
.hello-bar .hello-cta svg{
    animation: arrowNudge 1.6s ease-in-out infinite;
}
@keyframes arrowNudge{
    0%, 100%{ transform: translateX(0); }
    50%{ transform: translateX(4px); }
}
/* Respect reduced-motion preferences */
@media (prefers-reduced-motion: reduce){
    .hello-bar .hello-badge,
    .hello-bar .hello-message,
    .hello-bar .hello-cta svg{ animation: none; }
    .hello-bar .hello-message{
        -webkit-text-fill-color: rgba(255, 255, 255, .8);
        color: rgba(255, 255, 255, .8);
    }
}

/* ════════════ HERO PREMIUM EFFECTS (index.html only) ════════════ */

/* Low-opacity tech grid overlay, faded toward the edges */
.hero-grid{
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background-image:
        linear-gradient(to right, rgba(159, 186, 228, .055) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(159, 186, 228, .055) 1px, transparent 1px);
    background-size: 56px 56px;
    -webkit-mask-image: radial-gradient(125% 85% at 50% 28%, #000 0%, rgba(0,0,0,.55) 55%, transparent 80%);
            mask-image: radial-gradient(125% 85% at 50% 28%, #000 0%, rgba(0,0,0,.55) 55%, transparent 80%);
}

/* Glowing gradient orbs toward the bottom */
.hero-orbs{
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    overflow: hidden;
    will-change: transform;
}
.hero-orb{
    position: absolute;
    border-radius: 50%;
    filter: blur(90px);
    opacity: .55;
    will-change: transform;
    mix-blend-mode: screen;
}
.hero-orb.orb-violet{
    width: 460px; height: 460px;
    left: 6%; bottom: -180px;
    background: radial-gradient(circle at 50% 50%,
        rgba(119, 71, 182, .95) 0%, rgba(85, 41, 142, .5) 45%, transparent 70%);
    animation: orbFloat 11s ease-in-out infinite;
}
.hero-orb.orb-cyan{
    width: 380px; height: 380px;
    left: 45%; bottom: -210px;
    background: radial-gradient(circle at 50% 50%,
        rgba(28, 169, 201, .85) 0%, rgba(18, 182, 248, .4) 45%, transparent 70%);
    animation: orbFloat 13s ease-in-out infinite .8s;
}
.hero-orb.orb-blue{
    width: 430px; height: 430px;
    right: 4%; bottom: -185px;
    background: radial-gradient(circle at 50% 50%,
        rgba(64, 117, 201, .9) 0%, rgba(14, 72, 165, .45) 45%, transparent 70%);
    animation: orbFloat 12s ease-in-out infinite .4s;
}
@keyframes orbFloat{
    0%, 100%{ transform: translate3d(0, 0, 0) scale(1); }
    50%{ transform: translate3d(0, -28px, 0) scale(1.06); }
}

/* Small floating glowing particles */
.hero-particles{
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
}
.hero-particles .particle{
    position: absolute;
    width: 4px; height: 4px;
    border-radius: 50%;
    background: rgba(231, 248, 254, .95);
    box-shadow: 0 0 8px 2px rgba(18, 182, 248, .55);
    opacity: .6;
    animation: particleFloat 9s ease-in-out infinite, particlePulse 3.2s ease-in-out infinite;
}
.hero-particles .particle:nth-child(1){ left: 10%; top: 26%; animation-duration: 10s, 3s;   animation-delay: 0s, 0s; }
.hero-particles .particle:nth-child(2){ left: 20%; top: 58%; width: 3px; height: 3px; animation-duration: 12s, 3.6s; animation-delay: 1.1s, .4s; }
.hero-particles .particle:nth-child(3){ left: 32%; top: 38%; animation-duration: 8.5s, 2.8s; animation-delay: .6s, .9s; }
.hero-particles .particle:nth-child(4){ left: 41%; top: 70%; width: 5px; height: 5px; animation-duration: 11s, 3.4s; animation-delay: 2s, .2s; }
.hero-particles .particle:nth-child(5){ left: 52%; top: 30%; width: 3px; height: 3px; animation-duration: 9.5s, 3.1s; animation-delay: .3s, 1.3s; }
.hero-particles .particle:nth-child(6){ left: 60%; top: 64%; animation-duration: 13s, 3.8s; animation-delay: 1.6s, .6s; }
.hero-particles .particle:nth-child(7){ left: 68%; top: 42%; width: 3px; height: 3px; animation-duration: 10.5s, 2.9s; animation-delay: .9s, 1.1s; }
.hero-particles .particle:nth-child(8){ left: 76%; top: 72%; width: 5px; height: 5px; animation-duration: 12.5s, 3.5s; animation-delay: 2.3s, .3s; }
.hero-particles .particle:nth-child(9){ left: 84%; top: 34%; animation-duration: 9s, 3.2s; animation-delay: .5s, .8s; }
.hero-particles .particle:nth-child(10){ left: 90%; top: 60%; width: 3px; height: 3px; animation-duration: 11.5s, 3.7s; animation-delay: 1.4s, .5s; }
.hero-particles .particle:nth-child(11){ left: 15%; top: 46%; width: 3px; height: 3px; animation-duration: 10s, 3s; animation-delay: 1.9s, 1s; }
.hero-particles .particle:nth-child(12){ left: 47%; top: 50%; animation-duration: 12s, 3.3s; animation-delay: .8s, .2s; }
@keyframes particleFloat{
    0%, 100%{ transform: translate3d(0, 0, 0); }
    50%{ transform: translate3d(6px, -24px, 0); }
}
@keyframes particlePulse{
    0%, 100%{ opacity: .25; }
    50%{ opacity: .85; }
}

/* Hero stage — nav bar + hero share one continuous premium canvas.
   Bars and hero go transparent so the grid/orbs/particles flow through. */
.hero-stage{
    position: relative;
    overflow-x: clip;
    background: transparent;
    /* Full-screen: nav + hero together fill exactly one viewport */
    min-height: 100vh;
    min-height: 100svh;
    display: flex;
    flex-direction: column;
}
.hero-stage .site-top{ position: sticky; top: 0; z-index: 200; background: transparent; }
.hero-st age .hello-bar{ background: transparent; }
.hero-stage .site-header{ background: transparent; }
.hero-stage .hero-section{
    position: relative;
    z-index: 3;
    background: transparent;
}
/* Grid now spans nav → hero: fade softly at the very top and into the logos below */
.hero-grid{
    -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.35) 0%, #000 18%, #000 78%, transparent 100%);
            mask-image: linear-gradient(180deg, rgba(0,0,0,.35) 0%, #000 18%, #000 78%, transparent 100%);
}

@media (prefers-reduced-motion: reduce){
    .hero-orb,
    .hero-particles .particle{ animation: none; }
    .hero-orbs{ transform: none !important; }
}


/* ── 2. ask-me.css ────────────────────────────────────────── */
/* ════════════ Layout width (common with home.html) ════════════ */
.container{ max-width: 1500px; padding: 0 40px; }
.hello-bar{ padding: 10px max(40px, calc((100% - 1500px) / 2 + 40px)) 11px; }
.site-header{ padding: 20px max(40px, calc((100% - 1500px) / 2 + 40px)) 21px; }

.hello-bar .hello-left{ gap: 10px; }
.hello-bar .hello-msg-group{ display: flex; align-items: center; gap: 20px; min-width: 0; }

/* Section rhythm — same family as home.html (96px standard) */
.hero-section{
    flex: 1 1 auto;
    display: flex; flex-direction: column; justify-content: center;
    min-height: 0;
    padding: 80px 0 96px;
}
.trusted-section{ padding: 80px 0; background: #051A3C; }
.section-aiagent{ padding: 96px 0; }
.section-askcards{ padding: 96px 0; }
.section-features{ padding: 96px 0; }
.section-resources{ padding: 96px 0; }
.section-products-other{ padding: 0 0 96px; }
.section-trust{ padding: 96px 0; }
.trust-row h2{ font-size: 44px; line-height: 54px; letter-spacing: -0.6px; }
/* ════════════ Footer layout — ported from home.css ════════════ */
.site-footer{ padding-top: 64px; }

.footer-top{
    display: flex;
    align-items: flex-start;
    gap: 48px;
    margin-bottom: 0;
    padding-bottom: 64px;
}
.footer-top .brand-col{
    flex: 0 0 480px;
    display: flex;
    flex-direction: column;
    justify-content: flex-start;
    gap: 32px;
    padding: 36px 0;
    background: none;
    border: none;
    border-radius: 0;
}
.footer-top .brand-logo-img{ height: 64px; }
.footer-top .gptw-badge    { height: 72px; }
.footer-top .brand-logo    { margin-bottom: 0; align-items: center; }
.footer-top .ask-ai-box{
    max-width: none;
    margin-bottom: 0;
    background: none;
    border: none;
    box-shadow: none;
    padding: 0;
}
.footer-top .ask-ai-box .ask-ai-label{ margin-bottom: 12px; }
.footer-top .ask-ai-icons{ gap: 10px; }
.footer-top .ask-ai-icons a{
    width: 48px; height: 48px;
    border-radius: 6px;
    background: linear-gradient(135deg, rgba(85,41,142,.42) 0%, rgba(14,72,165,.36) 50%, rgba(28,169,201,.26) 100%);
    border: 1px solid rgba(159,186,228,.35);
    box-shadow: 0 1px 2px rgba(0,0,0,.25), 0 6px 16px -4px rgba(85,41,142,.45), inset 0 1px 0 rgba(255,255,255,.14), inset 0 0 0 1px rgba(255,255,255,.04);
    backdrop-filter: blur(14px);
    transition: box-shadow .25s ease, border-color .25s ease, transform .2s ease;
}
.footer-top .ask-ai-icons a:hover{
    border-color: rgba(159,186,228,.6);
    box-shadow: 0 1px 2px rgba(0,0,0,.28), 0 10px 22px -4px rgba(85,41,142,.6), inset 0 1px 0 rgba(255,255,255,.2), inset 0 0 0 1px rgba(255,255,255,.06);
    transform: translateY(-2px);
}
.footer-top .ask-ai-icons a img,
.footer-top .ask-ai-icons a svg{
    width: 26px; height: 26px; object-fit: contain;
    filter: brightness(0) saturate(100%) invert(62%) sepia(72%) saturate(500%) hue-rotate(172deg) brightness(108%);
    transition: filter .25s ease;
}
.footer-top .ask-ai-icons a:hover img,
.footer-top .ask-ai-icons a:hover svg{ filter: brightness(0) saturate(100%) invert(100%); }

.footer-top .footer-cta{
    flex: 1 1 auto;
    margin-top: 36px; margin-bottom: 0;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    text-align: left;
    gap: 28px;
    padding: 32px 36px;
    overflow: hidden;
    position: relative;
}
.footer-top .footer-cta .footer-cta-halo,
.footer-top .footer-cta .footer-cta-text,
.footer-top .footer-cta .footer-cta-button{ position: relative; z-index: 1; }
.footer-top .footer-cta-text{ min-width: unset; flex: 1; }
.footer-top .footer-cta-text h3{ font-size: 22px; line-height: 30px; margin-bottom: 6px; }
.footer-top .footer-cta-text p{ font-size: 13.5px; line-height: 20px; max-width: 340px; margin: 0; }
.footer-top .footer-cta-eyebrow{ margin-bottom: 8px; }
.footer-top .footer-cta-button{ padding: 12px 24px; font-size: 13.5px; flex-shrink: 0; white-space: nowrap; }

.copyright{ justify-content: space-between; align-items: center; }
.copyright-social{ display: flex; align-items: center; gap: 8px; }
.copyright-social a{
    width: 30px; height: 30px; border-radius: 50%;
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(159,186,228,.12);
    display: inline-flex; align-items: center; justify-content: center;
    color: rgba(255,255,255,.55);
    transition: background .25s ease, color .25s ease;
}
.copyright-social a:hover{ background: rgba(119,71,182,.25); color: #fff; border-color: rgba(119,71,182,.45); }

.site-footer .footer-nav{
    grid-template-columns: repeat(5, 1fr);
    padding-top: 36px;
    border-top: none;
    position: relative;
}
.site-footer .footer-nav::before{
    content: "";
    position: absolute;
    top: 0; left: 0; right: 0; height: 1px;
    background: linear-gradient(90deg, transparent 0%, rgba(119,71,182,.45) 20%, rgba(61,72,171,.55) 50%, rgba(40,99,197,.45) 80%, transparent 100%);
}
.site-footer .footer-nav .footer-col h4{
    position: relative;
    padding-bottom: 10px;
    margin-bottom: 16px;
}
.site-footer .footer-nav .footer-col h4::after{
    content: "";
    position: absolute;
    bottom: 0; left: 0;
    width: 28px; height: 2px;
    border-radius: 2px;
    background: linear-gradient(90deg, #7747b6, #2863c5);
}

@media (max-width: 1160px){
    .footer-top{ gap: 32px; }
    .footer-top .brand-col{ flex: 0 0 380px; }
    /* Was missing here — between this breakpoint and 768px the grid fell
       back to the unconditional repeat(5,1fr) base, cramming 5 columns
       into a tablet/small-laptop width (matches final-home-bundle.css). */
    .site-footer .footer-nav{ grid-template-columns: repeat(3, 1fr); row-gap: 40px; }
}
@media (max-width: 768px){
    .footer-top{ flex-direction: column; align-items: stretch; }
    .footer-top .brand-col{ flex: none; }
    .footer-top .footer-cta{ padding: 28px; flex-direction: column; text-align: center; gap: 20px; }
    .footer-top .footer-cta-text p{ margin: 0 auto; }
    .site-footer .footer-nav{ grid-template-columns: 1fr 1fr; }
}
@media (max-width: 480px){
    /* 2-column instead of a single stacked column — pairs columns up
       (3 rows of 2, then the last column alone) instead of 5 full-width
       columns one under another, roughly halving scroll height. */
    .site-footer .footer-nav{ grid-template-columns: 1fr 1fr; row-gap: 32px; column-gap: 16px; }
}
@media (max-width: 575px){
    /* .hero-bg-page .container only gives 16px of horizontal padding at
       every width; add a little extra inset so footer content doesn't
       sit flush against the screen edge on phones. */
    .site-footer .container{ padding-left: 8px !important; padding-right: 8px !important; }
    .site-footer{ padding-top: 40px; }
    .footer-top{ padding-bottom: 40px; }
    .footer-top .footer-cta-text h3{ font-size: 19px; line-height: 26px; }
    /* Fixed-height brand lockup (64px logo + 72px GPTW badge) never
       scaled down; on the narrowest phones it left very little slack
       against the tighter container padding above. */
    .footer-top .brand-logo-img{ height: 44px; }
    .footer-top .gptw-badge{ height: 52px; }
}

.trusted-row{
    display: flex;
    align-items: center;
    gap: 32px;
}

.trusted-section h3{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 500;
    font-size: 19px;
    line-height: 28px;
    letter-spacing: -0.3px;
    color: var(--Base-White, #fcfcfc);
    text-align: left;
    margin: 0;
    flex: 0 0 320px;
    max-width: 320px;
}

.trusted-divider{
    flex: 0 0 1px;
    align-self: stretch;
    background: rgba(255,255,255,.22);
}

@media (max-width: 767px){
    .trusted-row{ flex-direction: column; align-items: stretch; gap: 20px; }
    .trusted-section h3{ text-align: center; max-width: none; flex: none; }
    .trusted-divider{ display: none; }
}

/* ── Trusted logos — simple continuous scroll (Ask Me only, not the index flip-grid) ── */
.trusted-marquee{
    flex: 1 1 auto;
    min-width: 0;
    position: relative;
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 8%, #000 92%, transparent 100%);
            mask-image: linear-gradient(90deg, transparent 0%, #000 8%, #000 92%, transparent 100%);
}

.trusted-marquee__track{
    display: flex;
    align-items: center;
    width: max-content;
    gap: 14px;
    animation: trustedMarqueeScroll 70s linear infinite;
}

.trusted-marquee:hover .trusted-marquee__track{
    animation-play-state: paused;
}

@keyframes trustedMarqueeScroll{
    from{ transform: translateX(0); }
    to{ transform: translateX(-50%); }
}

.trusted-marquee__item{
    flex: 0 0 auto;
    display: grid;
    place-items: center;
    height: 96px;
    padding: 0 22px;
}

.trusted-marquee__item img{
    grid-area: 1 / 1;
    max-height: 42px;
    max-width: 126px;
    height: auto;
    width: auto;
    object-fit: contain;
}

.trusted-marquee__item .tm-logo--active{ opacity: 0; }
.trusted-marquee__item:hover .tm-logo--inactive{ opacity: 0; }
.trusted-marquee__item:hover .tm-logo--active{ opacity: 1; }

@media (prefers-reduced-motion: reduce){
    .trusted-marquee__track{ animation: none; }
}

.hero-section h1{ font-size: 56px; line-height: 64px; }

/* ════════════ Premium feature cards — dark glass on navy canvas ════════════ */
.section-features .feature-card{
    position: relative; overflow: hidden;
    background: linear-gradient(148deg, rgba(255,255,255,.06) 0%, rgba(14,72,165,.07) 60%, rgba(255,255,255,.02) 100%) !important;
    border: 1px solid rgba(255,255,255,.11);
    border-radius: 18px; padding: 30px 26px 28px; filter: none;
    box-shadow: 0 4px 24px rgba(0,0,0,.28), 0 1px 0 rgba(255,255,255,.06) inset;
    transition: transform .45s cubic-bezier(.22, .61, .36, 1), box-shadow .45s cubic-bezier(.22, .61, .36, 1), border-color .45s ease;
}
.section-features .feature-card::before{
    content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background: radial-gradient(125% 90% at 100% 0%, rgba(18, 182, 248, .10) 0%, rgba(119, 71, 182, .07) 40%, transparent 65%);
    opacity: .6; transition: opacity .45s ease;
}
.section-features .feature-card::after{
    content: ""; position: absolute; top: 0; left: 0; right: 0; height: 2px; z-index: 2;
    background: linear-gradient(90deg, #12b6f8 0%, #2863c5 48%, #7747b6 100%);
    transform: scaleX(0); transform-origin: left center;
    transition: transform .5s cubic-bezier(.22, .61, .36, 1);
}
.section-features .feature-card > *{ position: relative; z-index: 1; }
.section-features .feature-card:hover{
    transform: translateY(-6px); border-color: rgba(255,255,255,.2);
    box-shadow: 0 8px 40px rgba(0,0,0,.4), 0 0 0 1px rgba(18,182,248,.12);
}
.section-features .feature-card:hover::before{ opacity: 1; }
.section-features .feature-card:hover::after{ transform: scaleX(1); }
.section-features .feature-card .fc-icon{
    width: 50px; height: 50px; border-radius: 14px;
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    color: #ffffff; display: inline-flex; align-items: center; justify-content: center;
    margin-bottom: 18px;
    box-shadow: 0 8px 18px -8px rgba(40, 99, 195, .6);
    transition: transform .45s cubic-bezier(.22, .61, .36, 1), box-shadow .45s ease;
}
.section-features .feature-card:hover .fc-icon{ transform: translateY(-2px) scale(1.06); box-shadow: 0 12px 24px -8px rgba(119, 71, 182, .7); }
.section-features .feature-card .fc-icon svg{ width: 24px; height: 24px; }
.section-features .feature-card h5{ color: #ffffff; letter-spacing: -.01em; font-family: 'Space Grotesk', sans-serif; font-weight: 400; font-size: 20px; line-height: 28px; margin: 0 0 8px; }
.section-features .feature-card p{ color: rgba(202,213,226,.75); font-family: 'Inter', sans-serif; font-weight: 400; font-size: 14px; line-height: 23px; margin: 0; }

/* ════════════ Nav logo + glow (common with home.html) ════════════ */
.site-header .brand-mark{ height: 44px; }
.site-header .nav-logo-img{
    height: 42px; width: auto; display: block;
    filter: drop-shadow(0 2px 10px rgba(3, 13, 30, .55));
}
.site-top{ border-bottom: none; }
.hello-bar{ border-bottom: none; }
.site-header{
    border-bottom: none;
    box-shadow:
        0 12px 28px -20px rgba(18, 182, 248, .30),
        0 6px 16px -14px rgba(85, 41, 142, .22);
}
.site-header .nav-links > li > a:hover{ color: rgba(255, 255, 255, .9); }

/* ── Hello bar motion ─────────────────────────────────── */
.hello-bar .hello-badge{ animation: badgePulse 2.4s ease-in-out infinite; will-change: transform, box-shadow; }
@keyframes badgePulse{
    0%, 100%{ transform: scale(1); box-shadow: 0 0 0 0 rgba(252, 252, 252, .45); }
    50%{ transform: scale(1.06); box-shadow: 0 0 0 6px rgba(252, 252, 252, 0); }
}
.hello-bar .hello-message{
    background: linear-gradient(90deg, rgba(255,255,255,.8) 0%, rgba(255,255,255,.8) 35%, #fff 50%, rgba(255,255,255,.8) 65%, rgba(255,255,255,.8) 100%);
    background-size: 220% 100%;
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
    animation: shimmer 4s linear infinite;
}
@keyframes shimmer{ 0%{ background-position: 120% 0; } 100%{ background-position: -120% 0; } }
.hello-bar .hello-cta svg{ animation: arrowNudge 1.6s ease-in-out infinite; }
@keyframes arrowNudge{ 0%, 100%{ transform: translateX(0); } 50%{ transform: translateX(4px); } }

/* ════════════ HERO STAGE — premium dark canvas (common theme) ════════════ */
.hero-grid{
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image:
        linear-gradient(to right, rgba(159, 186, 228, .055) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(159, 186, 228, .055) 1px, transparent 1px);
    background-size: 56px 56px;
    -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.35) 0%, #000 18%, #000 78%, transparent 100%);
            mask-image: linear-gradient(180deg, rgba(0,0,0,.35) 0%, #000 18%, #000 78%, transparent 100%);
}
.hero-orbs{ position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden; will-change: transform; }
.hero-orb{ position: absolute; border-radius: 50%; filter: blur(90px); opacity: .55; will-change: transform; mix-blend-mode: screen; }
.hero-orb.orb-violet{ width: 460px; height: 460px; left: 6%; bottom: -180px;
    background: radial-gradient(circle at 50% 50%, rgba(119, 71, 182, .95) 0%, rgba(85, 41, 142, .5) 45%, transparent 70%);
    animation: orbFloat 11s ease-in-out infinite; }
.hero-orb.orb-cyan{ width: 380px; height: 380px; left: 45%; bottom: -210px;
    background: radial-gradient(circle at 50% 50%, rgba(28, 169, 201, .85) 0%, rgba(18, 182, 248, .4) 45%, transparent 70%);
    animation: orbFloat 13s ease-in-out infinite .8s; }
.hero-orb.orb-blue{ width: 430px; height: 430px; right: 4%; bottom: -185px;
    background: radial-gradient(circle at 50% 50%, rgba(64, 117, 201, .9) 0%, rgba(14, 72, 165, .45) 45%, transparent 70%);
    animation: orbFloat 12s ease-in-out infinite .4s; }
@keyframes orbFloat{ 0%, 100%{ transform: translate3d(0,0,0) scale(1); } 50%{ transform: translate3d(0,-28px,0) scale(1.06); } }

.hero-particles{ position: absolute; inset: 0; z-index: 1; pointer-events: none; overflow: hidden; }
.hero-particles .particle{
    position: absolute; width: 4px; height: 4px; border-radius: 50%;
    background: rgba(231, 248, 254, .95);
    box-shadow: 0 0 8px 2px rgba(18, 182, 248, .55);
    opacity: .6;
    animation: particleFloat 9s ease-in-out infinite, particlePulse 3.2s ease-in-out infinite;
}
.hero-particles .particle:nth-child(1){ left: 10%; top: 26%; animation-duration: 10s, 3s;   animation-delay: 0s, 0s; }
.hero-particles .particle:nth-child(2){ left: 20%; top: 58%; width:3px; height:3px; animation-duration: 12s, 3.6s; animation-delay: 1.1s, .4s; }
.hero-particles .particle:nth-child(3){ left: 32%; top: 38%; animation-duration: 8.5s, 2.8s; animation-delay: .6s, .9s; }
.hero-particles .particle:nth-child(4){ left: 41%; top: 70%; width:5px; height:5px; animation-duration: 11s, 3.4s; animation-delay: 2s, .2s; }
.hero-particles .particle:nth-child(5){ left: 52%; top: 30%; width:3px; height:3px; animation-duration: 9.5s, 3.1s; animation-delay: .3s, 1.3s; }
.hero-particles .particle:nth-child(6){ left: 60%; top: 64%; animation-duration: 13s, 3.8s; animation-delay: 1.6s, .6s; }
.hero-particles .particle:nth-child(7){ left: 68%; top: 42%; width:3px; height:3px; animation-duration: 10.5s, 2.9s; animation-delay: .9s, 1.1s; }
.hero-particles .particle:nth-child(8){ left: 76%; top: 72%; width:5px; height:5px; animation-duration: 12.5s, 3.5s; animation-delay: 2.3s, .3s; }
.hero-particles .particle:nth-child(9){ left: 84%; top: 34%; animation-duration: 9s, 3.2s; animation-delay: .5s, .8s; }
.hero-particles .particle:nth-child(10){ left: 90%; top: 60%; width:3px; height:3px; animation-duration: 11.5s, 3.7s; animation-delay: 1.4s, .5s; }
.hero-particles .particle:nth-child(11){ left: 15%; top: 46%; width:3px; height:3px; animation-duration: 10s, 3s; animation-delay: 1.9s, 1s; }
.hero-particles .particle:nth-child(12){ left: 47%; top: 50%; animation-duration: 12s, 3.3s; animation-delay: .8s, .2s; }
@keyframes particleFloat{ 0%,100%{ transform: translate3d(0,0,0); } 50%{ transform: translate3d(6px,-24px,0); } }
@keyframes particlePulse{ 0%,100%{ opacity:.25; } 50%{ opacity:.85; } }

.hero-stage{
    position: relative; overflow: hidden; background: transparent;
    min-height: 100vh; min-height: 100svh;
    display: flex; flex-direction: column;
}
.hero-stage .site-top{ position: sticky; top: 0; z-index: 200; background: transparent; }
.hero-stage .hero-section{ position: relative; z-index: 3; background: transparent; }


/* ════════════ Reveal-on-scroll utility ════════════
   Matches home.html's .reveal-block exactly (40px rise, 1.1s,
   cubic-bezier(.22,1,.36,1)) so every section enters the same way
   site-wide, not just within this page. */
.reveal{ opacity: 0; transform: translateY(40px); transition: opacity 1.1s cubic-bezier(.22,1,.36,1), transform 1.1s cubic-bezier(.22,1,.36,1); }
.reveal.is-visible{ opacity: 1; transform: none; }
.reveal-group.is-visible > *{ animation: riseIn .65s cubic-bezier(.22,.61,.36,1) backwards; }
.reveal-group.is-visible > *:nth-child(2){ animation-delay: .09s; }
.reveal-group.is-visible > *:nth-child(3){ animation-delay: .18s; }
.reveal-group.is-visible > *:nth-child(4){ animation-delay: .27s; }
.reveal-group.is-visible > *:nth-child(5){ animation-delay: .36s; }
@keyframes riseIn{ from{ opacity:0; transform: translateY(22px); } to{ opacity:1; transform:none; } }

/* ════════════ HERO — Ask Me (split 2-col layout) ════════════
   Compact, content-driven height like eula.html's pp-hero */
.hero-stage .hero-section{
    min-height: 0;
    padding: 72px 0;
    background: var(--Royal-Blue-Blue-900, #051A3C);
    overflow: hidden;
}
.hero-section .container{ position: relative; z-index: 2; }

/* ── Hero background — matches about-us.html pattern ── */

/* 56px crosshatch grid, fades from top (elliptical mask) */
/* ── Hero section background — exact port of eula.html pp-hero ── */
.hero-section .hero-grid {
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image:
        linear-gradient(to right, rgba(159,186,228,.055) 1px, transparent 1px),
        linear-gradient(to bottom, rgba(159,186,228,.055) 1px, transparent 1px);
    background-size: 56px 56px;
    -webkit-mask-image: radial-gradient(ellipse 120% 100% at 50% 0%, #000 0%, rgba(0,0,0,.55) 55%, transparent 85%);
            mask-image: radial-gradient(ellipse 120% 100% at 50% 0%, #000 0%, rgba(0,0,0,.55) 55%, transparent 85%);
}
.hero-section .hero-orbs {
    position: absolute; inset: 0; overflow: visible; z-index: 0; pointer-events: none;
}
.hero-section .hero-orb {
    position: absolute; border-radius: 50%;
    filter: blur(90px); opacity: .55;
    mix-blend-mode: screen; will-change: transform;
}
.hero-section .orb-violet {
    left: -4%; top: 5%; bottom: auto; width: 440px; height: 440px;
    background: radial-gradient(circle at 50% 50%, rgba(119,71,182,.95) 0%, rgba(85,41,142,.5) 45%, transparent 70%);
}
.hero-section .orb-cyan {
    left: 50%; top: 15%; bottom: auto; transform: translateX(-50%); width: 560px; height: 440px;
    background: radial-gradient(circle at 50% 50%, rgba(28,169,201,.85) 0%, rgba(18,182,248,.4) 45%, transparent 70%);
}
.hero-section .orb-blue {
    right: -4%; top: 5%; bottom: auto; width: 440px; height: 440px;
    background: radial-gradient(circle at 50% 50%, rgba(64,117,201,.9) 0%, rgba(14,72,165,.45) 45%, transparent 70%);
}
.hero-section .hero-particles {
    position: absolute; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
}
.pp-hero__glow {
    position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%);
    width: 760px; height: 340px; z-index: 2;
    background: radial-gradient(50% 50% at 50% 50%, rgba(28,169,201,.35) 0%, rgba(40,99,195,.15) 60%, transparent 100%);
    filter: blur(40px); pointer-events: none;
    mix-blend-mode: plus-lighter;
}
/* Grain overlay (top→bottom fade) — matches index.html's hero-grain */
.hero-section .hero-grain{
    position: absolute;
    inset: 0;
    opacity: .06;
    background-image: linear-gradient(180deg, #0d0d12 0%, rgba(13, 13, 18, 0) 100%);
    pointer-events: none;
}

/* 2-column grid: text left, visual right */
.hero-inner{
    display: grid;
    /* Visual column gets a bigger share (was 1fr 1fr) so the hero Lottie
       renders larger — its size is driven entirely by this column's
       width via .hero-visual-frame's width:100%/aspect-ratio. */
    grid-template-columns: 0.85fr 1.15fr;
    gap: 64px;
    align-items: center;
}

/* ── Text column — stacked hero: centered above the visual below it ── */
.hero-text-col{
    display: flex; flex-direction: column;
    align-items: flex-start; gap: 18px;
    text-align: left;
}

/* Eyebrow — dark section tokens per design guidelines */
.hero-section .hero-eyebrow{
    display: inline-flex; align-items: center; gap: 8px;
    padding: 7px 16px; border-radius: 50px;
    background: rgba(252,252,252,.06);
    border: 1px solid rgba(255,255,255,.14);
    backdrop-filter: blur(6px);
    color: #67d3ff;
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; line-height: 16px;
    letter-spacing: 1.6px; text-transform: uppercase;
}
.hero-section .hero-eyebrow svg{ flex-shrink: 0; }

.hero-section h1{
    margin: 0; letter-spacing: -0.8px;
    font-size: 56px; line-height: 64px;
}
.hero-section .hero-sub{
    /* Subpage convention (matches about-us hero desc): 17px @ 72% white —
       the 20px/full-white variant is homepage-hero-only. */
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 17px; line-height: 28px;
    color: rgba(252,252,252,.72); margin: 0;
}

/* CTA row */
.hero-cta-row{
    display: flex; gap: 14px; align-items: center; flex-wrap: wrap;
}
.hero-btn-outline{
    display: inline-flex; align-items: center; gap: 6px;
    padding: 10px 28px; min-height: 48px; border-radius: 6px;
    /* Same dark-fill + gradient-ring recipe as the nav's "Request a
       Demo" (.site-header .btn-demo), just scaled up to hero size. In a
       CSS multi-background list the FIRST layer paints on top, so the
       dark fill (padding-box, interior only) must be listed before the
       gradient (border-box, the full box) — otherwise the opaque
       gradient covers the interior too and the button reads as a solid
       gradient fill instead of a dark button with a gradient outline
       (this exact ordering bug is what was fixed on .btn-demo--lg). */
    background:
        linear-gradient(var(--Royal-Blue-Blue-900, #051A3C), var(--Royal-Blue-Blue-900, #051A3C)) padding-box,
        var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9)) border-box;
    border: 2px solid transparent;
    color: #fcfcfc; font-family: 'Inter', sans-serif;
    font-weight: 700; font-size: 15px; line-height: 1.2; text-decoration: none;
    transition: background .22s ease, transform .22s cubic-bezier(.22,.61,.36,1), box-shadow .22s cubic-bezier(.22,.61,.36,1);
}
.hero-btn-outline:hover{
    background:
        linear-gradient(rgba(255,255,255,.07), rgba(255,255,255,.07)) padding-box,
        var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9)) border-box;
    transform: translateY(-1px);
    box-shadow: 0 8px 24px -8px rgba(64,117,201,.55), 0 2px 10px -2px rgba(119,71,182,.4);
}
.hero-btn-outline svg{ transition: transform .22s ease; }
.hero-btn-outline:hover svg{ transform: translateX(3px); }

/* ── Visual column — sits below the text now, capped so it doesn't
   sprawl full-width on wide desktop viewports ── */
.hero-visual-col{
    position: relative;
}
.hero-visual-glow{
    position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    width: 85%; height: 65%;
    border-radius: 50%;
    background: radial-gradient(ellipse, rgba(40,99,195,.45) 0%, rgba(119,71,182,.25) 50%, transparent 80%);
    filter: blur(70px);
    pointer-events: none; z-index: 0;
}
.hero-visual-frame{
    position: relative; z-index: 1;
    overflow: hidden;
    border: 1px solid rgba(159,186,228,.22);
    box-shadow:
        0 0 0 1px rgba(255,255,255,.06),
        0 32px 80px -20px rgba(14,72,165,.45),
        0 8px 20px rgba(0,0,0,.3);
    animation: heroFloat 6.5s ease-in-out 1s infinite alternate;
    will-change: transform;
}
@media (prefers-reduced-motion: reduce){ .hero-visual-frame{ animation: none; } }
.hero-visual-frame img{
    display: block; width: 100%; height: auto;
}
/* Lottie container has no intrinsic size like an <img> did, so it needs
   an explicit ratio (matches the animation's native 1440x832 canvas) or
   it'd collapse to 0 height. */
.hero-visual-frame #heroAskMeLottie{
    width: 100%; aspect-ratio: 1440 / 832;
}
.hero-visual-frame #heroAskMeLottie svg{ display: block; }

/* Responsive */
@media (max-width: 991px){
    .hero-inner{
        grid-template-columns: 1fr;
        gap: 48px;
        text-align: center;
    }
    .hero-text-col{ align-items: center; }
    .hero-section h1{ font-size: 44px; line-height: 54px; }
}
@media (max-width: 575px){
    .hero-stage .hero-section{ padding: 56px 0 64px; }
    .hero-section h1{ font-size: 34px; line-height: 44px; }
}

/* ════════════ YOUR VERY OWN CONVERSATIONAL AI AGENT (light, white cards) ════════════ */
.section-aiagent{ position: relative; text-align: center; background: #ffffff; }
.section-aiagent .container{ position: relative; z-index: 1; }
.section-aiagent .ai-eyebrow{
    display: inline-flex; align-items: center; gap: 8px;
    padding: 5px 14px; border-radius: 50px;
    background: rgba(40, 99, 195, .08);
    border: 1px solid rgba(40, 99, 195, .22);
    color: #2863c3;
    font-family: 'Inter', sans-serif; font-weight: 600; font-size: 11px;
    letter-spacing: .12em; text-transform: uppercase;
}
.section-aiagent .ai-eyebrow .ae-dot{
    width: 6px; height: 6px; border-radius: 50%;
    background: linear-gradient(135deg, #2863c3 0%, #7747b6 100%);
    box-shadow: 0 0 0 3px rgba(40, 99, 195, .14);
}
.section-aiagent h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: var(--cool-101828, #101828);
    margin: 18px 0 14px; letter-spacing: -0.6px;
}
h2 .ah-accent, h3 .ah-accent{
    background-image: linear-gradient(135deg, #7747b6 0%, #2863c3 50%, #1ca9c9 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}
.ah-accent-white{
    background-image: none !important;
    -webkit-text-fill-color: #fff !important;
    color: #fff !important;
}
.section-aiagent .section-sub{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 17px; line-height: 28px; color: #4a5568;
    max-width: 820px; margin: 0 auto 56px;
}
.aiagent-grid{ display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; text-align: left; }
.aiagent-item{
    position: relative; overflow: hidden;
    display: flex; flex-direction: column; gap: 14px;
    background: #ffffff;
    border: 1px solid var(--cool-e5e7eb, #e5e7eb);
    border-radius: 20px; padding: 32px 28px;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 14px 30px -18px rgba(14, 72, 165, .16);
    transition: transform .45s cubic-bezier(.22,.61,.36,1), border-color .45s ease, box-shadow .45s ease;
}
.aiagent-item::before{
    content: ""; position: absolute; inset: 0; pointer-events: none;
    background: radial-gradient(130% 80% at 100% 0%, rgba(119, 71, 182, .10) 0%, transparent 60%);
    opacity: 0; transition: opacity .45s ease;
}
.aiagent-item:hover{ transform: translateY(-6px); border-color: rgba(85, 41, 142, .22); box-shadow: 0 2px 4px rgba(16, 24, 40, .05), 0 24px 48px -20px rgba(40, 99, 195, .34); }
.aiagent-item:hover::before{ opacity: 1; }
.aiagent-item > *{ position: relative; z-index: 1; }
.aiagent-item .ai-icon{
    width: 54px; height: 54px; border-radius: 14px;
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    color: #ffffff; box-shadow: 0 8px 18px -8px rgba(40, 99, 195, .55);
    display: inline-flex; align-items: center; justify-content: center; flex: 0 0 54px;
    transition: transform .45s cubic-bezier(.22,.61,.36,1);
}
.aiagent-item:hover .ai-icon{ transform: translateY(-2px) scale(1.06); }
.aiagent-item .ai-icon svg{ width: 26px; height: 26px; }
.aiagent-item h5{ font-family:'Space Grotesk',serif; font-weight:400; font-size:21px; line-height:30px; color: var(--cool-101828, #101828); margin: 4px 0 0; letter-spacing:-.01em; }
.aiagent-item p{ font-family:'Inter',sans-serif; font-weight:400; font-size:15px; line-height:25px; color: #4a5568; margin: 0; }

/* ════════════ JUST ASK — stepper showcase (dark) ════════════ */
.section-askcards{
    background: linear-gradient(160deg, #071e45 0%, #051a3c 40%, #071d42 75%, #0a2150 100%);
    position: relative;
    overflow: hidden;
    padding: 96px 0;
}
.section-askcards::before{
    content: '';
    position: absolute;
    width: 860px; height: 760px;
    left: -180px; top: -220px;
    background: radial-gradient(ellipse, rgba(119,71,182,.28) 0%, rgba(40,99,197,.12) 45%, transparent 70%);
    pointer-events: none; z-index: 0;
}
.section-askcards::after{
    content: '';
    position: absolute;
    width: 720px; height: 640px;
    right: -100px; bottom: -180px;
    background: radial-gradient(ellipse, rgba(18,182,248,.18) 0%, rgba(40,99,197,.12) 45%, transparent 68%);
    pointer-events: none; z-index: 0;
}
.section-askcards .container{ position: relative; z-index: 1; }

/* Centred section header — above the two-column grid */
.ja-intro{
    display: flex; flex-direction: column;
    align-items: center; gap: 18px;
    text-align: center;
    margin-bottom: 56px;
}

.ja-eyebrow{
    display: inline-flex; align-items: center; gap: 8px;
    padding: 6px 14px; border-radius: 50px;
    background: rgba(252,252,252,.06);
    border: 1px solid rgba(159,186,228,.18);
    color: rgba(202,213,226,.9);
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; line-height: 16px;
    letter-spacing: .08em; text-transform: uppercase;
}
.ja-eyebrow svg{ color: #12b6f8; flex-shrink: 0; }

.ja-heading{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; letter-spacing: -.01em;
    color: #fff; margin: 0;
    max-width: 680px;
}

.ja-accent{
    display: block;
    background: linear-gradient(90deg, #12b6f8 0%, #2863c5 48%, #7747b6 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}

/* Two-column grid — stepper left, panel right */
.ja-wrap{
    display: grid;
    grid-template-columns: 320px 1fr;
    gap: 56px;
    align-items: stretch; /* both columns always the same height */
}

/* ── Left column: stepper only ── */
.ja-col-left{
    position: sticky; top: 40px;
    display: flex; flex-direction: column;
}

/* ── Stepper ── */
.ja-stepper{
    flex: 1; /* fills the full left-column height */
    position: relative;
    display: flex; flex-direction: column;
}

.ja-line-track{
    position: absolute;
    left: 15px; top: 20px; bottom: 20px;
    width: 1px;
    background: rgba(255,255,255,.09);
}

.ja-line-fill{
    position: absolute; top: 0; left: 0;
    width: 100%; height: 5.5%;
    background: linear-gradient(to bottom, #12b6f8 0%, #2863c5 50%, #7747b6 100%);
    transition: height .45s cubic-bezier(.22,.61,.36,1);
    border-radius: 1px;
}

.ja-step{
    position: relative; z-index: 1;
    display: flex; align-items: flex-start; gap: 16px;
    padding: 16px 0; padding-left: 0;
    background: none; border: none; cursor: pointer;
    text-align: left; width: 100%;
}
.ja-step:focus-visible{ outline: 2px solid rgba(18,182,248,.5); outline-offset: 2px; border-radius: 6px; }

.ja-dot{
    flex-shrink: 0;
    width: 32px; height: 32px; border-radius: 50%;
    background: rgba(14,72,165,.25);
    border: 1px solid rgba(255,255,255,.18);
    display: flex; align-items: center; justify-content: center;
    color: rgba(255,255,255,.45);
    transition: background .3s ease, border-color .3s ease, box-shadow .3s ease, color .3s ease;
}

.ja-step.is-active .ja-dot{
    background: linear-gradient(135deg, #12b6f8 0%, #2863c5 50%, #7747b6 100%);
    border-color: transparent;
    color: #fff;
    box-shadow: 0 0 0 3px rgba(18,182,248,.14), 0 6px 18px -4px rgba(119,71,182,.5);
}

.ja-step:hover:not(.is-active) .ja-dot{
    border-color: rgba(255,255,255,.28);
    color: rgba(255,255,255,.65);
}

.ja-step-text{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 14px; line-height: 22px;
    color: rgba(255,255,255,.35);
    padding-top: 5px;
    transition: color .25s ease, font-weight .2s ease;
}

.ja-step.is-active .ja-step-text{
    color: #fff; font-weight: 600;
}

.ja-step:hover:not(.is-active) .ja-step-text{
    color: rgba(255,255,255,.65);
}

/* ── Right column ── */
.ja-col-right{
    min-width: 0;
    display: flex; flex-direction: column;
}

/* Individual panel */
.ja-panel{
    display: none;
    flex-direction: column;
    gap: 0;
}

.ja-panel.is-active{
    display: flex;
    flex: 1; /* fills .ja-col-right so both columns match height */
    animation: jaPanelIn .35s cubic-bezier(.22,.61,.36,1);
}

@keyframes jaPanelIn{
    from{ opacity: 0; transform: translateY(10px); }
    to{   opacity: 1; transform: none; }
}

/* Glass card wrapping all panel content */
.ja-panel-header,
.ja-panel-content,
.ja-panel-visual{
    position: relative; z-index: 1;
}

/* Glass card container */
.ja-panel > *{
    background: none;
}

/* Wrapper to apply the card shell */
.ja-panel{
    border-radius: 24px;
    border: 1px solid rgba(255,255,255,.12);
    background: linear-gradient(148deg, rgba(255,255,255,.07) 0%, rgba(14,72,165,.08) 60%, rgba(255,255,255,.02) 100%);
    overflow: hidden;
    padding: 36px 36px 0;
    gap: 28px;
}

/* Inner ambient glows (pseudo on the panel) */
.ja-panel::before{
    content: '';
    position: absolute; top: -90px; right: -60px;
    width: 340px; height: 340px;
    background: radial-gradient(circle, rgba(119,71,182,.22) 0%, transparent 68%);
    filter: blur(60px); pointer-events: none; z-index: 0;
}

.ja-panel::after{
    content: '';
    position: absolute; bottom: -80px; left: -50px;
    width: 300px; height: 300px;
    background: radial-gradient(circle, rgba(18,182,248,.14) 0%, transparent 68%);
    filter: blur(54px); pointer-events: none; z-index: 0;
}

/* Panel header row */
.ja-panel-header{
    display: flex; align-items: center; justify-content: space-between;
}

.ja-panel-meta{
    display: flex; align-items: center; gap: 12px;
}

.ja-panel-icon{
    width: 40px; height: 40px; border-radius: 12px; flex-shrink: 0;
    background: linear-gradient(135deg, #12b6f8 0%, #2863c5 50%, #7747b6 100%);
    display: flex; align-items: center; justify-content: center;
    color: #fff;
    box-shadow: 0 6px 18px -4px rgba(119,71,182,.5);
}

.ja-panel-counter{
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; letter-spacing: .14em;
    text-transform: uppercase;
    color: rgba(144,161,185,.85);
}

.ja-demo-btn{
    display: inline-flex; align-items: center; gap: 7px;
    padding: 9px 16px; border-radius: 50px;
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(255,255,255,.12);
    color: rgba(255,255,255,.88);
    font-family: 'Inter', sans-serif; font-weight: 500;
    font-size: 13px; line-height: 1;
    text-decoration: none;
    transition: background .2s ease, border-color .2s ease, color .2s ease;
}

.ja-demo-btn:hover{
    background: rgba(255,255,255,.1);
    border-color: rgba(255,255,255,.22);
    color: #fff;
}

.ja-demo-btn svg{ flex-shrink: 0; }

/* Panel text content */
.ja-panel-content{
    display: flex; flex-direction: column; gap: 10px;
}

.ja-panel-title{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 28px; line-height: 37px; letter-spacing: -.01em;
    color: #fff; margin: 0;
}

.ja-panel-desc{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: rgba(202,213,226,.8); margin: 0;
    max-width: 640px;
}

/* Panel visual — grows to fit main image naturally; min-height ensures portrait floats fit */
.ja-panel-visual{
    position: relative;
    flex: 1 1 auto;
    min-height: 320px;
    margin-top: 4px;
    /* no overflow:hidden here — the panel card's own overflow:hidden handles boundary clipping */
}

/* ── Main screenshot — in-flow so container grows to its natural height ── */
.ja-vis-main{
    position: relative;   /* in-flow: sets container height to image height */
    display: block;
    width: 76%;
    height: auto;
    border-radius: 12px;
    border: 1px solid rgba(18,182,248,.65);
    box-shadow:
        0 0 0 1px rgba(18,182,248,.12),
        0 0 26px rgba(18,182,248,.45),
        0 0 80px rgba(18,182,248,.12),
        0 22px 64px rgba(0,0,0,.72);
    z-index: 1;
}

/* ── Float screenshot — absolute, overlaps right side of main image ── */
.ja-vis-float{
    position: absolute;
    top: 18%; right: 2%;
    width: 48%;
    height: auto;
    border-radius: 12px;
    border: 1px solid rgba(119,71,182,.62);
    box-shadow:
        0 0 0 1px rgba(119,71,182,.12),
        0 0 22px rgba(119,71,182,.42),
        0 0 68px rgba(119,71,182,.1),
        0 16px 48px rgba(0,0,0,.68);
    z-index: 2;
}

/* Portrait float — narrow width keeps it short enough to sit within the 320px min visual area */
.ja-vis-float--portrait{
    top: auto;
    bottom: 0; right: 3%;
    width: 26%;
}

/* Reveal + idle float animations */
.ja-panel.is-active .ja-vis-main{
    animation: jaImgReveal .5s cubic-bezier(.22,.61,.36,1) backwards,
               jaFloat1 8s ease-in-out .6s infinite alternate;
}
.ja-panel.is-active .ja-vis-float{
    animation: jaImgReveal .5s cubic-bezier(.22,.61,.36,1) .12s backwards,
               jaFloat2 9s ease-in-out .9s infinite alternate;
}

@keyframes jaImgReveal{
    from{ opacity: 0; transform: translateY(14px); }
    to{   opacity: 1; transform: none; }
}
@keyframes jaFloat1{
    0%  { transform: translateY(0); }
    100%{ transform: translateY(-5px); }
}
@keyframes jaFloat2{
    0%  { transform: translateY(0); }
    100%{ transform: translateY(5px); }
}
@media (prefers-reduced-motion: reduce){
    .ja-panel.is-active .ja-vis-main,
    .ja-panel.is-active .ja-vis-float,
    .ja-panel.is-active .ja-vis-float2,
    .ja-panel.is-active .ja-vis-nlq-phone,
    .ja-panel.is-active .ja-vis-nlq-chart,
    .ja-panel.is-active .ja-vis-rca-top,
    .ja-panel.is-active .ja-vis-rca-q1,
    .ja-panel.is-active .ja-vis-rca-q2,
    .ja-panel.is-active .ja-vis-rca-bot{ animation: none; }
}

/* ── NLQ panel — phone portrait centred + chart card top-right ── */
.ja-panel-visual--nlq{
    min-height: 420px;
    border-radius: 12px;
    border: 1px solid rgba(18,182,248,.3);
    background: rgba(6,13,30,.55);
    box-shadow:
        0 0 0 1px rgba(18,182,248,.08),
        0 0 24px rgba(18,182,248,.12),
        0 16px 48px rgba(0,0,0,.6);
    overflow: hidden;
}

.ja-vis-nlq-phone{
    position: absolute;
    left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    height: 88%;
    width: auto;
    border-radius: 10px;
    box-shadow: 0 8px 32px rgba(0,0,0,.6), 0 0 20px rgba(18,182,248,.25);
    z-index: 1;
}

.ja-vis-nlq-chart{
    position: absolute;
    top: 10%; right: 6%;
    width: 38%;
    height: auto;
    border-radius: 8px;
    border: 1px solid rgba(119,71,182,.55);
    box-shadow:
        0 0 0 1px rgba(119,71,182,.1),
        0 0 18px rgba(119,71,182,.35),
        0 8px 24px rgba(0,0,0,.5);
    z-index: 2;
}

/* ── Triple panel (Insights) — main in-flow + two absolute floats ── */
.ja-panel-visual--triple{
    /* main is in-flow (same as base), floats overlap; panel overflow:hidden clips bounds */
}

.ja-vis-float2{
    position: absolute;
    top: 22%; left: 2%;
    width: 44%;
    height: auto;
    border-radius: 12px;
    border: 1px solid rgba(18,182,248,.5);
    box-shadow:
        0 0 0 1px rgba(18,182,248,.1),
        0 0 20px rgba(18,182,248,.3),
        0 0 60px rgba(18,182,248,.08),
        0 14px 40px rgba(0,0,0,.65);
    z-index: 3;
}

/* ── RCA panel — 4 screenshots in conversation flow ── */
.ja-panel-visual--rca{
    min-height: 420px;
    overflow: hidden;
}

.ja-vis-rca-top{
    position: absolute;
    top: 0; left: 0;
    width: 80%;
    height: auto;
    border-radius: 10px;
    border: 1px solid rgba(18,182,248,.6);
    box-shadow:
        0 0 0 1px rgba(18,182,248,.1),
        0 0 24px rgba(18,182,248,.4),
        0 20px 56px rgba(0,0,0,.7);
    z-index: 1;
}

.ja-vis-rca-q1{
    position: absolute;
    top: 8%; right: 2%;
    width: 28%;
    height: auto;
    border-radius: 6px;
    border: 1px solid rgba(119,71,182,.5);
    box-shadow: 0 0 14px rgba(119,71,182,.3), 0 6px 20px rgba(0,0,0,.5);
    z-index: 2;
}

.ja-vis-rca-q2{
    position: absolute;
    top: 32%; right: 2%;
    width: 28%;
    height: auto;
    border-radius: 6px;
    border: 1px solid rgba(119,71,182,.5);
    box-shadow: 0 0 14px rgba(119,71,182,.3), 0 6px 20px rgba(0,0,0,.5);
    z-index: 2;
}

.ja-vis-rca-bot{
    position: absolute;
    bottom: 0; left: 8%;
    width: 62%;
    height: auto;
    border-radius: 10px;
    border: 1px solid rgba(18,182,248,.45);
    box-shadow:
        0 0 0 1px rgba(18,182,248,.08),
        0 0 20px rgba(18,182,248,.3),
        0 12px 36px rgba(0,0,0,.65);
    z-index: 3;
}

/* Multi-image panels (DIY, AI Agents) — same flex-grow, no fixed aspect-ratio */
.ja-panel-visual--multi,
.ja-panel-visual--agents{
    border-radius: 12px;
    border: 1px solid rgba(119,71,182,.45);
    background: rgba(6,13,30,.55);
    box-shadow:
        0 0 0 1px rgba(119,71,182,.12),
        0 0 24px rgba(119,71,182,.2),
        0 16px 48px rgba(0,0,0,.6);
    overflow: hidden;
}

.ja-vis-multi{
    position: absolute;
    border-radius: 6px;
    box-shadow: 0 4px 16px rgba(0,0,0,.25), 0 0 10px rgba(18,182,248,.12);
    height: auto;
}

.ja-vis-multi--tl{ left: 8%; top: 8%; width: 50%; }
.ja-vis-multi--bl{ left: 8%; bottom: 8%; width: 50%; }
.ja-vis-multi--tr{ right: 6%; top: 18%; width: 34%; }
.ja-vis-multi--br{ right: 6%; bottom: 12%; width: 34%; }

/* Reveal animations on new image variants */
.ja-panel.is-active .ja-vis-float2{
    animation: jaImgReveal .5s cubic-bezier(.22,.61,.36,1) .18s backwards,
               jaFloat1 8s ease-in-out 1s infinite alternate;
}
.ja-panel.is-active .ja-vis-nlq-phone{
    animation: jaImgReveal .5s cubic-bezier(.22,.61,.36,1) backwards,
               jaFloat1 9s ease-in-out .6s infinite alternate;
}
.ja-panel.is-active .ja-vis-nlq-chart{
    animation: jaImgReveal .5s cubic-bezier(.22,.61,.36,1) .14s backwards,
               jaFloat2 8s ease-in-out .9s infinite alternate;
}
.ja-panel.is-active .ja-vis-rca-top{
    animation: jaImgReveal .5s cubic-bezier(.22,.61,.36,1) backwards,
               jaFloat1 9s ease-in-out .6s infinite alternate;
}
.ja-panel.is-active .ja-vis-rca-q1{
    animation: jaImgReveal .45s cubic-bezier(.22,.61,.36,1) .1s backwards;
}
.ja-panel.is-active .ja-vis-rca-q2{
    animation: jaImgReveal .45s cubic-bezier(.22,.61,.36,1) .2s backwards;
}
.ja-panel.is-active .ja-vis-rca-bot{
    animation: jaImgReveal .5s cubic-bezier(.22,.61,.36,1) .25s backwards,
               jaFloat2 8s ease-in-out 1s infinite alternate;
}

/* ── Responsive ── */
@media (max-width: 1199px){
    .ja-wrap{ grid-template-columns: 320px 1fr; gap: 48px; }
    .ja-heading{ font-size: 36px; line-height: 46px; }
}
@media (max-width: 1023px){
    .ja-wrap{ grid-template-columns: 1fr; gap: 40px; align-items: start; }
    .ja-col-left{ position: static; }
    .ja-stepper{ flex: none; flex-direction: row; flex-wrap: wrap; gap: 0; padding-left: 0; }
    .ja-line-track{ display: none; }
    .ja-step{ flex: 0 0 auto; padding: 8px 14px; border-radius: 50px; }
    .ja-step.is-active{ background: rgba(255,255,255,.06); }
    .ja-dot{ width: 26px; height: 26px; }
    .ja-step-text{ font-size: 13px; padding-top: 3px; }
    .ja-panel-title{ font-size: 24px; line-height: 33px; }
    .ja-panel.is-active{ flex: none; }
    .ja-panel-visual--multi,
    .ja-panel-visual--agents,
    .ja-panel-visual--nlq,
    .ja-panel-visual--rca{ min-height: 280px; }
}
@media (max-width: 767px){
    .section-askcards{ padding: 72px 0; }
    .ja-heading{ font-size: 28px; line-height: 38px; }
    .ja-step-text{ font-size: 12px; }
    .ja-panel{ padding: 28px 24px 0; }
    .ja-panel-title{ font-size: 21px; line-height: 30px; }
    .ja-panel-desc{ font-size: 14px; line-height: 24px; }
    .ja-vis-main{ width: 90%; }
    .ja-vis-float{ width: 56%; top: 16%; }
    .ja-vis-float--portrait{ width: 30%; }
    .ja-panel-visual--multi,
    .ja-panel-visual--agents,
    .ja-panel-visual--nlq,
    .ja-panel-visual--rca{ min-height: 240px; }
}

/* ════════════ FEATURES — no background, inherits page background ════════════ */
.section-features{
    position: relative;
    background: transparent !important;
}
.section-features::before,
.section-features::after{
    content: none !important;
    display: none !important;
    background: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}
.section-features .container{ position: relative; z-index: 1; }
.section-features .features-head{ display: flex; align-items: center; justify-content: center; gap: 24px; margin-bottom: 44px; }
.section-features .features-head h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: #ffffff;
    margin: 0; letter-spacing: -.01em; text-align: center;
}
.section-features .features-viewport{
    overflow: hidden;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 6%, #000 94%, transparent 100%);
            mask-image: linear-gradient(90deg, transparent 0%, #000 6%, #000 94%, transparent 100%);
    padding: 8px 0;
}
.section-features .features-track{
    display: flex; gap: 20px;
    width: max-content;
    animation: featuresScroll 38s linear infinite;
    will-change: transform;
}
.section-features .features-viewport:hover .features-track{ animation-play-state: paused; }
.section-features .feature-card{ flex: 0 0 313px; width: 313px; }
@keyframes featuresScroll{
    0%   { transform: translateX(0); }
    100% { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce){
    .section-features .features-track{ animation: none; }
}

/* ════════════ RESOURCES ════════════ */
.section-resources{
    position: relative; background: #ffffff;
    --ss-accent: var(--Royal-Blue-Blue-500, #0e48a5);
    --ss-accent-secondary: var(--Violet-Violet-450, #7747b6);
    --ss-accent-soft: rgba(40, 99, 195, .08);
    --ss-accent-border: rgba(40, 99, 195, .25);
    --ss-accent-glow-a: rgba(40, 99, 195, .20);
    --ss-accent-glow-b: rgba(119, 71, 182, .12);
}
.section-resources .container{ position: relative; z-index: 1; }
.section-resources h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px;
    color: var(--cool-101828, #101828);
    text-align: center; margin: 0 auto 56px; letter-spacing: -.01em;
}
.resources-grid{
    display: grid; grid-template-columns: repeat(3, 1fr);
    gap: 20px; max-width: 1120px; margin: 0 auto;
}
.section-resources .story-card{
    flex: initial; width: auto;
    opacity: 1; translate: 0 0; transform: none;
    animation: none;
    border: 0.5px solid var(--Map-Grey, #eaeaea);
    border-radius: 8px;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .04);
}
.section-resources .story-card:hover{ transform: translateY(-4px); scale: 1; }
.section-resources .story-card .story-image{
    height: 200px;
    background: linear-gradient(135deg, rgba(40, 99, 195, .05) 0%, #ffffff 100%);
}
.section-resources .story-card .story-body{
    padding: 16px;
    gap: 8px; flex: initial;
}
.section-resources .story-eyebrow{
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    text-transform: none; letter-spacing: 0;
    font-weight: 400; font-size: 12px; line-height: 16px;
    margin: 0; gap: 8px; align-items: center;
}
.section-resources .story-eyebrow .se-sep{
    width: 1px; height: 12px;
    background: var(--Royal-Blue-Blue-500, #0e48a5);
    opacity: .55;
}
.section-resources .story-title{
    font-family: 'Inter', sans-serif; font-weight: 700;
    font-size: 15px; line-height: 25px;
    color: var(--Absolute-Black, #242424);
    letter-spacing: 0; margin: 0;
    flex: initial;
}

/* ════════════ OTHER PRODUCTS — horizontal split rows ════════════ */
.section-products-other{
    position: relative; z-index: 3;
    background: #ffffff;
    padding: 96px 0;
}
.section-products-other .container{ position: relative; z-index: 1; }

.op-intro{ text-align: center; margin-bottom: 64px; }
.op-intro h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; letter-spacing: -.01em;
    color: var(--cool-101828, #101828); margin: 0 0 12px;
}
.op-intro p{
    font-family: 'Inter', sans-serif; font-size: 16px;
    line-height: 26px; color: #4a5568;
    margin: 0 auto; max-width: 560px;
}

.op-cards{
    display: flex; flex-direction: column;
    gap: 28px;
}

.op-card{
    display: flex; flex-direction: row;
    border-radius: 20px; overflow: hidden;
    background: #ffffff;
    border: 1px solid rgba(0,0,0,.08);
    box-shadow: 0 1px 3px rgba(16,24,40,.04), 0 8px 28px -8px rgba(16,24,40,.09);
    transition: box-shadow .4s ease, transform .4s cubic-bezier(.22,.61,.36,1);
    min-height: 340px;
}
.op-card:hover{
    transform: translateY(-4px);
    box-shadow: 0 4px 8px rgba(16,24,40,.05), 0 24px 52px -12px rgba(16,24,40,.13);
}

.op-card--magnet{ flex-direction: row-reverse; }

.op-visual{
    position: relative; overflow: hidden;
    flex: 0 0 46%;
    display: flex; align-items: center; justify-content: center;
    padding: 44px 36px;
}
.op-card--insights .op-visual{
    background: linear-gradient(145deg, #d8e8fb 0%, #e8f2ff 45%, #f3f8ff 100%);
}
.op-card--magnet .op-visual{
    background: linear-gradient(145deg, #c2eaf6 0%, #d8f3fb 45%, #edfafd 100%);
}
.op-visual::before{
    content: ""; position: absolute; inset: 0; pointer-events: none; z-index: 0;
    background-image: radial-gradient(circle, rgba(40,99,195,.14) 1px, transparent 1px);
    background-size: 24px 24px;
    -webkit-mask-image: radial-gradient(ellipse 90% 85% at 50% 50%, #000 20%, transparent 100%);
            mask-image: radial-gradient(ellipse 90% 85% at 50% 50%, #000 20%, transparent 100%);
}
.op-card--magnet .op-visual::before{
    background-image: radial-gradient(circle, rgba(28,169,201,.17) 1px, transparent 1px);
}

.op-card-img{
    position: relative; z-index: 1;
    width: 84%; max-width: 420px; min-width: 180px;
    height: auto; display: block;
    filter: drop-shadow(0 16px 36px rgba(40,99,195,.20));
    animation: opImgFloat 6.5s ease-in-out infinite alternate;
    will-change: translate;
}
.op-card--magnet .op-card-img{
    filter: drop-shadow(0 16px 36px rgba(28,169,201,.22));
}
@keyframes opImgFloat{
    0%   { translate: 0 -9px; }
    100% { translate: 0  9px; }
}
@media (prefers-reduced-motion: reduce){ .op-card-img{ animation: none; } }

.op-body{
    flex: 1; min-width: 0;
    padding: 52px 56px;
    display: flex; flex-direction: column;
    justify-content: center;
}
.op-body-top{
    display: flex; align-items: center; gap: 12px;
    margin-bottom: 24px;
}
.op-icon{
    width: 48px; height: 48px; border-radius: 14px; flex-shrink: 0;
    display: inline-flex; align-items: center; justify-content: center;
}
.op-card--insights .op-icon{
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 100%);
    box-shadow: 0 6px 18px -6px rgba(40,99,195,.48);
}
.op-card--magnet .op-icon{
    background: linear-gradient(135deg, #12b6f8 0%, #1ca9c9 100%);
    box-shadow: 0 6px 18px -6px rgba(28,169,201,.48);
}
.op-icon svg{ width: 22px; height: 22px; color: #fff; }

.op-pill{
    display: inline-flex; align-items: center; gap: 6px;
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; line-height: 1; letter-spacing: .12em;
    text-transform: uppercase; padding: 5px 12px; border-radius: 50px;
}
.op-card--insights .op-pill{ color: #2863c3; background: rgba(40,99,195,.08); border: 1px solid rgba(40,99,195,.20); }
.op-card--magnet  .op-pill{ color: #1ca9c9; background: rgba(28,169,201,.08); border: 1px solid rgba(28,169,201,.20); }
.op-pill::before{ content: ""; width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; }
.op-card--insights .op-pill::before{ background: #2863c3; }
.op-card--magnet  .op-pill::before{ background: #1ca9c9; }

.op-body h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 28px; line-height: 36px; letter-spacing: -0.3px;
    color: #101828; margin: 0 0 12px;
}
.op-body > p{
    font-family: 'Inter', sans-serif; font-size: 14.5px;
    line-height: 25px; color: #4a5568; margin: 0 0 22px;
}

.op-feats{
    list-style: none; margin: 0 0 28px; padding: 0;
    display: flex; flex-direction: column; gap: 10px;
}
.op-feats li{
    display: flex; align-items: center; gap: 10px;
    font-family: 'Inter', sans-serif; font-size: 13.5px;
    line-height: 20px; color: #344054;
}
.op-feats li::before{
    content: ""; flex-shrink: 0;
    width: 20px; height: 20px; border-radius: 50%;
    background-size: 11px; background-position: center; background-repeat: no-repeat;
}
.op-card--insights .op-feats li::before{
    background-color: rgba(40,99,195,.10);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' fill='none' stroke='%232863c3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='1.5 5 4 7.5 8.5 2'/%3E%3C/svg%3E");
}
.op-card--magnet .op-feats li::before{
    background-color: rgba(28,169,201,.10);
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 10' fill='none' stroke='%231ca9c9' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='1.5 5 4 7.5 8.5 2'/%3E%3C/svg%3E");
}

.op-body .btn-primary{ align-self: flex-start; }

@media (max-width: 991px){
    .op-card, .op-card--magnet{ flex-direction: column; }
    .op-visual{ flex: 0 0 auto; height: 260px; padding: 32px 24px; }
    .op-body{ padding: 36px 32px 40px; justify-content: flex-start; }
}
@media (max-width: 575px){
    .op-intro h2{ font-size: 26px; line-height: 36px; }
    .op-visual{ height: 220px; }
    .op-body{ padding: 28px 24px 32px; }
    .op-body h3{ font-size: 20px; line-height: 28px; }
}

/* ── Responsive ─────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce){
    .hero-orb, .hero-particles .particle{ animation: none; }
    .hero-orbs{ transform: none !important; }
    .hello-bar .hello-badge, .hello-bar .hello-message, .hello-bar .hello-cta svg{ animation: none; }
    .hello-bar .hello-message{ -webkit-text-fill-color: rgba(255,255,255,.8); color: rgba(255,255,255,.8); }
    .dp-illus-core{ transition: opacity .3s ease; }
    .qs-shot{ transition: none !important; }
    .mcp-drag-shot{ transition: opacity .2s ease !important; clip-path: none !important; }
    .mcp-drag-info.is-active .mcp-drag-info-head,
    .mcp-drag-info.is-active p,
    .mcp-drag-info.is-active .mcp-drag-more{ animation: none !important; }
    .mcp-drag-card{ transition: none !important; }
    .mcp-drag-tilt{ transition: none !important; }
    .mcp-drag-progress-fill{ transition: none !important; }
    .mcp-drag-more{ transition: none !important; }
    .ov-nav-icon, .ov-nav-item, .ov-item, .ov-nav-line-fill{ transition: none !important; }
    .am-fc-grid{ transition: none !important; }
    .reveal, .reveal-group.is-visible > *{ opacity: 1 !important; transform: none !important; animation: none !important; transition: none !important; }
}
@media (max-width: 1199px){
    .resources-grid{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 991px){
    .container{ padding: 0 24px; }
    .hello-bar{ padding: 10px 24px 11px; }
    .site-header{ padding: 14px 24px; }
    .hero-section{ padding: 64px 0 80px; }
    .trusted-section{ padding: 56px 0; }
    .section-aiagent, .section-askcards, .section-features, .section-resources{ padding: 72px 0; }
    .section-products-other{ padding: 0 0 72px; }
    .section-trust{ padding: 72px 0; }
    .hero-section h1{ font-size: 44px; line-height: 54px; }
    .trusted-section h3{ font-size: 24px; line-height: 32px; white-space: normal; }
    .section-aiagent h2,
    .section-features .features-head h2,
    .section-resources h2, .section-products-other h2,
    .trust-row h2{ font-size: 34px; line-height: 44px; }
    .ja-heading{ font-size: 28px; line-height: 38px; }
    .section-features .features-head{ flex-direction: column; align-items: flex-start; }
    .aiagent-grid{ grid-template-columns: 1fr; gap: 20px; }
    .resources-grid{ grid-template-columns: 1fr; }
    .section-products-other .products-head{ flex-direction: column; align-items: flex-start; }
    .section-products-other .product-stage{ grid-template-columns: 1fr; gap: 36px; }
    .section-products-other .products-title{ font-size: 28px; line-height: 38px; }
}
@media (max-width: 575px){
    .container{ padding: 0 18px; }
    .hello-bar{ padding: 8px 18px; }
    .site-header{ padding: 12px 18px; }
    .hero-section h1{ font-size: 34px; line-height: 44px; }
    .trusted-section h3{ font-size: 20px; line-height: 28px; white-space: normal; }
    .section-aiagent h2,
    .section-features .features-head h2,
    .section-resources h2,
    .section-products-other h2,
    .trust-row h2{ font-size: 26px; line-height: 36px; }
    .ja-heading{ font-size: 24px; line-height: 34px; }
    .ja-showcase-title{ font-size: 21px; line-height: 29px; }
    .ja-showcase-desc{ font-size: 14px; line-height: 24px; }
}

/* ════════════════════════════════════════════════════════════════
   STATS (4-col modifier on existing aiagent-grid)
   ════════════════════════════════════════════════════════════════ */
.aiagent-grid--4col{ grid-template-columns: repeat(4, 1fr); }
.stat-item{ text-align: center; align-items: center; gap: 10px; }
.section-aiagent .section-sub{ margin: 0 auto 60px; } /* fix: was 56px */
.stat-number{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 52px; line-height: 1;
    background: linear-gradient(135deg, #7747b6 0%, #2863c3 50%, #1ca9c9 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
    letter-spacing: -1px; display: block;
}
/* Same visual treatment as .stat-number so all stat tiles match */
.stat-label{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 52px; line-height: 1;
    background: linear-gradient(135deg, #7747b6 0%, #2863c3 50%, #1ca9c9 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
    letter-spacing: -1px; display: block;
}
.stat-item p{ font-size: 14px; color: #4a5568; margin: 0; text-align: center; }

/* ── Stats: centered intro + 4-col stat row ── */
.section-stats{ text-align: center; }
.stats-intro-tile{
    text-align: center; max-width: 680px; margin: 0 auto 52px;
}
.stats-intro-tile .ai-eyebrow{ margin-bottom: 18px; }
.stats-intro-tile h2{ margin: 0 0 16px; }
.stats-intro-tile .section-sub{ margin: 0 auto; max-width: 560px; }
.stats-tiles{
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px;
}
.stat-tile{
    background: #ffffff; border: 1px solid var(--cool-e5e7eb, #e5e7eb);
    border-radius: 20px; padding: 32px 24px; text-align: center;
    display: flex; flex-direction: column; gap: 10px; align-items: center;
    box-shadow: 0 1px 2px rgba(16,24,40,.04), 0 14px 30px -18px rgba(14,72,165,.16);
    transition: transform .45s cubic-bezier(.22,.61,.36,1), border-color .3s ease, box-shadow .3s ease;
}
.stat-tile:hover{
    transform: translateY(-6px); border-color: rgba(85,41,142,.22);
    box-shadow: 0 2px 4px rgba(16,24,40,.05), 0 24px 48px -20px rgba(40,99,195,.30);
}
.stat-tile .stat-number,
.stat-tile .stat-label{ text-align: center; }
.stat-tile p{ font-size: 14px; line-height: 22px; color: #4a5568; margin: 0; text-align: center; }

/* ════════════════════════════════════════════════════════════════
   DATA POOL SECTION (light, Scroll 5)
   ════════════════════════════════════════════════════════════════ */
.section-datapool{
    position: relative; overflow: hidden;
    background: #ffffff;
    padding: 96px 0;
    text-align: center;
}
/* White section dot-grid per §9: rgba(40,99,195,.14), 24px */
.section-datapool::before{
    content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image: radial-gradient(rgba(40,99,195,.14) 1px, transparent 1px);
    background-size: 24px 24px;
}
.section-datapool .container{ position: relative; z-index: 1; }
/* Soft light-tint orbs */
.dp-orb{
    position: absolute; border-radius: 50%; pointer-events: none; z-index: 0;
    filter: blur(80px);
}
.dp-orb--left{
    width: 640px; height: 560px; left: -200px; top: -120px;
    background: radial-gradient(ellipse, rgba(119,71,182,.08) 0%, transparent 70%);
}
.dp-orb--right{
    width: 520px; height: 460px; right: -140px; bottom: -100px;
    background: radial-gradient(ellipse, rgba(18,182,248,.07) 0%, transparent 70%);
}
/* Light-section eyebrow override (base .dp-eyebrow stays dark for MCP/FB) */

/* Light-section eyebrow override (base .dp-eyebrow stays dark for MCP/FB) */
.section-datapool .dp-eyebrow{
    background: #ffffff;
    border-color: rgba(40,99,195,.14);
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    backdrop-filter: none;
}
.section-datapool .dp-dot{
    background: linear-gradient(135deg, #2863c3 0%, #7747b6 100%);
    box-shadow: 0 0 0 3px rgba(40,99,195,.14);
}

/* Dark-section eyebrow — per DESIGN_GUIDELINES §12.1:
   color #67d3ff, border rgba(255,255,255,.14), backdrop-filter blur(6px),
   letter-spacing 1.6px, padding 7px 16px */
.dp-eyebrow{
    display: inline-flex; align-items: center; gap: 8px;
    padding: 7px 16px; border-radius: 50px;
    background: rgba(252,252,252,.06);
    border: 1px solid rgba(255,255,255,.14);
    color: #67d3ff;
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; line-height: 16px;
    letter-spacing: 1.6px; text-transform: uppercase;
    backdrop-filter: blur(6px);
    margin-bottom: 20px;
}
.dp-dot{
    width: 6px; height: 6px; border-radius: 50%;
    background: linear-gradient(135deg, #12b6f8 0%, #7747b6 100%);
    box-shadow: 0 0 0 3px rgba(18,182,248,.18);
    display: inline-block; flex-shrink: 0;
}
.section-datapool h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: var(--cool-101828, #101828);
    margin: 0 0 20px; letter-spacing: -.6px;
}
.dp-accent{
    background: linear-gradient(90deg, #12b6f8 0%, #2863c5 48%, #7747b6 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}
/* ── Centered heading + subtitle, full width above the two-column row ── */
.dp-story-intro-wrap{
    text-align: center;
    max-width: 720px;
    margin: 0 auto 56px;
}
.dp-story-intro{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 16px; line-height: 27px;
    color: #4a5568;
    margin: 0;
}

/* ── Two-column storytelling layout — illustration aligns to the
   feature list beside it now that the heading sits above both. ── */
.dp-story{
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: 72px;
    align-items: center;
    text-align: left;
}

/* ── Expandable feature list — one open at a time, fade+slide on switch ── */
.dp-feat-list{
    display: flex; flex-direction: column;
    border-top: 1px solid rgba(40,99,195,.14);
}
.dp-feat-item{ border-bottom: 1px solid rgba(40,99,195,.14); }
.dp-feat-head{
    width: 100%;
    display: flex; align-items: center; gap: 14px;
    background: none; border: none; padding: 20px 2px;
    cursor: pointer; text-align: left;
    font-family: inherit;
}
.dp-feat-title{
    flex: 1;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 18px; color: #6b7280; letter-spacing: -.2px;
    transition: color .35s ease;
}
.dp-feat-item.is-active .dp-feat-title{ color: #101828; }
.dp-feat-chevron{
    width: 16px; height: 16px; color: #9aa5b1; flex-shrink: 0;
    transition: transform .35s cubic-bezier(.22,.61,.36,1), color .35s ease;
}
.dp-feat-item.is-active .dp-feat-chevron{ transform: rotate(180deg); color: #2863c3; }

.dp-feat-body{
    overflow: hidden;
    max-height: 0; opacity: 0; transform: translateY(-6px);
    transition: max-height .45s cubic-bezier(.22,.61,.36,1), opacity .3s ease, transform .3s ease;
}
.dp-feat-item.is-active .dp-feat-body{
    max-height: 160px; opacity: 1; transform: translateY(0);
    transition: max-height .5s cubic-bezier(.22,.61,.36,1), opacity .4s ease .08s, transform .4s ease .08s;
}
.dp-feat-body p{
    margin: 0; padding: 0 26px 22px 22px;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 14.5px; line-height: 23px; color: #4a5568;
}

/* ── Illustration stage — a static vector image per feature, swapped
   with a crossfade/scale/rotate transition; a soft ambient glow sits
   behind the image itself for depth. ── */
.dp-story-right{ display: flex; justify-content: center; }
.dp-illus-stage{
    position: relative;
    width: 100%; max-width: 600px;
    /* matches the Figma cards' 341×219 proportions */
    aspect-ratio: 341 / 219;
}
/* Each feature's illustration is absolutely stacked; only the active one
   is visible — the opacity/scale/rotate transition is the "morph" as
   the static image swaps for the next feature's static image. */
.dp-illus-core-stage{ position: absolute; inset: 0; z-index: 1; }
.dp-illus-core{
    position: absolute; inset: 0;
    opacity: 0;
    transform: scale(.9) rotate(-8deg);
    pointer-events: none;
    will-change: opacity, transform;
    transition: opacity .45s cubic-bezier(.22,.61,.36,1), transform .45s cubic-bezier(.22,.61,.36,1);
}
.dp-illus-core.is-active{
    opacity: 1;
    transform: scale(1) rotate(0deg);
    pointer-events: auto;
}
.dp-illus-core img{
    display: block;
    width: 100%; height: 100%;
    object-fit: contain;
}

/* ════════════════════════════════════════════════════════════════
   CONVERSATION INTELLIGENCE (light, Scroll 6)
   ════════════════════════════════════════════════════════════════ */
.section-conv-intel{
    /* Pale brand gradient — same cyan → blue → violet direction as the
       accent gradients used throughout the page, just at tint strength */
    background: linear-gradient(135deg,
        var(--Turquoise-SkyBlue-50, #e8f6fa) 0%,
        var(--Royal-Blue-Blue-50, #e7eef8) 55%,
        var(--Violet-Violet-50, #f0ebf7) 100%);
    padding: 96px 0; position: relative;
}
/* Light section dot-grid — matches the Data Pool section's convention */
.section-conv-intel::before{
    content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image: radial-gradient(rgba(40,99,195,.14) 1px, transparent 1px);
    background-size: 24px 24px;
}
.section-conv-intel .container{ position: relative; z-index: 1; }
.ci-intro{
    text-align: center; max-width: 680px; margin: 0 auto 56px;
}
/* Light-section eyebrow per §12.2: color #0e48a5, border rgba(40,99,195,.14), letter-spacing 1.6px */
.section-conv-intel .ai-eyebrow,
.section-steps .ai-eyebrow{
    display: inline-flex; align-items: center; gap: 8px;
    padding: 7px 16px; border-radius: 50px;
    background: rgba(40,99,195,.08);
    border: 1px solid rgba(40,99,195,.14);
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; line-height: 16px;
    letter-spacing: 1.6px; text-transform: uppercase;
    margin-bottom: 20px;
}
.section-conv-intel .ae-dot,
.section-steps .ae-dot{
    width: 6px; height: 6px; border-radius: 50%;
    background: linear-gradient(135deg, #2863c3 0%, #7747b6 100%);
    box-shadow: 0 0 0 3px rgba(40,99,195,.14);
    display: inline-block; flex-shrink: 0;
}
/* Dark-section override — .section-steps (Quick Start) sits on a dark
   background, so it repoints the shared light rule above. */
.section-steps .ai-eyebrow{
    background: rgba(255,255,255,.06);
    border-color: rgba(255,255,255,.14);
    color: #67d3ff;
}
.section-steps .ae-dot{
    background: linear-gradient(135deg, #12b6f8 0%, #7747b6 100%);
    box-shadow: 0 0 0 3px rgba(18,182,248,.18);
}
.section-conv-intel h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: var(--cool-101828, #101828);
    margin: 0 0 16px; letter-spacing: -.6px;
}
.ci-sub{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 16px; line-height: 27px; color: #4a5568;
    margin: 0;
}
.ci-cards{
    display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px;
}
.ci-card{
    background: #fff;
    border: 1px solid rgba(40,99,195,.14);
    border-radius: 16px;
    padding: 36px 32px;
    display: flex; flex-direction: column;
    box-shadow: 0 4px 24px rgba(40,99,195,.08);
    transition: box-shadow .22s ease, transform .22s cubic-bezier(.22,.61,.36,1), border-color .22s ease;
}
/* Pain Points cards read better left-aligned (centered paragraphs are
   harder to scan) and get a thin gradient top-edge tying them back to
   the icon's color, instead of reading as a plain generic 3-card grid. */
.section-painpoints .ci-card{
    position: relative; overflow: hidden; text-align: left;
}
.section-painpoints .ci-card::before{
    content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px;
    background-image: linear-gradient(90deg, #1CA9C9 0%, #2863c3 50%, #7747b6 100%);
}
.section-painpoints .ci-card h5,
.section-painpoints .ci-card p{ text-align: left; }
.ci-card:hover{
    box-shadow: 0 8px 40px -12px rgba(40,99,195,.28);
    border-color: rgba(40,99,195,.28);
    transform: translateY(-3px);
}
.ci-card-icon{
    width: 52px; height: 52px;
    border-radius: 12px;
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    display: flex; align-items: center; justify-content: center;
    color: #ffffff;
    box-shadow: 0 6px 16px -6px rgba(40,99,195,.45);
    margin-bottom: 22px; flex-shrink: 0;
}
.ci-card-icon svg{ width: 22px; height: 22px; }
.ci-card h5{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 18px; line-height: 26px; color: var(--cool-101828, #101828);
    margin: 0 0 10px; letter-spacing: -.3px;
}
.ci-card p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 24px; color: #4a5568; margin: 0;
}

/* ════════════════════════════════════════════════════════════════
   MCP-POWERED BI (dark, Scroll 7)
   ════════════════════════════════════════════════════════════════ */
.section-mcp{
    position: relative; overflow: hidden;
    background: var(--Base-White, #fcfcfc);
    padding: 96px 0;
    text-align: center;
}
.section-mcp .container{ position: relative; z-index: 1; }
/* Light-section eyebrow/dot override (base .dp-eyebrow stays dark) */
.section-mcp .dp-eyebrow{
    background: rgba(40,99,195,.08);
    border-color: rgba(40,99,195,.14);
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    backdrop-filter: none;
}
.section-mcp .dp-dot{
    background: linear-gradient(135deg, #2863c3 0%, #7747b6 100%);
    box-shadow: 0 0 0 3px rgba(40,99,195,.14);
}
.mcp-intro{ margin-bottom: 60px; }
.mcp-intro h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: var(--cool-101828, #101828);
    margin: 0 0 20px; letter-spacing: -.6px;
}
.section-mcp .section-sub{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 17px; line-height: 28px; color: #4a5568;
    max-width: 840px; margin: 0 auto;
}

/* ── Drag cards + tilt screenshot — the capability strip is a free
   grab-and-throw list (pointer-driven drag + momentum decay, no snap
   grid) for a tactile, app-like feel. The product screen sits in a
   card that tilts toward the cursor (perspective parallax) and swaps
   with a circular mask reveal expanding from center. ── */
.mcp-drag{ text-align: left; }

.mcp-drag-viewport{
    overflow-x: auto; overflow-y: hidden;
    scrollbar-width: none;
    padding: 20px 0 28px;
    cursor: grab;
    touch-action: pan-y;
    /* fade the strip's edges so the drag reads as an unbounded list */
    -webkit-mask-image: linear-gradient(90deg, transparent 0, #000 40px, #000 calc(100% - 40px), transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0, #000 40px, #000 calc(100% - 40px), transparent 100%);
}
.mcp-drag-viewport::-webkit-scrollbar{ display: none; }
.mcp-drag-viewport.is-grabbing{ cursor: grabbing; }
.mcp-drag-track{
    display: flex; gap: 18px; width: max-content;
    padding-inline: 8px;
}
.mcp-drag-card{
    flex: 0 0 auto;
    padding: 11px 22px;
    background: #fff;
    border: 1px solid rgba(40,99,195,.16);
    border-radius: 50px;
    cursor: pointer; font-family: inherit;
    -webkit-user-select: none; user-select: none;
    transition: box-shadow .35s ease, border-color .35s ease, background .35s ease;
}
.mcp-drag-card:focus-visible{ outline: 2px solid rgba(28,169,201,.5); outline-offset: 2px; }
.mcp-drag-card.is-active{
    border-color: transparent;
    background: linear-gradient(135deg, #1CA9C9 0%, #2863c3 50%, #55298E 100%);
    box-shadow: 0 14px 30px -14px rgba(40,99,195,.5);
}
.mcp-drag-name{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 15px; line-height: 21px; color: var(--cool-101828, #101828);
    white-space: nowrap;
    pointer-events: none;
    transition: color .35s ease;
}
.mcp-drag-card.is-active .mcp-drag-name{ color: #fff; }

/* Progress bar — fills to reflect how far along the 7 capabilities we are */
.mcp-drag-progress{
    position: relative;
    height: 3px; border-radius: 3px;
    background: rgba(40,99,195,.12);
    max-width: 1400px; margin: 8px auto 40px;
    overflow: hidden;
}
.mcp-drag-progress-fill{
    position: absolute; inset: 0 auto 0 0;
    width: 14.28%; border-radius: 3px;
    background-image: linear-gradient(90deg, #1CA9C9 0%, #2863c3 50%, #55298E 100%);
    transition: width .5s cubic-bezier(.22,.61,.36,1);
}

/* ── Detail stage — two columns: content on the left, image on the right ── */
.mcp-drag-stage{
    display: grid; grid-template-columns: 1fr;
    align-items: flex-start; gap: 32px;
    max-height: 620px; overflow-y: auto;
    padding-right: 8px;
}
.mcp-drag-info{ display: none; position: relative; padding-left: 30px; }
.mcp-drag-info.is-active{ display: block; }

/* Vertical dot + dashed-line marker beside the heading/CTA */
.mcp-drag-marker{ position: absolute; left: 0; top: 6px; bottom: 6px; width: 12px; }
.mcp-drag-marker::before{
    content: ""; position: absolute; left: 5px; top: 12px; bottom: 12px; width: 1px;
    background-image: repeating-linear-gradient(to bottom, rgba(40,99,195,.35) 0 4px, transparent 4px 9px);
}
.mcp-drag-dot{
    position: absolute; left: 0; width: 11px; height: 11px; border-radius: 50%;
    background-image: linear-gradient(135deg, #1CA9C9 0%, #55298E 100%);
    box-shadow: 0 0 0 4px rgba(40,99,195,.12);
}
.mcp-drag-dot--top{ top: 0; }
.mcp-drag-dot--bottom{ bottom: 0; }

.mcp-drag-info-head{ display: flex; flex-direction: column-reverse; gap: 12px; }
.mcp-drag-info-head h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 30px; line-height: 38px; letter-spacing: -.3px;
    color: var(--cool-101828, #101828); margin: 0;
}
.mcp-drag-count{
    font-family: 'Space Grotesk', sans-serif; font-weight: 600;
    font-size: 13px; letter-spacing: 1.5px;
    background-image: linear-gradient(90deg, #1CA9C9 0%, #55298E 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}
.mcp-drag-info p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 16px; line-height: 27px; color: #4a5568;
    margin: 16px 0 0;
}
.mcp-drag-more{
    display: inline-flex; align-items: center;
    margin-top: 24px; padding: 11px 26px;
    border-radius: 6px;
    font-family: 'Space Grotesk', sans-serif; font-weight: 600;
    font-size: 13px; letter-spacing: 1.2px; text-transform: uppercase;
    color: #fff; text-decoration: none;
    background-image: linear-gradient(135deg, #1CA9C9 0%, #2863c3 55%, #55298E 100%);
    box-shadow: 0 14px 30px -14px rgba(40,99,195,.5);
    transition: transform .25s cubic-bezier(.22,.61,.36,1), box-shadow .25s ease;
}
.mcp-drag-more:hover{ transform: translateY(-2px); box-shadow: 0 18px 36px -14px rgba(40,99,195,.6); }
.mcp-drag-info.is-active .mcp-drag-info-head{ animation: mcpDragRise .45s cubic-bezier(.22,.61,.36,1) .05s backwards; }
.mcp-drag-info.is-active p{                   animation: mcpDragRise .45s cubic-bezier(.22,.61,.36,1) .14s backwards; }
.mcp-drag-info.is-active .mcp-drag-more{      animation: mcpDragRise .45s cubic-bezier(.22,.61,.36,1) .22s backwards; }
@keyframes mcpDragRise{
    from{ opacity: 0; transform: translateY(12px); }
    to{   opacity: 1; transform: none; }
}

/* Product screen — floating card with perspective; mouse-driven tilt via JS */
.mcp-drag-visual{ min-width: 0; }
.mcp-drag-screen{ perspective: 900px; }
.mcp-drag-tilt{
    position: relative;
    aspect-ratio: 16 / 8.2;
    border-radius: 16px; overflow: hidden; /* clips the mask-reveal transition */
    transition: transform .25s ease-out;
    transform-style: preserve-3d;
    will-change: transform;
}
.mcp-drag-shot{
    position: absolute; inset: 0;
    opacity: 0; pointer-events: none;
    clip-path: circle(0% at 50% 50%);
    transition: clip-path .6s cubic-bezier(.22,.61,.36,1), opacity .35s ease;
}
.mcp-drag-shot.is-active{
    opacity: 1; pointer-events: auto;
    clip-path: circle(150% at 50% 50%);
}
.mcp-drag-shot img{
    display: block; width: 100%; height: 100%;
    object-fit: contain;
}

/* ════════════════════════════════════════════════════════════════
   QUICK START (dark, Scroll 8) — thread-line steps + sticky visual
   (Yavar-style: steps scroll normally down the left on a continuous
   line; the right panel is sticky and crossfades per step)
   ════════════════════════════════════════════════════════════════ */
.section-steps{
    background: linear-gradient(160deg, #071e45 0%, #051a3c 45%, #0a1e3d 80%, #071840 100%);
    padding: 96px 0 120px; position: relative;
}
/* Dark section dot-grid */
.section-steps::before{
    content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image: radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px);
    background-size: 24px 24px;
}
.section-steps .container{ position: relative; z-index: 1; }

/* Left-aligned section head */
.qs-head{
    display: flex; flex-direction: column; align-items: flex-start; gap: 20px;
    margin-bottom: 72px;
}
/* Dark-section eyebrow — per site convention (matches .dp-eyebrow) */
.qs-eyebrow{
    display: inline-flex; align-items: center;
    padding: 7px 16px; border-radius: 50px;
    background: rgba(252,252,252,.06);
    border: 1px solid rgba(255,255,255,.14);
    color: #67d3ff;
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; line-height: 16px;
    letter-spacing: 1.6px; text-transform: uppercase;
}
.qs-head h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: #fcfcfc;
    margin: 0; letter-spacing: -.6px;
}
/* Accent keeps the heading's own light weight — matches dp-accent/ah-accent */
.qs-accent{
    background-image: linear-gradient(90deg, #12b6f8 0%, #2863c5 48%, #7747b6 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}

/* Two columns: scrolling steps left, sticky visual right.
   NOTE: columns must STRETCH (grid default) — the visual column needs the
   full row height for its sticky child to travel; align-items:start would
   collapse it to the frame's own height and kill the stickiness. */
.qs-wrap{
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.1fr);
    gap: 80px;
}

/* ── Steps column — continuous thread line through the number circles ── */
.qs-steps{ position: relative; }
.qs-line{
    position: absolute; left: 17px; top: 44px; bottom: 44px;
    width: 1px;
    background: rgba(159,186,228,.22);
}
.qs-step{
    position: relative;
    display: flex; align-items: flex-start; gap: 26px;
    min-height: 40vh;
    padding: 8px 0;
}
.qs-step:last-child{ min-height: 40vh; }
.qs-num{
    position: relative; z-index: 1; flex: 0 0 34px;
    width: 34px; height: 34px; border-radius: 50%;
    display: inline-flex; align-items: center; justify-content: center;
    background: #071c40;
    border: 1px solid rgba(159,186,228,.35);
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 14px; color: rgba(252,252,252,.75);
    transition: border-color .35s ease, box-shadow .35s ease, color .35s ease;
}
.qs-step.is-active .qs-num{
    border-color: rgba(18,182,248,.75);
    color: #fff;
    box-shadow: 0 0 0 4px rgba(18,182,248,.14), 0 0 18px rgba(18,182,248,.35);
}
.qs-step-body{ display: flex; flex-direction: column; gap: 14px; padding-top: 2px; }
.qs-step-body h5{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 26px; line-height: 34px; color: rgba(252,252,252,.55);
    margin: 0; letter-spacing: -.3px;
    transition: color .35s ease;
}
.qs-step.is-active .qs-step-body h5{ color: #fcfcfc; }
.qs-step-body p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15.5px; line-height: 26px; color: rgba(252,252,252,.55); margin: 0;
    max-width: 400px;
    transition: color .35s ease;
}
.qs-step.is-active .qs-step-body p{ color: rgba(252,252,252,.75); }

/* Icon chips — small bordered tiles with tiny uppercase labels */
.qs-chips{ display: flex; gap: 18px; margin-top: 8px; }
.qs-chip{
    display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.qs-chip-tile{
    width: 56px; height: 56px; border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    border: 1px solid rgba(159,186,228,.28);
    background: rgba(252,252,252,.03);
    color: rgba(202,213,226,.85);
    transition: border-color .35s ease, color .35s ease, box-shadow .35s ease;
}
.qs-chip-tile svg{ width: 24px; height: 24px; }
.qs-step.is-active .qs-chip-tile{
    border-color: rgba(119,71,182,.55);
    color: #cdb7f5;
    box-shadow: 0 0 16px -4px rgba(119,71,182,.4);
}
.qs-chip-label{
    font-family: 'Inter', sans-serif; font-weight: 500;
    font-size: 10.5px; letter-spacing: 1.2px;
    color: rgba(202,213,226,.6);
}

/* ── Sticky visual — neon-framed panel, shots crossfade per step ── */
.qs-visual{ min-width: 0; position: relative; }
/* Reference behavior: the frame starts level with step 1 (natural flow),
   scrolls with the page until it reaches the vertical center of the
   viewport, sticks there while the remaining steps pass, then releases
   and scrolls out with the last step. The exact centered `top` offset
   depends on the frame's rendered height, so JS measures and sets it;
   this value is only the pre-JS fallback. */
.qs-visual-sticky{
    position: sticky; top: 25vh;
}
/* Soft ambient glow behind the GIF — the frame itself stays box-free, but
   this lifts the dark negative space around it instead of leaving a flat,
   featureless void against the section background. Below 991px the
   sticky wrapper drops to position:static, so this pseudo-element falls
   back to anchoring against .qs-visual (kept position:relative for
   exactly that case) instead of mis-positioning against the container. */
.qs-visual-sticky::before{
    content: "";
    position: absolute;
    inset: -48px;
    background: radial-gradient(ellipse at center,
        rgba(28,169,201,.22) 0%,
        rgba(40,99,195,.14) 42%,
        transparent 72%);
    filter: blur(48px);
    z-index: -1;
    pointer-events: none;
}
.qs-frame{
    position: relative;
    aspect-ratio: 16 / 10.5;
    border-radius: 12px; overflow: hidden; /* clips the slide motion */
}
/* Directional swap: incoming GIF slides up from below; the outgoing one
   (tagged .is-leaving by JS for the transition's duration) exits upward —
   an unmistakable motion cue that the visual changed with the step. */
.qs-shot{
    position: absolute; inset: 0;
    border-radius: 12px; overflow: hidden;
    opacity: 0; transform: translateY(56px);
    pointer-events: none;
    transition: opacity .4s cubic-bezier(.22,.61,.36,1), transform .45s cubic-bezier(.22,.61,.36,1);
}
.qs-shot.is-active{ opacity: 1; transform: none; }
.qs-shot.is-leaving{ opacity: 0; transform: translateY(-56px); }
.qs-shot img{
    display: block; width: 100%; height: 100%;
    object-fit: cover; object-position: top center;
}

/* Scroll hint + step numbering under the GIF */
/* Grid keeps the step label at the left edge while the progress bars sit
   at the true horizontal center of the GIF */
.qs-progress{
    display: grid; grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 16px; margin-top: 18px;
}
.qs-progress-count{ justify-self: start; }
.qs-progress-dots{ grid-column: 2; justify-self: center; }
.qs-progress-dots{ display: flex; gap: 6px; }
.qs-progress-dot{
    width: 26px; height: 3px; border-radius: 50px;
    background: rgba(255,255,255,.18);
    transition: background .35s ease;
}
.qs-progress-dot.is-active{
    background: linear-gradient(90deg, #12b6f8 0%, #2863c5 50%, #7747b6 100%);
}
.qs-progress-count{
    font-family: 'Space Grotesk', sans-serif; font-weight: 600;
    font-size: 12.5px; letter-spacing: 1.5px;
    color: #fcfcfc;
}

/* ════════════════════════════════════════════════════════════════
   FEATURES & BENEFITS (dark, Scroll 9)
   ════════════════════════════════════════════════════════════════ */
.section-feat-benefits{
    position: relative; overflow: hidden;
    background: linear-gradient(160deg, #051a3c 0%, #061830 50%, #040f26 100%);
    padding: 96px 0; text-align: center;
}
.section-feat-benefits .container{ position: relative; z-index: 1; }
.fb-orb{
    position: absolute; border-radius: 50%; pointer-events: none; z-index: 0;
    filter: blur(100px);
}
.fb-orb--tl{
    width: 580px; height: 520px; left: -160px; top: -140px;
    background: radial-gradient(ellipse, rgba(85,41,142,.30) 0%, transparent 70%);
}
.fb-orb--br{
    width: 500px; height: 440px; right: -120px; bottom: -100px;
    background: radial-gradient(ellipse, rgba(14,72,165,.25) 0%, transparent 70%);
}
.fb-intro{ margin-bottom: 60px; }
.fb-intro h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: #fcfcfc;
    margin: 0 0 20px; letter-spacing: -.6px;
}
.section-feat-benefits .section-sub{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 17px; line-height: 28px; color: rgba(252,252,252,.72);
    max-width: 720px; margin: 0 auto;
}
/* ── Brick mosaic: 6-col grid, three rows of varied-width tiles ── */
.fb-brick{
    display: grid; grid-template-columns: repeat(6, 1fr); gap: 20px;
    text-align: left;
}
.fb-card--w4{ grid-column: span 4; }
.fb-card--w3{ grid-column: span 3; }
.fb-card--w2{ grid-column: span 2; }
.fb-card{
    position: relative; overflow: hidden;
    background: rgba(252,252,252,.05);
    border: 1px solid rgba(159,186,228,.12);
    border-radius: 18px; padding: 28px 24px;
    display: flex; flex-direction: column; gap: 12px;
    transition: border-color .3s ease, background .3s ease, transform .35s cubic-bezier(.22,.61,.36,1);
}
/* Wider bricks lay icon + text side-by-side for horizontal balance */
.fb-card--w4{
    flex-direction: row; align-items: flex-start; gap: 20px;
    background:
        radial-gradient(100% 130% at 0% 0%, rgba(85,41,142,.12) 0%, rgba(14,72,165,.06) 45%, transparent 72%),
        rgba(252,252,252,.05);
    border-color: rgba(119,71,182,.24);
}
.fb-card--w4 .fb-text{ display: flex; flex-direction: column; gap: 8px; }
.fb-card--w4 h5{ font-size: 20px; line-height: 28px; }
.fb-card--w4 p{ font-size: 15px; line-height: 24px; }
.fb-card:hover{
    background: rgba(252,252,252,.08);
    border-color: rgba(119,71,182,.38);
    transform: translateY(-4px);
}
.fb-icon{
    width: 48px; height: 48px; border-radius: 14px; flex-shrink: 0;
    background: linear-gradient(135deg, rgba(14,72,165,.5) 0%, rgba(119,71,182,.4) 100%);
    border: 1px solid rgba(119,71,182,.28);
    display: inline-flex; align-items: center; justify-content: center;
    color: #12b6f8;
}
.fb-icon svg{ width: 22px; height: 22px; }
.fb-card h5{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 17px; line-height: 25px; color: #fcfcfc;
    margin: 0; letter-spacing: -.3px;
}
.fb-card p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 14px; line-height: 23px; color: rgba(252,252,252,.72); margin: 0;
}

/* ════════════════════════════════════════════════════════════════
   PLATFORM CAPABILITIES — fc-section (mirrors index.html design)
   ════════════════════════════════════════════════════════════════ */
.am-fc-section{
    background: var(--Base-White, #fcfcfc);
    padding: 112px 0 80px; position: relative; overflow: hidden; z-index: 4;
}
.am-fc-section .fc-header{ text-align: center; max-width: 720px; margin: 0 auto 60px; }
.am-fc-section .fc-eyebrow{
    display: inline-flex; align-items: center; gap: 9px;
    font-family: 'Inter', sans-serif; font-size: 11px; font-weight: 500;
    letter-spacing: 1.6px; text-transform: uppercase; color: var(--Royal-Blue-Blue-500, #0e48a5);
    border: 1px solid rgba(40,99,195,.14); padding: 7px 16px; border-radius: 50px;
    margin: 0 0 24px; background: rgba(40,99,195,.08);
}
.am-fc-section .fc-dot{
    width: 6px; height: 6px; border-radius: 50%;
    background: linear-gradient(135deg, #12b6f8 0%, #7747b6 100%); flex: 0 0 6px;
}
.am-fc-section .fc-heading{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: var(--cool-101828, #101828); letter-spacing: -.6px; margin: 0 0 16px;
}
.am-fc-section .fc-accent{
    font-style: normal;
    background-image: linear-gradient(135deg, #7747b6 0%, #2863c3 50%, #1ca9c9 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}
.am-fc-section .fc-sub{
    font-family: 'Inter', sans-serif; font-size: 15px; line-height: 28px;
    color: #4a5568;
}

/* Track — all 12 capabilities in one continuous row; prev/next slides
   it by exactly one card at a time (translateX by one card-width),
   instead of paging through fixed groups of 4. .fc-slider-wrap is the
   clipping viewport. */
.fc-slider-wrap{ overflow: hidden; }
.am-fc-grid{
    display: flex; flex-wrap: nowrap;
    column-gap: 20px; row-gap: 0;
    transition: transform .45s cubic-bezier(.22,.61,.36,1);
    will-change: transform;
}
.am-fc-grid .fc-col{ flex: 0 0 calc((100% - 60px) / 4); }

/* Column — transparent, sits on section bg like the index dark version */
.am-fc-grid .fc-col{
    display: flex; flex-direction: column; position: relative;
    cursor: pointer; background: transparent;
}
.am-fc-grid .fc-col-content{ flex: 1; display: flex; flex-direction: column; }

/* Top indicator line — full-width, no card rounding */
.am-fc-grid .fc-col::before{
    content: ''; display: block; height: 2px; flex: 0 0 2px;
    background-image: repeating-linear-gradient(to right,
        rgba(40,99,195,.22) 0, rgba(40,99,195,.22) 3px, transparent 3px, transparent 9px);
    transition: background-image .4s, background-color .4s;
}
.am-fc-grid .fc-col.is-active::before{ background-image: none; background-color: #2563eb; }
.am-fc-grid .fc-col:hover::before{
    background-image: none; background-color: #1CA9C9;
    transform-origin: left center;
    animation: amFcLineSweep .5s cubic-bezier(.4,0,.2,1) forwards;
}
@keyframes amFcLineSweep{ from{ transform: scaleX(0); } to{ transform: scaleX(1); } }

/* Top row: icon + name + arrow — edge-flush on first/last col */
.am-fc-grid .fc-col-top{
    display: flex; align-items: center; gap: 12px; padding: 24px 28px 0;
}
.am-fc-grid .fc-col:first-child .fc-col-top{ padding-left: 0; }
.am-fc-grid .fc-col:last-child  .fc-col-top{ padding-right: 0; }

.am-fc-grid .fc-col-icon{
    width: 40px; height: 40px; flex: 0 0 40px;
    display: flex; align-items: center; justify-content: center;
    color: #2863c3; border: 1px solid rgba(40,99,195,.22); border-radius: 5px;
    background: rgba(40,99,195,.07);
    transition: border-color .4s, background .4s, color .4s;
}
.am-fc-grid .fc-col-icon svg{ width: 20px; height: 20px; }
.am-fc-grid .fc-col.is-active .fc-col-icon,
.am-fc-grid .fc-col:hover .fc-col-icon{
    border-color: #2863c3; background: #2863c3; color: #fff;
}
.am-fc-grid .fc-col-name{
    font-family: 'Inter', sans-serif; font-size: 14.5px; font-weight: 500;
    color: #0d1b2e; flex: 1; line-height: 1.35;
}
.am-fc-grid .fc-col-arrow{
    width: 32px; height: 32px; flex: 0 0 32px;
    border-radius: 6px; border: 1px solid rgba(40,99,195,.20);
    background: rgba(40,99,195,.06);
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; color: rgba(13,27,46,.4); padding: 0;
    transition: background .3s, border-color .3s, color .3s;
}
.am-fc-grid .fc-col-arrow svg{ width: 14px; height: 14px; }
.am-fc-grid .fc-col.is-active .fc-col-arrow,
.am-fc-grid .fc-col-arrow:hover{
    background: #2863c3; border-color: #2863c3; color: #fff;
}

.am-fc-grid .fc-col-desc{
    font-family: 'Inter', sans-serif; font-size: 13px; line-height: 21px;
    color: rgba(13,27,46,.62); padding: 16px 28px 28px;
}
.am-fc-grid .fc-col:first-child .fc-col-desc{ padding-left: 0; }
.am-fc-grid .fc-col:last-child  .fc-col-desc{ padding-right: 0; }

/* Illustration card — pale brand-tint bg; the SVGs' accent colors (cyan,
   blue, violet) were designed against dark navy, so any neutral/white
   detail lines within them were recolored to a dark-navy tint to keep
   reading correctly now that the card itself is light. */
.am-fc-grid .fc-visual{
    flex: 0 0 240px; position: relative; overflow: hidden;
    border-radius: 8px; margin-top: 20px;
    border: 1px solid rgba(40,99,195,.16);
    background: linear-gradient(145deg,
        var(--Turquoise-SkyBlue-50, #e8f6fa) 0%,
        var(--Royal-Blue-Blue-50, #e7eef8) 55%,
        var(--Violet-Violet-50, #f0ebf7) 100%);
    box-shadow: 0 2px 12px rgba(40,99,195,.08);
    transition: border-color .3s, box-shadow .3s;
}
.am-fc-grid .fc-col.is-active .fc-visual{
    border-color: rgba(40,99,195,.42);
    box-shadow: 0 4px 20px rgba(40,99,195,.16);
}
.am-fc-grid .fc-col:hover .fc-visual{
    border-color: rgba(40,99,195,.5);
    box-shadow: 0 6px 24px rgba(40,99,195,.2);
}
.am-fc-grid .fc-vis-inner{
    position: absolute; inset: 0; display: flex;
    align-items: center; justify-content: center;
}
.am-fc-grid .fc-col.is-active .fc-vis-inner,
.am-fc-grid .fc-col:hover .fc-vis-inner{ animation: amFcVisFloat 3s ease-in-out infinite; }
@keyframes amFcVisFloat{
    0%,100%{ transform: translateY(-4px); }
    50%    { transform: translateY(-10px); }
}
.am-fc-grid .fc-vis-svg{ width: 100%; height: 100%; display: block; }

/* ── Slide navigation ── */
.am-fc-slide-nav{
    display: flex; align-items: center; justify-content: center;
    gap: 12px; margin-top: 36px;
}
.am-fc-slide-nav .fc-snav-btn{
    display: flex; align-items: center; justify-content: center;
    width: 48px; height: 48px; border-radius: 50%;
    border: 1px solid rgba(40,99,195,.28);
    background: #fff;
    color: rgba(13,27,46,.7);
    cursor: pointer; padding: 0;
    box-shadow: 0 2px 10px rgba(13,27,46,.10);
    transition: background .2s, border-color .2s, color .2s, opacity .2s;
}
.am-fc-slide-nav .fc-snav-btn svg{ width: 20px; height: 20px; }
/* Prev: dimmed */
#amFcPrev{ opacity: .45; }
#amFcPrev:not(:disabled):hover{ opacity: .85; }
/* Next: brand filled */
#amFcNext{
    background: #2863c3; border-color: #2863c3; color: #fff;
    box-shadow: 0 4px 14px rgba(40,99,195,.35);
}
#amFcNext:not(:disabled):hover{ background: #1f52a8; border-color: #1f52a8; }
.am-fc-slide-nav .fc-snav-btn:disabled{ opacity: .20; cursor: default; }
.am-fc-slide-nav .fc-snav-count{
    font-family: 'Inter', sans-serif;
    font-size: 12px; letter-spacing: .5px;
    color: rgba(13,27,46,.5); min-width: 28px; text-align: center;
}

/* Responsive */
@media (max-width: 991px){
    .am-fc-grid .fc-col{ flex: 0 0 calc((100% - 20px) / 2); }
    .am-fc-section .fc-heading{ font-size: 34px; line-height: 44px; }
}
@media (max-width: 600px){
    .am-fc-grid .fc-col{ flex: 0 0 100%; }
    .am-fc-section{ padding: 80px 0 60px; }
    .am-fc-section .fc-heading{ font-size: 28px; line-height: 38px; }
}

/* ════════════════════════════════════════════════════════════════
   MCP-CTA — "Transform Business Questions" (contained card, sits after
   the Platform Capabilities carousel, before the page-finale). Reuses
   the .bcta-wrap/.bcta-actions typography and button styles built for
   the page-finale bottom CTA. Unlike a full-bleed section, the dark
   gradient lives on an inset rounded card so the surrounding section
   keeps the page's normal (light) background on either side of it.
   ════════════════════════════════════════════════════════════════ */
/* position+z-index above 3 needed so this opaque background actually
   occludes .page-finale::before — that pseudo-element extends 400px
   above its own section with a heavy blur and its own stacking context
   (.page-finale has z-index:2), so without competing here the glow
   painted over this section regardless of DOM order. */
.section-mcp-cta{
    position: relative; z-index: 3;
    background: var(--Base-White, #fcfcfc); padding: 32px 0 96px;
}
.mcp-cta-card{
    position: relative; overflow: hidden;
    border-radius: 28px;
    padding: 72px 56px;
    /* Richer violet → navy diagonal (same family as the page-finale
       gradient) instead of four near-identical navy stops, which read
       as a flat solid color rather than a gradient. */
    background: linear-gradient(135deg, #55298e 0%, #2a3f8f 38%, #0e2252 68%, #051a3c 100%);
    box-shadow: 0 30px 60px -30px rgba(7,30,69,.45);
}
.mcp-cta-card-grid{
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image: radial-gradient(rgba(255,255,255,.06) 1px, transparent 1px);
    background-size: 24px 24px;
}
.mcp-cta-card .bcta-wrap{ position: relative; z-index: 1; text-align: center; }

/* ════════════════════════════════════════════════════════════════
   BOTTOM CTA (inside page-finale)
   ════════════════════════════════════════════════════════════════ */
.section-bottom-cta{
    padding: 96px 0 80px;
    text-align: center;
}
.bcta-wrap{
    display: flex; flex-direction: column; align-items: center; gap: 20px;
}
.bcta-wrap h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: #fcfcfc;
    margin: 0; letter-spacing: -.6px;
}
.bcta-wrap p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 17px; line-height: 28px; color: rgba(252,252,252,.72);
    max-width: 620px; margin: 0;
}
.bcta-actions{
    display: flex; align-items: center; gap: 16px; flex-wrap: wrap; justify-content: center;
    margin-top: 8px;
}
.btn-primary--lg{ padding: 12px 28px; font-size: 16px; }
/* Inverted gradient-border button on dark bg per §8: dark inner fill + --Explore-Button border.
   Layer order matters here and was backwards: in a CSS multi-background
   list the FIRST layer paints on TOP. With the gradient listed first at
   border-box (which covers the padding-box area too), it fully hid the
   dark fill underneath — rendering as a solid gradient button
   indistinguishable from .btn-primary, instead of a dark button with a
   gradient ring. Swapped so the opaque dark fill is on top (visible only
   in padding-box, i.e. the interior) and the gradient sits below,
   showing through only in the border-box ring it doesn't cover. */
.btn-demo--lg{
    padding: 12px 30px; min-height: 48px; font-size: 16px; line-height: 1.2;   /* size-matched to .btn-primary--lg */
    background: rgba(0,0,0,.25) padding-box,
                var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9)) border-box;
    border: 2px solid transparent;
    color: #fcfcfc; font-family: 'Inter', sans-serif; font-weight: 700;
    border-radius: 6px; text-decoration: none; display: inline-flex; align-items: center;
    transition: filter .22s ease, transform .22s cubic-bezier(.22,.61,.36,1);
}
.btn-demo--lg:hover{ filter: brightness(1.1); transform: translateY(-1px); }

/* ════════════════════════════════════════════════════════════════
   RESPONSIVE — new sections
   ════════════════════════════════════════════════════════════════ */
@media (max-width: 991px){
    .aiagent-grid--4col{ grid-template-columns: repeat(2, 1fr); }
    .stats-tiles{ grid-template-columns: repeat(2, 1fr); gap: 16px; }
    .stats-intro-tile{ margin-bottom: 36px; }
    .dp-story{ grid-template-columns: 1fr; gap: 40px; }
    .dp-illus-stage{ max-width: 520px; margin: 0 auto; }
    .ci-cards{ grid-template-columns: 1fr; gap: 20px; }
    .mcp-drag-stage{ grid-template-columns: 1fr; gap: 32px; }
    .fb-brick{ grid-template-columns: repeat(2, 1fr); }
    .fb-brick .fb-card{ grid-column: auto !important; }
    .fb-card--w4{ flex-direction: column; gap: 12px; }
    .section-datapool h2, .mcp-intro h2, .bcta-wrap h2,
    .section-conv-intel h2, .fb-intro h2{ font-size: 34px; line-height: 44px; }
    /* Sticky preview doesn't fit below desktop — steps stack normally,
       compact heights, visual panel becomes a static block below them. */
    .qs-wrap{ grid-template-columns: 1fr; gap: 48px; }
    .qs-step{ min-height: 0; padding: 26px 0; }
    .qs-step:last-child{ min-height: 0; }
    .qs-line{ top: 34px; bottom: 34px; }
    .qs-visual-sticky{ position: static; height: auto; display: block; transform: none !important; }
    .qs-head h2{ font-size: 34px; line-height: 44px; }
}
@media (max-width: 767px){
    .fb-brick{ grid-template-columns: 1fr; }
    .qs-head h2{ font-size: 26px; line-height: 36px; }
    .qs-step-body h5{ font-size: 20px; line-height: 28px; }
    .qs-chip-tile{ width: 48px; height: 48px; }
    .mcp-drag-card{ padding: 9px 16px; }
    .mcp-drag-name{ font-size: 13.5px; }
    .mcp-drag-track{ gap: 10px; }
    .mcp-drag-info-head h3{ font-size: 22px; line-height: 30px; }
    .mcp-drag-info p{ font-size: 14.5px; line-height: 23px; }
    .mcp-drag-tilt{ aspect-ratio: 4 / 3; }
    .dp-illus-stage{ max-width: 440px; }
    .dp-feat-title{ font-size: 16px; }
    .mcp-cta-card{ padding: 48px 28px; border-radius: 20px; }
}
@media (max-width: 575px){
    .aiagent-grid--4col{ grid-template-columns: 1fr; }
    .stats-tiles{ grid-template-columns: 1fr; gap: 14px; }
    .bcta-actions{ flex-direction: column; }
    .dp-illus-stage{ max-width: 340px; }
    .section-datapool h2, .mcp-intro h2, .bcta-wrap h2,
    .section-conv-intel h2, .fb-intro h2{ font-size: 26px; line-height: 36px; }
    .stat-number, .stat-label{ font-size: 40px; }
}

/* Trusted logo marquee — smaller tiles on narrow viewports */
@media (max-width: 600px){
    .trusted-marquee__item{ height: 72px; padding: 0 16px; }
    .trusted-marquee__item img{ max-height: 32px; max-width: 96px; }
}

/* ═══════════════════════════════════════════════════
   Hero-stage canvas + bg-cards animation
   (mirrors final-home-bundle.css — required for index.js)
   ═══════════════════════════════════════════════════ */

#bgCanvas {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    z-index: 0;
    display: block;
}

.bg-cards-layer {
    position: absolute;
    inset: 0;
    z-index: 1;
}

.bg-card {
    position: absolute;
    box-sizing: border-box;
    border-radius: 14px;
    background: radial-gradient(ellipse at center,
        transparent 0%,
        rgba(4, 14, 42, 0.65) 55%,
        rgba(2, 8, 28, 0.92) 100%);
    border: 1px solid rgba(255, 255, 255, 0.13);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.07),
        0 2px 12px rgba(0,0,0,0.28);
    overflow: hidden;
    cursor: pointer;
    pointer-events: auto;
    opacity: 0.13;
    will-change: opacity;
    transition:
        border-color 0.38s ease,
        box-shadow   0.38s ease;
    z-index: 2;
}

.bg-card::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: inherit;
    background: radial-gradient(ellipse at 50% 50%,
        transparent 18%,
        rgba(3, 11, 28, 0.88) 74%);
    opacity: 0;
    transition: opacity 0.38s ease;
    pointer-events: none;
    z-index: 2;
}
.bg-card.bc-violet::before {
    background: radial-gradient(ellipse at 50% 50%,
        rgba(85, 41, 142, 0.06) 0%,
        transparent 26%,
        rgba(3, 11, 28, 0.88) 74%);
}
.bg-card.bc-cyan::before {
    background: radial-gradient(ellipse at 50% 50%,
        rgba(28, 169, 201, 0.06) 0%,
        transparent 26%,
        rgba(3, 11, 28, 0.88) 74%);
}
.bg-card:hover::before { opacity: 1; }

.bg-card:hover { z-index: 30 !important; }
.bg-card.bc-cyan:hover {
    border-color: rgba(28, 169, 201, 0.65) !important;
    box-shadow:
        0 0 14px rgba(28, 169, 201, 0.28),
        0 0  2px rgba(28, 169, 201, 0.50),
        inset 0 0 14px rgba(28, 169, 201, 0.06);
}
.bg-card.bc-violet:hover {
    border-color: rgba(85, 41, 142, 0.65) !important;
    box-shadow:
        0 0 14px rgba(85, 41, 142, 0.32),
        0 0  2px rgba(85, 41, 142, 0.55),
        inset 0 0 14px rgba(85, 41, 142, 0.07);
}

.bc-svg-wrap {
    position: relative;
    z-index: 1;
    width: 100%;
    height: 100%;
    padding: 24px;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: center;
}
.bc-svg-wrap svg { width: 100%; height: 100%; display: block; }

@keyframes bNP { 0%,100%{opacity:.25} 50%{opacity:.82} }
@keyframes bLD { to{stroke-dashoffset:-24} }
@keyframes bSW { to{transform:rotate(360deg)} }
@keyframes bGP { 0%,100%{opacity:.28} 50%{opacity:.72} }

.bnp { animation: bNP 2.3s ease-in-out infinite; }
.bld { stroke-dasharray: 7 5; animation: bLD 3s linear infinite; }
.bsw { animation: bSW 7s linear infinite; }
.bgp { animation: bGP 2.1s ease-in-out infinite; }

/* Foreground stacking: grid, particles, nav, and hero section sit above the canvas/cards */
.hero-stage > .hero-grid,
.hero-stage > .hero-particles,
.site-top,
.hero-section {
    position: relative;
    z-index: 10;
}

/* ══════════════════════════════════════════════════
   BRAND GRADIENT TOKENS — ported from final-home-bundle
══════════════════════════════════════════════════ */
.hero-bg-page {
    --grad-brand-stops: #7747b6 0%, #2863c3 50%, #1ca9c9 100%;
    --grad-brand:     linear-gradient(135deg,    var(--grad-brand-stops));
    --grad-brand-h:   linear-gradient(90deg,     var(--grad-brand-stops));
    --grad-brand-btn: linear-gradient(to left,   var(--grad-brand-stops));
    --grad-brand-v:   linear-gradient(to bottom, var(--grad-brand-stops));

    /* Re-point the upstream brand-gradient variables (defined in index.css)
       to the canonical gradient, matching index.html. */
    --AI-Agents-Text: var(--grad-brand-h);
    --Explore-Button: var(--grad-brand-btn);
    --Compare-Button: var(--grad-brand-btn);
    --Search-Glow:    var(--grad-brand-btn);
}
/* Canonical re-point for the shared .btn-primary gradient itself (matches
   index.html's final-home-bundle.css) — without this, .btn-primary keeps
   the older pre-unification gradient stop defined earlier in this file. */
.hero-bg-page .btn-primary.btn-primary { background-image: var(--grad-brand-btn); }

/* ══════════════════════════════════════════════════
   HELLO BAR — vibrant redesign (matches index.html)
══════════════════════════════════════════════════ */
.hello-bar {
    background:
        linear-gradient(90deg,
            #040c24  0%,
            #160840  18%,
            #2d1272  36%,
            #1e3bab  54%,
            #0d2260  72%,
            #040c24  100%
        ) !important;
    border-bottom: 1px solid rgba(100, 150, 255, 0.22) !important;
    position: relative !important;
    overflow: hidden !important;
}

/* Slow shimmer sweep */
.hello-bar::before {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg,
        transparent      0%,
        rgba(119,71,182,0.10) 30%,
        rgba(28,169,201,0.18) 50%,
        rgba(119,71,182,0.10) 70%,
        transparent      100%
    );
    animation: hbShimmer 5s ease-in-out infinite;
    pointer-events: none;
    z-index: 0;
}
@keyframes hbShimmer {
    0%   { transform: translateX(-60%); opacity: 0.5; }
    50%  { opacity: 1; }
    100% { transform: translateX(60%);  opacity: 0.5; }
}

/* All bar children above shimmer */
.hello-bar > * { position: relative; z-index: 1; }

/* Badge — gradient pill with live pulse dot */
.hello-bar .hello-badge {
    background: var(--grad-brand) !important;
    color: #fff !important;
    border-radius: 20px !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    letter-spacing: 0.8px !important;
    text-transform: uppercase !important;
    padding: 4px 12px 4px 10px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
}
.hello-bar .hello-badge::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: #fff;
    flex-shrink: 0;
    box-shadow: 0 0 0 0 rgba(255,255,255,0.7);
    animation: hbPulse 1.8s ease-out infinite;
}
@keyframes hbPulse {
    0%   { box-shadow: 0 0 0 0   rgba(255,255,255,0.7); }
    70%  { box-shadow: 0 0 0 5px rgba(255,255,255,0);   }
    100% { box-shadow: 0 0 0 0   rgba(255,255,255,0);   }
}

/* Message text */
.hello-bar .hello-message {
    color: rgba(255,255,255,0.92) !important;
    font-weight: 500 !important;
}

/* Register Now — plain text link */
.hello-bar .hello-cta {
    background: none !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    color: #fff !important;
    text-decoration: underline !important;
    text-underline-offset: 2px !important;
    font-weight: 600 !important;
    font-size: 13px !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 6px !important;
    box-shadow: none !important;
    transition: color 0.2s !important;
}
.hello-bar .hello-cta:hover {
    color: #12b6f8 !important;
    box-shadow: none !important;
}
.hello-bar .hello-cta svg { width: 13px !important; height: 13px !important; }

/* Free Consultation — plain text link */
.hello-bar .hello-consult {
    background: none !important;
    border: none !important;
    border-radius: 0 !important;
    padding: 0 !important;
    color: rgba(255,255,255,0.88) !important;
    font-size: 13px !important;
    transition: color 0.2s !important;
}
.hello-bar .hello-consult:hover {
    color: #12b6f8 !important;
}

/* Log in */
.hello-bar .hello-login {
    color: rgba(255,255,255,0.75) !important;
    border-left-color: rgba(255,255,255,0.15) !important;
    font-size: 13px !important;
}
.hello-bar .hello-login:hover { color: #12b6f8 !important; }

/* ── Hero stage — layered gradient background, compact height like eula.html
      (kills the min-height:100vh rules earlier in this file) ── */
.hero-stage {
    height: auto !important;
    min-height: 0 !important;
    background:
        radial-gradient(ellipse 70% 55% at 50% 0%,   rgba(8, 26, 72, 0.80) 0%, transparent 70%),
        radial-gradient(ellipse 50% 45% at 15% 100%, rgba(5, 14, 42, 0.72) 0%, transparent 65%),
        radial-gradient(ellipse 45% 40% at 85% 90%,  rgba(4, 10, 32, 0.76) 0%, transparent 60%),
        linear-gradient(170deg, #04102E 0%, #030C1E 45%, #020A18 100%) !important;
    position: relative !important;
    overflow: hidden !important;
}

/* ── Hello bar — slim height (matches index.html) ── */
.hello-bar{
    padding-top: 1px !important;
    padding-bottom: 1px !important;
}

/* ════════════════════════════════════════════════════════════════
   LUMENORE INSIGHTS — page-specific additions
   (hero lottie sizing + Pain Points / Product Overview / Features &
   Capabilities sections). Everything else on this page reuses
   ask-me-bundle's shared components verbatim: hero-stage/nav,
   trusted-section, ci-intro/ci-sub/ci-cards/ci-card, section-mcp-cta/
   mcp-cta-card/bcta-wrap, section-trust/before-decide/bd-faq,
   section-bottom-cta, page-finale, footer.
   ════════════════════════════════════════════════════════════════ */

/* Hero Lottie — matches the Dashboard_03 animation's native 1440x832
   canvas, same pattern as ask-me's #heroAskMeLottie sizing rule. */
.hero-visual-frame #heroInsightsLottie{
    width: 100%; aspect-ratio: 1440 / 832;
}
.hero-visual-frame #heroInsightsLottie svg{ display: block; }

/* ── PAIN POINTS (white, Scroll 3) ── */
.section-painpoints{
    position: relative; overflow: hidden;
    background: #ffffff;
    padding: 96px 0;
    text-align: center;
}
.section-painpoints h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: var(--cool-101828, #101828);
    margin: 0 0 16px; letter-spacing: -.6px;
}

/* ── PRODUCT OVERVIEW (pale tri-color gradient, Scroll 4) ── */
.section-overview{
    /* No overflow:hidden here — this section now holds the sticky .ov-nav
       list, and overflow != visible on any ancestor silently breaks
       position:sticky even when the ancestor never actually scrolls
       (same gotcha the html{overflow-x:clip} rule elsewhere works around).
       The ::before dot-grid below is inset:0 so it never needs clipping. */
    position: relative;
    background: linear-gradient(135deg,
        var(--Turquoise-SkyBlue-50, #e8f6fa) 0%,
        var(--Royal-Blue-Blue-50, #e7eef8) 55%,
        var(--Violet-Violet-50, #f0ebf7) 100%);
    padding: 96px 0;
    text-align: center;
}
.section-overview::before{
    content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image: radial-gradient(rgba(40,99,195,.14) 1px, transparent 1px);
    background-size: 24px 24px;
}
.section-overview .container{ position: relative; z-index: 1; }
.section-overview h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; color: var(--cool-101828, #101828);
    margin: 0 0 16px; letter-spacing: -.6px;
}

/* Features & Capabilities Grid (Scroll 5) now reuses the am-fc-section
   Platform Capabilities carousel verbatim — no page-specific CSS needed. */

/* ── Product Overview item selector — vertical list (beam.ai-style)
   instead of a horizontal pill strip. Active item is bold with a short
   blue dash marker; inactive items are grey with a small dot marker —
   the marker itself morphs shape/color on activate rather than using
   two separate elements. ── */
.ov-layout{
    display: grid;
    grid-template-columns: 200px minmax(0,1fr);
    gap: 56px;
    align-items: start;
}
.ov-nav{
    display: flex;
    flex-direction: column;
    gap: 26px;
    position: sticky;
    /* Extra breathing room below the sticky site header — 128px sat the
       nav flush against the header's bottom edge with zero gap once
       stuck. */
    top: 168px;
    align-self: start;
}
/* Connecting thread line behind the icon circles — same "path" idea as
   the Quick Start section's qs-line, aligned to the icon circles'
   horizontal center (17px = half of the 34px icon circle). A gradient
   fill (height set by JS from the scrollspy index) grows down the line
   to the active item, so the sidebar shows scroll progress, not just
   which single item is current. */
.ov-nav-line{
    position: absolute;
    left: 17px; top: 17px; bottom: 17px;
    width: 1px;
    /* Dashed rhythm matches lumenore-ask-me.html's mcp-drag-marker dashes
       (4px dash, 5px gap) rather than a flat solid line. */
    background-image: repeating-linear-gradient(to bottom, rgba(40,99,195,.32) 0 4px, transparent 4px 9px);
    z-index: 0;
}
.ov-nav-line-fill{
    position: absolute; left: 0; top: 0; width: 100%;
    height: 0%;
    background-image: linear-gradient(180deg, #1CA9C9 0%, #2863c3 55%, #7747b6 100%);
    transition: height .4s cubic-bezier(.22,.61,.36,1);
}
.ov-nav-item{
    position: relative; z-index: 1;
    display: flex;
    align-items: center;
    gap: 14px;
    background: none;
    border: none;
    padding: 8px 10px;
    margin: -8px -10px;
    border-radius: 12px;
    text-align: left;
    cursor: pointer;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 15.5px;
    line-height: 1.4;
    color: #8c96a3;
    transition: color .3s ease, background .25s ease;
}
.ov-nav-item:hover{ background: rgba(40,99,195,.06); }
.ov-nav-item:hover:not(.is-active) .ov-nav-label{ color: #4a5568; }
.ov-nav-icon{
    width: 34px; height: 34px; flex: 0 0 34px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: #fff;
    border: 1px solid rgba(40,99,195,.18);
    color: #9aa5b1;
    transition: background .3s ease, border-color .3s ease, color .3s ease, box-shadow .3s ease, transform .3s cubic-bezier(.22,.61,.36,1);
}
.ov-nav-icon svg{ width: 16px; height: 16px; }
.ov-nav-item.is-active{ color: var(--cool-101828, #101828); }
.ov-nav-item.is-active .ov-nav-label{
    color: var(--cool-101828, #101828);
    font-weight: 600;
}
.ov-nav-item.is-active .ov-nav-icon{
    background-image: linear-gradient(135deg, #1CA9C9 0%, #2863c5 55%, #55298E 100%);
    border-color: transparent;
    color: #fff;
    /* Drop shadow for lift + a soft halo ring — same glow treatment as
       lumenore-ask-me.html's mcp-drag-dot markers. */
    box-shadow: 0 6px 16px -6px rgba(40,99,195,.45), 0 0 0 4px rgba(40,99,195,.14);
    transform: scale(1.08);
}
.ov-nav-item:hover:not(.is-active) .ov-nav-icon{ border-color: rgba(40,99,195,.4); color: #2863c3; }

/* Already-scrolled-past items — a lighter tinted "done" state distinct
   from both the flat-grey not-yet-reached items and the bold active
   one, so the list reads top-to-bottom as a trail. */
.ov-nav-item.is-passed:not(.is-active) .ov-nav-icon{
    /* Solid opaque tint, not translucent rgba — a see-through background
       here lets the connecting line behind it show straight through the
       icon instead of being hidden behind it. */
    background: #eaf0fb;
    border-color: rgba(40,99,195,.30);
    color: #2863c3;
    box-shadow: 0 0 0 3px rgba(40,99,195,.08);
}
.ov-nav-item.is-passed:not(.is-active) .ov-nav-label{ color: #5c6b7d; }

/* ── Scrolling content column — all 7 items sit in real document flow;
   generous gap between them is what makes "scroll past one at a time"
   read clearly against the sticky nav beside it. The non-active items
   dim slightly so the one nearest viewport-center (tracked by the
   scrollspy script) reads as current, without fully hiding neighbors —
   scrolling through should feel continuous, not like a slide swap. ── */
.ov-content{
    display: flex;
    flex-direction: column;
    gap: 110px;
}
.ov-item{
    opacity: .45;
    transition: opacity .4s ease;
}
.ov-item.is-active{ opacity: 1; }
.ov-item-head{
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 14px;
}
.ov-item-head h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 30px; line-height: 38px; letter-spacing: -.3px;
    color: var(--cool-101828, #101828); margin: 0;
}
.ov-item p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 16px; line-height: 27px; color: #4a5568;
    margin: 0 0 28px; max-width: 640px;
}
.ov-item-visual{
    max-width: 88%;
    /* Faint lift off the page — not a hard card box (no border/radius/
       fill), just enough shadow so the screenshot doesn't read as flatly
       pasted onto the section background. */
    filter: drop-shadow(0 24px 40px rgba(14,72,165,.16));
}
.ov-item-visual img{
    display: block; width: 100%; height: auto;
}

/* Light-section eyebrow pill — Pain Points and Product Overview were
   the two sections missing one (Features & Capabilities already has
   "Platform Capabilities" via am-fc-section). Same light-eyebrow tokens
   used elsewhere in this bundle: bg rgba(40,99,195,.08), border
   rgba(40,99,195,.14), color #0e48a5, 11px/1.6px uppercase Inter 600. */
.li-eyebrow{
    display: inline-flex; align-items: center; gap: 8px;
    padding: 7px 16px; border-radius: 50px;
    background: rgba(40,99,195,.08);
    border: 1px solid rgba(40,99,195,.14);
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; line-height: 16px;
    letter-spacing: 1.6px; text-transform: uppercase;
    margin-bottom: 20px;
}
.li-eyebrow-dot{
    width: 6px; height: 6px; border-radius: 50%;
    background: linear-gradient(135deg, #2863c3 0%, #7747b6 100%);
    box-shadow: 0 0 0 3px rgba(40,99,195,.14);
    display: inline-block; flex-shrink: 0;
}

@media (max-width: 767px){
    .section-painpoints, .section-overview{ padding: 64px 0; }
    .section-painpoints h2, .section-overview h2{ font-size: 30px; line-height: 38px; }
    .ov-layout{ grid-template-columns: 1fr; gap: 28px; }
    .ov-nav{ position: static; flex-direction: row; flex-wrap: wrap; column-gap: 20px; row-gap: 12px; }
    .ov-nav-line{ display: none; }
    .ov-content{ gap: 64px; }
    .ov-item-visual{ max-width: none; }
}

/* ===========================================================
 * Mobile hamburger nav (index.html only) — ≤575px
 * Markup is built by assets/js/index-mobile-nav.js from the
 * existing .nav-links / mega-menus / header CTAs, so there's one
 * source of truth for nav content. Every selector here is either
 * scoped to new classes (.nav-toggle / .mobile-nav-panel / .mnp-*,
 * unused anywhere else) or wrapped in the ≤575px query below, so
 * ≥576px layout (tablet + desktop) is untouched. The toggle button
 * itself is display:none outside that query — the panel can't be
 * opened on wider screens even if something else went wrong.
 * ----------------------------------------------------------- */
/* Mobile browsers flash a translucent tap-highlight overlay on any
   clickable element by default — reads as an unwanted "blink" on the
   toggle and every link/button inside the panel. */
.nav-toggle,
.mobile-nav-panel a,
.mobile-nav-panel button{
    -webkit-tap-highlight-color: transparent;
}
.nav-toggle{
    display: none;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 4px;
    width: 36px;
    height: 36px;
    flex: 0 0 auto;
    padding: 0;
    background: transparent;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 8px;
    cursor: pointer;
}
.nav-toggle-bar{
    display: block;
    width: 16px;
    height: 1.5px;
    border-radius: 1px;
    background: var(--Base-White, #fcfcfc);
    transition: transform .25s ease, opacity .25s ease;
}
body.mobile-nav-open .nav-toggle-bar:nth-child(1){ transform: translateY(5.5px) rotate(45deg); }
body.mobile-nav-open .nav-toggle-bar:nth-child(2){ opacity: 0; }
body.mobile-nav-open .nav-toggle-bar:nth-child(3){ transform: translateY(-5.5px) rotate(-45deg); }

.mnp-backdrop{
    position: fixed;
    /* --mnp-offset is the live-measured height of .site-top (hello-bar +
       site-header), set by index-mobile-nav.js right before opening —
       keeps the header out from under the backdrop/panel so it stays
       visible and clickable (its toggle button included) the whole
       time the menu is open, instead of being covered by z-index. */
    top: var(--mnp-offset, 0px);
    right: 0;
    bottom: 0;
    left: 0;
    z-index: 9500;
    background: rgba(3, 9, 22, .55);
    -webkit-backdrop-filter: blur(2px);
            backdrop-filter: blur(2px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s ease;
}
body.mobile-nav-open .mnp-backdrop{ opacity: 1; pointer-events: auto; }

.mobile-nav-panel{
    position: fixed;
    top: var(--mnp-offset, 0px);
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 9600;
    width: 100%;
    background: var(--Royal-Blue-Blue-900, #051A3C);
    box-shadow: 0 24px 64px -24px rgba(3, 9, 22, .6);
    transform: translateX(100%);
    transition: transform .32s cubic-bezier(.22, .61, .36, 1);
}
body.mobile-nav-open .mobile-nav-panel{ transform: translateX(0); }

.mnp-scroll{
    height: 100%;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    padding: 28px 28px 40px;
    display: flex;
    flex-direction: column;
    gap: 36px;
}

.mnp-list{ display: flex; flex-direction: column; }
.mnp-item{ border-bottom: 1px solid rgba(255, 255, 255, .1); }
.mnp-link,
.mnp-trigger{
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 18px 2px;
    background: none;
    border: none;
    color: var(--Base-White, #fcfcfc);
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 17px;
    line-height: 1.3;
    text-align: left;
    cursor: pointer;
}
/* .mnp-trigger is a <button> — unstyled buttons keep a sliver of native
   platform "appearance" inset even with explicit padding set, which was
   nudging "Solutions" etc. out of alignment with the <a>-based sub-items
   below it. Stripping appearance makes both start at the same x. */
.mnp-trigger{
    -webkit-appearance: none;
    appearance: none;
    margin: 0;
}
.mnp-link:hover,
.mnp-link:focus-visible{ color: var(--SkyBlue-SkyBlue-500, #12b6f8); }
.mnp-trigger .mnp-caret{
    width: 9px;
    height: 5px;
    flex: 0 0 9px;
    color: rgba(255, 255, 255, .55);
    transition: transform .2s ease;
}
.mnp-item--accordion.is-open .mnp-trigger .mnp-caret{ transform: rotate(180deg); }
.mnp-sublist{
    display: flex;
    flex-direction: column;
    padding: 8px 0 8px;
}
/* Author CSS always beats the UA [hidden]{display:none} rule regardless
   of specificity, so the unconditional display:flex above would keep
   every sublist open even while JS sets/toggles the hidden attribute —
   this restores the collapsed state until an accordion item is opened. */
.mnp-sublist[hidden]{ display: none; }
/* Colors below match the desktop mega-menu's own palette (.np-nav-list /
   .np-grid-card) instead of a custom mobile-only theme, so hover/active
   states, text opacity, and icon tinting feel like the same component
   at both breakpoints. */
.mnp-sublist a{
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 2px;
    border-radius: 8px;
    color: rgba(255, 255, 255, .78);
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 16px;
    line-height: 1.3;
    transition: background .15s ease, color .15s ease;
}
.mnp-sublist a:hover{
    background: rgba(64, 117, 201, .16);
    color: #ffffff;
}
.mnp-item-icon{
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    color: #aec7f0;
}
.mnp-sublist a:hover .mnp-item-icon{ color: #ffffff; }
.mnp-item-icon svg{ width: 100%; height: 100%; }
.mnp-item-label{ flex: 1; }
/* Category headings — matches the desktop mega-menu's .np-nav-title
   visual language (same rgba(255,255,255,.42) label color, same subtle
   rgba(255,255,255,.06) hairline divider), so Products/Capabilities/etc.
   read as the same component on mobile as on desktop, blended into the
   panel instead of a separate light card. Each one is also its own
   collapsed-by-default accordion trigger, so a long group (e.g. the 11
   capability links) doesn't force a long scroll. */
.mnp-subgroup{ margin-top: 12px; }
.mnp-sublist > .mnp-subgroup:first-child{ margin-top: 0; }
.mnp-subgroup-trigger{
    width: 100%;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 0;
    padding: 12px 2px;
    background: none;
    border: none;
    border-bottom: 1px solid rgba(255, 255, 255, .06);
    -webkit-appearance: none;
    appearance: none;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 13px;
    line-height: 1;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: rgba(255, 255, 255, .42);
    cursor: pointer;
}
.mnp-subgroup-trigger:hover,
.mnp-subgroup-trigger:focus-visible{ color: rgba(255, 255, 255, .65); }
.mnp-caret--plus{
    width: 13px;
    height: 13px;
    flex: 0 0 13px;
    color: rgba(255, 255, 255, .42);
}
/* Plus → minus: the vertical stroke collapses away on open, leaving
   just the horizontal one, instead of a rotating chevron. */
.mnp-caret--plus .mnp-caret-v{
    transform-origin: center;
    transition: transform .2s ease;
}
.mnp-subgroup.is-open .mnp-caret--plus .mnp-caret-v{ transform: scaleY(0); }
.mnp-subgroup-list[hidden]{ display: none; }
.mnp-subgroup-list{ padding: 4px 0 4px; }

.mnp-actions{ display: flex; flex-direction: column; gap: 10px; }
.mnp-actions .btn-primary{ width: 100%; }

@media (prefers-reduced-motion: reduce){
    .nav-toggle-bar,
    .mnp-backdrop,
    .mobile-nav-panel{ transition: none; }
}

@media (max-width: 991px){
    /* Matches the breakpoint where .site-header .nav-links is hidden
       (line ~4246) — without the toggle here too, 576-991px viewports
       (tablets, iPad portrait) would have no way to open navigation. */
    .nav-toggle{ display: inline-flex; }
}

/* ════════════════════════════════════════════════════════════════════
   LUMENORE INSIGHTS — NEW PAGE SECTIONS (lumenore-insights-new.html)
   Everything below is new CSS written for this redesign. Layout and
   composition follow Figma (UwNoD3i1IN0dtK5sJStZBJ, node 3294:36232 —
   Challenge, One Platform, Build & Explore, AI Intelligence, Share &
   Collaborate, Mid-Page CTA, Enterprise-Grade, Business Impact,
   Capabilities, Team Persona, Customer Impact, Product CTAs, FAQ,
   Bottom CTA).

   CORRECTION (re-verified against Figma via get_screenshot on the root
   frame, then get_design_context on the Challenge/One Platform frame,
   node 3294:36391): this page is NOT one continuous dark-navy canvas.
   Figma alternates light (#fcfcfc) and dark (#051A3C) full-bleed
   section bands, same as the original lumenore-insights.html. An
   earlier pass here wrongly generalized from only 2 sampled frames
   (Team Persona + Enterprise-Grade, both dark) to the whole page. The
   base rules directly below (`.li2-section`, `.li2-eyebrow`, card/text
   colors, etc.) are the DARK-canvas defaults and are correct as-is for
   the sections that stay dark (AI Intelligence, Mid-Page CTA,
   Enterprise-Grade, Team Persona, Bottom CTA, plus Hero/Trust strip
   above). The `.li2-section--light` modifier block further down (right
   before BOTTOM CTA) re-themes the 8 sections Figma renders light
   (Challenge, One Platform, Build & Explore, Share & Collaborate,
   Business Impact, Capabilities, Customer Impact + Product CTAs, FAQ)
   — see that block's own header comment for the token mapping.
   ════════════════════════════════════════════════════════════════════ */

/* ── Shared section scaffolding ─────────────────────────────────── */
.li2-section{
    position: relative;
    padding: 88px 0;
    overflow: hidden;
}
.li2-section::before{
    /* Thin top hairline — matches Figma's 0-height gradient "Container"
       divider used between every section on the dark canvas. */
    content: '';
    position: absolute; top: 0; left: 0; right: 0; height: 1px;
    background: linear-gradient(90deg, rgba(159,186,228,.16) 0%, rgba(159,186,228,0) 60%);
}
.li2-section:first-of-type::before{ display: none; }
.li2-section .container{ position: relative; z-index: 1; }
.li2-intro{
    max-width: 720px;
    margin: 0 auto 56px;
    text-align: center;
}
.li2-intro--wide{ max-width: 900px; }
.li2-eyebrow{
    display: inline-flex; align-items: center; gap: 9px;
    padding: 8px 17px; border-radius: 50px;
    background: rgba(255,255,255,.06);
    border: 1px solid rgba(255,255,255,.14);
    color: #67d3ff;
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; line-height: 16px;
    letter-spacing: 1.6px; text-transform: uppercase;
    margin-bottom: 24px;
}
.li2-eyebrow-dot{
    width: 6px; height: 6px; border-radius: 3px; flex-shrink: 0;
    background: linear-gradient(135deg, var(--SkyBlue-SkyBlue-500,#12b6f8) 0%, var(--Violet-Violet-450,#7747b6) 100%);
}
.li2-section h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; letter-spacing: -.6px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 16px;
}
.li2-lead{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: rgba(252,252,252,.72);
    margin: 0 auto;
    max-width: 720px;
}
.li2-note{
    text-align: center;
    max-width: 620px;
    margin: 40px auto 0;
    padding-top: 28px;
    border-top: 1px solid rgba(159,186,228,.14);
    font-family: 'Inter', sans-serif; font-style: italic; font-weight: 400;
    font-size: 15px; line-height: 25px;
    color: rgba(252,252,252,.6);
}
.li2-transition{
    text-align: center;
    max-width: 680px;
    margin: 48px auto 0;
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 26px; line-height: 36px; letter-spacing: -.3px;
    color: var(--Base-White, #fcfcfc);
}

/* Reusable glass card */
.li2-card{
    background: rgba(252,252,252,.04);
    border: 1px solid rgba(159,186,228,.15);
    border-radius: 18px;
}

/* ════════════════════════════════════════════════════════════════
   CHALLENGE
   ════════════════════════════════════════════════════════════════ */
.li2-challenge-grid{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
}
.li2-challenge-card{
    padding: 33px;
    text-align: left;
    transition: border-color .22s ease, transform .22s cubic-bezier(.22,.61,.36,1);
}
.li2-challenge-card:hover{
    border-color: rgba(159,186,228,.32);
    transform: translateY(-3px);
}
.li2-challenge-icon{
    width: 48px; height: 48px;
    border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(28,169,201,.14);
    border: 1px solid rgba(28,169,201,.3);
    color: #4ae7ff;
    margin-bottom: 24px;
}
.li2-challenge-icon svg{ width: 22px; height: 22px; }
.li2-challenge-card h4{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 22px; line-height: 30px; letter-spacing: -.2px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 12px;
}
.li2-challenge-card p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 24px;
    color: rgba(252,252,252,.68);
    margin: 0;
}

/* ════════════════════════════════════════════════════════════════
   ONE PLATFORM — connected step cards (escrow-flow reference layout).
   Always on the light canvas, so colours are baked straight into these
   base rules (no .li2-section--light override needed here).

   Five white cards on one row, each with a numbered badge notched over
   its top edge, a tinted icon tile, title and description; small arrow
   connectors sit in the gaps. The active card is highlighted by ring +
   tint + badge colour ONLY — nothing resizes, so the row never reflows
   as the highlight travels.

   Grid is 9 explicit tracks (card / arrow / card / ... ) so cards stay
   equal width and arrows take only the space they need. Below 992px the
   arrows are display:none, which drops them out of grid flow entirely
   and lets the cards reflow to a 2-up (then 1-up) stack.
   ════════════════════════════════════════════════════════════════ */
.li2-op{
    max-width: 1180px;
    margin: 0 auto;
}
.li2-op-flow{
    display: grid;
    grid-template-columns: 1fr auto 1fr auto 1fr auto 1fr auto 1fr;
    gap: 0 12px;
    align-items: stretch;
    /* room for the badge that sits proud of each card's top edge */
    padding-top: 13px;
}

/* ── Card ── */
.li2-op-card{
    position: relative;
    display: flex; flex-direction: column; align-items: center;
    text-align: center;
    padding: 34px 20px 26px;
    border-radius: 16px;
    background: var(--Base-White, #fcfcfc);
    /* Borderless: one soft ambient shadow + a faint contact shadow carry
       the card edge — stacked outline rings read as clutter at 5-up. */
    box-shadow: 0 1px 2px rgba(6,30,70,.05), 0 14px 34px -22px rgba(6,30,70,.35);
    transition: box-shadow .35s ease, background .35s ease, transform .35s cubic-bezier(.22,.61,.36,1);
}
.li2-op-card:hover{
    box-shadow: 0 2px 4px rgba(6,30,70,.06), 0 20px 40px -22px rgba(6,30,70,.42);
    transform: translateY(-2px);
}

/* ── Numbered badge, notched over the card's top edge ── */
.li2-op-badge{
    position: absolute; top: -13px; left: 50%;
    transform: translateX(-50%);
    padding: 5px 14px;
    border-radius: 50px;
    /* Soft tinted pill rather than solid navy — a dark badge reads far
       heavier than the light card it sits on, and it's only the ACTIVE
       badge that should pull the eye.

       Still an opaque colour, not an rgba tint: the badge is notched
       over the card's top edge, and even without a border the shadowed
       edge would ghost through a translucent fill. #eef2f9 is the flat
       equivalent of rgba(14,72,165,.07) composited on the #fcfcfc
       canvas. Ringless — the tint alone separates it from the card. */
    background: #eef2f9;
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    font-family: 'Inter', sans-serif; font-weight: 700;
    font-size: 10px; line-height: 14px;
    letter-spacing: 1.4px; text-transform: uppercase;
    white-space: nowrap;
    transition: background .35s ease, box-shadow .35s ease, color .35s ease;
}

/* ── Icon tile — rotates through the three brand accents so adjacent
   cards read as distinct without introducing off-palette colour ── */
.li2-op-icon{
    width: 56px; height: 56px; flex-shrink: 0;
    border-radius: 15px;
    display: flex; align-items: center; justify-content: center;
    margin-bottom: 18px;
    transition: background .35s ease, color .35s ease;
}
.li2-op-icon svg{ width: 25px; height: 25px; }
/* Indices are explicit rather than an nth-child rotation: the cards are
   <div>s interleaved with <span> arrows, so nth-of-type counts only the
   divs (1-5) while nth-child counts both (1,3,5,7,9) — easy to get
   silently wrong, and a miss leaves a tile with no background at all. */
.li2-op-card:nth-of-type(1) .li2-op-icon,
.li2-op-card:nth-of-type(4) .li2-op-icon{ background: rgba(28,169,201,.12); color: var(--Turquoise-SkyBlue-500, #1ca9c9); }
.li2-op-card:nth-of-type(2) .li2-op-icon,
.li2-op-card:nth-of-type(5) .li2-op-icon{ background: rgba(119,71,182,.12); color: var(--Violet-Violet-450, #7747b6); }
.li2-op-card:nth-of-type(3) .li2-op-icon{ background: rgba(14,72,165,.10);  color: var(--Royal-Blue-Blue-500, #0e48a5); }

.li2-op-title{
    font-family: 'Inter', sans-serif; font-weight: 700;
    font-size: 17px; line-height: 24px;
    color: var(--cool-101828, #101828);
    margin: 0 0 10px;
}
.li2-op-desc{
    margin: 0;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 14px; line-height: 22px;
    color: #4a5568;
}

/* ── Active card — ring + tint + badge accent, no size change ── */
.li2-op-card.is-active{
    /* No outline ring: the gradient badge, tint wash, lift, and a deeper
       brand-blue shadow mark the active card without adding a stroke. */
    background: linear-gradient(160deg, rgba(28,169,201,.07) 0%, rgba(119,71,182,.07) 100%), var(--Base-White, #fcfcfc);
    box-shadow: 0 2px 4px rgba(14,72,165,.08), 0 22px 44px -22px rgba(14,72,165,.55);
    transform: translateY(-4px);
}
.li2-op-card.is-active:hover{
    transform: translateY(-4px);
}
.li2-op-card.is-active .li2-op-badge{
    background: var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9));
    /* Explicit — the base badge is now blue-on-tint, which would be
       unreadable once this gradient fill is applied underneath. */
    color: var(--Base-White, #fcfcfc);
    box-shadow: 0 6px 14px -6px rgba(14,72,165,.7);
}

/* ── Arrow connectors ── */
.li2-op-arrow{
    align-self: center;
    display: flex; align-items: center; justify-content: center;
    color: rgba(14,72,165,.22);
}
.li2-op-arrow svg{ width: 11px; height: 11px; display: block; }

/* ── Note — full-width closing card. Block-level with margin:auto so
   the tinted gradient panel spans a fixed measure; the ::before /
   ::after hairlines are the inset side rules. ── */
.li2-note-wrap{ text-align: center; }
.li2-note--chip{
    position: relative;
    display: block;
    width: auto;
    max-width: 900px;
    margin: 40px auto 0;
    padding: 20px 110px;
    border: 1px solid #7189b3;
    border-radius: 16px;
    box-shadow: none;
    background: linear-gradient(90deg,rgba(40,99,195,.025),rgba(119,71,182,.045),rgba(28,169,201,.035),rgba(40,99,195,.025));
    font-family: 'Space Grotesk', sans-serif; font-style: normal; font-weight: 400;
    font-size: 19px; line-height: 30px; letter-spacing: -.01em;
    color: #2f3f5c;
    text-align: center;
}
.li2-note--chip::before,
.li2-note--chip::after{
    content: "";
    position: absolute; top: 50%;
    width: 72px; height: 1px;
    background: linear-gradient(90deg,transparent,#526fa7);
}
.li2-note--chip::before{ left: 24px; }
.li2-note--chip::after{ right: 24px; transform: rotate(180deg); }

@media (max-width: 1024px){
    .li2-note--chip{ padding: 19px 72px; font-size: 17px; line-height: 27px; }
    .li2-note--chip::before,
    .li2-note--chip::after{ width: 36px; }
    .li2-note--chip::before{ left: 20px; }
    .li2-note--chip::after{ right: 20px; }
}
@media (max-width: 640px){
    .li2-note--chip{ padding: 18px 22px; }
    .li2-note--chip::before,
    .li2-note--chip::after{ display: none; }
}

/* ════════════════════════════════════════════════════════════════
   BUILD & EXPLORE / AI INTELLIGENCE — shared split layout
   ════════════════════════════════════════════════════════════════ */
.li2-split{
    display: grid;
    grid-template-columns: minmax(0,400px) 1fr;
    gap: 56px;
    align-items: center;
}
.li2-split--reverse{
    grid-template-columns: 1fr minmax(0,400px);
}
.li2-split--reverse .li2-split-visual{ order: -1; }

/* ── Feature list — borderless, with an accent rail marking the active
   item. Boxed cards read as an FAQ list; a rail reads as a nav. ── */
.li2-split-list{
    display: flex; flex-direction: column;
}
.li2-split-item{
    position: relative;
    padding-left: 22px;
    border-left: 2px solid rgba(159,186,228,.16);
    transition: border-color .3s ease;
}
.li2-split-item.is-active{ border-left-color: #4ae7ff; }
.li2-split-item-head{
    width: 100%; display: block; text-align: left;
    padding: 15px 0;
    background: none; border: 0; cursor: pointer;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 18px; line-height: 26px;
    color: rgba(252,252,252,.6);
    transition: color .3s ease;
}
.li2-split-item:hover .li2-split-item-head{ color: rgba(252,252,252,.85); }
.li2-split-item.is-active .li2-split-item-head{ color: var(--Base-White, #fcfcfc); }
.li2-split-item-body{
    max-height: 0;
    overflow: hidden;
    transition: max-height .35s ease;
}
.li2-split-item.is-active .li2-split-item-body{ max-height: 260px; }
.li2-split-item-body p{
    margin: 0; padding: 0 0 18px;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 25px;
    color: rgba(252,252,252,.66);
}

/* ── Visual — clean floating card, no fake browser chrome (real product
   screenshots carry their own UI chrome; a second frame around it reads
   as doubled-up).

   aspect-ratio locks the frame's height independently of its contents,
   so dropping in a real <img> of any intrinsic size cannot shift the
   surrounding layout. Every shot shares one grid cell, so switching
   features crossfades in place rather than reflowing.

   TO SWAP IN A REAL SCREENSHOT: replace the <svg class="li2-shot-art">
   inside a .li2-shot with
     <img class="li2-shot-img" src="assets/images/..." alt="...">
   Nothing else needs to change — both classes are sized identically
   (object-fit: cover). Export shots at 16:10 (e.g. 1600x1000) to avoid
   any cropping. ── */
.li2-split-visual{
    position: relative;
    display: grid;
    /* Sized near the screenshots' own ratios (they run 1.81-1.86, bar
       one at 2.37) so `contain` leaves minimal empty space. Keeping a
       fixed ratio is what stops the height jumping as shots crossfade
       between differently-proportioned images. */
    aspect-ratio: 16 / 9;
    border-radius: 18px;
    overflow: hidden;
    /* No frame — no panel fill, hairline ring or drop shadow. The
       screenshots carry their own UI chrome, so a container box around
       them reads as doubled-up. Only the radius + overflow remain, to
       round the image corners and crop it to the locked ratio. */
    background: none;
    box-shadow: none;
}
.li2-shot{
    grid-area: 1 / 1;
    opacity: 0; visibility: hidden;
    transition: opacity .4s ease, visibility .4s;
}
.li2-shot.is-active{ opacity: 1; visibility: visible; }
.li2-shot-art,
.li2-shot-img{
    display: block;
    width: 100%; height: 100%;
    /* contain, not cover: the screenshots are wider than the frame
       (1.81-2.37 vs the container ratio), so cover was filling the
       height and cropping the sides off. cover only made sense while
       there was a frame to fill edge-to-edge — with the box removed,
       the leftover space is transparent, so nothing shows. */
    object-fit: contain;
}
@media (prefers-reduced-motion: reduce){
    .li2-shot{ transition: none; }
}

/* ════════════════════════════════════════════════════════════════
   SHARE & COLLABORATE — gathr.ai/data-pipelining card pattern.

   No toggle icon in the frame (deliberately dropped — the card itself
   is the hover/tap target instead, see #li2ShareGrid's script). The
   illustration frame is a fixed, narrower box pinned to the card's
   right edge (not stretched to the card's full width), and the reveal
   text spans the FULL card width, left-aligned with the heading above
   it — not confined to the frame's narrower box.

   Structure: .li2-share-stage is the full-width positioning container
   (aligns with the heading). Inside it, .li2-share-frame is the
   narrower bordered box (illustration only) and .li2-share-detail is
   a full-width sibling in the SAME grid cell — so activating the card
   crossfades the whole frame out and the full-width text in, rather
   than swapping content inside a fixed-width box.

   No bullet list (unlike the reference): the source docx gives one
   descriptive sentence per item, not discrete bullet points, so the
   reveal shows that sentence as running text rather than fabricating
   bullets that don't exist in the source content.

   Reveal is hover-driven for pointer users (:hover on the card) and
   click-driven via #li2ShareGrid's script for touch/keyboard (toggles
   .is-open) — the same class the CSS hover rules also key off, so
   either path lands in the same state. ════════════════════════════ */
/* Flex rows, not a 2-col grid: the reference's defining animation is
   that the active card GROWS horizontally (~60/40) while its neighbour
   shrinks, and animating flex-grow is what makes that possible. A grid
   can't do it without :has() on the container, and cards in the same
   grid COLUMN would drag each other's width across rows — rows must be
   independent, hence the .li2-share-row wrappers. */
.li2-share-grid{
    display: flex;
    flex-direction: column;
    gap: 24px;
}
.li2-share-row{
    display: flex;
    gap: 24px;
    align-items: stretch;
}
.li2-share-card{
    /* flex-basis:0 makes width directly proportional to flex-grow, so
       1 vs 1 = 50/50 and 1.5 vs 1 = 60/40 — the reference's ratio. */
    flex: 1 1 0;
    min-width: 0;
    position: relative;
    padding: 32px;
    border-radius: 20px;
    background: rgba(255,255,255,.03);
    /* The card itself is the hover/tap target for the reveal (see the
       page script) — the indicator in the head row is a decorative
       affordance, not a separate control. */
    cursor: pointer;
    transition: flex-grow .5s cubic-bezier(.4,0,.2,1), background .3s ease;
}
.li2-share-card:hover,
.li2-share-card.is-open{
    flex-grow: 1.5;
    background: rgba(255,255,255,.05);
}

/* Head — feature icon sits beside the heading (not above the body copy,
   where it used to live inside .li2-share-detail and only appeared once
   the card was active). */
.li2-share-head{
    display: flex; align-items: center; gap: 14px;
    margin-bottom: 20px;
}
.li2-share-card h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 19px; line-height: 27px; letter-spacing: -.2px;
    color: var(--Base-White, #fcfcfc);
    margin: 0;
}

/* Expand indicator — card's bottom-left, matching the reference. A
   decorative <span>, not a <button>: the whole card already toggles,
   and nesting an interactive control inside a clickable card would
   double-fire and create a nested-interactive a11y problem. */
/* Sits in the head row, pushed right by margin-left:auto. Below the
   stage it cost ~58px of card height (its own 36px + margin) plus the
   gap under the illustration; up here it occupies the heading's
   existing line box and adds no height at all. */
.li2-share-expand{
    margin-left: auto;
    flex-shrink: 0;
    width: 34px; height: 34px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    border: 1.5px solid rgba(40,99,195,.45);
    color: var(--Royal-Blue-Blue-450, #2863c3);
    pointer-events: none;
}
.li2-share-expand svg{
    width: 16px; height: 16px;
    transition: transform .4s cubic-bezier(.4,0,.2,1);
}
.li2-share-card:hover .li2-share-expand svg,
.li2-share-card.is-open .li2-share-expand svg{ transform: rotate(45deg); }

/* Stage — full card width, so the detail text (full-width) and the
   frame (narrower, right-aligned) can share it without either being
   confined to the other's box. */
.li2-share-stage{
    display: grid;
    /* No min-height — it was 260px against a frame that computes to
       ~235px (480px cap x the 612:300 ratio), leaving dead space under
       the illustration. The grid cell now sizes to its tallest child,
       and since the hidden layer uses visibility (not display:none) the
       height stays identical across both states — no reflow. */
}
.li2-share-frame,
.li2-share-detail{
    grid-area: 1 / 1;
    transition: opacity .3s ease, visibility .3s;
}

/* Frame — the bordered, dot-grid box. Capped width + justify-self:end
   is what keeps it off the card's full width and pinned to the right,
   matching the reference exactly instead of stretching edge-to-edge.
   Nothing overlays the frame — the expand indicator lives on the card
   at bottom-left, clear of this box.

   PLACEHOLDER — .li2-share-visual holds a stand-in SVG per card. Once
   real product screenshots are ready, replace the <svg> with an <img>
   sized to fill this frame (width/height:100%; object-fit:cover) —
   .li2-share-visual's sizing rules already work for either. */
.li2-share-frame{
    position: relative;
    justify-self: end;
    align-self: start;
    width: 100%;
    /* Height is width x the 612:300 ratio, so this cap is what sets the
       card's height — 440px keeps the illustration legible (real
       screenshots go here later) while trimming ~20px per row. */
    max-width: 440px;
    /* Matches the real screenshots (~1.86). The two cards still on
       placeholder SVGs (612x300) letterbox slightly inside it until
       their shots land. */
    aspect-ratio: 16/8.6;
    border-radius: 12px;
    overflow: hidden;
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.28);
    opacity: 1; visibility: visible;
}
.li2-share-frame::before{
    /* Dot-grid texture — same recipe as .li2-midcta .mcp-cta-card-grid */
    content: '';
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image: radial-gradient(rgba(40,99,195,.16) 1px, transparent 1px);
    background-size: 22px 22px;
}
.li2-share-visual{ position: relative; z-index: 1; width: 100%; height: 100%; }
/* contain, not cover: the real screenshots are ~1.86 against this
   frame's ratio, so cover would fill the width and slice their top and
   bottom off. Nothing crops now — any slack is the frame's own tint. */
.li2-share-visual svg,
.li2-share-visual img{ display: block; width: 100%; height: 100%; object-fit: contain; }

/* Detail — full stage width, so its left edge lines up with the
   heading above (not inset behind the frame's own padding). */
.li2-share-detail{
    display: flex; flex-direction: column; align-items: flex-start; justify-content: flex-start;
    gap: 14px;
    padding: 0;
    opacity: 0; visibility: hidden;
}
/* Lives in .li2-share-head now (on the card background), not on the
   white frame — so it needs a colour that reads on the card in both
   the dark and light section themes. */
.li2-share-icon{
    width: 40px; height: 40px; flex-shrink: 0;
    border-radius: 10px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(28,169,201,.12);
    border: 1px solid rgba(28,169,201,.3);
    color: #4ae7ff;
}
.li2-share-icon svg{ width: 18px; height: 18px; }
.li2-share-detail p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 24px;
    color: rgba(252,252,252,.72);
    margin: 0;
}

/* Crossfade */
.li2-share-card:hover .li2-share-frame,
.li2-share-card.is-open .li2-share-frame{ opacity: 0; visibility: hidden; }
.li2-share-card:hover .li2-share-detail,
.li2-share-card.is-open .li2-share-detail{ opacity: 1; visibility: visible; }
@media (prefers-reduced-motion: reduce){
    .li2-share-frame, .li2-share-detail, .li2-share-card{ transition: none; }
}

/* ════════════════════════════════════════════════════════════════
   MID-PAGE CTA — reuses .section-mcp-cta / .mcp-cta-card / .bcta-wrap
   from the shared base layer above; only overriding the section bg
   (was solid white for the light-section pages this bundle originally
   shipped with) so it sits flush on this page's continuous dark canvas.
   ════════════════════════════════════════════════════════════════ */
.li2-page .section-mcp-cta{ background: transparent; padding: 0; }
.li2-midcta .li2-eyebrow{ margin-bottom: 20px; }
/* Pale gradient panel — same recipe as financial-intelligence.css's
   .fi-final-cta__card (violet-50 → blue-50 → skyblue-50), reusing the
   tokens this bundle already defines rather than new hex. Replaces the
   shared .mcp-cta-card violet→navy fill, which was built for a dark
   canvas. */
.li2-midcta .mcp-cta-card{
    text-align: center;
    padding: 64px 56px;
    background: linear-gradient(135deg,
        var(--Violet-Violet-50, #f0ebf7) 0%,
        var(--Royal-Blue-Blue-50, #e7eef8) 50%,
        var(--Turquoise-SkyBlue-50, #e8f6fa) 100%);
    border: 1px solid rgba(14,72,165,.1);
    box-shadow: 0 30px 60px -30px rgba(14,72,165,.2);
}
/* The dot texture is white-on-dark in the shared component — invisible
   on a pale panel, so re-tint it to the blue-on-light equivalent. */
.li2-midcta .mcp-cta-card-grid{
    background-image: radial-gradient(rgba(14,72,165,.1) 1px, transparent 1px);
}
.li2-midcta .bcta-wrap{ align-items: center; }

/* The heading and eyebrow inherit correct dark-on-light colours from the
   .li2-section--light rules, but the body copy does not: .bcta-wrap p is
   hard-coded to translucent WHITE for the dark card this component was
   built for, and no light-section rule targets a bare <p> in here. */
.li2-midcta.li2-section--light .mcp-cta-card p{ color: #4a5568; }

/* ════════════════════════════════════════════════════════════════
   ENTERPRISE-GRADE
   ════════════════════════════════════════════════════════════════ */
.li2-ent-grid{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 24px;
    margin-bottom: 64px;
}
.li2-ent-card{
    position: relative;
    padding: 33px;
    overflow: hidden;
    transition: border-color .3s ease, transform .3s cubic-bezier(.22,.61,.36,1),
                box-shadow .3s ease, background .3s ease;
}
/* top edge lights up in the card's own accent on hover — echoes the
   Challenge cards' gradient bar, but single-hue per card so each
   pillar reads as its own thing rather than a repeated template */
.li2-ent-card::before{
    content: '';
    position: absolute; top: 0; left: 0; right: 0; height: 2px;
    background: var(--ent-accent, #12b6f8);
    opacity: 0;
    transition: opacity .3s ease;
}
.li2-ent-card:hover{
    border-color: var(--ent-accent-border, rgba(159,186,228,.32));
    background: rgba(252,252,252,.055);
    transform: translateY(-3px);
    box-shadow: 0 18px 36px -22px var(--ent-accent-glow, rgba(18,182,248,.35));
}
.li2-ent-card:hover::before{ opacity: 1; }

.li2-ent-card--sky{
    --ent-accent: var(--Turquoise-SkyBlue-500, #1ca9c9);
    --ent-accent-border: rgba(28,169,201,.38);
    --ent-accent-glow: rgba(28,169,201,.35);
}
.li2-ent-card--violet{
    --ent-accent: var(--Violet-Violet-450, #7747b6);
    --ent-accent-border: rgba(119,71,182,.38);
    --ent-accent-glow: rgba(119,71,182,.35);
}
.li2-ent-card--blue{
    --ent-accent: var(--SkyBlue-SkyBlue-500, #12b6f8);
    --ent-accent-border: rgba(18,182,248,.38);
    --ent-accent-glow: rgba(18,182,248,.35);
}

.li2-ent-head{
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 20px;
}
.li2-ent-icon{
    flex-shrink: 0;
    width: 46px; height: 46px;
    border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    /* flat fallback tint; color-mix below derives the real tint from
       --ent-accent so it stays in lockstep with the per-card accent */
    background: rgba(18,182,248,.16);
    border: 1px solid rgba(18,182,248,.34);
    color: var(--ent-accent, #12b6f8);
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
}
@supports (color: color-mix(in srgb, red 50%, white)){
    .li2-ent-icon{
        background: color-mix(in srgb, var(--ent-accent, #12b6f8) 16%, transparent);
        border-color: color-mix(in srgb, var(--ent-accent, #12b6f8) 34%, transparent);
    }
}
.li2-ent-card:hover .li2-ent-icon{ transform: scale(1.08); }
.li2-ent-icon svg{ width: 21px; height: 21px; }
.li2-ent-num{
    display: block;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 13px; letter-spacing: 2px;
    color: rgba(252,252,252,.4);
}
.li2-ent-card h4{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 22px; line-height: 30px; letter-spacing: -.2px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 10px;
}
.li2-ent-card p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 24px;
    color: rgba(252,252,252,.72);
    margin: 0;
}

/* ── Certified & Compliant bar ──────────────────────────────
   Was a bare row of floating badges with no relation to the
   cards above; now reads as a labelled credential strip. */
.li2-cert-label{
    display: flex; align-items: center; justify-content: center;
    gap: 16px;
    margin-bottom: 28px;
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase;
    color: rgba(252,252,252,.5);
}
.li2-cert-line{
    width: 48px; height: 1px;
    background: linear-gradient(90deg, transparent, rgba(159,186,228,.35), transparent);
}
.li2-cert-strip{
    display: flex; align-items: center; justify-content: center; gap: 20px;
    flex-wrap: wrap;
}
.li2-cert-badge{
    display: flex; align-items: center; justify-content: center;
    padding: 14px;
    border-radius: 16px;
    background: rgba(252,252,252,.03);
    border: 1px solid rgba(159,186,228,.14);
    transition: border-color .3s ease, background .3s ease, transform .3s cubic-bezier(.22,.61,.36,1);
}
.li2-cert-badge:hover{
    border-color: rgba(159,186,228,.32);
    background: rgba(252,252,252,.06);
    transform: translateY(-2px);
}
.li2-cert-badge img{ width: 92px; height: 92px; display: block; }

/* ════════════════════════════════════════════════════════════════
   BUSINESS IMPACT
   ════════════════════════════════════════════════════════════════ */
.li2-impact-grid{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 24px 56px;
}
.li2-impact-item{
    display: flex; gap: 20px; align-items: flex-start;
}
.li2-impact-icon{
    flex-shrink: 0;
    width: 48px; height: 48px;
    border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    background: rgba(119,71,182,.16);
    border: 1px solid rgba(119,71,182,.32);
    color: #c9a4ff;
}
.li2-impact-icon svg{ width: 22px; height: 22px; }
.li2-impact-tag{
    display: block;
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase;
    color: #67d3ff;
    margin-bottom: 6px;
}
.li2-impact-item h4{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 22px; line-height: 30px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 6px;
}
.li2-impact-item p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 24px;
    color: rgba(252,252,252,.68);
    margin: 0;
}

/* ════════════════════════════════════════════════════════════════
   CAPABILITIES
   ════════════════════════════════════════════════════════════════ */
.li2-cap-grid{
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 20px;
}
.li2-cap-card{ padding: 27px; }
.li2-cap-num{
    display: block;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 13px; letter-spacing: 1.5px;
    color: var(--SkyBlue-SkyBlue-500, #12b6f8);
    margin-bottom: 18px;
}
.li2-cap-card h4{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 17px; line-height: 23px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 10px;
}
.li2-cap-card p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 14px; line-height: 21px;
    color: rgba(252,252,252,.64);
    margin: 0;
}

/* ════════════════════════════════════════════════════════════════
   TEAM PERSONA
   ════════════════════════════════════════════════════════════════ */
.li2-persona-wrap{
    display: grid;
    grid-template-columns: 336px 1fr;
    gap: 24px;
    align-items: start;
}
.li2-persona-tabs{
    display: flex; flex-direction: column; gap: 12px;
}
.li2-persona-tab{
    display: block; width: 100%; text-align: left;
    padding: 20px;
    border-radius: 12px;
    background: rgba(255,255,255,.02);
    border: 1px solid rgba(255,255,255,.12);
    cursor: pointer;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 19px; line-height: 30px;
    color: var(--Base-White, #fcfcfc);
    transition: background .2s ease, border-color .2s ease;
}
.li2-persona-tab.is-active{
    background: rgba(40,99,195,.16);
    border-color: var(--Royal-Blue-Blue-450, #2863c3);
}
.li2-persona-panel{
    display: none;
    padding: 40px 44px;
    min-height: 321px;
}
.li2-persona-panel.is-active{ display: block; }
.li2-persona-panel h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 32px; line-height: 44.8px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 20px;
}
.li2-persona-panel > p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 20px;
}
.li2-persona-bullets{ margin: 0; padding: 0; list-style: none; }
.li2-persona-bullets li{
    position: relative;
    padding-left: 22px;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: #c1c1c1;
    margin-bottom: 4px;
}
.li2-persona-bullets li::before{
    content: '';
    position: absolute; left: 4px; top: 11px;
    width: 5px; height: 5px; border-radius: 50%;
    background: #67d3ff;
}

/* ════════════════════════════════════════════════════════════════
   CUSTOMER IMPACT
   ════════════════════════════════════════════════════════════════ */
.li2-customer-carousel{ position: relative; }
.li2-customer-slide{
    display: none;
    position: relative;
    overflow: hidden;
    border-radius: 12px;
    border: 1px solid rgba(255,255,255,.12);
    /* Base navy fill so the card reads correctly before (or without) a
       photo — the scrim above sits on top of whichever is present. */
    background: linear-gradient(120deg, #051a3c 0%, #0a2350 55%, #0d2a5e 100%);
    min-height: 428px;
}
.li2-customer-slide.is-active{ display: block; }

/* Photo layer (optional — see the markup comment for how to add one) */
.li2-customer-bg{
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    object-fit: cover;
    display: block;
}
/* Figma composes this photo with `-scale-y-100 rotate-180`, which nets
   out to a horizontal mirror — that's why the mechanic sits on the RIGHT
   in the design but on the left in the raw exported asset. Applied as a
   modifier rather than on .li2-customer-bg itself so photos added later
   aren't silently flipped too. */
.li2-customer-bg--flip{ transform: scaleX(-1); }
/* Left-to-right navy scrim, per Figma: solid through the copy column,
   fading out over the right side so the photo stays visible there. */
.li2-customer-scrim{
    position: absolute; inset: 0;
    background: linear-gradient(90deg, #051a3c 15.6%, rgba(5,21,47,0) 100%);
    pointer-events: none;
}
.li2-customer-content{
    position: relative; z-index: 1;
    max-width: 620px;
    padding: 44px 40px 44px 58px;
}
.li2-customer-industry{
    display: block;
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 32px; line-height: 45px;
    color: var(--Base-White, #fcfcfc);
    margin-bottom: 12px;
}
.li2-customer-slide h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 19px; line-height: 30px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 6px;
}
.li2-customer-content > p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: rgba(252,252,252,.9);
    margin: 0 0 24px;
}
/* Metrics are single pills carrying the whole "value: label" string, as
   in Figma — not a split number/caption stack. */
.li2-customer-stats{
    display: flex; flex-direction: column; align-items: flex-start; gap: 12px;
    margin-bottom: 28px;
}
.li2-customer-stat{
    display: inline-block;
    padding: 9px 15px;
    border-radius: 100px;
    background: rgba(255,255,255,.12);
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: var(--Base-White, #fcfcfc);
}
.li2-customer-link{
    display: inline-flex; align-items: center; gap: 8px;
    font-family: 'Inter', sans-serif; font-weight: 700;
    font-size: 15px; line-height: 26px;
    /* Figma uses a --gray/#eaeaea here; this bundle has no such token, so
       the literal is used rather than a var() that would silently fall
       back forever. */
    color: #eaeaea;
    text-decoration: none;
}
.li2-customer-link svg{ width: 14px; height: 14px; transition: transform .22s ease; }
.li2-customer-link:hover svg{ transform: translateX(3px); }
.li2-customer-nav{
    display: flex; align-items: center; justify-content: center; gap: 18px;
    margin-top: 28px;
}
.li2-customer-nav-btn{
    width: 40px; height: 40px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(159,186,228,.24);
    color: var(--Base-White, #fcfcfc);
    cursor: pointer;
    transition: background .22s ease, border-color .22s ease;
}
.li2-customer-nav-btn:hover{ background: rgba(255,255,255,.09); border-color: rgba(159,186,228,.4); }
.li2-customer-nav-btn svg{ width: 16px; height: 16px; }
.li2-customer-nav-count{
    font-family: 'Inter', sans-serif; font-size: 14px;
    color: rgba(252,252,252,.6);
}

/* ════════════════════════════════════════════════════════════════
   PRODUCT PAGE CTAs
   ════════════════════════════════════════════════════════════════ */
/* Product Page CTAs — Figma node 3294:37091. This card always renders
   inside a .li2-section--light section, so its final (light) appearance
   is baked straight into the base rules below rather than split across
   a dark base + light override — there's no dark-canvas use of this
   component to keep the split for. */
.li2-productcta-grid{
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 20px;
    margin-top: 56px;
}
.li2-productcta-card{
    padding: 38px 30px 31px;
    /* Diagonal violet→blue→cyan tint, matching Figma's card fill —
       needs 0,2,0 specificity to beat .li2-section--light .li2-card,
       which would otherwise re-apply its flat grey fill and violet
       border-colour. */
    background: linear-gradient(90deg,
        rgba(119,71,182,.12) 0%,
        rgba(64,117,201,.12) 50.7%,
        rgba(28,169,201,.12) 100%);
    border-color: rgba(13,19,33,.1);
}
.li2-productcta-pill{
    /* Product name as a solid brand-gradient pill with white text — the
       same "active pill" treatment the site uses elsewhere (mcp-drag's
       active chip, .btn-primary). Gradient-clipped text in an outlined
       pill was tried first and read too quiet to register as a
       highlight. */
    display: inline-flex; align-items: center; gap: 8px;
    padding: 8px 17px; border-radius: 50px;
    background: var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9));
    color: #fff;
    box-shadow: 0 10px 22px -10px rgba(40,99,195,.55);
    font-family: 'Inter', sans-serif; font-weight: 700;
    font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase;
    margin-bottom: 12px;
}

.li2-productcta-card p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: var(--cool-101828, #101828);
    margin: 0 0 13px;
    max-width: none;
}
/* Plain link, not a bordered button — Figma has no box here at all. */
.li2-productcta-btn{
    display: inline-flex; align-items: center; gap: 8px;
    padding: 0;
    border: 0;
    background: none;
    /* Figma specifies a literal #4c7eff for this link; this bundle has
       no matching token, so it's mapped to the closest existing brand
       blue rather than introducing a new one-off hex. */
    color: var(--Royal-Blue-Blue-400, #4075c9);
    font-family: 'Inter', sans-serif; font-weight: 600; font-size: 14px;
    transition: color .2s ease;
}
.li2-productcta-btn:hover{ color: var(--Royal-Blue-Blue-500, #0e48a5); }
.li2-productcta-btn svg{ width: 14px; height: 14px; transition: transform .22s ease; }
.li2-productcta-btn:hover svg{ transform: translateX(3px); }

/* ════════════════════════════════════════════════════════════════
   FAQ
   ════════════════════════════════════════════════════════════════ */
/* Matches index.html's .before-decide/.bd-faq recipe (final-home-bundle.css
   lines ~3814-3934): column split, item spacing, num/text/toggle geometry,
   and the answer's max-height+opacity+padding-top reveal. Adapted to this
   page's light canvas via the .li2-section--light overrides further down
   (index's version lives on a dark section, so its literal colors don't
   carry over) — but every size/spacing/font value below is copied as-is. */
.li2-faq-wrap{
    display: grid;
    grid-template-columns: minmax(280px, 380px) 1fr;
    gap: 64px;
    align-items: start;
}
.li2-faq-intro{ position: sticky; top: 120px; }
.li2-faq-intro h2{
    text-align: left;
    font-size: 28px; line-height: 36px; letter-spacing: -.3px;
    margin: 0 0 12px;
}
.li2-faq-intro p{
    font-family: 'Inter', sans-serif; font-size: 15px; line-height: 26px;
    color: rgba(252,252,252,.64); margin: 0;
}
.li2-faq-list{ display: flex; flex-direction: column; }
.li2-faq-item{
    border-bottom: 1px solid rgba(159,186,228,.14);
    padding: 24px 0;
}
.li2-faq-item:first-child{ border-top: 1px solid rgba(159,186,228,.14); }
.li2-faq-q{
    width: 100%;
    display: flex; align-items: flex-start; gap: 31px;
    padding: 0;
    background: none; border: 0; cursor: pointer; text-align: left;
}
.li2-faq-num{
    flex: 0 0 32px;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: var(--Base-White, #fcfcfc);
}
.li2-faq-text{
    flex: 1;
    font-family: 'Inter', sans-serif; font-weight: 700;
    font-size: 15px; line-height: 25px;
    color: var(--Grey-Grey-100, #fbfbfb);
}
.li2-faq-toggle{
    position: relative; flex-shrink: 0;
    width: 16px; height: 16px; margin-top: 4px;
    color: var(--Base-White, #fcfcfc);
}
.li2-faq-toggle::before,
.li2-faq-toggle::after{
    content: ''; position: absolute; background: currentColor; border-radius: 2px;
}
.li2-faq-toggle::before{ top: 50%; left: 0; width: 16px; height: 2px; transform: translateY(-50%); }
.li2-faq-toggle::after{ left: 50%; top: 0; width: 2px; height: 16px; transform: translateX(-50%); transition: opacity .25s ease; }
.li2-faq-item.is-open .li2-faq-toggle::after{ opacity: 0; }
.li2-faq-answer{
    max-height: 0; overflow: hidden;
    opacity: 0;
    padding-left: 63px;
    transition: max-height .35s ease, padding .35s ease, opacity .3s ease;
}
.li2-faq-item.is-open .li2-faq-answer{ max-height: 320px; opacity: 1; padding-top: 16px; }
.li2-faq-answer p{
    margin: 0;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: rgba(252,252,252,.66);
}

/* ════════════════════════════════════════════════════════════════
   LIGHT SECTION MODIFIER — .li2-section--light
   Figma (UwNoD3i1IN0dtK5sJStZBJ) does NOT render one continuous dark
   canvas below the hero — it alternates light (#fcfcfc) and dark
   (#051A3C) full-bleed bands. Confirmed via get_design_context on the
   Challenge/One Platform frame (node 3294:36391): section bg #fcfcfc,
   H2 #101828, body copy #4a5568, eyebrow pill text #0e48a5 on a
   blue/violet-tinted background, and cards #f6f6f6 with a
   Violet-Violet-250 (#b499d7) border. Every value below maps to a
   token or pattern this bundle already ships (--Base-White,
   --cool-101828, --Grey-Grey-200, --Violet-Violet-250, the
   .personas-eyebrow gradient, the .feature-card light-card recipe)
   rather than new hex. Applied to: Challenge, One Platform,
   Build & Explore, Share & Collaborate, Business Impact, Capabilities,
   Customer Impact (+ nested Product CTAs), FAQ. AI Intelligence,
   Mid-Page CTA, Enterprise-Grade and Team Persona keep the dark
   canvas untouched (no --light class on those <section>s).
   ════════════════════════════════════════════════════════════════ */
.li2-section--light{
    background: var(--Base-White, #fcfcfc);
}
.li2-section--light::before{
    /* Hairline divider — the base rgba(159,186,228,.16) tint is
       tuned for the dark canvas and disappears on white; swap to a
       dark, low-opacity line so it still reads as a seam. */
    background: linear-gradient(90deg, rgba(16,24,40,.1) 0%, rgba(16,24,40,0) 60%);
}
.li2-section--light .li2-eyebrow{
    background: linear-gradient(135deg, rgba(40,99,195,.08) 0%, rgba(119,71,182,.08) 100%);
    border-color: rgba(40,99,195,.14);
    color: var(--Royal-Blue-Blue-500, #0e48a5);
}
.li2-section--light h2{
    color: var(--cool-101828, #101828);
}
.li2-section--light .li2-lead,
.li2-section--light .li2-note,
.li2-section--light .li2-transition,
.li2-section--light .li2-faq-intro p{
    color: #4a5568;
}
.li2-section--light .li2-note{
    border-top-color: rgba(16,24,40,.12);
}
.li2-section--light .li2-note--chip{
    border-top-color: #7189b3;
    color: #2f3f5c;
}
.li2-section--light .li2-card{
    background: var(--Grey-Grey-200, #f7f7f7);
    border-color: var(--Violet-Violet-250, #b499d7);
    box-shadow: var(--Card-Shadow-Soft, 0 2px 6px rgba(0,0,0,.08));
}

/* ── Challenge — white card, top gradient accent bar, gradient icon
   badge (matches the reference "Your Data Is Everywhere" card design) ── */
.li2-section--light .li2-challenge-card{
    position: relative;
    overflow: hidden;
    background: var(--Base-White, #fcfcfc);
    border-color: rgba(16,24,40,.08);
    box-shadow: var(--Card-Shadow-Soft, 0 2px 6px rgba(0,0,0,.08));
}
.li2-section--light .li2-challenge-card::before{
    content: '';
    position: absolute; top: 0; left: 0; right: 0; height: 3px;
    background: linear-gradient(90deg,
        var(--Turquoise-SkyBlue-500, #1ca9c9) 0%,
        var(--Royal-Blue-Blue-500, #0e48a5) 50%,
        var(--Violet-Violet-450, #7747b6) 100%);
}
.li2-section--light .li2-challenge-card:hover{
    border-color: rgba(16,24,40,.14);
}
.li2-section--light .li2-challenge-icon{
    background: var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9));
    border: none;
    color: var(--Base-White, #fff);
}
.li2-section--light .li2-challenge-card h4{ color: var(--cool-101828, #101828); }
.li2-section--light .li2-challenge-card p{ color: #4a5568; }

/* ── Build & Explore (shares .li2-split with AI Intelligence, which
   stays dark — scoped so AI Intelligence is untouched) ─────────── */
.li2-section--light .li2-split-item{
    border-left-color: rgba(16,24,40,.12);
}
.li2-section--light .li2-split-item.is-active{
    border-left-color: var(--Royal-Blue-Blue-500, #0e48a5);
}
.li2-section--light .li2-split-item-head{ color: rgba(16,24,40,.55); }
.li2-section--light .li2-split-item:hover .li2-split-item-head{ color: rgba(16,24,40,.8); }
.li2-section--light .li2-split-item.is-active .li2-split-item-head{ color: var(--cool-101828, #101828); }
.li2-section--light .li2-split-item-body p{ color: #4a5568; }
/* Nothing to override for .li2-split-visual here any more — the frame
   (fill + ring + shadow) is gone in the base rule, and re-adding a
   light-canvas version would put the box straight back. */

/* ── Share & Collaborate ─────────────────────────────────────── */
/* .li2-share-card carries no .li2-card class, so unlike the other
   card-based sections there's no shared-rule specificity fight to win
   here — plain overrides are enough. */
.li2-section--light .li2-share-card{
    background: var(--Grey-Grey-200, #f7f7f7);
}
/* Needed explicitly: `.li2-share-card:hover` and the rule above are BOTH
   (0,2,0), and this block sits later in the file — so without a light
   hover of its own, the base hover background would never win here. */
.li2-section--light .li2-share-card:hover,
.li2-section--light .li2-share-card.is-open{
    background: #eef1f7;
}
.li2-section--light .li2-share-card h3{ color: var(--cool-101828, #101828); }
.li2-section--light .li2-share-detail p{ color: #4a5568; }
/* The icon now sits on the card (light grey here) rather than on the
   white frame, so the base bright-cyan glyph would wash out. */
.li2-section--light .li2-share-icon{
    background: var(--Turquoise-SkyBlue-50, #e8f6fa);
    border-color: rgba(28,169,201,.3);
    color: var(--Turquoise-SkyBlue-500, #1ca9c9);
}

/* ── Business Impact ─────────────────────────────────────────── */
.li2-section--light .li2-impact-icon{ color: var(--Violet-Violet-450, #7747b6); }
.li2-section--light .li2-impact-tag{ color: var(--Turquoise-SkyBlue-500, #1ca9c9); }
.li2-section--light .li2-impact-item h4{ color: var(--cool-101828, #101828); }
.li2-section--light .li2-impact-item p{ color: #4a5568; }

/* ── Capabilities ─────────────────────────────────────────────── */
.li2-section--light .li2-cap-num{ color: var(--Royal-Blue-Blue-500, #0e48a5); }
.li2-section--light .li2-cap-card h4{ color: var(--cool-101828, #101828); }
.li2-section--light .li2-cap-card p{ color: #4a5568; }

/* ── Customer Impact + nested Product CTAs ───────────────────── */
/* The story card is a DARK photo panel even inside this light section,
   so its copy keeps the white-on-dark treatment from the base rules —
   the previous dark-text overrides here were written for the old light
   card and would now render near-black text on a navy scrim. Only the
   carousel nav, which sits outside the card on the light canvas, needs
   light-mode colours. */
.li2-section--light .li2-customer-nav-btn{
    background: var(--Grey-Grey-200, #f7f7f7);
    border-color: rgba(16,24,40,.14);
    color: var(--cool-101828, #101828);
}
.li2-section--light .li2-customer-nav-btn:hover{
    background: rgba(16,24,40,.06);
    border-color: rgba(16,24,40,.28);
}
.li2-section--light .li2-customer-nav-count{ color: #4a5568; }
/* Card's gradient tint + hairline border are baked into the base
   .li2-productcta-card rule (this component is always on the light
   canvas), but need re-asserting here at matching 0,2,0 specificity to
   beat .li2-section--light .li2-card, which would otherwise win on
   source order and restore its own flat grey fill / violet border. */
.li2-section--light .li2-productcta-card{
    background: linear-gradient(90deg,
        rgba(119,71,182,.12) 0%,
        rgba(64,117,201,.12) 50.7%,
        rgba(28,169,201,.12) 100%);
    border-color: rgba(13,19,33,.1);
    box-shadow: none;
}

/* ── FAQ ──────────────────────────────────────────────────────── */
.li2-section--light .li2-faq-item{ border-bottom-color: rgba(16,24,40,.12); }
.li2-section--light .li2-faq-item:first-child{ border-top-color: rgba(16,24,40,.12); }
.li2-section--light .li2-faq-num{ color: rgba(16,24,40,.35); }
.li2-section--light .li2-faq-text{ color: var(--cool-101828, #101828); }
.li2-section--light .li2-faq-toggle::before,
.li2-section--light .li2-faq-toggle::after{ background: rgba(16,24,40,.55); }
.li2-section--light .li2-faq-answer p{ color: #4a5568; }

/* ════════════════════════════════════════════════════════════════
   BOTTOM CTA — reuses .section-bottom-cta / .bcta-wrap from the base
   layer (already dark-styled, plain centered heading + CTAs).
   ════════════════════════════════════════════════════════════════ */
.li2-bottomcta .section-bottom-cta{ padding: 64px 0 120px; }

/* ════════════════════════════════════════════════════════════════
   RESPONSIVE — new page sections
   ════════════════════════════════════════════════════════════════ */
@media (max-width: 1100px){
    .li2-persona-wrap{ grid-template-columns: 1fr; }
    .li2-persona-tabs{ flex-direction: row; flex-wrap: wrap; }
    .li2-persona-tab{ flex: 1 1 auto; text-align: center; }
    .li2-faq-wrap{ grid-template-columns: 1fr; }
    .li2-faq-intro{ position: static; }
}
@media (max-width: 900px){
    .li2-section{ padding: 64px 0; }
    .li2-section h2{ font-size: 32px; line-height: 40px; }
    .li2-challenge-grid,
    .li2-impact-grid,
    .li2-ent-grid,
    .li2-productcta-grid{ grid-template-columns: 1fr; }
    .li2-cap-grid{ grid-template-columns: repeat(2, 1fr); }
    /* .li2-share-grid is flex, not grid — stack the ROWS instead, and
       cancel the grow animation (there's no neighbour to trade width
       with once each card is full-width). */
    .li2-share-row{ flex-direction: column; }
    /* Bottom padding still reserves the indicator's band, just tighter. */
    .li2-share-card{ padding: 28px 24px; }
    .li2-share-card:hover,
    .li2-share-card.is-open{ flex-grow: 1; }
    /* Flow: 5 cards don't fit legibly below ~900px. Hiding the arrows
       removes them from grid flow entirely, so the cards reflow cleanly
       to a 2-up stack (the left-to-right arrow metaphor only reads at
       full width anyway). */
    .li2-op-flow{ grid-template-columns: repeat(2, 1fr); gap: 26px 16px; }
    .li2-op-arrow{ display: none; }
    .li2-op-icon{ width: 50px; height: 50px; margin-bottom: 14px; }
    .li2-op-icon svg{ width: 22px; height: 22px; }
    .li2-split,
    .li2-split--reverse{ grid-template-columns: 1fr; }
    .li2-split--reverse .li2-split-visual{ order: 0; }
    .li2-split-visual{ order: -1; }
    .li2-transition{ font-size: 22px; line-height: 30px; }
    /* The card's padding now lives on .li2-customer-content, and the
       scrim must cover the whole card (not just a left column) once the
       copy spans the full width. */
    .li2-customer-slide{ min-height: 0; }
    .li2-customer-scrim{ background: linear-gradient(180deg, rgba(5,21,47,.86) 0%, #051a3c 60%); }
    .li2-customer-content{ max-width: none; padding: 32px 24px; }
    .li2-customer-industry{ font-size: 26px; line-height: 36px; }
    .li2-customer-stats{ gap: 10px; }

    /* The photo becomes a BAND across the top rather than a full-bleed
       layer behind the copy.

       Desktop works because the card is wide: the scrim is a 90deg
       gradient, solid under the ~620px copy column and clear over the
       photo on the right. Stacked, the copy spans the whole card, so
       that scrim had to become a near-opaque vertical one (.86 at the
       top, solid from 60% down) just to keep the text legible — which
       left the photo barely there.

       It was also unreadable on its own terms: these shots are ~3:1,
       and object-fit:cover into a 358x512 portrait card renders the
       manufacturing photo at 1547px wide, showing 23% of it — a
       blown-up vertical slice. A 150px band is ~2.4:1, close enough to
       the source that it crops gently and the subject survives. */
    .li2-customer-bg{
        inset: 0 0 auto 0;
        height: 150px;
    }
    .li2-customer-scrim{
        inset: 0 0 auto 0;
        height: 150px;
        /* only blends the band into the card below — the copy no longer
           sits on the photo, so this can stay light */
        background: linear-gradient(180deg,
            rgba(5,21,47,.10) 0%,
            rgba(5,21,47,.55) 66%,
            #051a3c 100%);
    }
    .li2-customer-content{ padding-top: 174px; }
}
@media (max-width: 560px){
    .li2-cap-grid{ grid-template-columns: 1fr; }
    .li2-op-flow{ grid-template-columns: 1fr; }
    .li2-persona-tabs{ flex-direction: column; }
    .li2-persona-panel{ padding: 28px 24px; }
    .li2-midcta .mcp-cta-card{ padding: 40px 28px; }
}

/* ── Customer Strip — tighter top/bottom spacing ──
   This bundle (copied from insights-bundle.css) carries several inherited
   .trusted-section{ padding: 80px 0; } declarations earlier in the file;
   this override (last in source order, so it wins at every breakpoint)
   just cuts that padding down. */
.trusted-section{ padding: 40px 0; }



/* ════════════════════════════════════════════════════════════════
   STORY TABS — shared by Build & Explore (#beStory) and AI
   Intelligence (#aiStory), both on the dark canvas. Replaces the
   ported .mcp-drag instance and the old .li2-split layout (their
   rules above are now dead for this page).

   Anatomy: centred pill tabs where the ACTIVE tab carries a bottom
   progress fill animating over the auto-advance delay (duration via
   --story-delay, set by the page script from data-story-delay);
   a centred description crossfades below; the screenshot sits in a
   glass frame — gradient rim via the padding-box/border-box layer
   trick used by .btn-demo--lg — over an ambient blurred glow, with
   a slow vertical float. Shots crossfade with a slight settle-scale.
   ════════════════════════════════════════════════════════════════ */
.li2-story{ max-width: 1100px; margin: 0 auto; }

.li2-story-tabs{
    display: flex; flex-wrap: wrap; justify-content: center;
    gap: 12px;
}
.li2-story-tab{
    -webkit-appearance: none; appearance: none;
    font: inherit; cursor: pointer;
    position: relative; overflow: hidden; /* clips the fill's corners */
    padding: 11px 22px;
    border-radius: 50px;
    background: rgba(255,255,255,.05);
    border: 1px solid rgba(159,186,228,.2);
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 15px; line-height: 21px;
    color: rgba(252,252,252,.65);
    transition: background .3s ease, border-color .3s ease, color .3s ease;
}
.li2-story-tab:hover{ background: rgba(255,255,255,.09); color: rgba(252,252,252,.9); }
.li2-story-tab.is-active{
    background: rgba(255,255,255,.08);
    border-color: rgba(74,231,255,.35);
    color: #fff;
}
.li2-story-tab:focus-visible{ outline: 2px solid rgba(28,169,201,.6); outline-offset: 2px; }
.li2-story-tab-label{ position: relative; z-index: 1; pointer-events: none; }
.li2-story-tab-fill{
    position: absolute; left: 0; bottom: 0;
    height: 3px; width: 0;
    background: var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9));
}
.li2-story-tab.is-active .li2-story-tab-fill{
    animation: liStoryFill var(--story-delay, 6s) linear forwards;
}
/* Pause with the JS timer (which hover also clears) — see page script */
.li2-story:hover .li2-story-tab-fill{ animation-play-state: paused; }
@keyframes liStoryFill{ from{ width: 0; } to{ width: 100%; } }

/* Descriptions share one grid cell: the block is as tall as the longest
   one, so the stage below never shifts as they crossfade. */
.li2-story-descs{ display: grid; margin-top: 26px; }
.li2-story-desc{
    grid-area: 1 / 1;
    max-width: 640px; margin: 0 auto;
    text-align: center;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 16px; line-height: 27px;
    color: rgba(252,252,252,.72);
    opacity: 0; visibility: hidden; transform: translateY(6px);
    transition: opacity .4s ease, transform .4s ease, visibility .4s;
}
.li2-story-desc.is-active{ opacity: 1; visibility: visible; transform: none; }

/* ── Stage — glow behind, glass frame in front ── */
.li2-story-stage{ position: relative; margin-top: 40px; }
.li2-story-glow{
    position: absolute; inset: -8% -6%;
    background:
        radial-gradient(46% 60% at 30% 55%, rgba(40,99,195,.28) 0%, transparent 70%),
        radial-gradient(40% 55% at 72% 40%, rgba(119,71,182,.24) 0%, transparent 70%);
    filter: blur(50px);
    pointer-events: none;
    animation: liStoryGlow 9s ease-in-out infinite alternate;
}
@keyframes liStoryGlow{ from{ opacity: .65; } to{ opacity: 1; } }
.li2-story-frame{
    position: relative; z-index: 1;
    display: grid;
    /* Matches the Build & Explore screenshots' ~1.83 ratio; AI's mixed
       ratios (1.6-2.03 incl. the SVG placeholders) letterbox inside it
       via contain without the height ever changing. */
    aspect-ratio: 16 / 8.74;
    border-radius: 20px;
    overflow: hidden;
    border: 1.5px solid transparent;
    background:
        linear-gradient(160deg, rgba(10,33,72,.92), rgba(6,20,45,.96)) padding-box,
        linear-gradient(135deg, rgba(28,169,201,.5), rgba(64,117,201,.35) 50%, rgba(119,71,182,.5)) border-box;
    box-shadow: 0 40px 80px -40px rgba(2,10,26,.8);
    animation: liStoryFloat 7s ease-in-out infinite alternate;
    will-change: transform;
}
@keyframes liStoryFloat{ from{ transform: translateY(-5px); } to{ transform: translateY(5px); } }
.li2-story-shot{
    grid-area: 1 / 1;
    padding: 22px; /* keeps the screenshot off the gradient rim */
    opacity: 0; visibility: hidden;
    transform: scale(1.02);
    transition: opacity .5s ease, transform .65s cubic-bezier(.22,.61,.36,1), visibility .5s;
}
.li2-story-shot.is-active{ opacity: 1; visibility: visible; transform: none; }
.li2-story-shot img,
.li2-story-shot svg{
    display: block; width: 100%; height: 100%;
    object-fit: contain;
}

@media (prefers-reduced-motion: reduce){
    .li2-story-tab-fill{ display: none; }
    .li2-story-frame, .li2-story-glow{ animation: none; }
    .li2-story-desc, .li2-story-shot{ transition: none; transform: none; }
}
@media (max-width: 900px){
    .li2-story-tabs{ gap: 10px; }
    .li2-story-tab{ padding: 9px 16px; font-size: 13.5px; }
    .li2-story-shot{ padding: 14px; }
    .li2-story-stage{ margin-top: 32px; }
}

/* ════════════════════════════════════════════════════════════════
   SCROLL-PINNED STORYTELLING — replaces the story-tabs layout for
   Build & Explore (#beScrolly) and AI Intelligence (#aiScrolly).
   The .li2-story-glow / -frame / -shot rules above are REUSED for
   the pinned visual; only the tab/desc rules from that iteration
   are dead now.

   Steps take most of a viewport each (that scroll distance IS the
   pacing), the inactive ones dimmed; the visual column's inner
   wrapper is position:sticky, parked so the frame rides roughly
   centred while steps pass. Which shot shows is decided by the
   .li2-scrolly script's centre-band observer.
   ════════════════════════════════════════════════════════════════ */
.li2-scrolly{
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
    gap: 64px;
    align-items: start;
}
.li2-scrolly-steps{ min-width: 0; }
.li2-scrolly-step{
    min-height: 58vh;
    display: flex; flex-direction: column; justify-content: center;
    opacity: .35;
    transition: opacity .4s ease;
}
/* Trailing step needs less runway — full height would leave a band of
   dead scroll after the frame unpins. */
.li2-scrolly-step:last-child{ min-height: 42vh; }
.li2-scrolly-step.is-active{ opacity: 1; }
.li2-scrolly-num{
    font-family: 'Space Grotesk', sans-serif; font-weight: 600;
    font-size: 13px; letter-spacing: 1.5px;
    background-image: linear-gradient(90deg, #1CA9C9 0%, #7747b6 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}
.li2-scrolly-step h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 26px; line-height: 34px; letter-spacing: -.3px;
    color: var(--Base-White, #fcfcfc);
    margin: 10px 0 12px;
}
.li2-scrolly-step p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 16px; line-height: 27px;
    color: rgba(252,252,252,.7);
    margin: 0;
    max-width: 420px;
}
.li2-scrolly-visual{ min-width: 0; }
.li2-scrolly-sticky{
    position: relative;
    position: sticky;
    /* Frame is ~380px tall at this column width — parks it near the
       viewport's vertical centre while the steps scroll past. */
    top: calc(50vh - 200px);
}

@media (max-width: 900px){
    /* Sticky side-by-side needs the split; stacked, the steps read as a
       normal list (full opacity, natural height) with the visual once,
       statically, below them. */
    .li2-scrolly{ grid-template-columns: 1fr; gap: 40px; }
    .li2-scrolly-step{ min-height: 0; padding: 20px 0; opacity: 1; }
    .li2-scrolly-step:last-child{ min-height: 0; }
    .li2-scrolly-sticky{ position: static; }
}

/* ════════════════════════════════════════════════════════════════
   GLASS SIDE-PANEL STAGE — replaces the scroll-pinned layout for
   Build & Explore (#beStage) and AI Intelligence (#aiStage); the
   scrolly and story-tab rules above are now dead. Shot panes still
   reuse .li2-story-shot for the crossfade + settle-scale.

   One contained card: frosted rail on the left (~30%) holding the
   feature list — active item marked by a scaleY-animated gradient
   indicator — with the description pinned to the panel's bottom;
   the screenshot fills the right (~70%). Two blurred orbs drift
   behind the card on long alternating loops.
   ════════════════════════════════════════════════════════════════ */
.li2-stage-wrap{
    position: relative;
    max-width: 1200px;
    margin: 0 auto;
}
.li2-stage-orb{
    position: absolute;
    border-radius: 50%;
    filter: blur(70px);
    pointer-events: none;
}
.li2-stage-orb--a{
    width: 340px; height: 340px; left: -90px; top: -70px;
    background: rgba(40,99,195,.35);
    animation: liStageOrbA 11s ease-in-out infinite alternate;
}
.li2-stage-orb--b{
    width: 300px; height: 300px; right: -70px; bottom: -80px;
    background: rgba(119,71,182,.32);
    animation: liStageOrbB 13s ease-in-out infinite alternate;
}
@keyframes liStageOrbA{ from{ transform: translate(0,0); }  to{ transform: translate(42px,26px); } }
@keyframes liStageOrbB{ from{ transform: translate(0,0); }  to{ transform: translate(-38px,-30px); } }

.li2-stage{
    position: relative; z-index: 1;
    display: grid;
    grid-template-columns: minmax(280px, 340px) 1fr;
    border-radius: 22px;
    overflow: hidden;
    /* Gradient rim — same padding-box/border-box layering as the nav's
       demo button and the previous frame treatments. */
    border: 1.5px solid transparent;
    background:
        linear-gradient(160deg, rgba(10,33,72,.86), rgba(6,20,45,.93)) padding-box,
        linear-gradient(135deg, rgba(28,169,201,.45), rgba(64,117,201,.3) 50%, rgba(119,71,182,.45)) border-box;
    box-shadow: 0 40px 80px -40px rgba(2,10,26,.8);
}

/* ── Frosted rail ── */
.li2-stage-side{
    display: flex; flex-direction: column; gap: 28px;
    padding: 34px 28px;
    background: rgba(255,255,255,.04);
    border-right: 1px solid rgba(159,186,228,.14);
    -webkit-backdrop-filter: blur(10px);
    backdrop-filter: blur(10px);
}
.li2-stage-nav{ display: flex; flex-direction: column; gap: 4px; }
.li2-stage-item{
    -webkit-appearance: none; appearance: none;
    background: none; border: 0; font: inherit; cursor: pointer;
    position: relative; text-align: left;
    padding: 12px 14px 12px 26px;
    border-radius: 10px;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 16px; line-height: 23px;
    color: rgba(252,252,252,.55);
    transition: color .3s ease, background .3s ease;
}
.li2-stage-item::before{
    /* Active indicator — collapses/expands vertically rather than
       fading, so moving between items reads as the bar travelling. */
    content: '';
    position: absolute; left: 10px; top: 50%;
    width: 3px; height: 60%;
    border-radius: 3px;
    background: var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9));
    transform: translateY(-50%) scaleY(0);
    transform-origin: center;
    transition: transform .35s cubic-bezier(.22,.61,.36,1);
}
.li2-stage-item:hover{ color: rgba(252,252,252,.85); }
.li2-stage-item.is-active{
    color: #fff;
    background: rgba(255,255,255,.06);
}
.li2-stage-item.is-active::before{ transform: translateY(-50%) scaleY(1); }
.li2-stage-item:focus-visible{ outline: 2px solid rgba(28,169,201,.6); outline-offset: 2px; }

/* Description — pinned to the rail's bottom; all share one grid cell so
   the rail's height never changes as they crossfade. */
.li2-stage-descs{ display: grid; margin-top: auto; }
.li2-stage-desc{
    grid-area: 1 / 1;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 14.5px; line-height: 24px;
    color: rgba(252,252,252,.68);
    margin: 0;
    opacity: 0; visibility: hidden; transform: translateY(6px);
    transition: opacity .4s ease, transform .4s ease, visibility .4s;
}
.li2-stage-desc.is-active{ opacity: 1; visibility: visible; transform: none; }

/* ── Screen ── */
.li2-stage-screen{
    display: grid;
    /* Preferred height from the screenshots' ~1.83 ratio; if the rail
       runs taller (AI's five items) the row stretches and the shots
       simply contain within the extra room. */
    aspect-ratio: 16 / 8.74;
    min-width: 0;
}

@media (prefers-reduced-motion: reduce){
    .li2-stage-orb{ animation: none; }
    .li2-stage-item::before{ transition: none; }
    .li2-stage-desc{ transition: none; transform: none; }
}
@media (max-width: 900px){
    .li2-stage{ grid-template-columns: 1fr; }
    .li2-stage-side{
        border-right: 0;
        border-bottom: 1px solid rgba(159,186,228,.14);
        padding: 26px 22px;
        gap: 20px;
    }
    .li2-stage-screen{ aspect-ratio: 16 / 10; }
    .li2-stage-orb{ display: none; }
}

/* ════════════════════════════════════════════════════════════════
   CAPABILITIES SHOWCASE (#beMcp / #aiMcp) — the ask-me .mcp-drag
   design, back on the light canvas its inherited rules were written
   for, so it needs NO re-theming — everything above scoped to the
   retired #beDrag/#beStage/.li2-scrolly/.li2-story iterations is
   dead. Only the frame ratio is tuned: the inherited 16/8.2 was cut
   for ask-me's exports; this page's screenshots run ~1.83. Id scope
   also outranks the 4/3 mobile override in the ≤767px media query,
   which would letterbox these wide dashboards badly. */
#beMcp .mcp-drag-tilt,
#aiMcp .mcp-drag-tilt{ aspect-ratio: 16 / 8.74; }

/* ════════════════════════════════════════════════════════════════
   CAPABILITIES SHOWCASE ON DARK (#beMcp / #aiMcp)

   1. LAYOUT — this bundle's inherited .mcp-drag-stage diverged from
      ask-me's: it is single-column with `max-height:620px;
      overflow-y:auto`, which stacked the copy above the screenshot
      AND put a scrollbar inside the section. Restored to ask-me's
      two-column split (copy left, screenshot right) with the height
      cap and inner scroll removed.

   2. THEME — the component's colours were authored for a light
      canvas (white pills, near-black labels, pale progress track);
      on this dark section the chips would read as solid white blocks
      and the body copy would vanish. Scoped by id so the inherited
      light rules stay intact for any other use.
   ════════════════════════════════════════════════════════════════ */
#beMcp .mcp-drag-stage,
#aiMcp .mcp-drag-stage{
    grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr);
    align-items: center;
    gap: 56px;
    max-height: none;
    overflow: visible;
    padding-right: 0;
}

/* Pills */
#beMcp .mcp-drag-card,
#aiMcp .mcp-drag-card{
    background: rgba(255,255,255,.06);
    border-color: rgba(159,186,228,.22);
}
#beMcp .mcp-drag-card:hover,
#aiMcp .mcp-drag-card:hover{
    background: rgba(255,255,255,.1);
    border-color: rgba(159,186,228,.4);
}
#beMcp .mcp-drag-name,
#aiMcp .mcp-drag-name{ color: rgba(252,252,252,.72); }
/* Active pill keeps the inherited brand gradient — only the label
   needs forcing back to white over it. */
#beMcp .mcp-drag-card.is-active,
#aiMcp .mcp-drag-card.is-active{ border-color: transparent; }
#beMcp .mcp-drag-card.is-active .mcp-drag-name,
#aiMcp .mcp-drag-card.is-active .mcp-drag-name{ color: #fff; }

/* Progress track (the gradient fill itself already reads on dark) */
#beMcp .mcp-drag-progress,
#aiMcp .mcp-drag-progress{ background: rgba(159,186,228,.16); }

/* Copy */
#beMcp .mcp-drag-info-head h3,
#aiMcp .mcp-drag-info-head h3{ color: var(--Base-White, #fcfcfc); }
#beMcp .mcp-drag-info p,
#aiMcp .mcp-drag-info p{ color: rgba(252,252,252,.7); }

/* Timeline rail — must override background-IMAGE, not background: the
   rail is a repeating dashed gradient, so the shorthand would flatten
   it to a solid line. The end dots need no override (already the brand
   gradient); only their halo was tuned for light. */
#beMcp .mcp-drag-marker::before,
#aiMcp .mcp-drag-marker::before{
    background-image: repeating-linear-gradient(to bottom, rgba(159,186,228,.4) 0 4px, transparent 4px 9px);
}
#beMcp .mcp-drag-dot,
#aiMcp .mcp-drag-dot{ box-shadow: 0 0 0 4px rgba(74,231,255,.14); }

@media (max-width: 991px){
    /* The id-scoped two-column rule above outranks the inherited
       `.mcp-drag-stage{grid-template-columns:1fr}` in this breakpoint,
       so the stack has to be restated at the same specificity. */
    #beMcp .mcp-drag-stage,
    #aiMcp .mcp-drag-stage{ grid-template-columns: 1fr; gap: 32px; }
}

/* ════════════════════════════════════════════════════════════════
   VERTICAL STEPPER — Build & Explore (#beSteps) / AI Intelligence
   (#aiSteps), both on the dark canvas. Replaces the top pill strip:
   every feature is a step down the left rail, so the copy column
   always has content (the void that dogged the earlier split layout
   came from only the active item having any).

   The connector is per-step: each .li2-step owns the segment BELOW
   its dot, and .is-passed (set by the script on every step above the
   active one) fills it — so the rail reads as cumulative progress
   rather than one lit segment. Descriptions collapse via grid-template
   -rows 0fr→1fr, which animates cleanly without hard-coding a
   max-height that would clip the longer AI copy.
   ════════════════════════════════════════════════════════════════ */
.li2-step-flow{
    display: grid;
    grid-template-columns: minmax(0, 0.78fr) minmax(0, 1.22fr);
    align-items: center;
    gap: 56px;
}
.li2-step-rail{ display: flex; flex-direction: column; }

/* Mirrored layout (AI Intelligence): screenshot left, rail right. Done
   with order + swapped column widths rather than reordering the DOM, so
   the rail stays first in source — reading and tab order remain
   nav-then-visual in both sections. Declared here, ABOVE the <=991px
   block, so that block's single-column stack still wins on source order
   (both selectors are the same specificity). */
.li2-step-flow--reverse{
    grid-template-columns: minmax(0, 1.22fr) minmax(0, 0.78fr);
}
.li2-step-flow--reverse .li2-step-visual{ order: -1; }

.li2-step{
    -webkit-appearance: none; appearance: none;
    background: none; border: 0; font: inherit; cursor: pointer;
    display: grid; grid-template-columns: 26px 1fr;
    gap: 16px; padding: 0; text-align: left;
}
.li2-step:focus-visible{ outline: 2px solid rgba(28,169,201,.6); outline-offset: 4px; border-radius: 8px; }

/* ── Marker column: dot + the connector running to the next step ── */
.li2-step-marker{
    display: grid; grid-template-rows: auto 1fr;
    justify-items: center;
    height: 100%;
}
.li2-step-dot{
    width: 13px; height: 13px; border-radius: 50%;
    margin-top: 5px;
    background: rgba(159,186,228,.18);
    box-shadow: inset 0 0 0 1.5px rgba(159,186,228,.45);
    transition: background .35s ease, box-shadow .35s ease, transform .35s cubic-bezier(.22,.61,.36,1);
}
.li2-step.is-active .li2-step-dot{
    background: var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9));
    box-shadow: 0 0 0 5px rgba(74,231,255,.14);
    transform: scale(1.15);
}
.li2-step.is-passed .li2-step-dot{
    background: rgba(74,231,255,.55);
    box-shadow: inset 0 0 0 1.5px rgba(74,231,255,.5);
}
.li2-step-line{
    width: 2px; align-self: stretch;
    margin: 6px 0 2px;
    border-radius: 2px;
    background: rgba(159,186,228,.16);
    overflow: hidden;
}
.li2-step:last-child .li2-step-line{ display: none; }
.li2-step-line-fill{
    display: block; width: 100%; height: 0;
    background: linear-gradient(180deg, #1ca9c9, #4075c9);
    transition: height .5s cubic-bezier(.22,.61,.36,1);
}
.li2-step.is-passed .li2-step-line-fill,
.li2-step.is-active .li2-step-line-fill{ height: 100%; }

/* ── Copy column ── */
.li2-step-body{ display: block; padding-bottom: 26px; }
.li2-step:last-child .li2-step-body{ padding-bottom: 0; }
.li2-step-num{
    display: block;
    font-family: 'Space Grotesk', sans-serif; font-weight: 600;
    font-size: 12px; letter-spacing: 1.5px;
    color: rgba(159,186,228,.5);
    margin-bottom: 4px;
    transition: color .35s ease;
}
.li2-step.is-active .li2-step-num{
    background-image: linear-gradient(90deg, #1CA9C9 0%, #7747b6 100%);
    -webkit-background-clip: text; background-clip: text;
    -webkit-text-fill-color: transparent; color: transparent;
}
.li2-step-title{
    display: block;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 21px; line-height: 29px; letter-spacing: -.2px;
    color: rgba(252,252,252,.55);
    transition: color .35s ease;
}
.li2-step:hover .li2-step-title{ color: rgba(252,252,252,.8); }
.li2-step.is-active .li2-step-title{ color: var(--Base-White, #fcfcfc); }
.li2-step-desc{
    display: grid; grid-template-rows: 0fr;
    overflow: hidden;
    opacity: 0;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 25px;
    color: rgba(252,252,252,.68);
    transition: grid-template-rows .45s cubic-bezier(.22,.61,.36,1), opacity .35s ease, margin-top .45s ease;
}
/* The 0fr->1fr collapse needs a single ELEMENT child carrying
   min-height:0 — with the copy sitting as bare text in the container,
   the anonymous grid item keeps its auto min-size and the row never
   collapses (every inactive step then reserved its full description
   height, which is what produced the large blank gaps down the rail).
   Hence the .li2-step-desc-inner wrapper. */
.li2-step-desc-inner{ display: block; min-height: 0; }
.li2-step.is-active .li2-step-desc{
    grid-template-rows: 1fr;
    opacity: 1;
    margin-top: 8px;
}

/* ── Screenshot ── */
.li2-step-visual{ position: relative; min-width: 0; }
.li2-step-glow{
    position: absolute; inset: -10% -8%;
    background:
        radial-gradient(45% 60% at 32% 55%, rgba(40,99,195,.3) 0%, transparent 70%),
        radial-gradient(40% 55% at 70% 42%, rgba(119,71,182,.26) 0%, transparent 70%);
    filter: blur(55px);
    pointer-events: none;
}
.li2-step-screen{
    position: relative; z-index: 1;
    display: grid;
    aspect-ratio: 16 / 8.74;  /* this page's screenshots run ~1.83 */
}
.li2-step-shot{
    grid-area: 1 / 1;
    opacity: 0; visibility: hidden;
    transform: scale(1.015);
    transition: opacity .45s ease, transform .6s cubic-bezier(.22,.61,.36,1), visibility .45s;
}
.li2-step-shot.is-active{ opacity: 1; visibility: visible; transform: none; }
.li2-step-shot img,
.li2-step-shot svg{
    display: block; width: 100%; height: 100%;
    object-fit: contain;
}

@media (prefers-reduced-motion: reduce){
    .li2-step-dot, .li2-step-line-fill, .li2-step-desc,
    .li2-step-shot, .li2-step-title, .li2-step-num{ transition: none; }
    .li2-step.is-active .li2-step-dot{ transform: none; }
}
@media (max-width: 991px){
    .li2-step-flow{ grid-template-columns: 1fr; gap: 36px; }
    .li2-step-visual{ order: -1; }
    .li2-step-title{ font-size: 19px; line-height: 27px; }
}

/* ════════════════════════════════════════════════════════════════
   LIGHT -> DARK BLEND — same two-part technique as about-us-new.css
   (.au-why::after + .au-legacy__bridge), so this page matches the
   treatment already shipped there.

   The blend is split across the seam and BOTH halves meet at the same
   pale blue (#9fbae4):
     · .li2-section--fadeout::after — white -> pale blue, easing OUT so
       the slope tapers to almost nothing as it reaches the seam;
     · .li2-aurora-bridge          — pale blue -> transparent over the
       navy band, easing IN with the mirrored curve.
   Both sides leave the meeting colour with near-zero slope, so the
   join reads as a soft plateau rather than a glow line. The closely
   spaced stops are what keep it free of banding.

   The bridge lives on the WRAPPER (not each section) so the blend runs
   once across Build & Explore + AI Intelligence instead of restarting
   at the boundary between them.
   ════════════════════════════════════════════════════════════════ */
.li2-section--fadeout{ position: relative; }
.li2-section--fadeout::after{
    content: '';
    position: absolute; left: 0; right: 0; bottom: 0; height: 180px;
    z-index: 0; pointer-events: none;
    /* Brand tints layered over the pale-blue ramp, each mirrored by one
       in .li2-aurora-bridge at the same x and radius but anchored to the
       opposite edge — so at the seam both sides carry identical colour
       across the whole width and the join stays invisible.

       Each blob fades to rgba(<its own colour>, 0), NOT to `transparent`:
       `transparent` is rgba(0,0,0,0), so a saturated colour interpolating
       to it passes through muddy darkened midtones and leaves a visible
       dirty edge — which is what made the tints read as separate patches
       rather than one wash. Widths overlap generously (78-86%) and the
       falloff carries intermediate stops so neighbouring hues merge.

       Vertical radius is in px, not %, because the two elements differ in
       height (180 vs 240) and a % would give them different falloffs. */
    background:
        radial-gradient(78% 160px at 12% 100%,
            rgba(28,169,201,.42)  0%,
            rgba(28,169,201,.26) 34%,
            rgba(28,169,201,.12) 58%,
            rgba(28,169,201,.04) 76%,
            rgba(28,169,201,0)   90%),
        radial-gradient(86% 145px at 50% 100%,
            rgba(64,117,201,.36)  0%,
            rgba(64,117,201,.22) 34%,
            rgba(64,117,201,.10) 58%,
            rgba(64,117,201,.03) 76%,
            rgba(64,117,201,0)   90%),
        radial-gradient(78% 160px at 88% 100%,
            rgba(119,71,182,.38)  0%,
            rgba(119,71,182,.23) 34%,
            rgba(119,71,182,.10) 58%,
            rgba(119,71,182,.03) 76%,
            rgba(119,71,182,0)   90%),
        linear-gradient(180deg,
            rgba(159,186,228,0)    0%,
            rgba(159,186,228,0.10) 25%,
            rgba(159,186,228,0.25) 45%,
            rgba(159,186,228,0.45) 62%,
            rgba(159,186,228,0.65) 76%,
            rgba(159,186,228,0.82) 87%,
            rgba(159,186,228,0.93) 95%,
            #9fbae4 100%);
}

.li2-aurora-band{
    position: relative;
    isolation: isolate;
    background: var(--Royal-Blue-Blue-900, #051A3C);
}
.li2-aurora-bridge{
    position: absolute; left: 0; right: 0; top: 0; height: 240px;
    z-index: 0; pointer-events: none;
    /* Mirrors the fade-out's blobs about the seam — same x, same 150px
       radius, anchored to the top edge instead of the bottom — so the
       colour carries on through the join into the navy. */
    background:
        radial-gradient(78% 160px at 12% 0%,
            rgba(28,169,201,.42)  0%,
            rgba(28,169,201,.26) 34%,
            rgba(28,169,201,.12) 58%,
            rgba(28,169,201,.04) 76%,
            rgba(28,169,201,0)   90%),
        radial-gradient(86% 145px at 50% 0%,
            rgba(64,117,201,.36)  0%,
            rgba(64,117,201,.22) 34%,
            rgba(64,117,201,.10) 58%,
            rgba(64,117,201,.03) 76%,
            rgba(64,117,201,0)   90%),
        radial-gradient(78% 160px at 88% 0%,
            rgba(119,71,182,.38)  0%,
            rgba(119,71,182,.23) 34%,
            rgba(119,71,182,.10) 58%,
            rgba(119,71,182,.03) 76%,
            rgba(119,71,182,0)   90%),
        linear-gradient(180deg,
        #9fbae4                0%,
        rgba(159,186,228,0.95)  5%,
        rgba(159,186,228,0.87) 12%,
        rgba(159,186,228,0.76) 20%,
        rgba(159,186,228,0.63) 29%,
        rgba(159,186,228,0.49) 39%,
        rgba(159,186,228,0.35) 50%,
        rgba(159,186,228,0.22) 62%,
        rgba(159,186,228,0.12) 74%,
        rgba(159,186,228,0.05) 86%,
        rgba(159,186,228,0)   100%);
}
/* The band now supplies the backdrop, so the per-section hairline would
   cut a visible line across the blend. */
.li2-aurora-band .li2-section::before{ display: none; }

/* ── Adjacent same-colour sections: halve the seam ──────────────
   Every .li2-section carries 88px top AND bottom, so two light
   sections back-to-back leave 176px of unbroken white between them
   with no colour change to justify it — most visible between the
   Share & Collaborate cards and the Mid-Page CTA box directly below.
   Where a light section follows another, drop the lower one's top
   padding so the gap is one section's worth (88px) rather than two.
   Only applies light-after-light; a light/dark boundary keeps the
   full 176px, since there the colour change carries the separation. */
.li2-section--light + .li2-section--light{ padding-top: 0; }

/* ════════════════════════════════════════════════════════════════
   PERSONA SHOWCASE (#li2Persona) — dark section. Active role fills a
   hero panel (copy left, portrait right); the other three sit below
   as compact name + portrait cards. Replaces the old tab-list +
   single-panel layout (.li2-persona-* rules above are now dead).

   PORTRAITS ARE PLACEHOLDERS: .li2-pp-figure paints a brand-gradient
   panel with the role's initial via ::after, so the slot reads as
   deliberate rather than broken while the art is outstanding. It's
   aspect-locked, and any <img> dropped inside simply covers it — so
   swapping in real cut-outs needs no CSS change.
   ════════════════════════════════════════════════════════════════ */
.li2-persona{ max-width: 1120px; margin: 0 auto; }

/* ── Hero: all four share one grid cell so switching crossfades in
   place and the section height never jumps ── */
.li2-pp-stage{ display: grid; }
/* No panel — per the reference the active persona sits directly on the
   section canvas; only the picker cards below are boxed. Items align to
   the bottom so the portrait is grounded on the same baseline as the
   copy rather than floating mid-air. */
.li2-pp-hero{
    grid-area: 1 / 1;
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, .72fr);
    gap: 48px;
    align-items: end;
    padding: 0 0 8px;
    opacity: 0; visibility: hidden;
    transform: translateY(10px);
    transition: opacity .45s ease, transform .45s cubic-bezier(.22,.61,.36,1), visibility .45s;
}
/* Copy keeps its own vertical centring within the taller portrait column */
.li2-pp-copy{ align-self: center; padding-bottom: 8px; }
.li2-pp-hero.is-active{ opacity: 1; visibility: visible; transform: none; }

.li2-pp-role{
    display: inline-block;
    font-family: 'Inter', sans-serif; font-weight: 700;
    font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase;
    color: #4ae7ff;
    margin-bottom: 12px;
}
.li2-pp-copy h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 30px; line-height: 38px; letter-spacing: -.3px;
    color: var(--Base-White, #fcfcfc);
    margin: 0 0 14px;
}
.li2-pp-copy > p{
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15.5px; line-height: 27px;
    color: rgba(252,252,252,.7);
    margin: 0 0 20px;
}
.li2-pp-bullets{ list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.li2-pp-bullets li{
    position: relative; padding-left: 26px;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 24px;
    color: rgba(252,252,252,.78);
}
.li2-pp-bullets li::before{
    content: ''; position: absolute; left: 0; top: 9px;
    width: 7px; height: 7px; border-radius: 50%;
    background: var(--Explore-Button, linear-gradient(270deg,#7747b6,#4075c9,#1ca9c9));
}

/* ── Portrait slot ── */
.li2-pp-figure{
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: 18px;
    background:
        radial-gradient(80% 70% at 50% 100%, rgba(28,169,201,.28) 0%, rgba(28,169,201,0) 70%),
        linear-gradient(160deg, rgba(64,117,201,.30) 0%, rgba(119,71,182,.26) 100%);
    box-shadow: inset 0 0 0 1px rgba(159,186,228,.18);
}
/* Placeholder mark — hidden the moment a real portrait is present */
.li2-pp-figure::after{
    content: attr(data-initial);
    position: absolute; inset: 0; z-index: 0;
    display: flex; align-items: center; justify-content: center;
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    color: rgba(252,252,252,.22);
}
/* Belt and braces: :has() hides the mark where supported, and the
   z-index layering means a real portrait paints OVER it regardless —
   so on a browser without :has() the initial is covered, not stacked
   on top of the person's face. */
.li2-pp-figure:has(img)::after{ display: none; }
/* With real art present the slot drops its placeholder frame entirely, so
   a transparent cut-out sits directly on the canvas as in the reference.
   Scoped to the hero — the picker cards keep their panel. */
.li2-pp-figure--hero:has(img){
    background: none;
    box-shadow: none;
    border-radius: 0;
}
.li2-pp-figure img{
    position: relative; z-index: 1;
    display: block; width: 100%; height: 100%;
    object-fit: cover; object-position: top center;
}
/* Hero portrait is a full-figure cut-out, so it must never crop — cover
   would slice off a head or feet. contain + bottom keeps the whole
   person visible and standing on the baseline. The picker thumbnails
   stay on cover, where a tight crop is what you want. */
.li2-pp-figure--hero img{
    object-fit: contain;
    object-position: bottom center;
}
.li2-pp-figure--hero{ aspect-ratio: 4 / 5; }
.li2-pp-figure--hero::after{ font-size: 88px; }

/* ── Picker: the three inactive roles ── */
.li2-pp-picker{
    display: grid; grid-template-columns: repeat(3, 1fr);
    gap: 20px; margin-top: 24px;
}
.li2-pp-card{
    -webkit-appearance: none; appearance: none;
    border: 0; padding: 0; font: inherit; cursor: pointer;
    display: block; text-align: left;
    border-radius: 18px; overflow: hidden;
    background: rgba(255,255,255,.04);
    box-shadow: inset 0 0 0 1px rgba(159,186,228,.14);
    transition: background .3s ease, transform .3s cubic-bezier(.22,.61,.36,1), box-shadow .3s ease;
}
.li2-pp-card:hover{
    background: rgba(255,255,255,.07);
    box-shadow: inset 0 0 0 1px rgba(74,231,255,.3);
    transform: translateY(-3px);
}
.li2-pp-card:focus-visible{ outline: 2px solid rgba(28,169,201,.6); outline-offset: 3px; }
/* The active role owns the hero, so its card leaves the picker —
   display:none also drops it from the grid, keeping the row at three. */
.li2-pp-card.is-active{ display: none; }
.li2-pp-figure--card{ aspect-ratio: 5 / 4; border-radius: 0; box-shadow: none; }
.li2-pp-figure--card::after{ font-size: 54px; }
.li2-pp-card-name{
    display: block; padding: 16px 18px;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 17px; line-height: 24px;
    color: var(--Base-White, #fcfcfc);
}

@media (prefers-reduced-motion: reduce){
    .li2-pp-hero, .li2-pp-card{ transition: none; transform: none; }
}
@media (max-width: 900px){
    .li2-pp-hero{ grid-template-columns: 1fr; gap: 28px; padding: 28px 24px; }
    .li2-pp-figure--hero{ aspect-ratio: 16 / 10; order: -1; }
    .li2-pp-figure--hero::after{ font-size: 64px; }
    .li2-pp-picker{ grid-template-columns: 1fr; gap: 14px; }
    .li2-pp-figure--card{ aspect-ratio: 16 / 7; }
}

/* ── Product CTA with illustration (Ask Me card) ─────────────────
   Copy left, illustration right. The image is capped at its native
   293px — the export is 1x raster (Figma won't upscale the node), so
   letting it stretch would only blur it. On the flex row the copy
   keeps priority; below 560px the image tucks under the copy. */
.li2-productcta-card--visual{
    display: flex;
    align-items: center;
    gap: 24px;
}
.li2-productcta-copy{ flex: 1 1 auto; min-width: 0; }
.li2-productcta-img{
    flex: 0 1 auto;
    /* 38% of a ~560px card is ~213px — under both exports' native
       widths (293px Ask Me, 241px Data Magnet), so neither 1x raster
       is ever stretched past its own pixels. The 241px ceiling guards
       the smaller one on unusually wide viewports. */
    width: min(38%, 241px);
    height: auto;
}
@media (max-width: 560px){
    .li2-productcta-card--visual{ flex-direction: column; align-items: flex-start; }
    .li2-productcta-img{ width: min(100%, 293px); align-self: center; }
}

/* ===========================================================
 * PERSONA EXPLORER ON DARK — Team Persona section
 * -----------------------------------------------------------
 * The section reuses index.html's persona-explorer component
 * (.pex-selector / .px-tab / .pex-text / .persona-chips /
 * .pex-stage / .persona-scene), whose base rules above in this
 * bundle are LIGHT-themed (white section on index). This page
 * hosts it inside a dark .li2-section, so everything here is
 * id-scoped under #personaSection to outrank those base rules
 * and re-tint the component for the navy canvas.
 *
 * assets/js/index.js sets the seven --pa-accent* vars inline on
 * #personaSection per active persona; the copies below are only
 * the pre-JS defaults (business) so the first paint is correct.
 * =========================================================== */
#personaSection{
    /* Pre-JS defaults = the BUSINESS palette (violet-first), matching what
       the persona script sets on init so the first paint doesn't flash. */
    --pa-accent: var(--Violet-Violet-450, #7747b6);
    --pa-accent-secondary: var(--Royal-Blue-Blue-500, #0e48a5);
    --pa-accent-glow-a: rgba(119, 71, 182, .55);
    --pa-accent-glow-b: rgba(40, 99, 195, .40);
    --pa-accent-glow-c: rgba(18, 182, 248, .25);
    --pa-accent-soft:  rgba(119, 71, 182, .09);
    --pa-accent-border: rgba(119, 71, 182, .25);
    /* index's dark accents (#0e48a5 etc.) vanish on navy — every consumer
       below brightens them via color-mix instead, keeping each persona's
       hue while lifting it to legible contrast. */
    --pa-accent-bright: #7ea8e8; /* fallback where color-mix is unsupported */
}
@supports (color: color-mix(in srgb, red 50%, white)){
    #personaSection{
        --pa-accent-bright: color-mix(in srgb, var(--pa-accent) 42%, #ffffff);
    }
}

#personaSection .persona-explorer{
    margin-top: 8px;
}

/* Selector pill group: frosted dark instead of #f1f5f9 */
#personaSection .pex-selector{
    background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .10);
    box-shadow:
        inset 0 1px 2px rgba(0, 0, 0, .30),
        0 1px 3px rgba(0, 0, 0, .25);
}
#personaSection .px-tab{
    color: rgba(252, 252, 252, .62);
}
#personaSection .px-tab:hover{
    color: var(--Base-White, #fcfcfc);
}
/* .px-tab.is-active keeps its brand-gradient fill + white text — already
   correct on dark; the base rule wins via its own selector, no override. */
#personaSection .px-tab.is-active,
#personaSection .px-tab.is-active:hover{
    color: #ffffff;
}

/* Copy: white heading, muted-light body, brightened accents */
#personaSection .pex-role-label{
    color: var(--pa-accent-bright);
}
#personaSection .pex-role-label::before{
    background: var(--pa-accent-bright);
    box-shadow: 0 0 8px var(--pa-accent-bright);
}
#personaSection .pex-text h3{
    color: var(--Base-White, #fcfcfc);
}
#personaSection .pex-text h3 .pquote{
    color: var(--pa-accent-bright);
    opacity: .65;
}
#personaSection .pex-text p{
    color: rgba(252, 252, 252, .72);
}
#personaSection .pex-text p .desc-lead{
    color: var(--Base-White, #fcfcfc);
    font-weight: 600;
}

/* Chips: translucent light fill, accent-tinted border, brightened text.
   The accent-soft/border vars stay per-persona (index.js), but their
   ~.09 alphas disappear on navy, so fills are lifted with a white wash. */
#personaSection .persona-chips .chip{
    background: rgba(255, 255, 255, .06);
    border-color: var(--pa-accent-border, rgba(40, 99, 195, .40));
    color: var(--pa-accent-bright);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .25);
}
#personaSection .persona-chips .chip:hover{
    background: rgba(255, 255, 255, .10);
    border-color: var(--pa-accent-bright);
    box-shadow: 0 2px 8px rgba(0, 0, 0, .35);
}
/* bullet-check-icon.svg is a bare WHITE check stroke — it needs a filled
   circle behind it (ported from final-home-bundle's .chip-icon, retuned:
   brand-gradient fill like the active tab so the white check reads on
   navy, plus a faint inner ring for edge definition). */
#personaSection .chip-icon{
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: linear-gradient(135deg, var(--pa-accent) 0%, var(--pa-accent-secondary) 100%);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow:
        inset 0 0 0 1px rgba(255, 255, 255, .22),
        0 0 8px var(--pa-accent-glow-a, rgba(40, 99, 195, .55));
    transition: background .35s ease, box-shadow .35s ease;
}
#personaSection .chip-icon img{ display: block; }
#personaSection .chip-text{ padding-top: 1px; }

/* Four static verbatim text groups stack in one grid cell; only the one
   matching the active tab is visible. index.js can't touch these (no
   #personaRoleLabel/#personaDesc/... ids) — the companion script toggles
   .is-on in lockstep with the tab clicks. */
#personaSection .li2-pex-texts{
    display: grid;
    width: 100%;
}
#personaSection .li2-pex-text{
    grid-area: 1 / 1;
    opacity: 0;
    visibility: hidden;
    transform: translateY(10px);
    transition: opacity .45s ease,
                transform .55s cubic-bezier(.22, .61, .36, 1),
                visibility 0s linear .55s;
    pointer-events: none;
}
#personaSection .li2-pex-text.is-on{
    opacity: 1;
    visibility: visible;
    transform: none;
    transition: opacity .45s ease,
                transform .55s cubic-bezier(.22, .61, .36, 1),
                visibility 0s linear 0s;
    pointer-events: auto;
}

/* Stacking all four in one grid cell means the cell reserves the
   height of the TALLEST persona, so a shorter one shows the
   difference as dead space. Side by side with the visual that is
   invisible, but stacked it lands between the copy and the image
   below it — and "Leader", the default tab, is the short one: at
   390px the other three fill 474px while it needs 365, leaving
   109px of air on the view everyone gets first.

   So on mobile only the active block stays in flow and the cell
   tracks it. The reserve was there to keep the layout from jumping
   between tabs; here the only jump left is Leader <-> the other
   three (which are all the same height), on a deliberate tap. */
@media (max-width: 900px){
    #personaSection .li2-pex-texts{ position: relative; }
    #personaSection .li2-pex-text:not(.is-on){
        position: absolute;
        top: 0; left: 0;
        width: 100%;
    }
}

/* Dashboard screenshot fills each scene — ported from
   final-home-bundle.css (.section-personas .persona-img), which this
   bundle never inherited because we don't use .section-personas. */
#personaSection .persona-img{
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 100%;
    height: 100%;
    object-fit: contain;
    object-position: center;
    display: block;
    border: none;
    z-index: 1;
}

/* Responsive: collapse to a single column below tablet */
@media (max-width: 992px){
    #personaSection .persona-explorer{
        /* minmax(0, 1fr), not a bare 1fr: an fr track keeps an auto
           (content-based) minimum, so the tab row's min-content was
           holding the column open at 384px. Below a ~416px viewport
           that is wider than the container, and the copy ran off the
           right edge — clipped, since the section is overflow:hidden.
           Capping the minimum at 0 lets the track match the container
           and the tabs wrap instead. */
        grid-template-columns: minmax(0, 1fr);
        gap: 48px;
    }
    #personaSection .pex-stage{
        min-height: 300px;
    }
}
@media (max-width: 640px){
    #personaSection .pex-selector{
        width: 100%;
        justify-content: center;
    }
    #personaSection .pex-stage{
        aspect-ratio: 16 / 10;
        min-height: 240px;
    }
}

/* ===========================================================
 * SHARE & COLLABORATE — center-stage callouts
 * -----------------------------------------------------------
 * One real product shot holds the middle; two callouts flank
 * each side, tied to it by dot connectors. Replaces the
 * expandable-card grid (.li2-share-*, now dead above) whose
 * per-card image swap only ever had one real image.
 * =========================================================== */
.li2-sharehub{
    display: grid;
    grid-template-columns: minmax(230px, 1fr) minmax(0, 1.22fr) minmax(230px, 1fr);
    /* gutter sized to the branch run (52px dots + terminal dot) so the
       connectors span it fully instead of floating mid-gap */
    gap: 76px;
    align-items: center;
}
.li2-sharehub-col{
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 64px;
}

/* ── Callout: icon tile + title + desc, no card box ── */
.li2-callout{
    position: relative;
}
.li2-callout-icon{
    width: 44px;
    height: 44px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 14px;
}
.li2-callout-icon svg{ width: 20px; height: 20px; }
.li2-callout--sky    .li2-callout-icon{ background: rgba(28,169,201,.12);  color: var(--Turquoise-SkyBlue-500, #1ca9c9); }
.li2-callout--violet .li2-callout-icon{ background: rgba(119,71,182,.12);  color: var(--Violet-Violet-450, #7747b6); }
.li2-callout--blue   .li2-callout-icon{ background: rgba(14,72,165,.10);   color: var(--Royal-Blue-Blue-500, #0e48a5); }
.li2-callout h3{
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 16px;
    line-height: 23px;
    color: var(--cool-101828, #101828);
    margin: 0 0 8px;
}
.li2-callout p{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13.5px;
    line-height: 21px;
    color: #4a5568;
    margin: 0;
}

/* ── Dotted branch connectors ────────────────────────────────────
   Each callout is tied to the centre image by a dotted line that
   spans the full column gutter and lands on an accent dot at the
   image edge. Dots are drawn with a repeating radial-gradient
   rather than `border: dotted`, which renders as squares in most
   browsers and all but disappears at 1px.

   The branch takes its colour from its callout's icon accent, so
   each point reads as its own thread back to the hub. */
.li2-callout--sky{    --li2-branch: rgba(28,169,201,.75);  --li2-branch-dot: #1ca9c9; --li2-branch-halo: rgba(28,169,201,.45); }
.li2-callout--violet{ --li2-branch: rgba(119,71,182,.72);  --li2-branch-dot: #7747b6; --li2-branch-halo: rgba(119,71,182,.42); }
.li2-callout--blue{   --li2-branch: rgba(14,72,165,.68);   --li2-branch-dot: #0e48a5; --li2-branch-halo: rgba(14,72,165,.40); }

.li2-callout::before,
.li2-callout::after{
    content: "";
    position: absolute;
    top: 22px; /* centre of the 44px icon tile */
    pointer-events: none;
}
/* The dotted run itself. Height is 5px (not 1px) because the dots
   are painted INSIDE this box — a 1px box would clip them flat. */
.li2-callout::before{
    height: 5px;
    width: 52px;
    background-image: radial-gradient(circle at 2.5px 2.5px,
                      var(--li2-branch, rgba(14,72,165,.7)) 1.7px,
                      transparent 2px);
    background-size: 9px 5px;
    background-repeat: repeat-x;
}
/* Terminal dot, sitting where the branch meets the image */
.li2-callout::after{
    width: 8px;
    height: 8px;
    margin-top: -1.5px;
    border-radius: 50%;
    background: var(--li2-branch-dot, #0e48a5);
    box-shadow: 0 0 0 3px var(--li2-branch-halo, rgba(14,72,165,.35));
}
/* left column: branch exits the RIGHT edge toward the image */
.li2-sharehub-col--left .li2-callout::before{ right: -56px; }
.li2-sharehub-col--left .li2-callout::after{  right: -68px; }
/* right column: mirrored — branch exits the LEFT edge */
.li2-sharehub-col--right .li2-callout::before{ left: -56px; }
.li2-sharehub-col--right .li2-callout::after{  left: -68px; }

/* ── Center stage: glow + floating frame ── */
.li2-sharehub-center{
    position: relative;
    isolation: isolate;
}
.li2-sharehub-glow{
    position: absolute;
    inset: -8% -6%;
    z-index: -1;
    pointer-events: none;
    background:
        radial-gradient(45% 55% at 30% 35%, rgba(28,169,201,.16) 0%, rgba(28,169,201,0) 70%),
        radial-gradient(50% 60% at 72% 68%, rgba(119,71,182,.14) 0%, rgba(119,71,182,0) 70%);
    filter: blur(6px);
}
.li2-sharehub-frame{
    background: var(--Base-White, #fcfcfc);
    border-radius: 18px;
    padding: 10px;
    box-shadow:
        0 1px 2px rgba(6,30,70,.06),
        0 24px 54px -26px rgba(6,30,70,.45);
}
.li2-sharehub-frame img{
    display: block;
    width: 100%;
    height: auto;
    border-radius: 10px;
}

/* ── Responsive: image first, callouts as a 2-col grid, no connectors ── */
@media (max-width: 992px){
    .li2-sharehub{
        grid-template-columns: 1fr;
        gap: 36px;
    }
    .li2-sharehub-center{
        order: -1;
        max-width: 560px;
        margin: 0 auto;
    }
    .li2-sharehub-col{
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 28px;
    }
    .li2-callout::before,
    .li2-callout::after{ display: none; }
}
@media (max-width: 640px){
    .li2-sharehub-col{ grid-template-columns: 1fr; }
}

/* ===========================================================
 * SHARE & COLLABORATE — clean split list  [DEAD]
 * -----------------------------------------------------------
 * Open list of four points on the left, one real product shot
 * framed on the right. Built as an alternative, then reverted:
 * the section uses the center-stage callouts (.li2-sharehub-*)
 * above. No markup references these rules — kept for reference.
 * =========================================================== */
.li2-sharesplit{
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
    gap: 72px;
    align-items: center;
}

/* ── Left: the open list ── */
.li2-sharesplit-list{
    display: flex;
    flex-direction: column;
}
/* Hairline separators between points instead of card edges — enough
   structure to keep four entries legible, far quieter than boxes. */
.li2-sharepoint{
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr);
    gap: 16px;
    align-items: start;
    padding: 22px 0;
    border-top: 1px solid rgba(14,72,165,.10);
}
.li2-sharepoint:first-child{
    border-top: none;
    padding-top: 0;
}
.li2-sharepoint:last-child{
    padding-bottom: 0;
}
.li2-sharepoint-icon{
    width: 44px;
    height: 44px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
}
.li2-sharepoint-icon svg{ width: 20px; height: 20px; }
.li2-sharepoint--sky    .li2-sharepoint-icon{ background: rgba(28,169,201,.12); color: var(--Turquoise-SkyBlue-500, #1ca9c9); }
.li2-sharepoint--violet .li2-sharepoint-icon{ background: rgba(119,71,182,.12); color: var(--Violet-Violet-450, #7747b6); }
.li2-sharepoint--blue   .li2-sharepoint-icon{ background: rgba(14,72,165,.10);  color: var(--Royal-Blue-Blue-500, #0e48a5); }

.li2-sharepoint-body h3{
    font-family: 'Inter', sans-serif;
    font-weight: 700;
    font-size: 17px;
    line-height: 24px;
    color: var(--cool-101828, #101828);
    margin: 0 0 8px;
    /* nudge the title's cap-height onto the icon tile's optical center */
    padding-top: 2px;
}
.li2-sharepoint-body p{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 14px;
    line-height: 22px;
    color: #4a5568;
    margin: 0;
    max-width: 52ch;
}

/* ── Right: floating frame + soft brand glow ── */
.li2-sharesplit-visual{
    position: relative;
    isolation: isolate;
}
.li2-sharesplit-glow{
    position: absolute;
    inset: -10% -8%;
    z-index: -1;
    pointer-events: none;
    background:
        radial-gradient(45% 55% at 28% 32%, rgba(28,169,201,.16) 0%, rgba(28,169,201,0) 70%),
        radial-gradient(50% 60% at 74% 70%, rgba(119,71,182,.14) 0%, rgba(119,71,182,0) 70%);
    filter: blur(6px);
}
.li2-sharesplit-frame{
    background: var(--Base-White, #fcfcfc);
    border-radius: 18px;
    padding: 10px;
    box-shadow:
        0 1px 2px rgba(6,30,70,.06),
        0 24px 54px -26px rgba(6,30,70,.45);
}
.li2-sharesplit-frame img{
    display: block;
    width: 100%;
    height: auto;
    border-radius: 10px;
}

/* ── Responsive: image on top, list below ── */
@media (max-width: 992px){
    .li2-sharesplit{
        grid-template-columns: 1fr;
        gap: 44px;
    }
    .li2-sharesplit-visual{
        order: -1;
        max-width: 620px;
        margin: 0 auto;
        width: 100%;
    }
}
@media (max-width: 640px){
    .li2-sharepoint{
        grid-template-columns: 38px minmax(0, 1fr);
        gap: 13px;
        padding: 18px 0;
    }
    .li2-sharepoint-icon{ width: 38px; height: 38px; border-radius: 10px; }
    .li2-sharepoint-icon svg{ width: 18px; height: 18px; }
    .li2-sharepoint-body h3{ font-size: 16px; line-height: 23px; }
}

/* ── Staged scroll animation ────────────────────────────────────
   Reads as the hub assembling itself: the product shot arrives
   first, four branches then grow OUT of it toward each corner,
   and the copy settles in behind each branch as it lands.

   Driven entirely by the page's existing .reveal observer — it
   puts .is-visible on the container, and every step below keys
   off that with a transition-delay. No extra JS.

   The container keeps .reveal only as the observer's hook; its
   own block-level rise is neutralised here, otherwise the whole
   hub would slide up as one piece and swallow the sequence. */
.li2-sharehub.reveal{
    opacity: 1;
    transform: none;
    transition: none;
}

/* Step 1 — the image (0s) */
.li2-sharehub-center{
    opacity: 0;
    transform: scale(.94);
    transition: opacity .75s cubic-bezier(.22,1,.36,1),
                transform .85s cubic-bezier(.22,1,.36,1);
}
.li2-sharehub.is-visible .li2-sharehub-center{
    opacity: 1;
    transform: none;
}
/* the glow trails the frame slightly so it blooms rather than pops */
.li2-sharehub-glow{
    opacity: 0;
    transition: opacity 1s ease .25s;
}
.li2-sharehub.is-visible .li2-sharehub-glow{ opacity: 1; }

/* Per-callout base delay: the top pair branches out first, the
   bottom pair follows. Each callout's dot/line/copy chain off it. */
.li2-sharehub-col > .li2-callout:nth-child(1){ --li2-branch-delay: .45s; }
.li2-sharehub-col > .li2-callout:nth-child(2){ --li2-branch-delay: .62s; }

/* Step 2a — the dot pops at the image end of the branch */
.li2-callout::after{
    transform: scale(0);
    opacity: 0;
    transition: transform .35s cubic-bezier(.34,1.56,.64,1) var(--li2-branch-delay, .45s),
                opacity .3s ease var(--li2-branch-delay, .45s);
}
.li2-sharehub.is-visible .li2-callout::after{
    transform: scale(1);
    opacity: 1;
}

/* Step 2b — the line draws from that dot outward toward the copy.
   transform-origin sits on the IMAGE side of each column so the
   branch grows away from the hub, not toward it. */
.li2-callout::before{
    transform: scaleX(0);
    transition: transform .45s cubic-bezier(.22,1,.36,1)
                calc(var(--li2-branch-delay, .45s) + .12s);
}
.li2-sharehub-col--left  .li2-callout::before{ transform-origin: right center; }
.li2-sharehub-col--right .li2-callout::before{ transform-origin: left center; }
.li2-sharehub.is-visible .li2-callout::before{ transform: scaleX(1); }

/* Step 3 — icon, title and copy settle in along the branch.
   `> *` deliberately excludes ::before/::after, so the branch
   animation above stays on its own timeline. */
.li2-callout > *{
    opacity: 0;
    transform: translateX(var(--li2-branch-dir, 22px));
    transition: opacity .6s cubic-bezier(.22,1,.36,1),
                transform .6s cubic-bezier(.22,1,.36,1);
    transition-delay: calc(var(--li2-branch-delay, .45s) + .3s);
}
/* copy drifts in FROM the image, so left column enters rightward
   and the right column mirrors it */
.li2-sharehub-col--left  .li2-callout{ --li2-branch-dir: 22px; }
.li2-sharehub-col--right .li2-callout{ --li2-branch-dir: -22px; }
/* micro-stagger down each callout: icon, then title, then body */
.li2-callout > *:nth-child(2){ transition-delay: calc(var(--li2-branch-delay, .45s) + .37s); }
.li2-callout > *:nth-child(3){ transition-delay: calc(var(--li2-branch-delay, .45s) + .44s); }
.li2-sharehub.is-visible .li2-callout > *{
    opacity: 1;
    transform: none;
}

@media (prefers-reduced-motion: reduce){
    /* The reveal script adds .is-visible immediately under reduced
       motion, but these elements aren't .reveal themselves — so the
       blanket rule further up doesn't reach them. Pin them open. */
    .li2-sharehub-center,
    .li2-sharehub-glow,
    .li2-callout > *{
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
    .li2-callout::before{ transform: scaleX(1) !important; transition: none !important; }
    .li2-callout::after{ transform: scale(1) !important; opacity: 1 !important; transition: none !important; }
}

/* ===========================================================
 * SHARE & COLLABORATE — hub stage (Figma 3512:763)
 * -----------------------------------------------------------
 * Ported 1:1 from the Figma composition on the Product page.
 * Every offset below is the literal Figma coordinate inside a
 * 1277x454 stage, so the layout can be diffed against the file
 * directly. Supersedes the older .li2-sharehub and .li2-callout
 * layer, and the .li2-sharesplit layer above, both now dead.
 *
 * The stage is a FIXED-size composition scaled with a single
 * transform rather than re-flowed: the branches, dots and
 * collage only line up at one aspect, so scaling the whole
 * thing keeps them registered at every width. Below 992px it
 * unpacks into a stacked layout instead (see the end).
 * =========================================================== */
.li2-hub{
    display: flex;
    justify-content: center;
    /* collapses with the stage so the section never keeps
       whitespace where the un-scaled stage used to be */
    height: calc(454px * var(--hub-scale, 1));
}
.li2-hub-stage{
    position: relative;
    width: 1277px;
    height: 454px;
    flex: none;
    transform: scale(var(--hub-scale, 1));
    transform-origin: top center;
}
.li2-hub-stage *{ box-sizing: border-box; }

/* ── Callouts ─────────────────────────────────────────────── */
.li2-hubcard{
    position: absolute;
    width: 286px;
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.li2-hubcard--lt{ left: 0;     top: 0;    }
.li2-hubcard--lb{ left: 0;     top: 237px; }
.li2-hubcard--rt{ left: 991px; top: 13px;  }
.li2-hubcard--rb{ left: 991px; top: 229px; }

.li2-hubcard-icon{
    width: 44px;
    height: 44px;
    border-radius: 12px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: none;
}
.li2-hubcard-icon svg{ width: 20px; height: 20px; }
.li2-hubcard--sky    .li2-hubcard-icon{ background: rgba(28,169,201,.12); color: var(--Turquoise-SkyBlue-500, #1ca9c9); }
.li2-hubcard--violet .li2-hubcard-icon{ background: rgba(119,71,182,.12); color: var(--Violet-Violet-450, #7747b6); }
.li2-hubcard--blue   .li2-hubcard-icon{ background: rgba(14,72,165,.10);  color: var(--Royal-Blue-Blue-500, #0e48a5); }

.li2-hubcard-body{
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.li2-hubcard-body h4{
    font-family: 'Space Grotesk', sans-serif;
    font-weight: 500;
    font-size: 22px;
    line-height: 30px;
    color: var(--cool-101828, #101828);
    margin: 0;
}
.li2-hubcard-body p{
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13.5px;
    line-height: 21px;
    color: #4a5568;
    margin: 0;
}

/* ── Branch dots (14px halo + core, one shared SVG) ───────── */
.li2-hub-dot{
    position: absolute;
    width: 14px;
    height: 14px;
    display: block;
}
.li2-hub-dot--lt{ left: 266px; top: 51px;  }
.li2-hub-dot--lb{ left: 266px; top: 325px; }
.li2-hub-dot--rt{ left: 976px; top: 51px;  }
.li2-hub-dot--rb{ left: 976px; top: 325px; }

/* ── Dashed elbow branches ────────────────────────────────────
   One exported SVG (gradient violet→blue→sky, 3px, 2/2 dash)
   mirrored into all four positions, exactly as the Figma file
   reuses a single vector with flips. preserveAspectRatio is
   "none" on the asset, so the explicit box size drives it. */
.li2-hub-branch{
    position: absolute;
    width: 161px;
    display: block;
}
.li2-hub-branch--lt{ left: 272.5px; top: 56.75px;  height: 64px; }
.li2-hub-branch--rt{ left: 823px;   top: 57px;     height: 65px; transform: scaleX(-1); }
.li2-hub-branch--lb{ left: 274.5px; top: 266.75px; height: 65px; transform: scaleY(-1); }
.li2-hub-branch--rb{ left: 823px;   top: 267px;    height: 65px; transform: rotate(180deg); }

/* ── Centre collage ──────────────────────────────────────────
   Painted last so the branches tuck behind it, matching the
   Figma layer order. Offsets are relative to the collage box
   at (391, 48); the two glow SVGs carry their own blur bleed,
   hence the negative insets. */
.li2-hub-visual{
    position: absolute;
    left: 391px;
    top: 48px;
    width: 484px;
    height: 295px;
}
.li2-hub-visual > *{ position: absolute; }
.li2-hv-glow{ display: block; pointer-events: none; }
.li2-hv-glow--violet{ left: 156.52px; top: 56.11px; width: 375.3px; height: 286.9px; }
.li2-hv-glow--sky{    left: -48px;    top: -48px;   width: 345.4px; height: 275.3px; }

/* Each product shot keeps the violet base rule + sky glow the
   designer applied per screenshot. */
.li2-hv-shot{
    display: block;
    object-fit: cover;
    border-bottom: 3px solid var(--Violet-Violet-450, #7747b6);
    box-shadow: 0 0 7px 0 var(--Turquoise-SkyBlue-200, #a6e1ef);
}
.li2-hv-shot--dashboard{ left: 50.56px;  top: 8.2px;    width: 374.45px; height: 118.25px; border-radius: 7px; }
.li2-hv-shot--modal{     left: 46.26px;  top: 82.86px;  width: 234.64px; height: 185.24px; border-radius: 5px; }
.li2-hv-shot--menu{      left: 266.12px; top: 110.44px; width: 118.25px; height: 126.87px; border-radius: 6px; }
.li2-hv-shot--formats{   left: 357.26px; top: 186.8px;  width: 88.13px;  height: 88.41px;  border-radius: 4px; }

/* Sharing-channel chips down the left edge of the collage */
.li2-hv-chip{
    width: 33.72px;
    height: 33.25px;
    left: 23.46px;
    border-radius: 4px;
    background: #ecf1ff;
    border-bottom: 2px solid var(--Violet-Violet-450, #7747b6);
    display: block;
}
.li2-hv-chip img{ position: absolute; display: block; }
.li2-hv-chip--inapp{    top: 92.83px; height: 33.72px; }
.li2-hv-chip--inapp img{    left: 8.07px; top: 9.02px; width: 17.1px;  height: 14.25px; }
.li2-hv-chip--whatsapp{ top: 133.21px; }
.li2-hv-chip--whatsapp img{ left: 3.33px; top: 1.42px; width: 26.77px; height: 27.37px; border-radius: 4px; }
.li2-hv-chip--teams{    top: 175.48px; }
.li2-hv-chip--teams img{    left: 7.6px;  top: 6.65px; width: 17.84px; height: 16.82px; border-radius: 4px; }

/* ── Staged scroll animation ─────────────────────────────────
   Same story as before, retimed for the new geometry: the
   collage lands first, each dashed branch then wipes OUT of it
   toward its callout, the dot pops where the branch stops, and
   the copy settles in last. The branches are <img>, so the wipe
   is a clip-path inset rather than a stroke-dash animation —
   the inset always opens from the collage side. */
.li2-hub.reveal{ opacity: 1; transform: none; transition: none; }

.li2-hub-visual{
    opacity: 0;
    transform: scale(.95);
    transition: opacity .75s cubic-bezier(.22,1,.36,1),
                transform .85s cubic-bezier(.22,1,.36,1);
}
.li2-hub.is-visible .li2-hub-visual{ opacity: 1; transform: none; }

.li2-hub-branch{
    transition: clip-path .55s cubic-bezier(.22,1,.36,1) var(--branch-delay, .45s);
    /* Opens from the element's own right edge. clip-path is applied
       in local space BEFORE the transform, so the two mirrored
       branches (rt/rb) resolve this to their on-screen LEFT edge —
       which is the collage side for them. One value works for all
       four: every branch wipes outward from the collage. */
    clip-path: inset(0 0 0 100%);
}
.li2-hub.is-visible .li2-hub-branch{ clip-path: inset(0 0 0 0); }
.li2-hub-branch--lb,
.li2-hub-branch--rb{ --branch-delay: .62s; }

.li2-hub-dot{
    opacity: 0;
    transform: scale(0);
    transition: opacity .3s ease var(--dot-delay, 1s),
                transform .35s cubic-bezier(.34,1.56,.64,1) var(--dot-delay, 1s);
}
.li2-hub-dot--lb,
.li2-hub-dot--rb{ --dot-delay: 1.17s; }
.li2-hub.is-visible .li2-hub-dot{ opacity: 1; transform: scale(1); }

.li2-hubcard > *{
    opacity: 0;
    transform: translateX(var(--card-dir, 18px));
    transition: opacity .6s cubic-bezier(.22,1,.36,1) var(--card-delay, .95s),
                transform .6s cubic-bezier(.22,1,.36,1) var(--card-delay, .95s);
}
/* copy drifts in from the collage, so each side mirrors */
.li2-hubcard--lt, .li2-hubcard--lb{ --card-dir: 18px; }
.li2-hubcard--rt, .li2-hubcard--rb{ --card-dir: -18px; }
.li2-hubcard--lb, .li2-hubcard--rb{ --card-delay: 1.12s; }
.li2-hubcard > *:nth-child(2){ transition-delay: calc(var(--card-delay, .95s) + .07s); }
.li2-hub.is-visible .li2-hubcard > *{ opacity: 1; transform: none; }

/* ── Scale steps: the stage is fixed-geometry, so it shrinks
   whole rather than re-flowing, down to the stacked breakpoint. */
@media (max-width: 1400px){ .li2-hub{ --hub-scale: .94; } }
@media (max-width: 1300px){ .li2-hub{ --hub-scale: .88; } }
@media (max-width: 1200px){ .li2-hub{ --hub-scale: .81; } }
@media (max-width: 1100px){ .li2-hub{ --hub-scale: .75; } }
@media (max-width: 1024px){ .li2-hub{ --hub-scale: .70; } }

/* ── Below 992px: unpack the stage into a stacked layout.
   The branches and dots are dropped — they only describe the
   corner-to-centre geometry, which no longer exists here. */
@media (max-width: 992px){
    .li2-hub{ height: auto; display: block; }
    .li2-hub-stage{
        position: static;
        width: auto;
        height: auto;
        transform: none;
        display: flex;
        flex-direction: column;
        align-items: center;
        gap: 40px;
    }
    .li2-hub-dot,
    .li2-hub-branch{ display: none; }
    .li2-hub-visual{
        position: relative;
        left: auto; top: auto;
        order: -1;
        flex: none;
        transform: scale(var(--vis-scale, 1));
        transform-origin: top center;
        height: calc(295px * var(--vis-scale, 1));
    }
    .li2-hub.is-visible .li2-hub-visual{ transform: scale(var(--vis-scale, 1)); }
    .li2-hubcard{
        position: static;
        width: 100%;
        max-width: 460px;
    }
    /* two-up on tablet, single column on phones. minmax(0, 1fr),
       not bare 1fr: .li2-hub-visual keeps its unscaled 484px layout
       width so its absolutely-positioned collage children (fixed
       to that coordinate space) still line up under the transform
       scale below — but a bare 1fr track takes that 484px as its
       content-based minimum, blowing the whole grid out to 484px
       wide and clipping the hub-card text against the container. */
    .li2-hub-stage{ display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); justify-items: start; }
    .li2-hub-visual{ grid-column: 1 / -1; justify-self: center; }
}
@media (max-width: 640px){
    .li2-hub-stage{ grid-template-columns: minmax(0, 1fr); }
    .li2-hub{ --vis-scale: .74; }
}
@media (max-width: 460px){
    .li2-hub{ --vis-scale: .58; }
}

@media (prefers-reduced-motion: reduce){
    .li2-hub-visual,
    .li2-hub-dot,
    .li2-hubcard > *{
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
    }
    .li2-hub-branch{ clip-path: none !important; transition: none !important; }
}

/* ===========================================================
 * SHARE & COLLABORATE — hover/focus linking
 * -----------------------------------------------------------
 * Each callout, its branch/dot pair, and the collage piece(s)
 * it describes share a data-hub-focus/data-hub-part key. The
 * companion script toggles .is-focused on the hub + .is-active
 * on the matching set; everything else dims. Makes the four
 * points and the visual read as one linked system instead of
 * four independent captions next to a picture.
 * =========================================================== */
.li2-hub-stage{
    --hub-dim: .32;
}
.li2-hubcard{
    cursor: pointer;
    border-radius: 12px;
    outline: none;
    transition: opacity .3s ease, transform .3s cubic-bezier(.22,1,.36,1);
}
.li2-hubcard:focus-visible{
    box-shadow: 0 0 0 2px var(--Royal-Blue-Blue-500, #0e48a5), 0 0 0 5px rgba(14,72,165,.18);
}
.li2-hub.is-focused .li2-hubcard{ opacity: var(--hub-dim); }
.li2-hub.is-focused .li2-hubcard.is-active{
    opacity: 1;
    transform: translateX(var(--card-hover-dir, 0));
}
.li2-hubcard--lt.is-active, .li2-hubcard--lb.is-active{ --card-hover-dir: 4px; }
.li2-hubcard--rt.is-active, .li2-hubcard--rb.is-active{ --card-hover-dir: -4px; }

.li2-hub.is-focused .li2-hub-branch,
.li2-hub.is-focused .li2-hub-dot{ opacity: var(--hub-dim); }
.li2-hub.is-focused .li2-hub-branch.is-active{
    opacity: 1;
    filter: drop-shadow(0 0 5px rgba(28,169,201,.45));
}
.li2-hub.is-focused .li2-hub-dot.is-active{
    opacity: 1;
    transform: scale(1.25);
}
.li2-hub-branch,
.li2-hub-dot{ transition: opacity .3s ease, filter .3s ease, transform .3s cubic-bezier(.22,1,.36,1); }

/* Collage pieces: everything dims except the piece(s) tied to the
   hovered callout, which lift and pick up an accent glow ring so
   they read as "selected", not just "less transparent". */
.li2-hv-shot,
.li2-hv-chip{
    transition: opacity .3s ease, transform .3s cubic-bezier(.22,1,.36,1),
                box-shadow .3s ease, filter .3s ease;
}
.li2-hub.is-focused .li2-hv-shot,
.li2-hub.is-focused .li2-hv-chip{ opacity: var(--hub-dim); filter: saturate(.7); }
.li2-hub.is-focused .li2-hv-shot.is-active{
    opacity: 1;
    filter: none;
    transform: translateY(-3px) scale(1.035);
    box-shadow: 0 0 0 2px rgba(28,169,201,.55), 0 10px 22px -10px rgba(6,30,70,.45);
    z-index: 5;
}
.li2-hub.is-focused .li2-hv-chip.is-active{
    opacity: 1;
    filter: none;
    transform: translateY(-2px) scale(1.06);
    box-shadow: 0 0 0 2px rgba(28,169,201,.55), 0 8px 16px -8px rgba(6,30,70,.4);
    z-index: 5;
}
/* the glows stay put — dimming the ambient light while one piece is
   spotlit would read as the whole visual going flat */
.li2-hub.is-focused .li2-hv-glow{ opacity: 1; }

@media (prefers-reduced-motion: reduce){
    .li2-hubcard,
    .li2-hub-branch,
    .li2-hub-dot,
    .li2-hv-shot,
    .li2-hv-chip{ transition: opacity .15s linear !important; }
}
/* Touch/no-hover devices can't hover; keep everything at full
   opacity rather than stranding a dimmed state nothing can clear */
@media (hover: none){
    .li2-hub.is-focused .li2-hubcard,
    .li2-hub.is-focused .li2-hub-branch,
    .li2-hub.is-focused .li2-hub-dot,
    .li2-hub.is-focused .li2-hv-shot,
    .li2-hub.is-focused .li2-hv-chip{ opacity: 1; filter: none; }
}

/* ===========================================================
 * ENTERPRISE-GRADE — light gradient variant
 * -----------------------------------------------------------
 * Moved off the dark canvas onto the same pale brand-gradient +
 * dot-grid recipe used by .section-conv-intel (ask-me), so the
 * treatment matches the referenced design exactly. Everything
 * below is scoped under .li2-enterprise for specificity over
 * both the base dark .li2-ent-card rules and the generic
 * .li2-section--light .li2-card rule (both would otherwise tie
 * or lose on source order).
 * =========================================================== */
.li2-enterprise{
    background: linear-gradient(135deg,
        var(--Turquoise-SkyBlue-50, #e8f6fa) 0%,
        var(--Royal-Blue-Blue-50, #e7eef8) 55%,
        var(--Violet-Violet-50, #f0ebf7) 100%);
}
/* ::before is already the hairline top divider (base .li2-section
   rule) — the dot-grid goes on ::after instead, sitting behind the
   container thanks to the section's own z-index:1 on .container. */
.li2-enterprise::after{
    content: '';
    position: absolute; inset: 0; z-index: 0; pointer-events: none;
    background-image: radial-gradient(rgba(40,99,195,.14) 1px, transparent 1px);
    background-size: 24px 24px;
}

.li2-enterprise.li2-section--light .li2-ent-card{
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.14);
    box-shadow: 0 4px 24px rgba(40,99,195,.08);
}
.li2-enterprise.li2-section--light .li2-ent-card:hover{
    border-color: var(--ent-accent-border, rgba(40,99,195,.28));
    background: var(--Base-White, #fcfcfc);
    box-shadow: 0 10px 32px -14px var(--ent-accent-glow, rgba(40,99,195,.35));
}
.li2-enterprise.li2-section--light .li2-ent-card h4{
    color: var(--cool-101828, #101828);
}
.li2-enterprise.li2-section--light .li2-ent-card p{
    color: #4a5568;
}
.li2-enterprise.li2-section--light .li2-ent-num{
    color: rgba(16,24,40,.3);
}
/* Icon tile: the reference uses ONE shared brand gradient across all
   three cards rather than a per-card hue, so the base fill is fixed
   here — the sky/violet/blue --ent-accent vars stay alive underneath
   for the hover border/shadow above, just not for the icon itself. */
.li2-enterprise.li2-section--light .li2-ent-icon{
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    border: none;
    color: #ffffff;
    box-shadow: 0 6px 16px -6px rgba(40,99,195,.45);
}

.li2-enterprise .li2-cert-label{
    color: rgba(16,24,40,.5);
}
.li2-enterprise .li2-cert-line{
    background: linear-gradient(90deg, transparent, rgba(40,99,195,.28), transparent);
}
.li2-enterprise .li2-cert-badge{
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.14);
    box-shadow: 0 4px 20px rgba(40,99,195,.07);
}
.li2-enterprise .li2-cert-badge:hover{
    border-color: rgba(40,99,195,.28);
    background: var(--Base-White, #fcfcfc);
    box-shadow: 0 8px 24px -10px rgba(40,99,195,.28);
}

/* ── Enterprise-Grade boundary fix ───────────────────────────
   The generic ".li2-section--light + .li2-section--light{padding-top:0}"
   rule exists to kill a doubled gap when two adjacent light sections
   share the SAME plain white background — removing the padding leaves
   no visible seam because there's no colour change to begin with.
   Enterprise-Grade breaks that assumption: it's a light section with
   its OWN saturated gradient, sandwiched between two plain-white
   .li2-section--light neighbours. Zeroing the padding on either side
   collapsed the colour change into a hard, cramped edge — the pill/
   heading landed right at the white→gradient seam with almost no
   breathing room. Restore the normal top padding on both sides of
   THIS section specifically so the colour transition reads as an
   intentional section break again. Same specificity as the generic
   rule (0,2,0); wins on source order since it's declared after it. */
.li2-section--light + .li2-enterprise{ padding-top: 88px; }
.li2-enterprise + .li2-section--light{ padding-top: 88px; }
/* ...but 88px is the DESKTOP section rhythm. These two rules are
   (0,2,0), so they outrank the generic 900px .li2-section{padding:
   64px 0} override and were the only sections on the page still
   sitting at 88px on a phone — which showed up as a lopsided CTA
   above them (104px of air above the card, 152px below). Same
   intent, mobile value. */
@media (max-width: 900px){
    .li2-section--light + .li2-enterprise,
    .li2-enterprise + .li2-section--light{ padding-top: 64px; }
}

/* ── Enterprise pillars as capability checklists ─────────────
   Each card's description was a run-on sentence listing what the
   pillar covers ("Authentication, encryption, auditing and
   enterprise security"). Same words, re-presented as discrete
   check items: fills the cards, and turns a paragraph nobody
   reads into something scannable. Replaces .li2-ent-card p,
   which no longer appears in this section's markup. */
.li2-ent-list{
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 11px;
}
.li2-ent-list li{
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 14.5px;
    line-height: 22px;
    color: #4a5568;
}
.li2-ent-check{
    flex-shrink: 0;
    width: 18px;
    height: 18px;
    margin-top: 2px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    /* flat fallback; color-mix below ties the tint to the card's
       own --ent-accent so each pillar's checks match its icon hue */
    background: rgba(40,99,195,.10);
    color: var(--ent-accent, #0e48a5);
}
@supports (color: color-mix(in srgb, red 50%, white)){
    .li2-ent-check{
        background: color-mix(in srgb, var(--ent-accent, #0e48a5) 14%, transparent);
    }
}
.li2-ent-check svg{ width: 11px; height: 11px; }

/* ── Certified & Compliant bar ───────────────────────────────
   The badges previously floated under the cards as three loose
   tiles with a centred caption, reading as an unrelated footer.
   Now one horizontal bar: label, hairline rule, badges inline —
   a single object that belongs to the section. */
.li2-certbar{
    display: flex;
    align-items: center;
    gap: 28px;
    margin-top: 44px;
    padding: 18px 32px;
    border-radius: 18px;
    background: rgba(252,252,252,.72);
    border: 1px solid rgba(40,99,195,.14);
    box-shadow: 0 4px 24px rgba(40,99,195,.06);
}
.li2-certbar-label{
    flex-shrink: 0;
    font-family: 'Inter', sans-serif;
    font-weight: 600;
    font-size: 11px;
    letter-spacing: 1.6px;
    text-transform: uppercase;
    color: rgba(16,24,40,.55);
}
.li2-certbar-rule{
    flex: 1 1 auto;
    height: 1px;
    background: linear-gradient(90deg, rgba(40,99,195,.22), rgba(40,99,195,.06));
}
.li2-certbar-badges{
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 26px;
}
.li2-certbar-badges img{
    width: 74px;
    height: 74px;
    display: block;
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
}
.li2-certbar-badges img:hover{ transform: scale(1.06); }

@media (max-width: 860px){
    .li2-certbar{
        flex-direction: column;
        gap: 18px;
        padding: 24px;
        text-align: center;
    }
    /* the rule only makes sense as a horizontal spacer between
       label and badges — it has nothing to span once stacked */
    .li2-certbar-rule{ display: none; }
    .li2-certbar-badges{ gap: 20px; flex-wrap: wrap; justify-content: center; }
}

/* ── Enterprise cards: compact single-row head ───────────────
   The icon, title and list each occupied their own row, which
   left a tall trailing gap inside every card (worst on the
   3-item ones) — the section read as mostly empty. Icon and
   title now share one line, cutting a full text row per card,
   and the paddings/gaps tighten to match the small amount of
   copy this section actually has. */
.li2-enterprise .li2-ent-card{ padding: 28px 28px 30px; }
.li2-enterprise .li2-ent-head{
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 22px;
}
.li2-enterprise .li2-ent-head h3{
    margin: 0;
    flex: 1 1 auto;
    font-size: 20px;
    line-height: 28px;
}
.li2-enterprise .li2-ent-num{
    flex-shrink: 0;
    margin-left: auto;
}
.li2-enterprise .li2-ent-list{ gap: 13px; }
.li2-enterprise .li2-ent-list li{ font-size: 15px; }

/* ── Cert bar: spread the badges instead of a dead gap ───────
   The hairline rule spanned ~700px of nothing between the
   label and a huddle of small badges on the far right. The
   rule is gone; the badges now distribute across the full
   remaining width and are noticeably larger, so the bar is
   filled by content rather than by a line. */
.li2-certbar{ padding: 20px 40px; gap: 40px; }
.li2-certbar-badges{
    flex: 1 1 auto;
    justify-content: space-evenly;
    gap: 20px;
}
.li2-certbar-badges img{ width: 88px; height: 88px; }

@media (max-width: 860px){
    .li2-certbar-badges{ justify-content: center; }
}

/* ===========================================================
 * ENTERPRISE-GRADE — split layout (pillars + trust panel)  [DEAD]
 * -----------------------------------------------------------
 * Built as an alternative, then reverted — the section uses the
 * checklist cards + .li2-certbar above. No markup references
 * these rules; kept for reference.
 *
 * Was intended to replace the 3-card grid + badge bar, because
 * those cards
 * were ~580px wide holding 2–3 word items, so every line
 * trailed off into empty space and the section read as mostly
 * air. Here the pillars stack as compact rows in one panel on
 * the left with their capabilities running INLINE (filling the
 * width with content), and the credentials get a dedicated
 * panel on the right — so both halves carry weight and the
 * section is roughly half the height.
 *
 * (.li2-ent-grid / .li2-ent-card / .li2-ent-list / .li2-certbar
 * are the LIVE layer again after the revert.)
 * =========================================================== */
.li2-ent-split{
    display: grid;
    grid-template-columns: minmax(0, 1.6fr) minmax(280px, .85fr);
    gap: 28px;
    align-items: stretch;
}

/* ── Left: pillars ─────────────────────────────────────────── */
.li2-ent-pillars{
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.14);
    border-radius: 20px;
    box-shadow: 0 4px 24px rgba(40,99,195,.07);
    padding: 8px 34px;
}
.li2-pillar{
    display: flex;
    align-items: flex-start;
    gap: 18px;
    padding: 26px 0;
    border-top: 1px solid rgba(40,99,195,.10);
}
.li2-pillar:first-child{ border-top: none; }

.li2-pillar-icon{
    flex-shrink: 0;
    width: 46px; height: 46px;
    border-radius: 12px;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    color: #ffffff;
    box-shadow: 0 6px 16px -6px rgba(40,99,195,.45);
}
.li2-pillar-icon svg{ width: 21px; height: 21px; }

.li2-pillar-body{ min-width: 0; }
.li2-pillar-body h3{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 20px; line-height: 28px; letter-spacing: -.2px;
    color: var(--cool-101828, #101828);
    margin: 0 0 8px;
}
/* Capabilities run inline, separated by a middot — the same words
   the source sentence used, just set to fill the row rather than
   stack into a short column with dead space beside it. */
.li2-pillar-caps{
    margin: 0;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 26px;
    color: #4a5568;
}
.li2-pillar-caps span:not(:last-child)::after{
    content: '·';
    margin: 0 9px;
    color: rgba(40,99,195,.42);
    font-weight: 600;
}

/* ── Right: trust panel ────────────────────────────────────── */
.li2-trust{
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.14);
    border-radius: 20px;
    box-shadow: 0 4px 24px rgba(40,99,195,.07);
    padding: 30px 28px;
    display: flex;
    flex-direction: column;
}
.li2-trust-label{
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase;
    color: rgba(16,24,40,.55);
    margin-bottom: 22px;
}
.li2-trust-list{
    display: flex;
    flex-direction: column;
    gap: 18px;
    /* absorbs the height difference against the taller pillars
       panel so the badges spread instead of bunching at the top */
    justify-content: space-around;
    flex: 1 1 auto;
}
.li2-trust-item{
    display: flex;
    align-items: center;
    gap: 16px;
    font-family: 'Inter', sans-serif; font-weight: 500;
    font-size: 15px; line-height: 22px;
    color: var(--cool-101828, #101828);
}
.li2-trust-item img{
    width: 58px; height: 58px;
    flex-shrink: 0;
    display: block;
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
}
.li2-trust-item:hover img{ transform: scale(1.07); }

@media (max-width: 992px){
    .li2-ent-split{ grid-template-columns: 1fr; gap: 20px; }
    .li2-trust-list{
        flex-direction: row;
        flex-wrap: wrap;
        justify-content: space-evenly;
        gap: 24px;
    }
    /* stacked badge+label reads better than a wide row once the
       panel spans the full width */
    .li2-trust-item{ flex-direction: column; gap: 10px; text-align: center; }
}
@media (max-width: 640px){
    .li2-ent-pillars{ padding: 4px 22px; }
    .li2-pillar{ gap: 14px; padding: 22px 0; }
}

/* ===========================================================
 * ENTERPRISE-GRADE — bento grid
 * -----------------------------------------------------------
 * Three equal cards never worked here: each pillar has only
 * 3–4 short capability strings, so equal full-width boxes
 * always trailed off into dead space no matter how the padding
 * or type was tuned. The bento fixes it structurally — tiles
 * are deliberately different sizes, so each one is sized to
 * the content it actually holds, and a credentials tile with
 * an authored security graphic supplies the visual weight this
 * section was missing (it's the only band on the page with no
 * imagery of its own).
 *
 * [DEAD] — reverted; .li2-ent-grid and .li2-certbar are live
 * again and the .li2-ent-card / -head / -list / -check rules
 * are back to serving the checklist cards.
 * =========================================================== */
.li2-bento{
    display: grid;
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr) minmax(270px, .92fr);
    grid-template-rows: auto auto;
    gap: 20px;
}
/* Secure spans the two left columns; Govern and Scale sit under it;
   the credentials tile runs the full height of the third column. */
/* Explicit placement classes, NOT nth-of-type: the tiles sit
   among sibling divs and a positional selector here is the same
   trap that silently skipped icons in the One Platform cards. */
.li2-bento-tile--wide{ grid-column: 1 / 3; grid-row: 1; }
.li2-bento-tile--b{ grid-column: 1; grid-row: 2; }
.li2-bento-tile--c{ grid-column: 2; grid-row: 2; }
.li2-bento-trust{ grid-column: 3; grid-row: 1 / 3; }

.li2-bento-tile{ padding: 26px 28px 28px; }
/* the wide tile gets its four items in two columns, so the extra
   width is filled rather than leaving a long ragged right edge */
.li2-bento-tile--wide .li2-ent-list{
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 24px;
    row-gap: 13px;
}

/* ── Credentials tile ──────────────────────────────────────── */
.li2-bento-trust{
    position: relative;
    overflow: hidden;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 20px;
    padding: 34px 26px;
    text-align: center;
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.14);
    box-shadow: 0 4px 24px rgba(40,99,195,.07);
}
.li2-bento-shield{
    width: 100%;
    max-width: 208px;
    height: auto;
    display: block;
}
.li2-bento-trust-label{
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase;
    color: rgba(16,24,40,.55);
}
.li2-bento-badges{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    flex-wrap: wrap;
}
.li2-bento-badges img{
    width: 62px; height: 62px;
    display: block;
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
}
.li2-bento-badges img:hover{ transform: scale(1.08); }

@media (max-width: 1100px){
    /* two columns: Secure spans the top, Govern/Scale share row 2,
       credentials drop to a full-width row underneath */
    .li2-bento{ grid-template-columns: 1fr 1fr; }
    .li2-bento-tile--wide{ grid-column: 1 / 3; }
    .li2-bento-trust{ grid-column: 1 / 3; grid-row: 3; }
    .li2-bento-trust{ flex-direction: row; justify-content: space-around; text-align: left; }
    .li2-bento-shield{ max-width: 150px; }
}
@media (max-width: 760px){
    .li2-bento{ grid-template-columns: 1fr; }
    .li2-bento-tile--wide,
    .li2-bento-tile--b,
    .li2-bento-tile--c,
    .li2-bento-trust{ grid-column: 1; grid-row: auto; }
    .li2-bento-tile--wide .li2-ent-list{ grid-template-columns: 1fr; }
    .li2-bento-trust{ flex-direction: column; text-align: center; }
}

/* ── Bento polish pass ───────────────────────────────────────
   1. BUG: the credentials tile rendered with a violet border and
      grey fill while its siblings were blue-on-white. It carries
      .li2-card, so ".li2-section--light .li2-card" (0,2,0) beat
      the plain ".li2-bento-trust" (0,1,0). The pillar tiles never
      showed it because they also match ".li2-enterprise
      .li2-section--light .li2-ent-card" (0,3,0). Re-declared here
      at matching weight so all four tiles agree.
   2. The shield sat small in a tall tile with dead air above and
      below it; it now fills the space and the badges grow.
   3. The step numbers become a large faint watermark instead of
      a small grey label floating at the far right.
   4. A soft accent wash behind each icon gives the flat white
      tiles somewhere to start. */
.li2-enterprise.li2-section--light .li2-bento-trust{
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.14);
    box-shadow: 0 4px 24px rgba(40,99,195,.07);
}

/* 2 — credentials tile fills its height */
.li2-bento-trust{
    justify-content: space-between;
    gap: 26px;
    padding: 38px 26px 34px;
}
.li2-bento-shield{
    max-width: 100%;
    width: 260px;
    margin: auto 0;
}
.li2-bento-badges img{ width: 70px; height: 70px; }
.li2-bento-trust-label{ margin-bottom: -6px; }

/* 3 — number as a watermark */
.li2-enterprise .li2-bento-tile{ position: relative; overflow: hidden; }
.li2-enterprise .li2-bento-tile .li2-ent-num{
    position: absolute;
    top: 14px;
    right: 22px;
    font-size: 46px;
    line-height: 1;
    letter-spacing: 0;
    font-weight: 500;
    color: var(--ent-accent, #0e48a5);
    opacity: .10;
    pointer-events: none;
}
/* the watermark replaces the inline number, so the head row no
   longer needs to reserve space at its right edge */
.li2-enterprise .li2-bento-tile .li2-ent-head h3{ flex: 0 1 auto; }

/* 4 — accent wash behind the icon corner */
.li2-enterprise .li2-bento-tile::after{
    content: '';
    position: absolute;
    top: -70px; left: -70px;
    width: 190px; height: 190px;
    border-radius: 50%;
    background: var(--ent-accent, #0e48a5);
    opacity: .07;
    filter: blur(26px);
    pointer-events: none;
}
.li2-enterprise .li2-bento-tile > *{ position: relative; z-index: 1; }

/* Tighten the wide tile's two columns — 1fr columns pushed the
   second item to the far side of a 900px tile. */
.li2-bento-tile--wide .li2-ent-list{
    grid-template-columns: repeat(2, minmax(0, max-content));
    justify-content: start;
    column-gap: 72px;
}

@media (max-width: 1100px){
    .li2-bento-shield{ width: 190px; margin: 0; }
    .li2-bento-trust{ justify-content: space-around; }
}
@media (max-width: 760px){
    .li2-bento-shield{ width: 200px; margin: 0 auto; }
    .li2-bento-tile--wide .li2-ent-list{ grid-template-columns: minmax(0, 1fr); }
}

/* ===========================================================
 * ENTERPRISE-GRADE — compact band  [DEAD]
 * -----------------------------------------------------------
 * Built, then reverted — the section uses the checklist cards
 * (.li2-ent-grid / .li2-ent-card) + .li2-certbar, which are the
 * LIVE layer again. No markup references these rules.
 *
 * No cards. Three passes at boxed layouts (equal cards, split,
 * bento) all read as empty for the same reason: each pillar has
 * only 3–4 short capability strings, and no amount of padding
 * or tile-sizing makes that fill a full-width band. This gives
 * the section the height its copy actually warrants — hairline
 * rules and type, with the credentials sitting on the closing
 * rule as part of the same object.
 *
 * (Was intended to supersede .li2-bento* / .li2-ent-grid /
 * .li2-ent-card / .li2-certbar / .li2-ent-split.)
 * =========================================================== */
.li2-band{
    border-top: 1px solid rgba(40,99,195,.16);
    border-bottom: 1px solid rgba(40,99,195,.16);
}
.li2-band-cols{
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
/* Vertical hairlines BETWEEN columns only — a border-left on every
   column would double up against the band's own outer edges. */
.li2-band-col{
    padding: 40px 40px 44px;
    border-left: 1px solid rgba(40,99,195,.12);
}
.li2-band-col:first-child{
    border-left: none;
    padding-left: 0;
}
.li2-band-col:last-child{ padding-right: 0; }

.li2-band-head{
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 16px;
}
.li2-band-icon{
    flex-shrink: 0;
    width: 42px; height: 42px;
    border-radius: 11px;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    color: #ffffff;
    box-shadow: 0 6px 16px -6px rgba(40,99,195,.45);
}
.li2-band-icon svg{ width: 20px; height: 20px; }
.li2-band-head h3{
    margin: 0;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 21px; line-height: 29px; letter-spacing: -.2px;
    color: var(--cool-101828, #101828);
}
/* Capabilities run as one flowing line, separated by a middot —
   the same words the source sentence used. */
.li2-band-caps{
    margin: 0;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 15px; line-height: 27px;
    color: #4a5568;
}
.li2-band-caps span:not(:last-child)::after{
    content: '·';
    margin: 0 8px;
    color: rgba(40,99,195,.4);
    font-weight: 600;
}

/* ── Closing rule: credentials ─────────────────────────────── */
.li2-band-foot{
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 32px;
    padding: 20px 0;
    border-top: 1px solid rgba(40,99,195,.12);
}
.li2-band-foot-label{
    font-family: 'Inter', sans-serif; font-weight: 600;
    font-size: 11px; letter-spacing: 1.6px; text-transform: uppercase;
    color: rgba(16,24,40,.5);
}
.li2-band-badges{
    display: flex;
    align-items: center;
    gap: 30px;
}
.li2-band-badges img{
    width: 64px; height: 64px;
    display: block;
    transition: transform .3s cubic-bezier(.22,.61,.36,1);
}
.li2-band-badges img:hover{ transform: scale(1.07); }

@media (max-width: 900px){
    .li2-band-cols{ grid-template-columns: 1fr; }
    .li2-band-col{
        border-left: none;
        border-top: 1px solid rgba(40,99,195,.12);
        padding: 30px 0;
    }
    .li2-band-col:first-child{ border-top: none; padding-top: 34px; }
    .li2-band-foot{
        flex-direction: column;
        align-items: flex-start;
        gap: 18px;
    }
    .li2-band-badges{ gap: 22px; flex-wrap: wrap; }
}

/* ── Credentials strip: no container ─────────────────────────
   Drops the panel around the badge row — the label and badges
   now sit directly on the section gradient. Only the box itself
   goes; the layout (label left, badges spread) is unchanged.
   Horizontal padding is zeroed too so the label lines up with
   the cards' left edge instead of being inset by the old panel. */
.li2-certbar{
    background: none;
    border: none;
    border-radius: 0;
    box-shadow: none;
    padding: 8px 0 0;
}

/* Centre the credentials strip: the badges were set to flex-grow
   and spread themselves across the full width, so the group has
   to stop growing before justify-content can centre it. */
.li2-certbar{ justify-content: center; }
.li2-certbar-badges{ flex: 0 0 auto; justify-content: center; gap: 32px; }

/* ── Credentials strip: stacked, tiled, muted ────────────────
   Three changes together:
   1. Label moves ABOVE the badges with short flanking hairlines.
      Inline, it pulled the centred group off-axis — the badges
      read as sitting right of centre even though the flex group
      was centred correctly.
   2. Each seal gets its own tile, so the loose circles have
      structure and a hover target.
   3. Seals render desaturated and come to full colour on hover,
      so they register as trust marks without competing with the
      pillar cards above.
   Later than every earlier .li2-certbar* rule, so these win. */
.li2-certbar{
    flex-direction: column;
    align-items: center;
    gap: 26px;
    padding: 12px 0 0;
}
.li2-certbar-label{
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 18px;
}
/* fixed-width, not flex:1 — the earlier rule stretched these to
   fill the bar, which is what made the old strip read as a long
   line spanning emptiness */
.li2-certbar-rule{
    flex: 0 0 auto;
    width: 54px;
    height: 1px;
    background: linear-gradient(90deg, rgba(40,99,195,0), rgba(40,99,195,.3), rgba(40,99,195,0));
}
.li2-certbar-badges{
    display: flex;
    align-items: stretch;
    justify-content: center;
    gap: 22px;
    flex-wrap: wrap;
}
.li2-certbar-tile{
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 18px 26px;
    border-radius: 16px;
    background: rgba(252,252,252,.6);
    border: 1px solid rgba(40,99,195,.12);
    transition: transform .3s cubic-bezier(.22,.61,.36,1),
                border-color .3s ease, background .3s ease, box-shadow .3s ease;
}
.li2-certbar-tile:hover{
    transform: translateY(-3px);
    border-color: rgba(40,99,195,.3);
    background: var(--Base-White, #fcfcfc);
    box-shadow: 0 10px 26px -12px rgba(40,99,195,.3);
}
.li2-certbar-badges img{
    width: 84px;
    height: 84px;
    display: block;
    filter: grayscale(1) opacity(.5);
    transition: filter .35s ease;
}
.li2-certbar-tile:hover img{ filter: none; }

@media (prefers-reduced-motion: reduce){
    .li2-certbar-tile{ transition: border-color .2s ease, background .2s ease; }
    .li2-certbar-tile:hover{ transform: none; }
}
@media (max-width: 640px){
    .li2-certbar-tile{ padding: 14px 18px; }
    .li2-certbar-badges img{ width: 66px; height: 66px; }
    .li2-certbar-rule{ width: 32px; }
}

/* ── Mid-page CTA: compact + glow accents ────────────────────
   The card was 64px vertical padding around a 20px-gap stack,
   which gave a very tall box for one heading, one line of copy
   and a button — the flattest, airiest element on the page.
   Height comes down ~40% and two brand glow orbs sit behind the
   copy so the panel has some depth instead of a flat tint.
   The centred structure is unchanged. */
/* Site-wide CTA standard — this block is the same component every other
   page ends on, so its box matches them exactly: 128px of space above the
   card (the 88px trailing padding of the preceding .li2-section plus 40px
   here), a 96px tail, and the shared 48px/56px/52px card padding.
   The generic ".li2-section--light + .li2-section--light{padding-top:0}"
   rule above would otherwise zero the top out. */
.li2-page .li2-section--light.li2-midcta{
    padding-top: 40px;
    padding-bottom: 96px;
}
.li2-midcta .mcp-cta-card{
    padding: 48px 56px 52px;
}
.li2-midcta .bcta-wrap{
    gap: 20px;
    /* the copy is short — capping the measure keeps the heading
       from stretching to the full 1700px card width */
    max-width: 860px;
    margin: 0 auto;
}
.li2-midcta .li2-eyebrow{ margin-bottom: 6px; }
.li2-midcta .bcta-wrap h2{
    font-size: 44px;
    line-height: 54px;
}
.li2-midcta .bcta-actions{ margin-top: 8px; }
/* Secondary CTA on the pale card — the shared .btn-demo--lg is built for
   the dark violet/navy card and fills with rgba(0,0,0,.25), which goes
   muddy on this tint. Same box as .btn-primary--lg beside it (52px,
   14px/30px, 16px, 2px border); only the fill and label flip to the
   light-card pairing used by about-us-new and data-integration. */
.li2-midcta .btn-demo--lg{
    background: var(--Base-White, #fcfcfc);
    border: 2px solid var(--Royal-Blue-Blue-500, #0e48a5);
    color: var(--Royal-Blue-Blue-500, #0e48a5);
    font-weight: 600;
}
.li2-midcta .btn-demo--lg:hover{
    background: var(--Royal-Blue-Blue-50, #e7eef8);
    filter: none;
}

/* Glow orbs — sit above the flat tint but below the dot-grid and
   copy, so the texture still reads across them. */
.li2-midcta .mcp-cta-card::before,
.li2-midcta .mcp-cta-card::after{
    content: '';
    position: absolute;
    z-index: 0;
    border-radius: 50%;
    pointer-events: none;
    filter: blur(56px);
}
.li2-midcta .mcp-cta-card::before{
    width: 420px; height: 300px;
    top: -110px; left: 6%;
    background: rgba(28,169,201,.30);
}
.li2-midcta .mcp-cta-card::after{
    width: 460px; height: 320px;
    bottom: -140px; right: 5%;
    background: rgba(119,71,182,.26);
}
.li2-midcta .mcp-cta-card-grid{ z-index: 1; }
.li2-midcta .mcp-cta-card .bcta-wrap{ z-index: 2; }

@media (max-width: 900px){
    .li2-midcta .mcp-cta-card{ padding: 48px 28px; }   /* site-wide CTA card standard (mobile) */
    .li2-midcta .bcta-wrap h2{ font-size: 32px; line-height: 42px; }
    .li2-midcta .mcp-cta-card::before,
    .li2-midcta .mcp-cta-card::after{ width: 260px; height: 200px; filter: blur(44px); }
}

/* ===========================================================
 * ONE PLATFORM — pinned convergence
 * -----------------------------------------------------------
 * Same construction as "Why Lumenore Ask Me" on
 * lumenore-ask-me-new.html, restyled for this page's LIGHT
 * canvas: the section carries .li2-section--fadeout and ramps
 * into the dark aurora band below, so a dark treatment here
 * would break that blend.
 *
 * Not a step flow. The previous version numbered these Stage
 * 01-05 with arrows, implying a sequence the source copy never
 * claims — they are five ways of working, so nothing is
 * numbered or connected.
 *
 * Supersedes .li2-op-* (flow/card/badge/arrow), now dead.
 * =========================================================== */
.li2-op2{
    position: relative;
    height: 215vh;                 /* scroll runway for the pinned sequence */
    background: var(--Base-White, #fcfcfc);
}
.li2-op2-sticky{
    position: sticky; top: 0; height: 100vh;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center;
    overflow: hidden;
    padding: 0 24px;
}
.li2-op2-head{
    text-align: center;
    margin-bottom: 34px;
    max-width: 760px;
}
.li2-op2-head h2{
    font-family: 'Space Grotesk', sans-serif; font-weight: 300;
    font-size: 44px; line-height: 54px; letter-spacing: -.6px;
    color: var(--cool-101828, #101828);
    margin: 0 0 14px;
}
.li2-op2-head .li2-lead{ font-size: 15px; line-height: 26px; color: #4a5568; }

/* ── Stage: cards orbiting the Insights mark ── */
.li2-op2-stage{
    position: relative;
    width: 100%; max-width: 1240px;
    height: 470px; flex: 0 0 auto;
}
.li2-op2-card{
    position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    width: 252px; padding: 20px 22px;
    border-radius: 16px;
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.13);
    box-shadow: 0 14px 38px -20px rgba(14,72,165,.35), 0 1px 2px rgba(6,30,70,.05);
    /* JS writes transform/opacity every frame; no transition or the
       per-frame writes would queue up and lag behind the scroll */
    will-change: transform, opacity;
}
.li2-op2-card-icon{
    width: 40px; height: 40px;
    border-radius: 11px;
    display: flex; align-items: center; justify-content: center;
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    color: #ffffff;
    box-shadow: 0 6px 16px -6px rgba(40,99,195,.45);
    margin-bottom: 14px;
}
.li2-op2-card-icon svg{ width: 19px; height: 19px; }
.li2-op2-card-label{
    display: block;
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 18px; line-height: 26px; letter-spacing: -.2px;
    color: var(--cool-101828, #101828);
    margin-bottom: 6px;
}
.li2-op2-card p{
    margin: 0;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 14px; line-height: 22px;
    color: #4a5568;
}

/* ── Centre mark ── */
.li2-op2-mark{
    position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    width: 158px; height: 158px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.16);
    box-shadow: 0 24px 60px -26px rgba(14,72,165,.45);
    z-index: 3;                    /* cards must slip UNDER the disc */
    will-change: transform, opacity;
}
.li2-op2-mark img{ width: 66px; height: 66px; display: block; }

/* ── Closing line, revealed where the mark was ── */
.li2-op2-desc{
    position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    width: min(680px, 88%);
    margin: 0;
    text-align: center;
    font-family: 'Inter', sans-serif; font-weight: 400;
    font-size: 17px; line-height: 30px;
    color: #4a5568;
    opacity: 0;                    /* JS drives the reveal */
    z-index: 4;
    will-change: transform, opacity;
}
.li2-op2-desc strong{ color: var(--cool-101828, #101828); font-weight: 600; }

/* ── Ambient light ── */
.li2-op2-glow{
    position: absolute; left: 50%; top: 50%;
    transform: translate(-50%, -50%);
    width: 620px; height: 620px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(40,99,195,.10) 0%, rgba(40,99,195,0) 68%);
    pointer-events: none;
}
.li2-op2-orb{
    position: absolute;
    border-radius: 50%;
    pointer-events: none;
    filter: blur(60px);
}
.li2-op2-orb--sky{
    width: 340px; height: 260px;
    top: -40px; left: 8%;
    background: rgba(28,169,201,.22);
}
.li2-op2-orb--violet{
    width: 360px; height: 280px;
    bottom: -50px; right: 7%;
    background: rgba(119,71,182,.20);
}

/* ── Static fallback: narrow viewports and reduced motion ──────
   The convergence needs both a tall runway and room for the
   spread, so below 860px (and whenever motion is reduced) the
   section unpins entirely and the cards become an ordinary
   grid. The JS checks the same 860px breakpoint and stops
   writing transforms, otherwise it would fight this layout. */
@media (max-width: 860px), (prefers-reduced-motion: reduce){
    .li2-op2{ height: auto; padding: 88px 0; }
    .li2-op2-sticky{
        position: static; height: auto; overflow: visible;
        padding: 0 32px;
    }
    .li2-op2-head{ margin-bottom: 44px; }
    .li2-op2-stage{
        height: auto; max-width: 1000px;
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
        gap: 20px;
    }
    .li2-op2-card{
        position: static;
        transform: none;
        width: auto;
        opacity: 1;
    }
    .li2-op2-mark{ display: none; }
    .li2-op2-desc{
        position: static;
        transform: none;
        opacity: 1;
        width: 100%;
        max-width: 680px;
        margin: 34px auto 0;
        grid-column: 1 / -1;
    }
    .li2-op2-glow,
    .li2-op2-orb{ display: none; }
}

/* ===========================================================
 * ONE PLATFORM — source → hub → outcome flow
 * -----------------------------------------------------------
 * Connected data sources on the left, the Insights hub in the
 * middle, the ways of working on the right. Not a step flow:
 * the five on the right are parallel outcomes, so the wires
 * fan out to all of them at once and nothing is numbered.
 *
 * Fixed 1240x560 coordinate space scaled by one transform, the
 * same approach as the Share & Collaborate hub. The SVG wires
 * are authored in those exact coordinates, so scaling the whole
 * stage keeps them registered against the tiles and cards at
 * every width — re-flowing the pieces would break the joins.
 *
 * Supersedes .li2-op-* and .li2-op2-* (pinned convergence),
 * both now dead.
 * =========================================================== */
.li2-flow{
    display: flex;
    justify-content: center;
    height: calc(560px * var(--flow-scale, 1));
}
.li2-flow-stage{
    position: relative;
    width: 1240px;
    height: 560px;
    flex: none;
    transform: scale(var(--flow-scale, 1));
    transform-origin: top center;
}

/* ── Wires + rings ── */
.li2-flow-wires{
    position: absolute; inset: 0;
    width: 100%; height: 100%;
    pointer-events: none;
    overflow: visible;
}
.li2-flow-wire{
    fill: none;
    stroke: rgba(40,99,195,.34);
    stroke-width: 1.4;
}
.li2-flow-ring{
    fill: rgba(40,99,195,.028);
    stroke: rgba(40,99,195,.10);
    stroke-width: 1;
}
.li2-flow-ring--inner{ fill: rgba(40,99,195,.05); }

/* ── Left: data source tiles ── */
.li2-flow-src{
    position: absolute;
    width: 56px; height: 56px;
    border-radius: 15px;
    display: flex; align-items: center; justify-content: center;
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.12);
    box-shadow: 0 8px 20px -12px rgba(14,72,165,.35), 0 1px 2px rgba(6,30,70,.04);
    transition: transform .3s cubic-bezier(.22,.61,.36,1), box-shadow .3s ease;
}
.li2-flow-src:hover{
    transform: translateY(-3px);
    box-shadow: 0 14px 28px -14px rgba(14,72,165,.45);
}
.li2-flow-src img{
    width: 28px; height: 28px;
    object-fit: contain;
    display: block;
}

/* ── Centre hub ── */
.li2-flow-hub{
    position: absolute;
    left: 620px; top: 280px;
    transform: translate(-50%, -50%);
    width: 118px; height: 118px;
    border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: var(--Base-White, #fcfcfc);
    box-shadow: 0 22px 52px -24px rgba(14,72,165,.5), 0 0 0 1px rgba(40,99,195,.10);
    z-index: 2;                    /* wires terminate under the disc */
}
.li2-flow-hub img{ width: 54px; height: 54px; display: block; }

/* ── Right: outcomes, heading only ── */
.li2-flow-out{
    position: absolute;
    left: 896px;
    width: 320px;
    height: 94px;              /* fixed: markup positions each card by top */
    padding: 14px 20px;
    border-radius: 14px;
    display: flex; flex-direction: column;
    align-items: center; justify-content: center; gap: 8px;
    background: var(--Base-White, #fcfcfc);
    border: 1px solid rgba(40,99,195,.12);
    box-shadow: 0 10px 26px -16px rgba(14,72,165,.35), 0 1px 2px rgba(6,30,70,.04);
    transition: transform .3s cubic-bezier(.22,.61,.36,1),
                border-color .3s ease, box-shadow .3s ease;
}
.li2-flow-out:hover{
    transform: translateY(-3px);
    border-color: rgba(40,99,195,.28);
    box-shadow: 0 16px 34px -18px rgba(14,72,165,.45);
}
.li2-flow-out-icon{
    flex-shrink: 0;
    width: 26px; height: 26px;
    display: flex; align-items: center; justify-content: center;
    color: var(--Royal-Blue-Blue-500, #0e48a5);
}
.li2-flow-out-icon svg{ width: 20px; height: 20px; }
.li2-flow-out-label{
    font-family: 'Space Grotesk', sans-serif; font-weight: 500;
    font-size: 18px; line-height: 26px; letter-spacing: -.2px;
    color: var(--cool-101828, #101828);
    text-align: center;
}

/* ── Scale steps: fixed geometry shrinks whole, never re-flows ── */
@media (max-width: 1400px){ .li2-flow{ --flow-scale: .95; } }
@media (max-width: 1300px){ .li2-flow{ --flow-scale: .88; } }
@media (max-width: 1200px){ .li2-flow{ --flow-scale: .80; } }
@media (max-width: 1080px){ .li2-flow{ --flow-scale: .72; } }
@media (max-width: 980px){  .li2-flow{ --flow-scale: .66; } }

/* ── Below 900px: unpack. The wires describe a left-to-right
   geometry that no longer exists once stacked, so they and the
   rings are dropped along with the absolute positioning. ── */
@media (max-width: 900px){
    .li2-flow{ height: auto; display: block; }
    .li2-flow-stage{
        position: static;
        width: auto; height: auto;
        transform: none;
        display: flex; flex-direction: column;
        align-items: center; gap: 32px;
    }
    .li2-flow-wires{ display: none; }
    .li2-flow-sources{
        display: flex; flex-wrap: wrap;
        justify-content: center; gap: 12px;
        max-width: 420px;
    }
    /* inline left/top come from the stage coordinates — must be
       neutralised, not just overridden by the flex parent */
    .li2-flow-src{ position: static !important; left: auto !important; top: auto !important; }
    .li2-flow-hub{ position: static; transform: none; }
    .li2-flow-outs{
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));
        gap: 14px;
        width: 100%;
        max-width: 620px;
    }
    /* the fixed 94px height and the halo both belong to the stage
       coordinate space and have to be released once stacked */
    .li2-flow-out{
        position: static !important; top: auto !important; left: auto;
        width: auto; height: auto;
    }
    .li2-flow-halo{ display: none; }
}

/* ── Mobile-only visual pass ──────────────────────────────────
   The diagram's whole meaning is spatial: sources on the left
   flow through the hub disc and fan out to the five ways of
   working on the right. The wires that carry that story are
   dropped once stacked (they describe a left-to-right geometry
   that no longer exists), and what survived read as a sequence
   of three unrelated things — a lone connector-ish icon, then
   the five cards, then the actual connector logos.

   So on mobile only the five cards are kept — the diagram stops
   pretending to be a diagram:
   1. The hub disc is hidden. With no wires touching it, it is an
      unlabelled icon that reads as an unrelated element rather
      than the centre of anything.
   2. The source-logo cluster is hidden too. Its whole job is to be
      the left-hand INPUT side of the flow; with the wires and hub
      gone it is just a grid of logos trailing the cards, and the
      connectors are covered by their own page elsewhere.
   3. The cards keep their own design and their desktop
      one-open-at-a-time cycling untouched. ── */
@media (max-width: 900px){
    /* !important on both: later unconditional .li2-flow-hub and
       .li2-flow-src rules set display:flex, tie with these on
       specificity (single class) and win on source order */
    .li2-flow-hub{ display: none !important; }
    .li2-flow-sources{ display: none !important; }
}

/* ── Flow diagram: reference-match pass ──────────────────────
   Closes the remaining gaps against the reference: a soft halo
   behind the rings, ghost tiles filling the source cluster, and
   wires drawn as rounded orthogonal traces (see the elbow paths
   in the markup) rather than smooth S-curves. */
.li2-flow-halo{
    position: absolute;
    left: 620px; top: 280px;
    transform: translate(-50%, -50%);
    width: 560px; height: 560px;
    border-radius: 50%;
    background: radial-gradient(circle,
        rgba(40,99,195,.13) 0%,
        rgba(40,99,195,.06) 42%,
        rgba(119,71,182,.03) 66%,
        rgba(40,99,195,0) 76%);
    pointer-events: none;
    filter: blur(6px);
}

/* Empty tiles: outline only, no fill or shadow — they add silhouette
   without reading as a connector we haven't named. */
.li2-flow-src--ghost{
    background: rgba(252,252,252,.5);
    border-style: dashed;
    border-color: rgba(40,99,195,.13);
    box-shadow: none;
}
.li2-flow-src--ghost:hover{ transform: none; box-shadow: none; }

/* Traces read best slightly finer with a rounded cap at the joins */
.li2-flow-wire{
    stroke-width: 1.3;
    stroke-linecap: round;
    stroke-linejoin: round;
}
.li2-flow-ring{ stroke: rgba(40,99,195,.09); }

/* ── Product CTA heading ─────────────────────────────────────
   The cross-product CTA sits at the tail of the Customer Impact
   section, so it needs its own top separation — .li2-intro only
   carries a bottom margin. The grid below already has
   margin-top:56px, which would stack on the heading's bottom
   margin, so that is zeroed here rather than widening the gap. */
.li2-productcta-head{
    margin-top: 104px;
    margin-bottom: 0;
}
.li2-productcta-head h2{ margin-bottom: 0; }

/* ── One Platform: rebuilt to Figma 3540:44492 ───────────────
   Supersedes the first flow build. Changes from it: the stage
   grew to 1580x530, tiles went 56 -> 95px in a re-arranged
   cluster, MySQL was dropped, the hub lost its logo (it is now
   a plain disc), and the hand-authored wires/rings were replaced
   by the designer's exported vectors.

   Those vectors are placed at their measured layout positions
   MINUS each export's filter bleed — Figma bakes blur and drop
   shadow into the SVG canvas, so e.g. the 530px halo exports at
   546px and has to be offset by 8px to land correctly. Using the
   raw layout box would shift every one of them. */
.li2-flow{ height: calc(530px * var(--flow-scale, 1)); }
.li2-flow-stage{ width: 1580px; height: 530px; }

.li2-flow-art{
    position: absolute;
    display: block;
    pointer-events: none;
}
/* layout 530 @ (526,0), export 546 -> 8px blur bleed each side */
.li2-flow-halo{ left: 518px; top: -8px;  width: 546px; height: 546px; }
/* layout 386 @ (598,72) and 242 @ (670,144), exports 437 / 293 */
.li2-flow-ring1{ left: 576.5px; top: 47.5px;  width: 437px; height: 437px; }
.li2-flow-ring2{ left: 645.5px; top: 122.5px; width: 293px; height: 293px; }
/* wires: 1 group in from the cluster, 2 groups out to the cards */
.li2-flow-wires-in{ left: 398px; top: 108.5px; width: 228px; height: 320px; }
.li2-flow-wires-a{  left: 973px; top: 92.5px;  width: 307px; height: 159px; }
/* the lower fan is the SAME artwork as the upper one, mirrored —
   exactly how the Figma node reuses it via a -100% x-scale */
.li2-flow-wires-b{  left: 973px; top: 292.5px; width: 307px; height: 159px; transform: scaleX(-1); }

/* ── Tiles at the new 95px size ── */
.li2-flow-src{
    width: 95px; height: 95px;
    border-radius: 15px;
}
.li2-flow-src img{
    width: 28px; height: 28px;
    /* 13px inset all round, per the design's icon slot */
    margin: 0;
}
.li2-flow-src{ display: flex; align-items: center; justify-content: center; }

/* ── Hub: a plain disc. The designer removed the Insights mark
   from the centre, so nothing is nested inside it now. ── */
.li2-flow-hub{
    left: 732px; top: 206px;
    width: 118px; height: 118px;
    transform: none;
    background: var(--Base-White, #fcfcfc);
    box-shadow: 0 22px 52px -24px rgba(14,72,165,.5), 0 0 0 1px rgba(40,99,195,.08);
}

/* ── Outcome cards: unchanged size, new x/y ── */
.li2-flow-out{ left: 1260px; }

/* ── Scale steps for the wider stage ── */
/* scale ladder moved to the end of this file — see "Flow stage scale ladder" */

@media (max-width: 900px){
    /* the vector artwork describes a left-to-right geometry that no
       longer exists once stacked */
    .li2-flow-art{ display: none; }
    .li2-flow-src{ position: static !important; left: auto !important; top: auto !important; }
    .li2-flow-hub{ position: static; left: auto; top: auto; }
    /* the 1580x530 rebuild above reintroduced fixed geometry on
       .li2-flow/.li2-flow-stage, clobbering the stacked-layout
       auto sizing from the earlier unpack rule. With overflow:hidden
       on the section, that left the diagram centred inside a
       1580px-wide phantom box — mostly clipped off-screen, reading
       as a blank gap. Re-release both back to auto. */
    .li2-flow{ height: auto; }
    .li2-flow-stage{ width: auto; height: auto; }
}

/* ── Halo fix + hub mark ─────────────────────────────────────
   BUG: the halo rendered up and to the left of the diagram,
   drifting behind the section heading. The new rule set only
   left/top/width/height, so three properties from the ORIGINAL
   .li2-flow-halo (a CSS-gradient div in the first flow build)
   still applied to what is now an <img>:
     · transform: translate(-50%,-50%)  -> shifted it by half its
       own size, 273px up and left. This was the visible defect.
     · background: radial-gradient(...) -> a second halo painted
       behind the SVG.
     · filter: blur(6px)                -> blurring artwork that
       already carries its own baked-in blur.
   Reset all three rather than editing the old rule, which is
   still referenced by the dead first-build layer. */
.li2-flow-halo{
    transform: none;
    background: none;
    filter: none;
    border-radius: 0;
}

/* The centre disc carries the Insights mark again — an empty
   circle lost the "everything flows into Lumenore" read. */
.li2-flow-hub{
    display: flex;
    align-items: center;
    justify-content: center;
}
.li2-flow-hub img{
    width: 54px;
    height: 54px;
    display: block;
}

/* ── Wires behind the rings, bigger source icons, connector hub ──
   1. The right-hand traces used to sit ON TOP of the concentric
      rings, so their ends stopped hard against the circle. They
      now paint first (moved earlier in the DOM), letting the
      rings' translucent fill veil each end so the lines read as
      passing behind the hub.
   2. Source icons go 28 -> 40px; at 95px tiles the old size left
      the glyph floating in a lot of empty tile.
   3. The centre carries a drawn connector glyph instead of the
      Insights product mark. */
.li2-flow-src img{
    width: 40px;
    height: 40px;
    object-fit: contain;
}
/* NOTE: a ".li2-flow-hub img{display:none}" rule used to live here,
   left over from the inline-SVG glyph version. It hid the hub icon
   outright, and being (0,1,1) — class + element — it outranked the
   (0,1,0) .li2-flow-hub-icon rule no matter how late that appeared.
   Removed rather than overridden; that is why the disc read empty. */
.li2-flow-hub-icon{
    width: 52px;
    height: 52px;
    display: block;
}

/* ── Outcome cards: horizontal head, revealable description ──
   Inactive = icon left, heading right. Active = the description
   expands beneath it.

   Each card is CENTRED on its wire's termination y (translateY
   -50%) rather than pinned by its top edge. That is what lets a
   card grow when it opens: it expands equally up and down, so the
   wire still meets it dead-centre and the joins never drift.
   Pinning by `top` would have pushed every join off as soon as a
   card changed height. */
.li2-flow-out{
    height: auto;
    transform: translateY(-50%);
    flex-direction: column;
    align-items: stretch;
    justify-content: flex-start;
    gap: 0;
    padding: 14px 18px;
    cursor: pointer;
    outline: none;
}
.li2-flow-out-head{
    display: flex;
    align-items: center;
    gap: 12px;
}
.li2-flow-out-label{ text-align: left; }

/* 0fr -> 1fr collapse. The inner <span> is a real element with
   min-height:0 — a bare text node would be an anonymous grid item
   and refuse to collapse, leaving the row permanently open. */
.li2-flow-out-desc{
    display: grid;
    grid-template-rows: 0fr;
    opacity: 0;
    margin-top: 0;
    transition: grid-template-rows .42s cubic-bezier(.22,1,.36,1),
                opacity .3s ease,
                margin-top .42s cubic-bezier(.22,1,.36,1);
}
.li2-flow-out-desc > span{
    min-height: 0;
    overflow: hidden;
    display: block;
    font-family: 'Inter', sans-serif;
    font-weight: 400;
    font-size: 13.5px;
    line-height: 21px;
    color: #4a5568;
}
.li2-flow-out.is-active .li2-flow-out-desc{
    grid-template-rows: 1fr;
    opacity: 1;
    margin-top: 10px;
}
.li2-flow-out.is-active{
    border-color: rgba(40,99,195,.30);
    box-shadow: 0 18px 38px -18px rgba(14,72,165,.45), 0 1px 2px rgba(6,30,70,.05);
}
.li2-flow-out.is-active .li2-flow-out-icon{
    background: rgba(40,99,195,.10);
    border-radius: 8px;
}
.li2-flow-out:hover{ transform: translateY(-50%); }
.li2-flow-out:focus-visible{
    box-shadow: 0 0 0 2px var(--Royal-Blue-Blue-500, #0e48a5), 0 0 0 5px rgba(14,72,165,.18);
}
.li2-flow-out-icon{
    width: 30px; height: 30px;
    flex-shrink: 0;
    transition: background .3s ease;
}

@media (max-width: 900px){
    /* transform still has to go: the desktop cards are centred on
       their wire's y with translateY(-50%), which is meaningless
       once they sit in normal flow. The open/closed cycling itself
       now runs here exactly as it does on desktop — one card open
       at a time, auto-advancing (see the companion script). */
    .li2-flow-out{ transform: none !important; }
}
@media (prefers-reduced-motion: reduce){
    .li2-flow-out-desc{ transition: opacity .15s linear; }
}

/* ── Flow stage scale ladder ─────────────────────────────────
   Capped by TWO limits: the effective .container width AND the
   1277px of .li2-hub-stage, the Share & Collaborate diagram.
   Sized only to the container the stage rendered 1406px wide —
   129px wider than that sibling diagram, which is what read as
   "wider than the other sections". 0.80 brings it to 1264px, in
   line with the hub.

   .container is 1420px at full size, not 1436: the base rule here
   says padding:0 32px but three later rules override it to 0 40px
   (0 24px at <=991px). Each step below is sized for the narrowest
   viewport that still matches it. */
.li2-flow{ --flow-scale: 0.80; }   /* >=1380: 1264 (hub is 1277) */
@media (max-width: 1379px){ .li2-flow{ --flow-scale: 0.78; } }   /* @1320: 1232 in 1240 */
@media (max-width: 1319px){ .li2-flow{ --flow-scale: 0.74; } }   /* @1260: 1169 in 1180 */
@media (max-width: 1259px){ .li2-flow{ --flow-scale: 0.70; } }   /* @1200: 1106 in 1120 */
@media (max-width: 1199px){ .li2-flow{ --flow-scale: 0.67; } }   /* @1140: 1059 in 1060 */
@media (max-width: 1139px){ .li2-flow{ --flow-scale: 0.63; } }   /* @1080: 995 in 1000 */
@media (max-width: 1079px){ .li2-flow{ --flow-scale: 0.59; } }   /* @1020: 932 in 940 */
@media (max-width: 1019px){ .li2-flow{ --flow-scale: 0.57; } }   /* @960: 901 in 912 */
@media (max-width: 991px){ .li2-flow{ --flow-scale: 0.53; } }   /* @901: 837 in 853 */

/* ── Out-wires: designer pulled them clear of the circle ─────
   The right-hand traces were overlapping the ring, so their left
   tips drew ON TOP of the pale circle. The Figma groups were
   moved right and shortened; both are re-measured here.

   Upper group now starts at x=992.5 — past the ring's right edge
   at 984 — and its three paths begin at staggered offsets of
   0/29/46.5 inside the group, so no upper line touches the ring.

   The lower group keeps its horizontal flip: its exported paths
   descend left-to-right, but the rendered fan ascends, so the
   -100% x-scale from the Figma node is still required. Without
   it the lower three lines would curve the wrong way. */
.li2-flow-wires-a{
    left: 992.5px; top: 92.5px;
    width: 287.5px; height: 159px;
}
.li2-flow-wires-b{
    left: 977px; top: 292.5px;
    width: 303px; height: 158.7px;
    transform: scaleX(-1);
}

/* ── Wire pulses  [DEAD] ─────────────────────────────────────
   Superseded by the dash overlay at the end of this file. This
   masked a moving white gradient through each wire SVG, which
   proved invisible — the traces are ~1px at this scale and a
   white highlight on a near-white background lightens the line
   instead of lighting it up. No markup uses .li2-flow-pulse.
   The wires are external <img> SVGs, so their paths are out of
   CSS's reach — stroke-dashoffset is not available. Instead each
   pulse layer uses its wire SVG as a MASK, so a moving highlight
   can only ever appear on the line itself. Geometry stays exactly
   where it was measured; nothing about the traces is duplicated.

   Direction reads left-to-right throughout: data arriving at the
   hub on the left, results leaving toward the cards on the right.
   The lower-right group is mirrored by scaleX(-1), which would
   reverse its sweep on screen — so that one runs in reverse to
   compensate and still travel rightward. */
.li2-flow-pulse{
    position: absolute;
    pointer-events: none;
    /* the wire art masks a travelling highlight */
    -webkit-mask-image: var(--wire);
            mask-image: var(--wire);
    -webkit-mask-size: 100% 100%;
            mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    background-image: linear-gradient(90deg,
        rgba(255,255,255,0)   0%,
        rgba(255,255,255,0)  34%,
        rgba(120,220,255,.55) 44%,
        rgba(255,255,255,.95) 50%,
        rgba(120,220,255,.55) 56%,
        rgba(255,255,255,0)  66%,
        rgba(255,255,255,0) 100%);
    background-repeat: no-repeat;
    background-size: 260% 100%;
    animation: li2FlowPulse 3.2s linear infinite;
}
@keyframes li2FlowPulse{
    from { background-position: -160% 0; }
    to   { background-position:  260% 0; }
}

/* each pulse sits exactly on its wire group */
.li2-flow-pulse--wires-in{ left: 398px;   top: 108.5px; width: 228px;   height: 320px; }
.li2-flow-pulse--wires-a{  left: 992.5px; top: 92.5px;  width: 287.5px; height: 159px;   animation-delay: .5s; }
.li2-flow-pulse--wires-b{
    left: 977px; top: 292.5px; width: 303px; height: 158.7px;
    transform: scaleX(-1);
    animation-delay: .9s;
    animation-direction: reverse;   /* cancels the mirror, so it still reads rightward */
}

@media (max-width: 900px){
    .li2-flow-pulse{ display: none; }   /* wires are hidden once stacked */
}
@media (prefers-reduced-motion: reduce){
    .li2-flow-pulse{ animation: none; display: none; }
}

/* ── Wire animation: data in, results out ────────────────────
   First attempt masked a moving white gradient through each wire
   SVG. It was invisible: the traces render ~1px at this scale and
   a WHITE highlight on a near-white background lightens the line
   rather than lighting it up.

   This instead overlays an inline SVG per wire group carrying the
   same path geometry, and animates stroke-dashoffset so one short,
   saturated dash travels along each line. The base <img> stays
   untouched, so the measured artwork and its gradients are
   unchanged — this only adds a moving highlight on top.

   Dash travel is left-to-right everywhere: data arriving at the
   hub from the left, results leaving toward the cards. The
   lower-right group is mirrored by scaleX(-1), so its dash runs in
   reverse to cancel that and still read rightward. */
.li2-flow-anim{
    position: absolute;
    overflow: visible;
    pointer-events: none;
}
.li2-flow-anim--wires-in{ left: 398px;   top: 108.5px; width: 228px;   height: 320px; }
.li2-flow-anim--wires-a{  left: 992.5px; top: 92.5px;  width: 287.5px; height: 159px; }
.li2-flow-anim--wires-b{
    left: 977px; top: 292.5px; width: 303px; height: 158.7px;
    transform: scaleX(-1);
}

.li2-flow-dash{
    fill: none;
    stroke: #12b6f8;
    stroke-width: 2.6;
    stroke-linecap: round;
    /* short lit segment, long gap — one pulse visible per line */
    stroke-dasharray: 20 420;
    stroke-dashoffset: 440;
    animation: li2WireDash 2.8s linear infinite;
    /* per-line stagger so the four/three don't fire in lockstep */
    animation-delay: calc(var(--i, 0) * .38s);
    filter: drop-shadow(0 0 3px rgba(18,182,248,.75));
}
/* decreasing offset walks the dash forward along the path */
@keyframes li2WireDash{
    from { stroke-dashoffset: 440; }
    to   { stroke-dashoffset: 0; }
}
/* mirrored group: run backwards so it still travels rightward */
.li2-flow-anim--wires-b .li2-flow-dash{ animation-direction: reverse; }

/* results leaving the hub read violet, matching the outbound
   gradient the designer used on that side */
.li2-flow-anim--wires-a .li2-flow-dash,
.li2-flow-anim--wires-b .li2-flow-dash{
    stroke: #7747b6;
    filter: drop-shadow(0 0 3px rgba(119,71,182,.7));
}

@media (max-width: 900px){
    .li2-flow-anim{ display: none; }   /* wires themselves are hidden here */
}
@media (prefers-reduced-motion: reduce){
    .li2-flow-anim{ display: none; }
}

/* ── Outcome cards: legible type + coloured active state ─────
   The cards sit INSIDE the stage, so the 0.80 fit-scale shrinks
   their text with everything else: the 18px label was rendering
   at 14.4px and the 13.5px description at 10.8px. Sizes are
   authored larger here to land near the intended effective size
   (22 -> 17.6px, 16 -> 12.8px).

   Cards also widen 320 -> 360 and shift left to keep their right
   edge on the stage boundary. The extra width keeps every
   description to two lines, which matters because the cards are
   centred on their wire's y: an active card must stay inside the
   104px pitch or it would collide with its neighbours. At two
   lines the clearance is 13px. The wires end at x=1280 and now
   run under the cards, which is fine — cards paint above them. */
.li2-flow-out{
    left: 1220px;
    width: 360px;
    padding: 16px 22px;
}
.li2-flow-out-label{
    font-size: 22px;
    line-height: 30px;
}
.li2-flow-out-desc > span{
    font-size: 16px;
    line-height: 24px;
}
.li2-flow-out-icon{
    width: 34px; height: 34px;
    border-radius: 9px;
}
.li2-flow-out-icon svg{ width: 21px; height: 21px; }

/* Active card carries brand colour rather than just a stronger
   shadow: a pale sky→violet wash, a blue border, and a gradient
   icon tile with the glyph knocked out in white. */
.li2-flow-out.is-active{
    background:
        linear-gradient(135deg, rgba(28,169,201,.10) 0%, rgba(40,99,195,.08) 52%, rgba(119,71,182,.10) 100%),
        var(--Base-White, #fcfcfc);
    border-color: rgba(40,99,195,.34);
    box-shadow: 0 20px 42px -20px rgba(14,72,165,.42), 0 1px 2px rgba(6,30,70,.05);
}
.li2-flow-out.is-active .li2-flow-out-icon{
    background: linear-gradient(135deg, #0e48a5 0%, #2863c5 52%, #7747b6 100%);
    color: #ffffff;
    box-shadow: 0 6px 14px -6px rgba(40,99,195,.5);
}
.li2-flow-out.is-active .li2-flow-out-label{
    color: var(--Royal-Blue-Blue-500, #0e48a5);
}

@media (max-width: 900px){
    /* stacked: the stage no longer scales, so the compensated sizes
       would read oversized — return them to their authored values */
    .li2-flow-out{ left: auto; width: auto; padding: 16px 20px; }
    .li2-flow-out-label{ font-size: 18px; line-height: 26px; }
    .li2-flow-out-desc > span{ font-size: 14px; line-height: 22px; }

}

/* ── Hub icon: network.png, gradient-tinted ──────────────────
   Replaces the drawn connector glyph. The source is black
   artwork on transparent, so it is used as a mask and filled
   with the brand gradient instead of being placed as-is — plain
   black would read as a foreign asset against this palette.

   The plain-background rule is the fallback (black icon) for any
   engine without mask-image; the @supports block upgrades it. */
.li2-flow-hub-icon{
    width: 58px;
    height: 58px;
    display: block;
    background: url("../../images/Insight%20Page/network.png") center / contain no-repeat;
}
@supports ((-webkit-mask-image: url("")) or (mask-image: url(""))){
    .li2-flow-hub-icon{
        background: linear-gradient(135deg, #1ca9c9 0%, #2863c5 52%, #7747b6 100%);
        -webkit-mask-image: url("../../images/Insight%20Page/network.png");
                mask-image: url("../../images/Insight%20Page/network.png");
        -webkit-mask-size: contain;
                mask-size: contain;
        -webkit-mask-repeat: no-repeat;
                mask-repeat: no-repeat;
        -webkit-mask-position: center;
                mask-position: center;
    }
}

/* ── Hub icon: plain image ───────────────────────────────────
   Supersedes the masked version. A mask-image that fails to load
   paints nothing, so the disc looked empty and there was no way
   to tell a broken path from a missing asset. An <img> either
   shows or reports a 404, which is debuggable.

   Kept black rather than gradient-tinted: tinting needs the mask
   route, and a visible icon beats a tinted invisible one. Say the
   word and I'll re-tint now that the path is known good. */
.li2-flow-hub-icon{
    width: 58px;
    height: 58px;
    display: block;
    background: none;
    -webkit-mask-image: none;
            mask-image: none;
    object-fit: contain;
    opacity: .82;   /* softens pure black against the pale disc */
}

/* ── Hub icon sizing (final) ─────────────────────────────────
   Declared at class + element weight to match the specificity of
   the older ".li2-flow-hub img" rules further up, which would
   otherwise keep winning on width/height. */
.li2-flow-hub img.li2-flow-hub-icon{
    width: 58px;
    height: 58px;
    display: block;
    object-fit: contain;
    opacity: .85;
}

/* ── Share collage rebuilt to Figma 3502:37861 ───────────────
   Revised arrangement plus a new bell badge. Every offset below
   is the LITERAL Figma coordinate inside that node's own
   342.551 x 216.775 box, and one transform scales the whole box
   to the 484px slot (484 / 342.551 = 1.41293). Authoring the raw
   Figma numbers keeps this diffable against the file rather than
   pre-multiplied by hand.

   Supersedes the previous collage offsets further up, which were
   authored against a 484x295 composition.
   =========================================================== */
.li2-hub-visual{ height: 309px; }        /* 211.001 * 1.46422 (Figma 3502:37861, current size) */

/* The stacked layout shrinks this collage with a transform, which
   paints smaller but reserves the SAME box — so the unpack rule
   further up re-states the height pre-multiplied by --vis-scale.
   The 309px above (and the 295px that rule was authored against)
   both land after it in the cascade, so that compensation was
   being clobbered: at 390px the box reserved 309px but painted
   179px, leaving ~130px of dead space above the first callout.
   Re-assert it here, against the current composition height. */
@media (max-width: 992px){
    .li2-hub-visual{ height: calc(309px * var(--vis-scale, 1)); }
}
/* Reduced motion kills the reveal with transform:none !important,
   which also takes out the responsive downscale — that is layout,
   not motion, so it has to survive or the collage renders at its
   full 484px width inside a ~358px column. */
@media (prefers-reduced-motion: reduce) and (max-width: 992px){
    .li2-hub-visual{ transform: scale(var(--vis-scale, 1)) !important; }
}
.li2-hv-inner{
    position: absolute;
    left: 0; top: 0;
    width: 330.551px;
    height: 211.001px;
    transform: scale(1.46422);
    transform-origin: top left;
}
.li2-hv-inner > *{ position: absolute; }

/* product shots — violet base rule + sky glow, per the design */
.li2-hv-inner .li2-hv-shot{
    display: block;
    object-fit: cover;
    border-bottom: 3px solid var(--Violet-Violet-450, #7747b6);
    box-shadow: 0 0 7px 0 var(--Turquoise-SkyBlue-200, #a6e1ef);
}
.li2-hv-inner .li2-hv-shot--dashboard{ left: 26px;     top: 0;       width: 304px;    height: 96px;      border-radius: 7px; }
.li2-hv-inner .li2-hv-shot--modal{     left: 138.51px; top: 60.61px; width: 190.491px; height: 150.387px; border-radius: 5px; }

/* Export menu: a CROPPED window, not a plain object-cover shot.
   Figma still points at the SAME source image but shows a shorter
   slice of its render instead of the full menu — the bottom
   "Share / Embed / Export" rows rather than the top of the list.
   Source height minus window height is the inner image's upward
   offset; the leftover horizontal offset (Figma's own -0.14% left)
   is sub-pixel noise. Repositioned per Figma 3855:66843 (2026-08-14
   Share & Collaborate collage revision — same content, new layout). */
.li2-hv-inner .li2-hv-shot--menu{
    left: 32.55px; top: 95px;
    width: 97px; height: 46px;
    border-radius: 6px;
    overflow: hidden;
}
.li2-hv-inner .li2-hv-shot--menu .li2-hv-shot-crop{
    position: absolute;
    left: 0; top: -59.29px;
    width: 97.27px; height: 105.29px;
    display: block;
    object-fit: cover;
}
.li2-hv-inner .li2-hv-shot--formats{   left: 66.55px;  top: 129px;   width: 74px;      height: 74px;       border-radius: 4px; }

/* sharing-channel chips — repositioned as a group per Figma
   3855:66843 (shifted up ~67px vs. the prior collage; internal
   icon offsets within each chip are unchanged). */
.li2-hv-inner .li2-hv-chip{
    width: 27.378px;
    border-radius: 4px;
    background: #ecf1ff;
    border-bottom: 2px solid var(--Violet-Violet-450, #7747b6);
    display: block;
    left: 0;
}
.li2-hv-inner .li2-hv-chip img{ position: absolute; display: block; }
.li2-hv-inner .li2-hv-chip--inapp{    top: 1.71px;   height: 27.378px; }
.li2-hv-inner .li2-hv-chip--inapp img{    left: 6.56px;  top: 7.33px;  width: 13.882px; height: 11.568px; }
.li2-hv-inner .li2-hv-chip--whatsapp{ top: 34.49px;  height: 26.993px; }
.li2-hv-inner .li2-hv-chip--whatsapp img{ left: 2.699px; top: 1.155px; width: 21.732px; height: 22.224px; border-radius: 4px; }
.li2-hv-inner .li2-hv-chip--teams{    top: 68.81px;  height: 26.993px; }
.li2-hv-inner .li2-hv-chip--teams img{    left: 6.17px;  top: 5.398px; width: 14.486px; height: 13.653px; border-radius: 4px; }

/* new: alert badge on the dashboard's top-right corner */
.li2-hv-bell{
    left: 300px; top: 6px;
    width: 20px; height: 20px;
    display: block;
}

/* ── Bell badge: stacking + focus behaviour ──────────────────
   BUG: the badge vanished exactly when "Stay Ahead with Alerts"
   was hovered. The dashboard it sits on gets z-index:5 from
   ".li2-hub.is-focused .li2-hv-shot.is-active", while the badge
   was z-index:auto — so the lifted shot painted straight over it.
   The badge needs to outrank that, hence 6.

   It also has to join the dim/highlight set: it carries
   data-hub-part="alerts", but it is neither .li2-hv-shot nor
   .li2-hv-chip, so neither the dimming rule nor the active rule
   was reaching it and it sat at full opacity regardless of which
   callout was focused. */
.li2-hv-bell{ z-index: 6; transition: opacity .3s ease, filter .3s ease; }

.li2-hub.is-focused .li2-hv-bell{
    opacity: var(--hub-dim);
    filter: saturate(.7);
}
.li2-hub.is-focused .li2-hv-bell.is-active{
    opacity: 1;
    filter: none;
}

@media (prefers-reduced-motion: reduce){
    .li2-hv-bell{ transition: opacity .15s linear !important; }
}
/* touch devices cannot hover, so nothing should sit dimmed */
@media (hover: none){
    .li2-hub.is-focused .li2-hv-bell{ opacity: 1; filter: none; }
}

/* ── Capabilities: tighten copy-to-visual gap ────────────────
   The space under each description came from two places: the
   description's own 28px bottom padding plus the visual's 20px
   top margin — 48px combined. Halved to 22px.

   The columns keep .fc-col-content{flex:1}, which pushes every
   visual to the bottom of an equal-height column so all four line
   up regardless of description length. That alignment is
   deliberate, so only the fixed padding/margin is reduced — the
   extra slack on shorter columns is what keeps the row even. */
.am-fc-grid .fc-col-desc{ padding-bottom: 10px; }
.am-fc-grid .fc-visual{ margin-top: 12px; }

/* ==== CTA & BUTTON STANDARD (site-wide) ==== */
/* Every action button on the site shares one size: 48px tall, 30px side
   padding, 16px label. The height comes from min-height plus centring,
   not vertical padding, so 0/1/2px borders all land on exactly 48px.
   The header and the mobile nav keep their compact buttons. The same
   block is copied into every page bundle; keep the copies identical. */
body :is(.btn-primary:not(.btn-primary--sm), .btn-demo--lg, .au-btn-demo--lg,
    .btn-ghost, .ab-btn-ghost, .ld-btn-ghost, .ld-btn-outline, .ind-btn-ghost,
    .fi-btn-ghost, .hr-btn-ghost, .mk-btn-ghost, .sl-btn-ghost,
    .hero-btn-outline, .hero-btn-demo, .dm2-ghost-btn, .explore-btn,
    .pr-btn-gradient, .pr-btn-outline, .pr-btn-ghost, .pr-tbl-plan__cta,
    .cs-form__submit, .ct-form__submit, .rd-form__submit, .pt-form__submit,
    .rls-signin, .footer-cta-button):not(.site-header *, header *, .mobile-nav-panel *){
    box-sizing: border-box;
    height: auto;
    min-height: 48px;
    padding: 0 30px;
    font-size: 16px;
    line-height: 20px;
    font-weight: 600;   /* one weight for every CTA — matches the homepage */
    align-items: center;
    justify-content: center;
}
/* Buttons that were plain blocks need flex so the label centres vertically. */
body :is(.btn-ghost, .pr-btn-gradient, .pr-btn-outline, .pr-btn-ghost, .pr-tbl-plan__cta):not(.site-header *, header *, .mobile-nav-panel *){
    display: flex;
}

/* End-of-page CTA card: one height on every page (460px on desktop, 570px
   on tablet where the copy wraps more), copy centred vertically, width
   follows the container. */
@media (min-width: 768px){
    .mcp-cta-card, .au-cta__card, .di-final-cta__card, .ld-cta__card{
        box-sizing: border-box;
        min-height: 460px;
        display: flex;
        flex-direction: column;
        justify-content: center;
    }
}
@media (min-width: 768px) and (max-width: 1023px){
    .mcp-cta-card, .au-cta__card, .di-final-cta__card, .ld-cta__card{ min-height: 570px; }
}
/* 128px of clear space above and below this page's CTA card. */
@media (min-width: 768px){
    .li2-page .li2-section.li2-midcta{ padding-top: 128px; padding-bottom: 128px; }
}

/* Secondary CTA appearance — the geometry above only unified SIZE, which is
   why these still looked different page to page. The gradient border uses the
   padding-box / border-box layer pair so it respects border-radius.
   --cta-surface is the colour the button sits ON; set it (and --cta-ink) on a
   light section so the inner fill and label stay legible there. */
body :is(.btn-demo--lg, .au-btn-demo--lg, .btn-ghost, .ab-btn-ghost, .ld-btn-ghost,
    .ind-btn-ghost, .fi-btn-ghost, .hr-btn-ghost, .mk-btn-ghost, .sl-btn-ghost,
    .hero-btn-outline, .hero-btn-demo, .dm2-ghost-btn):not(.site-header *, header *, .mobile-nav-panel *,
    .au-cta__card *, .di-final-cta__card *, .dm2-res-cta *, .mcp-cta-card *) {
    border: 2px solid transparent;
    border-radius: 6px;
    background:
        linear-gradient(var(--cta-surface, #051A3C), var(--cta-surface, #051A3C)) padding-box,
        var(--Explore-Button, linear-gradient(270deg, #7747b6 0%, #4075c9 50.7%, #1ca9c9 100%)) border-box;
    color: var(--cta-ink, #fcfcfc);
    font-family: 'Inter', sans-serif;
    font-weight: 600;   /* matches the primary — homepage CTA is the source of truth */
    text-decoration: none;
    transition: filter .22s ease, transform .22s cubic-bezier(.22,.61,.36,1);
}
body :is(.btn-demo--lg, .au-btn-demo--lg, .btn-ghost, .ab-btn-ghost, .ld-btn-ghost,
    .ind-btn-ghost, .fi-btn-ghost, .hr-btn-ghost, .mk-btn-ghost, .sl-btn-ghost,
    .hero-btn-outline, .hero-btn-demo, .dm2-ghost-btn):not(.site-header *, header *, .mobile-nav-panel *,
    .au-cta__card *, .di-final-cta__card *, .dm2-res-cta *, .mcp-cta-card *):hover {
    filter: brightness(1.1);
    transform: translateY(-1px);
}
/* ==== /CTA & BUTTON STANDARD ==== */
