/* ============================================================
   Jaro — shared site stylesheet (renovation 2026)
   Hand-written CSS, no build step.
   RTL-first: layout uses logical properties, so the same file
   serves the future LTR /en rebuild via the html dir attribute.
   Brand tokens mirror the original palette from
   jaro-site.webflow.css (#1472ff, #19caff, neutral scale).
   Visual direction: "aurora light" — soft layered gradient
   washes + dot-grid texture on a light base; product visuals
   are hand-coded UI vignettes (.mock/.v-*), not images.
   ============================================================ */

/* ---------- fonts (self-hosted Rubik, hebrew + latin subsets) ---------- */
@font-face{font-family:'Rubik';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/rubik/rubik-hebrew-400.woff2') format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;}
@font-face{font-family:'Rubik';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/rubik/rubik-latin-400.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Rubik';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/rubik/rubik-hebrew-500.woff2') format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;}
@font-face{font-family:'Rubik';font-style:normal;font-weight:500;font-display:swap;src:url('/fonts/rubik/rubik-latin-500.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
@font-face{font-family:'Rubik';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/rubik/rubik-hebrew-700.woff2') format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;}
@font-face{font-family:'Rubik';font-style:normal;font-weight:700;font-display:swap;src:url('/fonts/rubik/rubik-latin-700.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}
/* display face for headlines only (single weight; body stays Rubik) */
@font-face{font-family:'Secular One';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/secular/secular-one-hebrew-400.woff2') format('woff2');unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F;}
@font-face{font-family:'Secular One';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/secular/secular-one-latin-400.woff2') format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;}

/* ---------- tokens ---------- */
:root{
  --blue:#1472ff;          /* brand primary (accent--primary-1) */
  --blue-dark:#0d5bd6;     /* buttons/small links — 6:1 on white (AA) */
  --cyan:#19caff;          /* brand accent (jaro-blue) */
  --ink:#161a1f;           /* headings (neutral--800) */
  --body:#404c59;          /* body text */
  --muted:#4a5d73;         /* 6.8:1 on white — AA+ for small text */
  --line:#d8e1ec;
  --bg-soft:#f7fafd;
  --bg-tint:#eef5ff;
  --navy:#0E2340;          /* dark band — shared with campaign pages */
  --navy-2:#16345C;
  --wa:#25D366;            /* WhatsApp */
  --ok:#2fbf71; --warn:#f5a524; --hot:#e5484d;
  --radius:14px; --radius-sm:10px; --pill:30px;
  --container:1140px;
  --font:'Rubik','Assistant','Segoe UI',Arial,sans-serif;
  --shadow-card:0 1px 3px rgba(22,26,31,.07),0 14px 32px -14px rgba(22,26,31,.20);
  --shadow-lift:0 4px 10px rgba(22,26,31,.05),0 22px 44px -16px rgba(20,114,255,.22);
  --shadow-mock:0 18px 44px -18px rgba(14,35,64,.42),0 10px 24px -14px rgba(20,114,255,.28); /* deep + blue ambient glow */
}
/* registered so the score-ring fill can animate; falls back to static 84% */
@property --fill{syntax:'<percentage>';inherits:false;initial-value:84%;}

/* ---------- reset / base ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;font-family:var(--font);font-size:17px;line-height:1.65;color:var(--body);background:#fff;-webkit-font-smoothing:antialiased}
img{max-width:100%;height:auto;display:block}
h1,h2,h3,h4{color:var(--ink);line-height:1.25;margin:0 0 .5em;font-weight:700;overflow-wrap:break-word}
h1,h2{font-family:'Secular One',var(--font);font-weight:400} /* display face carries the weight on its own */
h1{font-size:clamp(33px,5.2vw,52px);line-height:1.18}
h2{font-size:clamp(28px,4vw,42px)}
h3{font-size:20px}
p{margin:0 0 1em}
a{color:var(--blue-dark)}
ul{margin:0;padding:0}
:focus-visible{outline:3px solid var(--cyan);outline-offset:2px;border-radius:4px}
::selection{background:var(--cyan);color:var(--navy)}
[id]{scroll-margin-top:88px} /* sticky-header offset for anchor arrivals */

.container{max-width:var(--container);margin-inline:auto;padding-inline:20px}
.section{position:relative;padding-block:clamp(56px,9vw,96px)}
.section-tint{background:
  radial-gradient(560px 320px at 100% 0%,rgba(25,202,255,.10),transparent 60%),
  radial-gradient(560px 320px at 0% 100%,rgba(20,114,255,.09),transparent 60%),
  linear-gradient(180deg,var(--bg-soft),#fff)}
.section-head{max-width:640px;margin-inline:auto;text-align:center;margin-block-end:clamp(32px,5vw,52px)}
.section-head h2::after{content:'';display:block;width:58px;height:4px;border-radius:2px;background:linear-gradient(90deg,var(--blue),var(--cyan));margin:14px auto 0}
.section-head p{color:var(--body);font-size:19px}
.center{text-align:center}
.kicker{display:inline-block;font-weight:700;font-size:13.5px;letter-spacing:.05em;color:var(--blue-dark);background:var(--bg-tint);border:1px solid rgba(20,114,255,.18);border-radius:999px;padding:5px 14px;margin-block-end:14px} /* section eyebrow — breaks the scroll monotony, mirrors the cmd-live pill */

.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;inset-inline-start:12px;top:-52px;z-index:100;background:var(--navy);color:#fff;padding:10px 18px;border-radius:0 0 10px 10px;text-decoration:none;font-weight:500;transition:top .15s}
.skip-link:focus{top:0}

/* ---------- buttons ---------- */
.btn{position:relative;overflow:hidden;display:inline-flex;align-items:center;justify-content:center;gap:9px;font-family:inherit;font-weight:700;font-size:16px;line-height:1.2;text-align:center;text-decoration:none;border:none;cursor:pointer;border-radius:var(--pill);padding:15px 30px;transition:transform .15s ease,box-shadow .15s ease,background-color .15s ease,border-color .15s ease}
.btn:active{transform:scale(.97)}
.btn-primary{background:var(--blue-dark);color:#fff;box-shadow:0 12px 24px -10px rgba(20,114,255,.55)} /* 6:1 — #1472ff is 4.3:1, fails AA at button size */
.btn-primary:hover{background:#0a4bb5;transform:translateY(-1px)}
.btn-ghost{background:rgba(255,255,255,.75);color:var(--blue-dark);border:1.5px solid rgba(20,114,255,.35);backdrop-filter:blur(4px)}
.btn-ghost:hover{border-color:var(--blue);transform:translateY(-1px)}
.btn-wa{background:var(--wa);color:var(--navy)} /* white-on-WA-green is 1.98:1; navy is 7.95:1 */
.btn-wa:hover{background:#1fb658;transform:translateY(-1px)}
.btn svg{flex:none}

/* ---------- header ---------- */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.88);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-block-end:1px solid var(--line);transition:box-shadow .25s ease,background-color .25s ease}
.site-header.scrolled{background:rgba(255,255,255,.96);box-shadow:0 10px 30px -18px rgba(14,35,64,.3)}
.nav{display:flex;align-items:center;gap:26px;min-height:68px}
.nav-logo{display:flex;align-items:center}
.nav-logo img{height:32px;width:auto}
.nav-links{display:none;align-items:center;gap:26px;list-style:none;margin:0;padding:0}
.nav-links a{position:relative;color:var(--ink);text-decoration:none;font-weight:500;font-size:15.5px}
.nav-links a::after{content:'';position:absolute;inset-inline:0;bottom:-7px;height:2px;border-radius:2px;background:linear-gradient(90deg,var(--blue),var(--cyan));transform:scaleX(0);transform-origin:100% 50%;transition:transform .25s ease}
.nav-links a:hover::after,.nav-links a:focus-visible::after{transform:scaleX(1)}
.nav-links a:hover{color:var(--blue-dark)}
.nav-actions{display:flex;align-items:center;gap:16px;margin-inline-start:auto}
.nav-login,.nav-lang{color:var(--ink);text-decoration:none;font-weight:500;font-size:15.5px}
.nav-login:hover,.nav-lang:hover{color:var(--blue-dark)}
.nav-lang{color:var(--muted);font-weight:700;font-size:14px;letter-spacing:.04em}
.nav .btn{padding:11px 22px;font-size:15px}
.nav-toggle{display:inline-flex;flex-direction:column;justify-content:center;gap:5px;width:44px;height:44px;padding:10px;background:none;border:none;cursor:pointer;border-radius:8px}
.nav-toggle span{display:block;height:2px;width:100%;background:var(--ink);border-radius:2px;transition:transform .2s,opacity .2s}
.nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
.nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.nav-menu{display:none;border-block-start:1px solid var(--line);background:#fff;padding:10px 20px 18px}
.nav-menu.open{display:block}
.nav-menu ul{list-style:none;display:flex;flex-direction:column;gap:2px}
.nav-menu a{display:block;padding:11px 4px;color:var(--ink);text-decoration:none;font-weight:500;font-size:16.5px;border-block-end:1px solid var(--bg-soft)}
.nav-menu a:hover{color:var(--blue-dark)}
@media (min-width:960px){
  .nav-links{display:flex}
  .nav-toggle,.nav-menu{display:none !important}
}
@media (max-width:519px){
  .nav .btn{display:none} /* CTA lives in the menu on small phones */
}

/* ---------- hero (aurora) ---------- */
.hero{position:relative;overflow:hidden;padding-block:clamp(48px,7vw,88px);background:linear-gradient(180deg,#fff 0%,var(--bg-soft) 100%)}
.hero::before{ /* aurora washes */
  content:'';position:absolute;inset:-25%;pointer-events:none;
  background:
    radial-gradient(38% 42% at 16% 22%,rgba(25,202,255,.30),transparent 62%),
    radial-gradient(46% 52% at 86% 26%,rgba(20,114,255,.24),transparent 64%),
    radial-gradient(36% 40% at 55% 95%,rgba(25,202,255,.18),transparent 60%);
  filter:blur(46px)}
.hero::after{ /* dot-grid texture, fades toward edges */
  content:'';position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(rgba(14,35,64,.12) 1px,transparent 1.3px);
  background-size:22px 22px;
  -webkit-mask-image:radial-gradient(62% 68% at 50% 34%,#000 30%,transparent 78%);
  mask-image:radial-gradient(62% 68% at 50% 34%,#000 30%,transparent 78%)}
.hero .container{position:relative;z-index:1}
.hero-grid{display:grid;grid-template-columns:1fr;gap:48px;align-items:center}
.hero-eyebrow{display:inline-flex;align-items:center;gap:8px;color:var(--blue-dark);font-weight:700;font-size:14.5px;background:rgba(255,255,255,.7);border:1px solid rgba(20,114,255,.22);border-radius:999px;padding:6px 14px;margin-block-end:18px;backdrop-filter:blur(4px)}
.hero-eyebrow::before{content:'';width:8px;height:8px;border-radius:50%;background:var(--cyan)}
.hero h1{margin-block-end:14px}
.hero .hl{background:linear-gradient(transparent 52%,rgba(25,202,255,.6) 52%) 100% 0/100% 100% no-repeat}
/* the h1 is centred, so a rotor that resizes per keystroke would shunt "באמצעות AI" left and right.
   js measures the longest phrase into min-width; text-align:start pins the word's right edge (rtl)
   and it grows leftward into the reserve. */
.rotor{display:inline-block;min-inline-size:var(--rotor-w,auto);text-align:start;unicode-bidi:isolate;white-space:nowrap} /* two-word center types never split mid-phrase */
.rotor .hl{display:inline-block} /* box = the line box, so the marker sits tight under the word instead of the font's 84px content area */
@media (max-width:639px){.hero-top .rotor{display:block;min-inline-size:0;width:max-content;max-width:100%;margin-inline:auto}} /* own line on phones — nothing follows it, so drop the reserve and let the marker hug the word */
.hero-sub{font-size:19px;color:var(--body);max-width:34em;margin-block-end:26px}
.hero-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-block-end:26px}
/* centered hero: copy block on top, full-width console stage below */
.hero-top{text-align:center;max-width:820px;margin-inline:auto}
.hero-top h1{max-width:16em;margin-inline:auto;margin-block-end:14px}
.hero-top .hero-sub{margin-inline:auto}
.hero-ctas{justify-content:center}
ul.trust{justify-content:center;max-width:640px;margin-inline:auto} /* wraps the 4 boxes into a symmetric 2+2 */
@media (min-width:960px){
  .hero-grid{gap:38px}
  .hero-top h1{font-size:clamp(40px,4.4vw,58px)}
  .hero-shot{max-width:1010px;margin-inline:auto;width:100%}
  .hero-shot .hero-mock{max-width:none} /* outscores the base 520px cap declared later in the file */
}

/* trust strip — hero: two-line outcome-stat chips (bold lead + muted micro-line) */
.trust{display:flex;flex-wrap:wrap;gap:10px;list-style:none}
.trust li{display:inline-flex;flex-direction:column;align-items:center;text-align:center;gap:2px;border:1px solid transparent;background:linear-gradient(rgba(255,255,255,.85),rgba(255,255,255,.85)) padding-box,linear-gradient(150deg,rgba(20,114,255,.35),rgba(25,202,255,.35)) border-box;border-radius:12px;padding:9px 16px;font-size:14.5px;font-weight:500;color:var(--ink);box-shadow:0 1px 2px rgba(22,26,31,.04);backdrop-filter:blur(4px)}
.trust li b{font-weight:700;font-size:16.5px;color:var(--blue-dark);font-variant-numeric:tabular-nums}
.trust li span{font-size:13px;color:var(--muted)}
/* form variant: one-line reassurance pills with the checkmark (objection-handlers, not stats) */
.trust-form{justify-content:center;margin-block-start:12px}
.trust-form li{flex-direction:row;gap:6px;background:var(--bg-soft);border:1px solid var(--line);border-radius:999px;padding:6px 12px;box-shadow:none;backdrop-filter:none}
.trust-form li b{font-size:13px;color:var(--ink);font-weight:600}
.trust-form li span{font-size:12.5px}
.trust-form li::before{content:'';flex:none;width:13px;height:13px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath fill='none' stroke='%231472ff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round' d='M2.5 8.5l3.5 3.5 7.5-8'/%3E%3C/svg%3E") center/contain no-repeat}

/* ============================================================
   hand-coded product vignettes (.mock) — shared visual language
   ============================================================ */
.mock{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow-mock);overflow:hidden;font-size:13.5px;line-height:1.45;width:100%}
.mock-head{display:flex;align-items:center;gap:5px;padding:9px 12px;border-block-end:1px solid var(--line);background:linear-gradient(180deg,#fbfdff,#f4f8fd)}
.mock-head i{width:8px;height:8px;border-radius:50%;background:#dbe4ee}
.mock-head i:nth-child(1){background:var(--cyan)}
.mock-title{font-weight:700;color:var(--ink);font-size:13px;margin-inline-start:6px}
.film-toggle{margin-inline-start:auto;width:24px;height:24px;flex:none;display:flex;align-items:center;justify-content:center;padding:0;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--muted);cursor:pointer;transition:color .15s,border-color .15s}
.film-toggle[hidden]{display:none} /* author display:flex would defeat the UA [hidden] rule — without this, reduced-motion/no-JS visitors see a dead button */
.film-toggle:hover,.film-toggle:focus-visible{color:var(--ink);border-color:var(--muted)}
.film-toggle .ic-play{display:none}
.film-toggle[aria-pressed="true"] .ic-pause{display:none}
.film-toggle[aria-pressed="true"] .ic-play{display:block}
.mock-body{padding:12px}

/* alert rows */
.a-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--line);border-radius:9px;background:#fff}
.a-row + .a-row{margin-block-start:8px}
.a-row .sev{width:9px;height:9px;border-radius:50%;flex:none}
.a-row.hot .sev{background:var(--hot);box-shadow:0 0 0 4px rgba(229,72,77,.14)}
.a-row.warn .sev{background:var(--warn);box-shadow:0 0 0 4px rgba(245,165,36,.16)}
.a-row.ok .sev{background:var(--ok);box-shadow:0 0 0 4px rgba(47,191,113,.14)}
.a-row b{display:block;font-size:13.5px;color:var(--ink);line-height:1.3}
.a-row small{color:var(--muted);font-size:12px}

/* score ring (conic) */
.ring{width:86px;height:86px;border-radius:50%;background:conic-gradient(var(--blue) 0 var(--fill,84%),var(--line) 0 100%);display:grid;place-items:center;flex:none}
.ring > span{width:64px;height:64px;border-radius:50%;background:#fff;display:grid;place-items:center;font-weight:700;color:var(--ink);font-size:20px}
.ring-label{font-size:12px;color:var(--muted);text-align:center;margin-block-start:6px}

/* sparkline / bars */
.spark{display:block;width:100%;height:44px}
.bars{display:flex;align-items:flex-end;justify-content:space-between;gap:7px;height:64px;padding-block-start:6px} /* space-between: bars fill the mock width instead of hugging one edge */
.bars i{width:15px;border-radius:4px 4px 0 0;background:linear-gradient(180deg,var(--cyan),var(--blue))}
.bars i.dim{background:var(--bg-tint)}

/* light-theme agent leaderboard (dashboards feature card; base .ag rules live in the cmd section) */
.ag-cap{display:block;font-size:12px;color:var(--muted);font-weight:500;margin:10px 0 8px}
.mock .ag + .ag{margin-block-start:8px}
.mock .ag > span{width:56px;font-size:12px;color:var(--muted)}
.mock .ag i{background:var(--bg-tint)}
.mock .ag b{color:var(--ink)}

/* KPI tiles */
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-block-end:10px}
.kpis.k2{grid-template-columns:1fr 1fr} /* the "דשבורד ביצועים" feature-card mock */
.kpi{position:relative;background:var(--bg-soft);border:1px solid var(--line);border-radius:9px;padding:8px 10px;min-width:0}
.kpi .delta{position:absolute;inset-inline-end:8px;inset-block-start:8px;font-style:normal;font-weight:700;font-size:10.5px;color:#1d7a4a} /* trend badge, like the live dashboard; LRM in the markup keeps the digits ordered — direction:ltr here would flip the logical inset onto the number */
.cmd .kpi .delta{color:#7FE0AE;inset-block-start:12px;inset-inline-end:12px}
.kpi b{display:block;font-size:17.5px;color:var(--ink);line-height:1.2;font-variant-numeric:tabular-nums}
.kpi span{font-size:12px;color:var(--muted)}

/* status chips */
.chip{display:inline-block;border-radius:999px;padding:2px 9px;font-size:12px;font-weight:500;line-height:1.5}
.chip-pos{background:rgba(47,191,113,.13);color:#1d7a4a}
.chip-neg{background:rgba(229,72,77,.12);color:#b3383c}
.chip-neu{background:var(--bg-tint);color:var(--blue-dark)}

/* transcript bubbles + player */
.tr-wrap{display:flex;flex-direction:column;gap:7px}
.tr-b{max-width:86%;padding:7px 11px;border-radius:11px;font-size:13px;line-height:1.45}
.tr-agent{background:var(--bg-tint);color:var(--ink);border-start-start-radius:3px;align-self:flex-start}
.tr-cust{background:var(--navy);color:#fff;border-start-end-radius:3px;align-self:flex-end}
.tr-play{display:flex;align-items:center;gap:9px;margin-block-start:10px}
.tr-play .pp{width:24px;height:24px;border-radius:50%;background:var(--blue);flex:none;display:grid;place-items:center;color:#fff}
.tr-play .pb{flex:1;height:4px;border-radius:2px;background:var(--line);position:relative}
.tr-play .pb i{position:absolute;inset-inline-start:0;top:0;bottom:0;width:55%;border-radius:2px;background:linear-gradient(90deg,var(--blue),var(--cyan))}
.tr-play small{color:var(--muted);font-size:11.5px;direction:ltr}

/* summary vignette */
.sum-line{height:8px;border-radius:4px;background:var(--bg-tint);margin-block-end:7px}
.sum-line.w80{width:80%}.sum-line.w60{width:60%}
.sum-li{display:flex;gap:8px;align-items:baseline;font-size:13.5px;color:var(--ink);margin-block-end:6px}
.sum-li::before{content:'';width:6px;height:6px;border-radius:50%;background:var(--cyan);flex:none;transform:translateY(-1px)}
.sum-tags{display:flex;gap:6px;margin-block-start:9px}
.tools-note{display:block;color:var(--muted);font-size:11px;margin-block-start:8px} /* Research Agent "tools used" line, like the real app */
/* Research-Agent artifacts: a chart the agent "generated" + a proactive insight callout */
.ra-chart{border:1px solid var(--line);border-radius:9px;background:var(--bg-soft);padding:7px 10px 9px;margin-block-start:9px}
.ra-chart small{display:block;font-size:11px;color:var(--muted);margin-block-end:2px}
.ra-chart .bars{height:34px;gap:5px;padding-block-start:2px}
.ra-chart .bars i{flex:1;width:auto;border-radius:3px 3px 0 0}
.ra-insight{margin-block-start:9px;padding:6px 10px;border-inline-start:3px solid var(--cyan);border-radius:6px;background:var(--bg-tint);font-size:12px;line-height:1.45;color:var(--ink)}
.ra-insight b{color:var(--blue-dark)}
/* CRM hand-off vignette: the call's summary lands as CRM record fields */
.crm-flow{display:flex;align-items:center;gap:8px;margin-block-end:10px}
.cf-node{border:1px solid var(--line);background:var(--bg-soft);border-radius:999px;padding:3px 10px;font-size:12px;font-weight:500;color:var(--ink);white-space:nowrap}
.cf-node.cf-crm{background:linear-gradient(140deg,var(--blue),var(--cyan));color:#fff;border:none;font-weight:700}
.cf-arrow{display:flex;color:var(--blue-dark)}
.crm-flow .chip{margin-inline-start:auto}
.crm-field{border:1px solid var(--line);border-radius:9px;background:var(--bg-soft);padding:6px 10px}
.crm-field + .crm-field{margin-block-start:7px}
.crm-field > small{display:block;font-size:10.5px;color:var(--muted)}
.crm-field > span{display:flex;flex-wrap:wrap;gap:5px;font-size:12.5px;color:var(--ink);font-weight:500;line-height:1.4}
/* Insights vignette: the emailed summary's trend chart (sits inside .ra-chart) */
.mini-spark{display:block;width:100%;height:40px;margin-block-start:4px}
.mini-spark .line{fill:none;stroke:var(--blue);stroke-width:2;stroke-linecap:round;vector-effect:non-scaling-stroke}
.mini-spark .head{fill:var(--blue)}

/* ---------- hero mock composition ---------- */
.hero-shot{position:relative;padding-block:10px 28px} /* bottom slack so the 3D-projected sat-ring never clips at the section edge */
.hero-mock{position:relative;max-width:940px;margin-inline:auto}
.hero-mock .mock-body{padding:14px}
.hero-mock .mock-body.film-body{padding:0}
.hero-video{display:block;width:100%;height:auto;background:var(--bg-soft)}
/* desktop film is a 1:1 app recreation — legible only at >=700px. Phones get the purpose-built cut. */
.hero-video-d{aspect-ratio:1280 / 800}
.hero-video-m{aspect-ratio:640 / 560;display:none}
@media (max-width:699px){.hero-video-d{display:none}.hero-video-m{display:block}}
.sat{position:absolute;background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 18px 40px -16px rgba(14,35,64,.38);padding:10px 14px;z-index:2}
.sat-alert{inset-inline-start:-14px;top:-36px;display:grid;font-size:13.5px;font-weight:500;color:var(--ink)} /* raised clear of the mock-head title */
/* rotating alert toasts — stacked in one grid cell so the card keeps the widest toast's size */
.sat-alert .toast{grid-area:1/1;display:flex;align-items:center;gap:9px;white-space:nowrap}
.sat-alert .toast:not(:first-child){display:none} /* static / reduced-motion: a single alert */
.toast .sev{width:9px;height:9px;border-radius:50%;flex:none}
.toast.hot .sev{background:var(--hot);box-shadow:0 0 0 4px rgba(229,72,77,.15)}
.toast.warn .sev{background:var(--warn);box-shadow:0 0 0 4px rgba(245,165,36,.16)}
.toast.ok .sev{background:var(--ok);box-shadow:0 0 0 4px rgba(47,191,113,.14)}
.sat-ring{inset-inline-end:-12px;bottom:-14px;display:flex;align-items:center;gap:10px}
.sat-ring .ring{width:64px;height:64px}
.sat-ring .ring > span{width:46px;height:46px;font-size:16px}
.sat-ring b{font-size:13.5px;color:var(--ink);max-width:90px;line-height:1.35}
.sat-mail{inset-inline-end:-10px;top:-14px;display:flex;align-items:center;gap:9px;font-size:13.5px}
.sat-mail b{color:var(--ink);font-size:13.5px}
.sat-live{inset-inline-start:-10px;bottom:-16px;display:flex;align-items:center;gap:9px;font-size:13.5px;font-weight:500;color:var(--ink)}
.wave{display:inline-flex;align-items:flex-end;gap:2px;height:16px}
.wave i{width:3px;height:100%;border-radius:2px;background:linear-gradient(180deg,var(--cyan),var(--blue));transform-origin:bottom}
@media (max-width:639px){
  .sat-mail,.sat-live{display:none} /* keep the small hero uncluttered */
}
@media (max-width:519px){
  .sat-alert{inset-inline-start:-4px}
  .sat-ring{inset-inline-end:-4px;bottom:-12px}
}

/* ---------- customer logo strip (marquee; static wrap under reduced motion) ---------- */
.logostrip{border-block:1px solid var(--line);background:#fff;padding-block:20px;overflow:hidden}
.logostrip .container{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px 26px}
.logostrip .label{font-size:13.5px;color:var(--muted);font-weight:500;flex:none}
.logos-viewport{display:flex;flex:1 1 320px;min-width:0;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 12%,#000 88%,transparent)}
.logostrip ul{list-style:none;display:flex;flex:none;align-items:center;gap:44px;padding-inline-end:44px;margin:0}
.logostrip li{font-weight:700;font-size:16px;color:var(--muted);letter-spacing:.01em;white-space:nowrap} /* 4.9:1 — #93a1b3 failed AA */
.logostrip li:hover{color:var(--body)}
.logostrip img{height:32px;width:auto;display:block}
@media (hover:hover){ /* monochrome at rest equalizes the mixed-weight marks; color returns on hover (marquee pauses there). touch devices keep full color — they have no hover to recover it */
  .logostrip img{filter:grayscale(1) opacity(.72);transition:filter .2s}
  .logostrip li:hover img{filter:none}
}
.logostrip img.lg{height:46px} /* the square/compact marks read too small at the base size */
.logostrip .strip-stat{flex-basis:100%;text-align:center;margin:4px 0 0;font-size:13.5px;color:var(--muted);font-weight:500} /* own row under the marquee */
.logostrip .strip-stat b{color:var(--ink);font-weight:700}
@media (prefers-reduced-motion:reduce){
  .logos-viewport{overflow:visible;flex-basis:auto;-webkit-mask-image:none;mask-image:none}
  .logostrip ul{flex-wrap:wrap;justify-content:center;gap:10px 28px;padding-inline-end:0}
  .logostrip ul[aria-hidden]{display:none}
}

/* ---------- feature cards ---------- */
.cards{display:grid;grid-template-columns:1fr;gap:20px}
@media (min-width:640px){.cards{grid-template-columns:1fr 1fr}}
@media (min-width:960px){.cards{grid-template-columns:1fr 1fr 1fr}}
.fcard{border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-card);transition:transform .18s ease,box-shadow .18s ease;
  border:1px solid transparent;
  background:linear-gradient(#fff,#fff) padding-box,linear-gradient(150deg,var(--line),var(--line)) border-box}
.fcard:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift);
  background:linear-gradient(#fff,#fff) padding-box,linear-gradient(150deg,rgba(20,114,255,.55),rgba(25,202,255,.55)) border-box}
.fcard-shot{display:flex;justify-content:center;align-items:center;padding:18px 20px;height:300px;perspective:700px; /* equal height so card text aligns across the row */
  background:
    radial-gradient(rgba(14,35,64,.09) 1px,transparent 1.3px), /* dot-grid stage — same texture language as the hero/flow */
    radial-gradient(120% 90% at 85% -10%,rgba(25,202,255,.14),transparent 55%),
    linear-gradient(165deg,var(--bg-tint),#f6faff 70%,#fff);
  background-size:18px 18px,auto,auto}
@media (max-width:639px){.fcard-shot{height:auto;padding-block:18px}} /* the equal-height stage only earns its keep in multi-column rows */
.fcard-shot .mock{max-width:320px;box-shadow:0 14px 34px -16px rgba(14,35,64,.38),0 8px 20px -12px rgba(20,114,255,.3);transition:transform .3s ease,box-shadow .3s ease} /* scaled-down --shadow-mock: deep drop + blue ambient glow */
.fcard-shot .mock.ra{max-width:340px} /* the richer Research-Agent vignette needs the extra line length */
.mock.ra .tr-b{max-width:100%} /* keeps the Q&A bubbles on one line each at this width */
.fcard-body{padding:20px 22px 24px}
.fcard-body h3{margin-block-end:6px}
.fcard-body p{margin:0;font-size:16px}
.fcard-body sub{font-size:12px;color:var(--muted);vertical-align:baseline}

/* ---------- live command center (navy band) ---------- */
.cmd{position:relative;overflow:hidden;background:linear-gradient(150deg,var(--navy),var(--navy-2));color:#fff;
  --cut:clamp(22px,3.4vw,52px); /* Stripe-style diagonal edges */
  clip-path:polygon(0 0,100% var(--cut),100% 100%,0 calc(100% - var(--cut)));
  padding-block:calc(clamp(56px,9vw,96px) + var(--cut))}
.cmd::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(52% 70% at 12% 8%,rgba(25,202,255,.22),transparent 60%),
             radial-gradient(40% 55% at 90% 95%,rgba(20,114,255,.18),transparent 60%)}
.cmd::after{content:'';position:absolute;inset:0;pointer-events:none; /* cyan, not white — navy is the brand blue's shadow, the texture is what makes it say so */
  background-image:radial-gradient(rgba(25,202,255,.14) 1px,transparent 1.3px);background-size:24px 24px;
  -webkit-mask-image:radial-gradient(60% 70% at 50% 18%,#000 10%,transparent 75%);
  mask-image:radial-gradient(60% 70% at 50% 18%,#000 10%,transparent 75%)}
.cmd .container{position:relative;z-index:1}
.cmd .section-head h2{color:#fff}
.cmd .section-head p{color:#C9D6EA}
.cmd-live{display:inline-flex;align-items:center;gap:8px;color:#9FE7FF;font-weight:700;font-size:13.5px;border:1px solid rgba(25,202,255,.4);border-radius:999px;padding:5px 14px;margin-block-end:14px;background:rgba(25,202,255,.08)}
.cmd-live span{width:8px;height:8px;border-radius:50%;background:var(--cyan)}
.cmd-board{display:grid;gap:12px;padding:16px;border-radius:18px;
  grid-template-columns:1.15fr .85fr;
  grid-template-areas:"kpis kpis" "chart feed" "trans agents"; /* named areas auto-flip for RTL */
  background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.14);box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 34px 80px -32px rgba(0,0,0,.55)} /* top inner highlight = glass edge catching light */
.cmd-kpis{grid-area:kpis;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}
.cmd .kpi{background:linear-gradient(180deg,rgba(255,255,255,.075),rgba(255,255,255,.035));border-color:rgba(255,255,255,.12);box-shadow:inset 0 1px 0 rgba(255,255,255,.07);padding:14px 16px}
.cmd .kpi b{color:#fff;font-size:26px}
.cmd .kpi span{color:#C9D6EA;font-size:13px}
.cmd .kpi.k-hi{background:linear-gradient(140deg,rgba(20,114,255,.18),rgba(25,202,255,.1));border-color:rgba(25,202,255,.38)} /* the 100% promise tile — accent, not trend */
.cmd .kpi.k-hi b{background:linear-gradient(90deg,#9FE7FF,var(--cyan));-webkit-background-clip:text;background-clip:text;color:transparent} /* count-up rewrites textContent only, the clip survives */
.cmd .kpi .delta.live{display:inline-flex;align-items:center;gap:5px;color:#9FE7FF}
.cmd .kpi .delta.live span{width:7px;height:7px;border-radius:50%;background:var(--cyan)}
.cmd-panel{border:1px solid rgba(255,255,255,.12);border-radius:12px;padding:12px;background:rgba(255,255,255,.04);box-shadow:inset 0 1px 0 rgba(255,255,255,.05);min-width:0}
.cmd-panel > small{display:block;font-size:12.5px;font-weight:500;color:#AFC3DE;margin-block-end:8px}
.cmd-chart{grid-area:chart;display:flex;flex-direction:column}
.cmd-chart svg{display:block;width:100%;flex:1;min-height:140px;background:repeating-linear-gradient(to top,rgba(255,255,255,.07) 0 1px,transparent 1px 28px)} /* flexes to fill the panel; gridlines behind the curve */
.cmd-chart .line{fill:none;stroke:var(--cyan);stroke-width:3;stroke-linecap:round;vector-effect:non-scaling-stroke}
.cmd-chart .head{fill:var(--cyan)}
.cmd-feed{grid-area:feed}
.feed-vp{height:184px;overflow:hidden;
  -webkit-mask-image:linear-gradient(#000 72%,transparent);mask-image:linear-gradient(#000 72%,transparent)}
.feed-vp ul{list-style:none;margin:0;padding:0}
.cmd .a-row{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.12);height:56px} /* fixed row height keeps the ticker step math exact (56+8 = 64px step in feed-tick) */
.cmd .a-row + .a-row{margin-block-start:0}
.feed-vp .a-row{margin-block-end:8px}
.cmd .a-row > div{flex:1;min-width:0}
.cmd .a-row b{color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmd .a-row small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#AFC3DE}
.cmd-trans{grid-area:trans;display:flex;flex-direction:column}
.cmd-trans .sum-tags{margin-block-start:auto;padding-block-start:12px} /* chips pinned to the panel bottom — no dead strip */
.cmd .tr-cust{background:var(--blue)}
.cmd-agents{grid-area:agents}
.ag{display:flex;align-items:center;gap:10px}
.ag + .ag{margin-block-start:14px}
.ag > span{flex:none;width:86px;font-size:12.5px;color:#DDE8F7}
.ag i{flex:1;height:12px;border-radius:6px;background:rgba(255,255,255,.16);position:relative;overflow:hidden}
.ag i::after{content:'';position:absolute;inset-block:0;inset-inline-start:0;width:var(--w,0%);border-radius:6px;background:linear-gradient(90deg,#3f8dff,var(--cyan))}
.ag b{flex:none;color:#fff;font-size:13px;font-variant-numeric:tabular-nums}
.cmd .chip-neu{background:rgba(25,202,255,.16);color:#9FE7FF}
.cmd .chip-pos{background:rgba(47,191,113,.2);color:#7FE0AE}
.cmd .chip-neg{background:rgba(229,72,77,.22);color:#FFB1B3}
.cmd-cta{margin-block-start:36px}
@media (max-width:719px){
  .cmd-board{grid-template-columns:1fr;grid-template-areas:"kpis" "chart" "feed" "trans" "agents"}
  .cmd-kpis{grid-template-columns:1fr 1fr}
}
@media (prefers-reduced-motion:reduce){
  .feed-vp{height:auto;-webkit-mask-image:none;mask-image:none} /* static list instead of the ticker */
  .feed-vp ul[aria-hidden]{display:none}
}

/* ---------- use-cases (three equal cards + full-width breadth bar) ---------- */
.uc-bento{display:grid;grid-template-columns:1fr;gap:20px}
@media (min-width:960px){
  .uc-bento{grid-template-columns:repeat(3,1fr)}
  .uc-more{grid-column:1/-1}
}
.uc-cell{position:relative;overflow:hidden;display:flex;flex-direction:column;background:rgba(255,255,255,.8);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--radius);padding:26px 26px 24px;box-shadow:var(--shadow-card);transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}
.uc-cell:hover{transform:translateY(-3px);box-shadow:var(--shadow-lift);border-color:rgba(20,114,255,.3)}
.uc-cell::before{content:'';position:absolute;inset-block-start:0;inset-inline:0;height:3px;background:linear-gradient(90deg,var(--uc-a1,var(--blue)),var(--uc-a2,var(--cyan)))}
.uc-cell h3{display:inline-flex;align-self:start;align-items:center;background:var(--bg-tint);color:var(--blue-dark);border-radius:999px;padding:8px 18px;font-size:18.5px;margin-block-end:18px}
.uc-pain{font-weight:700;color:var(--ink);margin-block-end:10px}
.uc-cell > p{font-size:15.5px}
.uc-with{margin-block-start:auto;border-block-start:1px solid var(--line);padding-block-start:16px}
.uc-with b{display:block;color:var(--ink);margin-block-end:8px}
/* slim "works for any center" bar under the three cards */
.uc-more{display:flex;flex-wrap:wrap;align-items:center;gap:10px;background:rgba(255,255,255,.8);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:var(--radius);padding:16px 22px;box-shadow:var(--shadow-card)}
.uc-more b{color:var(--ink);font-size:15.5px}
.uc-more ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.uc-more li{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 14px;font-size:14px;font-weight:500;color:var(--ink)}
.uc-more li:last-child{background:var(--bg-tint);color:var(--blue-dark);border-color:rgba(20,114,255,.18)} /* "ועוד" echoes the .kicker pill */
.checks{list-style:none;display:flex;flex-direction:column;gap:7px}
.checks li{position:relative;padding-inline-start:26px;font-size:15.5px;color:var(--body)}
.checks li::before{content:'';position:absolute;inset-inline-start:0;top:4px;width:16px;height:16px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Ccircle cx='8' cy='8' r='8' fill='%23eef5ff'/%3E%3Cpath fill='none' stroke='%231472ff' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='M4.5 8.4l2.4 2.4 4.8-5.4'/%3E%3C/svg%3E") center/contain no-repeat}

/* ---------- how it works (call → AI core → artifacts flow) ---------- */
.flow{position:relative;isolation:isolate;--artH:132px;margin-block-start:10px}
.flow::after{ /* faint dot-grid backdrop gives the flow a stage without boxing it */
  content:'';position:absolute;inset:-26px -10px;z-index:-1;pointer-events:none;
  background-image:radial-gradient(rgba(14,35,64,.11) 1px,transparent 1.3px);background-size:20px 20px;
  -webkit-mask-image:radial-gradient(72% 92% at 50% 38%,#000 22%,transparent 76%);
  mask-image:radial-gradient(72% 92% at 50% 38%,#000 22%,transparent 76%)}
.beam{display:none;position:absolute;z-index:0;inset-inline-start:12%;inset-inline-end:50%;top:calc(var(--artH)/2 - 1px);height:2px;border-radius:1px;
  background:linear-gradient(90deg,var(--blue),var(--cyan)); /* rtl: physical left edge is the core, so blue lands there */
  box-shadow:0 0 14px rgba(20,114,255,.4)}
/* the core's output fan — the beam stops at step 2, four streams carry it to the four chips.
   preserveAspectRatio="none" stretches user space; strokes opt out via the non-scaling-stroke attribute.
   the box flips with inset-inline but svg user space does not — [dir=ltr] would need transform:scaleX(-1). */
.fan{display:none;position:absolute;z-index:0;top:0;height:var(--artH);inset-inline-start:50%;width:50%} /* explicit width: an svg with a viewBox is a replaced element, so an inset-inline-end pair would be ignored for its intrinsic size */
.fan path{fill:none;stroke-width:2;stroke-linecap:round}
.fan .track{stroke:rgba(20,114,255,.22)}
.fan .pulse{stroke-dasharray:14 100;stroke-dashoffset:-114} /* pathLength=100, so this parks the dash past the end until the motion gate runs it */
.fan .p1{stroke:var(--blue)}.fan .p2{stroke:var(--hot)}.fan .p3{stroke:var(--warn)}.fan .p4{stroke:var(--ok)}
.fdot{position:absolute;top:calc(50% - 4px);inset-inline-start:-1%;width:8px;height:8px;border-radius:50%;background:var(--cyan);
  box-shadow:0 0 0 4px rgba(25,202,255,.16),0 0 12px rgba(25,202,255,.7);opacity:0} /* visible only inside the motion gate */
.fl-steps{position:relative;z-index:1;display:grid;grid-template-columns:1fr;gap:38px;list-style:none;margin:0;padding:0;counter-reset:fl}
.fl-step{position:relative;counter-increment:fl;display:flex;flex-direction:column;align-items:center;text-align:center}
.fl-step + .fl-step::before{content:'';position:absolute;top:-31px;height:24px;width:2px;inset-inline-start:calc(50% - 1px);border-radius:1px;background:linear-gradient(180deg,var(--cyan),var(--blue))} /* stacked layout: short connector drops between steps */
.fl-art{display:flex;align-items:center;justify-content:center;height:var(--artH)}
.fl-cap{margin-block-start:8px}
.fl-cap h3{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:9px;font-size:17px;margin:0 0 4px}
.fl-cap h3::before{content:counter(fl);display:grid;place-items:center;width:26px;height:26px;border-radius:50%;background:var(--blue-dark);color:#fff;font-size:13.5px;font-weight:700;box-shadow:0 6px 14px -6px rgba(20,114,255,.6);flex:none}
.fl-cap p{margin:0;font-size:14.5px;color:var(--muted);line-height:1.45}
/* step 1 artifact: the raw call, equalizer playing */
.fl-audio{display:flex;align-items:center;gap:14px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 18px;box-shadow:var(--shadow-card)}
.fl-audio .wave{height:26px;gap:3px}
.fl-audio .wave i{width:4px}
.fl-meta{text-align:start}
.fl-meta b{display:block;color:var(--ink);font-size:14.5px;line-height:1.3}
.fl-meta small{color:var(--muted);font-size:12px}
.fnum{direction:ltr;unicode-bidi:embed;color:var(--muted);font-weight:500}
/* step 2 artifact: the AI core (dashed halo spins inside the motion gate) */
.core{position:relative;display:grid;place-items:center;width:88px;height:88px;border-radius:26px;color:#fff;
  background:linear-gradient(140deg,var(--blue),var(--cyan));box-shadow:0 14px 30px -10px rgba(20,114,255,.55)}
.core::before{content:'';position:absolute;inset:-10px;border-radius:32px;border:2px dashed rgba(20,114,255,.4)}
.core svg{display:block}
/* step 3 artifact: the output fan on a glass tray */
.fl-outs{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;max-width:290px;background:rgba(255,255,255,.75);backdrop-filter:blur(6px);border:1px solid var(--line);border-radius:16px;padding:12px;box-shadow:var(--shadow-card)}
.fl-chip{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--line);border-radius:999px;padding:5px 12px;font-size:13px;font-weight:500;color:var(--ink);white-space:nowrap}
.fl-chip::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--blue);flex:none}
.fl-chip.c2::before{background:var(--hot)}
.fl-chip.c3::before{background:var(--warn)}
.fl-chip.c4::before{background:var(--ok)}
@media (min-width:960px){
  .flow{--artH:194px} /* four 1fr chip rows: 2 border + 24 padding + 4*37.6 + 3*6 gap */
  .fl-steps{grid-template-columns:repeat(3,1fr);gap:20px}
  .fl-step + .fl-step::before{display:none}
  .beam,.fan{display:block}
  /* one chip per row, so each stream has its own target. rows are 1fr of a fixed --artH, so the
     centres (31.6/75.2/118.8/162.4 — the fan's path endpoints) don't move with the font. */
  .fl-outs{height:100%;max-width:230px;display:grid;grid-template-columns:1fr;grid-template-rows:repeat(4,1fr);gap:6px}
}
.pipe-line{text-align:center;font-weight:700;color:var(--ink);font-size:20px;max-width:30em;margin:36px auto 24px;text-wrap:balance}
.cta-line{font-size:17px;color:var(--muted);margin:0 0 16px}
.how-points{display:flex;flex-direction:column;gap:14px}
.how-points > div{display:flex;gap:12px;align-items:baseline}
.how-points b{color:var(--ink)}
.how-points p{margin:0;font-size:15.5px}
.how-points .dot{flex:none;width:9px;height:9px;border-radius:50%;background:var(--cyan);transform:translateY(-1px)}
.pipe-points > div{background:rgba(255,255,255,.75);border:1px solid var(--line);border-radius:12px;padding:14px 18px}
@media (min-width:960px){
  .pipe-points{flex-direction:row;gap:20px}
  .pipe-points > div{flex:1}
}

/* ---------- security band ---------- */
.band{position:relative;overflow:hidden;background:linear-gradient(150deg,var(--navy),var(--navy-2));color:#fff;
  --cut:clamp(22px,3.4vw,52px); /* mirrored diagonal — opposite slope to .cmd for rhythm */
  clip-path:polygon(0 var(--cut),100% 0,100% 100%,0 100%)}
.band .band-grid{padding-block-start:calc(clamp(48px,7vw,76px) + var(--cut))}
.band::before{content:'';position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(52% 70% at 88% 10%,rgba(25,202,255,.22),transparent 60%),
             radial-gradient(40% 55% at 8% 95%,rgba(20,114,255,.18),transparent 60%)}
.band::after{content:'';position:absolute;inset:0;pointer-events:none; /* cyan dot texture, matching .cmd */
  background-image:radial-gradient(rgba(25,202,255,.14) 1px,transparent 1.3px);background-size:24px 24px;
  -webkit-mask-image:radial-gradient(55% 75% at 82% 30%,#000 10%,transparent 75%);
  mask-image:radial-gradient(55% 75% at 82% 30%,#000 10%,transparent 75%)}
.band .container{position:relative;z-index:1}
.band h2{color:#fff}
.band-grid{display:grid;grid-template-columns:1fr;gap:34px;align-items:center;padding-block:clamp(48px,7vw,76px)}
@media (min-width:960px){.band-grid{grid-template-columns:1.2fr .8fr}}
.band p{color:#C9D6EA;font-size:17.5px;max-width:36em;margin:0}
.band-points{display:flex;flex-direction:column;gap:18px}
.band-points div{display:flex;align-items:center;gap:14px;color:#DDE8F7;font-weight:500;font-size:16.5px}
.band-points svg{flex:none;color:var(--cyan)}
.band-link{display:inline-block;margin-block-start:16px;color:#9FE7FF;font-weight:500;text-decoration:underline;text-underline-offset:3px}
.band-link:hover{color:#fff}

/* ---------- FAQ ---------- */
.faq{max-width:760px;margin-inline:auto;display:flex;flex-direction:column;gap:12px}
.faq details{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:0 1px 2px rgba(22,26,31,.03);transition:border-color .2s ease,box-shadow .2s ease}
.faq details:hover{border-color:rgba(20,114,255,.25);box-shadow:var(--shadow-card)}
.faq details[open]{border-color:rgba(20,114,255,.35)}
.faq summary{display:flex;justify-content:space-between;align-items:center;gap:16px;cursor:pointer;padding:17px 22px;font-weight:500;font-size:17.5px;color:var(--ink);list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:'+';flex:none;font-size:24px;font-weight:400;color:var(--blue-dark);line-height:1;transition:transform .25s cubic-bezier(.2,.7,.3,1)}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details > div{padding:0 22px 18px;font-size:16px}
.faq details > div p{margin:0}

/* ---------- demo / contact ---------- */
.demo-grid{display:grid;grid-template-columns:1fr;gap:44px;align-items:start}
@media (min-width:960px){.demo-grid{grid-template-columns:.85fr 1.15fr;gap:60px}}
.contact-list{display:flex;flex-direction:column;gap:20px;margin-block-start:28px}
.contact-item{display:flex;align-items:center;gap:14px;text-decoration:none;transition:transform .2s ease}
.contact-item:hover{transform:translateX(-4px)} /* RTL: forward = left */
.contact-item svg{flex:none;color:var(--blue-dark);transition:transform .2s ease}
.contact-item:hover svg{transform:scale(1.12)}
.contact-item b{display:block;color:var(--ink);font-size:16px}
.contact-item span span,.contact-item > span > span{color:var(--blue-dark);font-weight:700;direction:ltr;unicode-bidi:embed}
.contact-ctas{display:flex;flex-wrap:wrap;gap:12px;margin-block-start:26px}
.form-card{background:rgba(255,255,255,.85);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:16px;padding:clamp(22px,4vw,32px);box-shadow:var(--shadow-card)}
.form-grid{display:grid;grid-template-columns:1fr;gap:16px}
@media (min-width:640px){.form-grid{grid-template-columns:1fr 1fr}.form-grid .full{grid-column:1/-1}}
.field label{display:block;font-weight:500;color:var(--ink);font-size:15px;margin-block-end:6px}
.field input,.field textarea{width:100%;font-family:inherit;font-size:16px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:var(--radius-sm);padding:12px 14px;transition:border-color .15s,box-shadow .15s}
.field textarea{min-height:96px;resize:vertical}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(20,114,255,.16)}
.form-card .btn{width:100%}
.form-error{display:none;background:#FBEDED;border:1px solid #E8B9B9;color:#8A2525;border-radius:var(--radius-sm);padding:12px 16px;font-weight:500;font-size:15.5px;margin-block-start:14px}
.form-error.show{display:block}
.form-note{font-size:13.5px;color:var(--muted);margin:10px 0 0;text-align:center}
.demo-alt{font-size:18px;margin:0}
@media (max-width:959px){.demo-grid .form-card{order:-1}} /* anchor arrivals land on the form; contacts follow */
.demo-steps{margin-block-start:clamp(32px,5vw,48px);counter-reset:ds}
.demo-steps > div{counter-increment:ds;align-items:flex-start}
.demo-steps .dot{width:26px;height:26px;display:flex;align-items:center;justify-content:center;background:var(--blue-dark);color:#fff;font-size:13.5px;font-weight:700;transform:none}
.demo-steps .dot::after{content:counter(ds)}

/* ---------- sticky mobile CTA bar ---------- */
.cta-bar{position:fixed;inset-inline:0;inset-block-end:0;z-index:60;display:none;gap:10px;padding:10px 16px calc(10px + env(safe-area-inset-bottom));padding-left:66px;background:rgba(255,255,255,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-block-start:1px solid var(--line);box-shadow:0 -10px 30px -12px rgba(14,35,64,.25)} /* physical padding-left: the Enable widget launcher is fixed to the bottom-LEFT corner in any text direction */
.cta-bar .btn{flex:1;padding:13px 10px;font-size:15.5px}
.cta-bar .btn-primary{flex:1.35} /* the demo CTA outweighs WhatsApp — equal widths gave them equal billing */
html.js .cta-bar.hide{opacity:0;visibility:hidden;translate:0 12px} /* JS-only refinement — without JS the bar simply stays visible */
@media (max-width:639px){.cta-bar{display:flex}}

/* ---------- footer ---------- */
.site-footer{position:relative;background:var(--navy);color:#9FB1CC;padding-block:44px 28px;font-size:15px}
.site-footer::before{content:'';position:absolute;top:0;inset-inline:0;height:2px;background:linear-gradient(90deg,var(--blue),var(--cyan) 50%,var(--blue))}
.footer-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:24px;padding-block-end:26px}
.footer-logo img{height:30px;width:auto;filter:brightness(0) invert(1)}
.footer-nav ul{list-style:none;display:flex;flex-wrap:wrap;gap:8px 24px}
.footer-nav a{color:#C9D6EA;text-decoration:none}
.footer-nav a:hover{color:#fff}
.footer-bottom{border-block-start:1px solid rgba(255,255,255,.14);padding-block-start:20px;display:flex;flex-wrap:wrap;gap:10px 24px;justify-content:space-between;font-size:13.5px}
.footer-bottom a{color:#C9D6EA;text-decoration:none}
.footer-bottom a:hover{color:#fff}
.footer-contact span{direction:ltr;unicode-bidi:embed}

/* ============================================================
   motion & micro-interactions — everything in this block is
   gated on prefers-reduced-motion; the page is fully usable
   and complete with zero animation.
   ============================================================ */
@media (prefers-reduced-motion:no-preference){
  /* hero load choreography */
  @keyframes rise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
  .r1,.r2,.r3,.r4{opacity:0;animation:rise .6s cubic-bezier(.2,.7,.3,1) forwards}
  .r1{animation-delay:.05s}.r2{animation-delay:.16s}.r3{animation-delay:.27s}.r4{animation-delay:.38s}
  @keyframes drift{from{transform:translate3d(0,0,0) rotate(0)}to{transform:translate3d(2%,-2%,0) rotate(2deg)}}
  .hero::before{animation:drift 26s ease-in-out infinite alternate}
  @keyframes pulse{0%,100%{box-shadow:0 14px 30px -10px rgba(20,114,255,.55)}50%{box-shadow:0 14px 34px -8px rgba(25,202,255,.75)}}
  .core{animation:pulse 3.2s ease-in-out infinite} /* base pulse also covers no-JS, where .flow.in never lands */
  .hero .trust li{opacity:0;animation:rise .55s cubic-bezier(.2,.7,.3,1) forwards} /* hero entrance only — an unscoped .trust li would hide the form's reassurance row */
  .hero .trust li:nth-child(1){animation-delay:.42s}.hero .trust li:nth-child(2){animation-delay:.49s}
  .hero .trust li:nth-child(3){animation-delay:.56s}.hero .trust li:nth-child(4){animation-delay:.63s}
  .hero .hl{background-size:0% 100%;animation:hl-sweep .5s ease-out .45s forwards} /* finishes at .95s — the typewriter starts at 1s so the sweep lands first */
  @keyframes hl-sweep{to{background-size:100% 100%}}
  /* once the typewriter takes over (.typed, permanent) the entrance sweep dies — its 'forwards' fill
     would override any class rule — and the marker sweeps in only when a word completes */
  .js .rotor.typed .hl{animation:none;background-size:100% 100%;transition:background-size .3s ease-out}
  .js .rotor.typed.typing .hl{background-size:0% 100%}
  .js .rotor-caret{display:inline-block;width:2px;height:.72em;margin-inline-start:3px;border-radius:1px;background:var(--blue-dark);vertical-align:-.04em;animation:caret-blink 1.1s step-end infinite} /* exists only when the typewriter JS injected it */
  @keyframes caret-blink{50%{opacity:0}}

  /* hero dashboard feels live: satellites pop then float, ring fills */
  .hero-mock .mock-head i:nth-child(1){animation:blink 2.8s ease-in-out infinite}
  @keyframes blink{0%,100%{opacity:1}50%{opacity:.35}}
  @keyframes pop-in{from{opacity:0;transform:translate3d(0,10px,var(--z,0px)) scale(.85)}to{opacity:1;transform:translate3d(0,0,var(--z,0px))}}
  @keyframes float{0%,100%{transform:translate3d(0,0,var(--z,0px))}50%{transform:translate3d(0,-7px,var(--z,0px))}}
  .sat-alert{animation:pop-in .5s cubic-bezier(.2,.7,.3,1) .9s both,float 5.5s ease-in-out 1.4s infinite}
  .sat-ring{animation:pop-in .5s cubic-bezier(.2,.7,.3,1) 1.05s both,float 6.5s ease-in-out 1.55s infinite}
  .sat-mail{animation:pop-in .5s cubic-bezier(.2,.7,.3,1) 1.2s both} /* pops in and rests — only two satellites float */
  .sat-live{animation:pop-in .5s cubic-bezier(.2,.7,.3,1) 1.35s both}
  .sat-ring .ring{animation:ring-fill 1.1s ease-out 1.15s backwards}
  @keyframes ring-fill{from{--fill:0%}}
  @keyframes sev-ping{0%{box-shadow:0 0 0 0 rgba(229,72,77,.4)}70%{box-shadow:0 0 0 9px rgba(229,72,77,0)}100%{box-shadow:0 0 0 0 rgba(229,72,77,0)}}
  .toast.hot .sev,.a-row.hot .sev{animation:sev-ping 2.4s ease-out infinite}

  /* hero alert toasts rotate inside the floating notification (first pops right after the card lands at ~1.4s) */
  .sat-alert .toast:not(:first-child){display:flex}
  .sat-alert .toast{opacity:0;animation:toast-cycle 12s ease-in-out infinite}
  .sat-alert .toast:nth-child(1){animation-delay:1s}
  .sat-alert .toast:nth-child(2){animation-delay:5s}
  .sat-alert .toast:nth-child(3){animation-delay:9s}
  @keyframes toast-cycle{0%{opacity:0;transform:translateY(7px)}3%,29%{opacity:1;transform:none}33%,100%{opacity:0;transform:translateY(-7px)}} /* wide holds, but exit MUST complete by 33.3% (delays are 4s apart) — the toasts stack in one cell, a later exit double-exposes onto the next toast */

  /* the live-call waveform loops */
  .wave i{animation:weq .9s ease-in-out infinite alternate}
  .wave i:nth-child(2){animation-delay:.12s}.wave i:nth-child(3){animation-delay:.24s}
  .wave i:nth-child(4){animation-delay:.36s}.wave i:nth-child(5){animation-delay:.48s}
  @keyframes weq{from{transform:scaleY(.3)}to{transform:scaleY(1)}}

  /* the film-toggle pause silences the whole hero stage, not just the video — universal on purpose,
     so a future satellite/toast/keyframe can't slip past the pause (an allowlist already missed the ring fill) */
  .hero-mock.film-paused *,.hero-mock.film-paused *::before,.hero-mock.film-paused *::after{animation-play-state:paused}

  .cta-bar{transition:opacity .25s ease,translate .25s ease,visibility .25s ease}

  /* scroll-reveal system — hidden only under html.js; IntersectionObserver adds .in */
  @keyframes rise-in{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}
  .js [data-reveal]:not(.in){opacity:0}
  [data-reveal].in{animation:rise-in .7s cubic-bezier(.2,.7,.3,1) var(--d,0s) backwards}
  .js [data-stagger]:not(.in) > *{opacity:0}
  [data-stagger].in > *{animation:rise-in .65s cubic-bezier(.2,.7,.3,1) backwards}
  [data-stagger].in > :nth-child(1){animation-delay:.05s}
  [data-stagger].in > :nth-child(2){animation-delay:.13s}
  [data-stagger].in > :nth-child(3){animation-delay:.21s}
  [data-stagger].in > :nth-child(4){animation-delay:.29s}
  [data-stagger].in > :nth-child(5){animation-delay:.37s}
  [data-stagger].in > :nth-child(6){animation-delay:.45s}
  .section-head.in h2::after{animation:grow-bar .55s cubic-bezier(.2,.7,.3,1) .25s backwards}
  @keyframes grow-bar{from{transform:scaleX(0)}}
  @keyframes num-pop{from{transform:scale(0)}60%{transform:scale(1.15)}to{transform:scale(1)}}
  [data-stagger].in .checks li::before{animation:num-pop .45s cubic-bezier(.2,.7,.3,1) backwards}
  [data-stagger].in .checks li:nth-child(1)::before{animation-delay:.45s}
  [data-stagger].in .checks li:nth-child(2)::before{animation-delay:.53s}
  [data-stagger].in .checks li:nth-child(3)::before{animation-delay:.61s}
  [data-stagger].in .checks li:nth-child(4)::before{animation-delay:.69s}

  /* how-it-works flow: beam draws, artifacts pop onto it, energy dots ride into the core */
  .flow.in .beam{animation:rail-draw .8s ease-out both;transform-origin:100% 50%} /* [dir=ltr]: origin 0% 50% */
  @keyframes rail-draw{from{transform:scaleX(0)}}
  .flow.in .fl-audio{animation:pop-in .55s cubic-bezier(.2,.7,.3,1) .15s backwards}
  .flow.in .core{animation:pop-in .55s cubic-bezier(.2,.7,.3,1) .35s backwards,pulse 3.2s ease-in-out 1.2s infinite}
  .flow.in .fl-outs{animation:pop-in .55s cubic-bezier(.2,.7,.3,1) .5s backwards}
  .flow.in .fl-chip{animation:num-pop .45s cubic-bezier(.2,.7,.3,1) backwards}
  .flow.in .fl-chip:nth-child(1){animation-delay:.7s}
  .flow.in .fl-chip:nth-child(2){animation-delay:.78s}
  .flow.in .fl-chip:nth-child(3){animation-delay:.86s}
  .flow.in .fl-chip:nth-child(4){animation-delay:.94s}
  .flow.in .fl-cap h3::before{animation:num-pop .5s cubic-bezier(.2,.7,.3,1) backwards}
  .flow.in .fl-step:nth-child(1) .fl-cap h3::before{animation-delay:.35s}
  .flow.in .fl-step:nth-child(2) .fl-cap h3::before{animation-delay:.5s}
  .flow.in .fl-step:nth-child(3) .fl-cap h3::before{animation-delay:.65s}
  .core::before{animation:spin 16s linear infinite}
  @keyframes spin{to{transform:rotate(360deg)}}
  .fdot{animation:fdot-run 4.2s linear infinite}
  .fdot:nth-child(2){animation-delay:1.4s}
  .fdot:nth-child(3){animation-delay:2.8s}
  @keyframes fdot-run{0%{inset-inline-start:-1%;opacity:0}8%,92%{opacity:1}100%{inset-inline-start:100%;opacity:0}}
  /* a dot vanishes behind the core at 92% of its 4.2s run (3.9s), then every 1.4s — neither animation is
     gated on .in, so both start at parse time and the four streams fire on each arrival, for free */
  .fan .pulse{animation:fan-run 1.4s linear 3.9s infinite}
  .fan .p2{animation-delay:3.95s}.fan .p3{animation-delay:4s}.fan .p4{animation-delay:4.05s}
  @keyframes fan-run{from{stroke-dashoffset:0}to{stroke-dashoffset:-114}}

  /* security band: glow breathes, icons draw themselves (pathLength=1 in markup) */
  .band::before{animation:band-breathe 14s ease-in-out infinite alternate}
  @keyframes band-breathe{from{opacity:1}to{opacity:.6}}
  .band-points.in svg :is(path,rect,circle){stroke-dasharray:1 1;animation:draw .9s ease-out backwards}
  @keyframes draw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}
  .band-points.in > div:nth-child(1) svg :is(path,rect,circle){animation-delay:.25s}
  .band-points.in > div:nth-child(2) svg :is(path,rect,circle){animation-delay:.45s}
  .band-points.in > div:nth-child(3) svg :is(path,rect,circle){animation-delay:.65s}

  /* customer marquee */
  .logostrip ul{animation:marquee 30s linear infinite}
  .logostrip:hover ul{animation-play-state:paused}
  @keyframes marquee{to{transform:translateX(100%)}}

  /* command center: KPIs + panels rise, chart draws itself, alert feed ticks, bubbles "type" in */
  @keyframes ping-cyan{0%{box-shadow:0 0 0 0 rgba(25,202,255,.45)}70%{box-shadow:0 0 0 9px rgba(25,202,255,0)}100%{box-shadow:0 0 0 0 rgba(25,202,255,0)}}
  .cmd-live span,.cmd .kpi .delta.live span{animation:ping-cyan 2.2s ease-out infinite}
  .cmd-board.in .kpi{animation:rise-in .5s cubic-bezier(.2,.7,.3,1) backwards}
  .cmd-board.in .cmd-kpis .kpi:nth-child(1){animation-delay:.15s}
  .cmd-board.in .cmd-kpis .kpi:nth-child(2){animation-delay:.22s}
  .cmd-board.in .cmd-kpis .kpi:nth-child(3){animation-delay:.29s}
  .cmd-board.in .cmd-kpis .kpi:nth-child(4){animation-delay:.36s}
  .cmd-board.in .cmd-panel{animation:rise-in .55s cubic-bezier(.2,.7,.3,1) backwards}
  .cmd-board.in .cmd-chart{animation-delay:.3s}
  .cmd-board.in .cmd-feed{animation-delay:.38s}
  .cmd-board.in .cmd-trans{animation-delay:.46s}
  .cmd-board.in .cmd-agents{animation-delay:.54s}
  .cmd-board.in .line{stroke-dasharray:100;stroke-dashoffset:100;animation:draw-line 1.6s ease-out .5s forwards}
  @keyframes draw-line{to{stroke-dashoffset:0}}
  @keyframes fade-in{to{opacity:1}}
  .cmd-board.in .area{opacity:0;animation:fade-in .8s ease 1.4s forwards}
  .cmd-board.in .head{opacity:0;animation:fade-in .4s ease 1.6s forwards,blink 2.6s ease-in-out 2.2s infinite}
  .cmd-board.in .feed-vp .a-row{animation:rise-in .5s cubic-bezier(.2,.7,.3,1) backwards}
  .cmd-board.in .feed-vp li:nth-child(1){animation-delay:.5s}
  .cmd-board.in .feed-vp li:nth-child(2){animation-delay:.58s}
  .cmd-board.in .feed-vp li:nth-child(3){animation-delay:.66s}
  .cmd-board.in .feed-vp li:nth-child(4){animation-delay:.74s}
  .cmd-board.in .feed-vp ul{animation:feed-tick 16s cubic-bezier(.2,.7,.3,1) 2s infinite} /* the band's one perpetual element */
  @keyframes feed-tick{0%,18%{transform:translateY(0)}25%,43%{transform:translateY(-64px)}50%,68%{transform:translateY(-128px)}75%,93%{transform:translateY(-192px)}100%{transform:translateY(-256px)}}
  .cmd-feed:hover .feed-vp ul{animation-play-state:paused}
  .cmd-board.in .tr-b{animation:say .6s ease-out both}
  .cmd-board.in .tr-b:nth-child(1){animation-delay:.9s}
  .cmd-board.in .tr-b:nth-child(2){animation-delay:1.5s}
  @keyframes say{from{opacity:0;clip-path:inset(0 0 0 100%)}to{opacity:1;clip-path:inset(0 0 0 0)}} /* RTL typing reveal; mirror the inset side under [dir=ltr] for /en */
  .cmd-board.in .sum-tags .chip{animation:num-pop .45s cubic-bezier(.2,.7,.3,1) backwards}
  .cmd-board.in .sum-tags .chip:nth-child(1){animation-delay:2.1s}
  .cmd-board.in .sum-tags .chip:nth-child(2){animation-delay:2.3s}
  .cmd-board.in .ag i::after{animation:ag-fill 1s cubic-bezier(.2,.7,.3,1) backwards}
  .cmd-board.in .ag:nth-child(2) i::after{animation-delay:.9s}
  .cmd-board.in .ag:nth-child(3) i::after{animation-delay:1.05s}
  .cmd-board.in .ag:nth-child(4) i::after{animation-delay:1.2s}
  @keyframes ag-fill{from{width:0}}

  /* FAQ answers ease open */
  .faq details[open] > div{animation:faq-open .3s ease}
  @keyframes faq-open{from{opacity:0;transform:translateY(-5px)}}

  /* buttons: shine sweep + whatsapp wiggle */
  .btn-primary::after{content:'';position:absolute;top:0;bottom:0;width:45%;inset-inline-start:-60%;background:linear-gradient(105deg,transparent,rgba(255,255,255,.38),transparent);transform:skewX(-18deg)}
  .btn-primary:hover::after{animation:shine .7s ease}
  @keyframes shine{to{inset-inline-start:130%}}
  .btn-wa:hover svg{animation:wiggle .5s ease}
  @keyframes wiggle{25%{transform:rotate(-11deg)}75%{transform:rotate(8deg)}}

  /* feature vignettes come alive on hover */
  .fcard:hover .fcard-shot .mock{transform:translateY(-4px) rotateX(3deg);box-shadow:0 20px 44px -16px rgba(14,35,64,.44),0 12px 28px -12px rgba(20,114,255,.38)} /* must out-glow the rest shadow or the lift reads as a drop */
  .fcard:hover .a-row{animation:rise .45s cubic-bezier(.2,.7,.3,1) backwards} /* alert rows land in sequence */
  .fcard:hover .a-row + .a-row{animation-delay:.08s}
  .fcard:hover .a-row + .a-row + .a-row{animation-delay:.16s}
  .fcard:hover .mini-spark .line{stroke-dasharray:100;stroke-dashoffset:100;animation:draw-line .9s ease-out forwards} /* insights spark redraws — requires pathLength="100" on the path or the dash math breaks */
  .fcard:hover .ag i::after{animation:ag-fill .9s cubic-bezier(.2,.7,.3,1)} /* leaderboard bars refill */
  .fcard:hover .ag + .ag i::after{animation-delay:.08s}
  .fcard:hover .ag + .ag + .ag i::after{animation-delay:.16s}
  .fcard:hover .crm-field{animation:rise .45s cubic-bezier(.2,.7,.3,1) backwards} /* record fields land in sequence */
  .fcard:hover .crm-field + .crm-field{animation-delay:.08s}
  .fcard:hover .crm-field + .crm-field + .crm-field{animation-delay:.16s}
  .fcard .bars i{transform-origin:bottom}
  .fcard:hover .bars i{animation:bar-pop .55s cubic-bezier(.2,.7,.3,1)}
  .fcard:hover .bars i:nth-child(2){animation-delay:.04s}
  .fcard:hover .bars i:nth-child(3){animation-delay:.08s}
  .fcard:hover .bars i:nth-child(4){animation-delay:.12s}
  .fcard:hover .bars i:nth-child(5){animation-delay:.16s}
  .fcard:hover .bars i:nth-child(6){animation-delay:.2s}
  .fcard:hover .bars i:nth-child(7){animation-delay:.24s}
  @keyframes bar-pop{from{transform:scaleY(.3)}}
  .fcard:hover .tr-play .pb i{animation:pb-grow 1.4s cubic-bezier(.3,.6,.3,1)}
  @keyframes pb-grow{from{width:10%}}
}

/* hero 3D tilt — desktop + motion only; JS pointer-tracking drives --tx/--ty */
@media (prefers-reduced-motion:no-preference) and (min-width:960px){
  .hero-shot{perspective:1300px}
  .hero-mock{transform-style:preserve-3d;transform:rotateX(calc(var(--tx,5)*1deg)) rotateY(calc(var(--ty,0)*1deg));transition:transform .25s ease-out;will-change:transform} /* centered stage: rest pose leans back, no side angle */
  .sat-alert{--z:44px} /* satellites hover above the dashboard plane */
  .sat-ring{--z:58px}
  .sat-mail{--z:30px}
  .sat-live{--z:50px}
  .sat{translate:calc(var(--ty,0)*-.7px) calc(var(--tx,5)*.5px)} /* counter-drift parallax; the translate property composes with the float/pop keyframes' transform */
}
