/* ==========================================================================
   Loopcom — design system
   Palette derived from the Signal Core brand kit and the product's own tokens.

   ⛔ THE ONE RULE THAT MATTERS, AND IT WAS MEASURED, NOT ESTIMATED:
      --spark (#22A8FF, the brand electric blue) is 2.59:1 on white.
      It FAILS AA as text and it FAILS as a fill behind white text.
      On light surfaces it is decoration only — gradients, glows, icon plates.
      Interactive colour is --signal (#0B6FBF, 5.20:1) / --signal-d (7.09:1).
      On the dark ground --spark is 7.39:1 and IS text-safe.
   ========================================================================== */
:root{
  --paper:#FFFFFF;
  --mist:#F5F8FC;
  --mist-2:#EDF3FA;
  --line:#E2EAF2;
  --line-2:#D2DEEB;
  --ink:#071A2F;      /* 17.53:1 on white */
  --ink-2:#4A5F76;    /*  6.58:1 on white */
  --ink-3:#7186A0;
  --signal:#0B6FBF;   /*  5.20:1 on white */
  --signal-d:#065A9E; /*  7.09:1 on white */
  --spark:#22A8FF;    /* fills + gradients on light; text-safe on dark */
  --depth:#4F7BFF;
  --night:#071019;
  --night-2:#0E1B29;
  --night-line:#1D2D3F;
  --good:#0E7C52;
  --warn:#8A5A00;
  --bad:#B3261E;
  --r-s:6px; --r-m:10px; --r-l:16px; --r-xl:24px;
  --sh-1:0 1px 2px rgba(7,26,47,.06),0 1px 3px rgba(7,26,47,.05);
  --sh-2:0 4px 12px rgba(7,26,47,.07),0 2px 4px rgba(7,26,47,.04);
  --sh-3:0 18px 48px rgba(7,26,47,.12),0 4px 12px rgba(7,26,47,.06);
  --sh-4:0 40px 90px rgba(7,26,47,.18),0 8px 24px rgba(7,26,47,.08);
  --fs:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Arial,sans-serif;
  --fd:'Archivo',var(--fs);
  --fm:'IBM Plex Mono',ui-monospace,'Cascadia Mono',Consolas,monospace;
  --wrap:1080px;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--fs);
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility}
img{max-width:100%;height:auto;display:block}

/* --- skip link (keyboard users land here first) --- */
.skip{position:absolute;left:-9999px;top:0;z-index:999;background:var(--signal);
  color:#fff;padding:12px 20px;font-weight:600;border-radius:0 0 var(--r-s) 0}
.skip:focus{left:0}

:focus-visible{outline:2.5px solid var(--signal);outline-offset:2px;border-radius:3px}

/* --- layout --- */
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 32px}
section{padding:86px 0}
.s-mist{background:var(--mist)}
.s-night{background:var(--night);color:#fff}
.s-night h1,.s-night h2,.s-night h3,.s-night h4{color:#fff}
.s-night p{color:#A8BDD4}
.s-night .eyebrow{color:var(--spark)}
.s-head{max-width:640px;margin-bottom:46px}
.s-head p{font-size:18px;margin-top:14px}
.center{text-align:center;margin-left:auto;margin-right:auto}

/* --- type --- */
h1,h2,h3,h4{font-family:var(--fd);color:var(--ink);margin:0;text-wrap:balance;
  letter-spacing:-.028em;line-height:1.08}
h1{font-size:56px;font-weight:800}
h2{font-size:38px;font-weight:700;letter-spacing:-.026em}
h3{font-size:20px;font-weight:700;letter-spacing:-.015em;line-height:1.25}
h4{font-size:16px;font-weight:700}
p{margin:0;color:var(--ink-2)}
.lede{font-size:19px;line-height:1.55;color:var(--ink-2)}
.eyebrow{font-family:var(--fm);font-size:11.5px;font-weight:500;letter-spacing:.15em;
  text-transform:uppercase;color:var(--signal);display:block;margin-bottom:14px}
.num{font-family:var(--fm);font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}

/* --- nav --- */
.nav{position:sticky;top:0;z-index:60;background:rgba(255,255,255,.9);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line)}
.nav-in{max-width:var(--wrap);margin:0 auto;padding:0 32px;height:68px;
  display:flex;align-items:center;gap:26px}
.logo{display:flex;align-items:center;text-decoration:none;flex-shrink:0}
.logo img{height:27px;width:152px}
.nav-links{display:flex;gap:2px;flex:1}
.nav-links a{font-size:14.5px;font-weight:500;color:var(--ink-2);text-decoration:none;
  padding:8px 11px;border-radius:var(--r-s);white-space:nowrap}
.nav-links a:hover{color:var(--ink);background:var(--mist)}
.nav-links a[aria-current="page"]{color:var(--signal);font-weight:600}
.nav-cta{display:flex;align-items:center;gap:10px;flex-shrink:0}
.burger{display:none;width:40px;height:40px;border:1px solid var(--line-2);
  background:var(--paper);border-radius:var(--r-s);align-items:center;
  justify-content:center;cursor:pointer;padding:0}
.burger svg{width:20px;height:20px;stroke:var(--ink);fill:none;stroke-width:2;
  stroke-linecap:round}
.mobile-menu{display:none;border-bottom:1px solid var(--line);background:var(--paper)}
.mobile-menu[data-open="true"]{display:block}
.mobile-menu ul{list-style:none;margin:0;padding:12px 0}
.mobile-menu a{display:block;padding:13px 32px;font-size:16px;font-weight:500;
  color:var(--ink);text-decoration:none}
.mobile-menu a:hover,.mobile-menu a:focus{background:var(--mist)}
.mobile-menu .m-cta{padding:14px 32px 20px;display:flex;gap:10px;flex-direction:column}

/* --- buttons --- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:var(--fs);font-size:14.5px;font-weight:600;text-decoration:none;
  border-radius:var(--r-s);padding:11px 19px;border:1px solid transparent;
  cursor:pointer;transition:background .16s,border-color .16s,transform .16s,box-shadow .16s;
  white-space:nowrap;line-height:1.2}
.btn-pri{background:var(--signal);color:#fff;box-shadow:0 1px 2px rgba(6,90,158,.3)}
.btn-pri:hover{background:var(--signal-d);transform:translateY(-1px);
  box-shadow:0 6px 16px rgba(6,90,158,.26)}
.btn-quiet{background:var(--paper);color:var(--ink);border-color:var(--line-2)}
.btn-quiet:hover{border-color:var(--ink-3);background:var(--mist)}
.btn-lg{padding:14px 26px;font-size:16px}
.btn-on-dark{background:var(--spark);color:#04121D}
.btn-on-dark:hover{background:#4FBCFF;transform:translateY(-1px)}
.btn-ghost-dark{background:transparent;color:#fff;border-color:rgba(255,255,255,.26)}
.btn-ghost-dark:hover{border-color:#fff;background:rgba(255,255,255,.07)}
.btn[disabled]{opacity:.55;cursor:not-allowed;transform:none}
a.tlink{color:var(--signal);font-weight:600;text-decoration:none;font-size:15px;
  display:inline-flex;align-items:center;gap:6px}
a.tlink:hover{color:var(--signal-d);text-decoration:underline}

/* --- grid --- */
.g{display:grid;gap:22px}
.g2{grid-template-columns:repeat(2,1fr)}
.g3{grid-template-columns:repeat(3,1fr)}
.g4{grid-template-columns:repeat(4,1fr)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.split-top{align-items:start}

/* --- cards --- */
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);
  padding:26px;transition:box-shadow .18s,transform .18s,border-color .18s}
.card:hover{box-shadow:var(--sh-2);transform:translateY(-2px);border-color:var(--line-2)}
.card h3{margin-bottom:9px}
.card p{font-size:14.7px;line-height:1.62}
.s-night .card{background:var(--night-2);border-color:var(--night-line)}
.s-night .card:hover{border-color:#2C425A}
.ico{width:38px;height:38px;border-radius:9px;display:flex;align-items:center;
  justify-content:center;margin-bottom:16px;
  background:linear-gradient(135deg,var(--spark),var(--depth));
  box-shadow:0 3px 10px rgba(34,168,255,.3)}
.ico svg{width:19px;height:19px;stroke:#fff;fill:none;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}

/* --- hero --- */
.hero{position:relative;padding:92px 0 76px;overflow:hidden;background:var(--paper)}
.hero-lat{position:absolute;inset:0;pointer-events:none;
  background-image:radial-gradient(circle at 1px 1px,rgba(11,111,191,.14) 1px,transparent 0);
  background-size:34px 34px;
  -webkit-mask-image:radial-gradient(ellipse 70% 58% at 50% 30%,#000 0%,transparent 72%);
  mask-image:radial-gradient(ellipse 70% 58% at 50% 30%,#000 0%,transparent 72%)}
.hero-glow{position:absolute;top:-230px;left:50%;transform:translateX(-50%);
  width:940px;height:560px;pointer-events:none;
  background:radial-gradient(ellipse at center,rgba(34,168,255,.2) 0%,rgba(79,123,255,.1) 42%,transparent 70%);
  filter:blur(14px)}
.hero-in{position:relative;z-index:2;max-width:760px}
.hero h1{margin-bottom:22px}
.hero .lede{max-width:590px}
.hero-acts{display:flex;gap:13px;margin-top:34px;flex-wrap:wrap;align-items:center}
.pill{display:inline-flex;align-items:center;gap:8px;background:var(--mist);
  border:1px solid var(--line);border-radius:999px;padding:6px 14px 6px 8px;
  font-size:12.6px;font-weight:600;color:var(--ink-2);margin-bottom:24px}
.pill b{color:var(--ink);font-weight:600}
.pill-d{width:7px;height:7px;border-radius:50%;background:var(--good);
  box-shadow:0 0 0 3px rgba(14,124,82,.15)}

/* --- product frame --- */
.shot{margin-top:56px;position:relative;z-index:2}
.chrome{border-radius:11px;overflow:hidden;box-shadow:var(--sh-4);
  border:1px solid var(--line-2);background:var(--paper)}
.chrome-bar{height:36px;background:var(--mist);border-bottom:1px solid var(--line);
  display:flex;align-items:center;padding:0 13px;gap:7px}
.dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.chrome-url{flex:1;height:21px;background:var(--paper);border:1px solid var(--line);
  border-radius:5px;margin-left:9px;display:flex;align-items:center;padding:0 9px;
  font-family:var(--fm);font-size:10.5px;color:var(--ink-3);overflow:hidden;white-space:nowrap}
.app{display:flex;height:404px;background:var(--paper);font-size:12px;text-align:left}
.app-side{width:172px;flex-shrink:0;background:var(--mist);border-right:1px solid var(--line);
  padding:13px 9px;display:flex;flex-direction:column;gap:1px}
.app-side .lbl{font-family:var(--fm);font-size:9px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ink-3);padding:11px 9px 5px}
.app-side .it{display:flex;align-items:center;gap:8px;padding:6.5px 9px;border-radius:6px;
  color:var(--ink-2);font-weight:500;font-size:12.2px}
.app-side .it.on{background:rgba(11,111,191,.1);color:var(--signal);font-weight:600}
.app-side .it i{width:14px;height:14px;border-radius:3.5px;background:var(--line-2);flex-shrink:0}
.app-side .it.on i{background:var(--signal)}
.app-main{flex:1;padding:17px;overflow:hidden;min-width:0}
.app-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:15px}
.app-h b{font-family:var(--fd);font-size:16.5px;letter-spacing:-.015em}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:14px}
.kpi{border:1px solid var(--line);border-radius:8px;padding:10px}
.kpi .k{font-family:var(--fm);font-size:8.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.kpi .v{font-family:var(--fd);font-size:21px;font-weight:700;margin-top:3px;font-variant-numeric:tabular-nums}
.kpi .d{font-size:10px;color:var(--good);font-weight:600}
.rows{border:1px solid var(--line);border-radius:8px;overflow:hidden}
.row{display:flex;align-items:center;gap:9px;padding:8.5px 12px;border-bottom:1px solid var(--line);font-size:12px}
.row:last-child{border-bottom:0}
.av{width:24px;height:24px;border-radius:50%;background:linear-gradient(135deg,var(--spark),var(--depth));
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:9.5px;font-weight:700;flex-shrink:0}
.row .nm{font-weight:600;color:var(--ink)}
.row .mono{font-family:var(--fm);color:var(--ink-2);font-variant-numeric:tabular-nums;font-size:11.4px}
.tag{margin-left:auto;font-size:10px;font-weight:600;padding:3px 8px;border-radius:999px;
  background:rgba(14,124,82,.11);color:var(--good);white-space:nowrap}
.tag.b{background:rgba(11,111,191,.1);color:var(--signal)}
.tag.g{background:var(--mist-2);color:var(--ink-2)}

/* --- lists --- */
.chk{list-style:none;padding:0;margin:22px 0 0;display:flex;flex-direction:column;gap:12px}
.chk li{display:flex;gap:11px;font-size:15.2px;color:var(--ink-2);line-height:1.55}
.chk svg{width:19px;height:19px;flex-shrink:0;margin-top:2px;stroke:var(--signal);
  fill:none;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.s-night .chk li{color:#A8BDD4}
.s-night .chk svg{stroke:var(--spark)}
.chk b{color:var(--ink);font-weight:600}
.s-night .chk b{color:#fff}

/* --- table --- */
.tbl-w{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-m)}
table{border-collapse:collapse;width:100%;font-size:14.2px;min-width:480px}
th{font-family:var(--fm);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;
  color:var(--ink-3);text-align:left;padding:12px 16px;background:var(--mist);
  border-bottom:1px solid var(--line);font-weight:500}
td{padding:12px 16px;border-bottom:1px solid var(--line);color:var(--ink-2);vertical-align:top}
tr:last-child td{border-bottom:0}
td b{color:var(--ink);font-weight:600}
.tbl-bare{border:0}
.tbl-bare table{min-width:0}
.tbl-bare td:first-child{padding-left:0}
.tbl-bare td:last-child{padding-right:0}

/* --- callouts --- */
.note{border:1px solid var(--line);border-left:3px solid var(--signal);background:var(--mist);
  border-radius:var(--r-s);padding:18px 20px;font-size:14.6px;color:var(--ink-2);line-height:1.6}
.note b{color:var(--ink)}
.note.warn{border-left-color:var(--warn);background:#FFFBF2;border-color:#F0E2C4}

/* --- cta band --- */
.cta{background:linear-gradient(135deg,#071019 0%,#0B2036 55%,#0A2E52 100%);
  border-radius:var(--r-xl);padding:64px 56px;text-align:center;position:relative;overflow:hidden}
.cta::after{content:"";position:absolute;top:-140px;right:-90px;width:420px;height:420px;
  border-radius:50%;background:radial-gradient(circle,rgba(34,168,255,.3),transparent 66%);pointer-events:none}
.cta h2,.cta p,.cta .acts{position:relative;z-index:2}
.cta h2{color:#fff;margin-bottom:15px}
.cta p{color:#A8BDD4;font-size:18px;max-width:520px;margin:0 auto}
.cta .acts{margin-top:32px;display:flex;gap:13px;justify-content:center;flex-wrap:wrap}

/* --- footer --- */
.ft{background:var(--night);color:#fff;padding:64px 0 30px}
.ft-g{display:grid;grid-template-columns:1.6fr repeat(3,1fr);gap:34px;margin-bottom:44px}
.ft h4{font-size:11.5px;font-family:var(--fm);font-weight:500;letter-spacing:.13em;
  text-transform:uppercase;color:var(--spark);margin-bottom:14px}
.ft ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:9px}
.ft a{color:#A8BDD4;text-decoration:none;font-size:14px}
.ft a:hover{color:#fff;text-decoration:underline}
.ft-co{font-size:13.6px;color:#8FA6BF;line-height:1.65;max-width:290px}
.ft-lo{margin-bottom:16px}
.ft-lo img{height:30px;width:169px}
.ft-reg{font-family:var(--fm);font-size:11.4px;color:#5F778F;margin-top:9px;line-height:1.7}
.ft-bot{border-top:1px solid var(--night-line);padding-top:24px;display:flex;
  justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:12.8px;color:#7C93AC}
.ft-bot a{color:#7C93AC;font-size:12.8px}

/* --- page head + breadcrumb --- */
.bc{font-size:13px;color:var(--ink-3);padding:20px 0 0}
.bc ol{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:0}
.bc li{display:flex;align-items:center}
.bc li+li::before{content:"/";margin:0 7px;opacity:.55}
.bc a{color:var(--ink-3);text-decoration:none}
.bc a:hover{color:var(--signal);text-decoration:underline}
.ph{padding:52px 0 40px;border-bottom:1px solid var(--line);position:relative;
  overflow:hidden;background:var(--paper)}
.ph::before{content:"";position:absolute;top:-190px;right:-140px;width:560px;height:400px;
  background:radial-gradient(ellipse,rgba(34,168,255,.13),transparent 68%);pointer-events:none}
.ph-in{position:relative;z-index:2;max-width:720px}
.ph h1{font-size:45px;margin-bottom:17px}

/* --- legal --- */
.legal-body{max-width:720px}
.legal-body h2{font-size:23px;margin:38px 0 12px}
.legal-body h3{font-size:17px;margin:24px 0 8px}
.legal-body p{font-size:15.4px;line-height:1.72;margin-bottom:14px}
.legal-body ul{margin:0 0 16px;padding-left:22px;color:var(--ink-2);font-size:15.4px;line-height:1.72}
.legal-body li{margin-bottom:7px}
.legal-body a{color:var(--signal)}
.legal-meta{display:flex;gap:22px;flex-wrap:wrap;padding:15px 18px;background:var(--mist);
  border:1px solid var(--line);border-radius:var(--r-s);font-size:13.4px;color:var(--ink-2);margin-bottom:30px}
.legal-meta b{display:block;font-size:12px;font-family:var(--fm);letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-3);font-weight:500;margin-bottom:2px}
.toc{border:1px solid var(--line);border-radius:var(--r-m);padding:22px;background:var(--mist);
  position:sticky;top:88px}
.toc h4{margin-bottom:12px}
.toc ol{margin:0;padding-left:19px;font-size:14.2px;color:var(--ink-2);line-height:1.9}
.toc a{color:var(--signal);text-decoration:none}
.toc a:hover{text-decoration:underline}

/* --- forms --- */
.qf{max-width:680px;margin:0 auto}
.fset{border:0;padding:0;margin:0 0 38px}
.fset legend{font-family:var(--fd);font-size:20px;font-weight:700;color:var(--ink);
  margin-bottom:6px;padding:0;display:flex;align-items:baseline;gap:10px}
.fset legend .n{font-family:var(--fm);font-size:12px;color:var(--signal);font-weight:500}
.fset .hint{font-size:14.4px;color:var(--ink-2);margin-bottom:22px}
.frow{display:grid;grid-template-columns:1fr 1fr;gap:15px}
.fld{display:flex;flex-direction:column;gap:6px;margin-bottom:15px}
.fld label{font-size:13.4px;font-weight:600;color:var(--ink)}
.fld .req{color:var(--bad);margin-left:2px}
.fld input,.fld select,.fld textarea{font-family:var(--fs);font-size:16px;color:var(--ink);
  padding:11px 13px;border:1px solid var(--line-2);border-radius:var(--r-s);
  background:var(--paper);width:100%}
.fld input:focus,.fld select:focus,.fld textarea:focus{border-color:var(--signal);
  outline:2px solid rgba(11,111,191,.18);outline-offset:0}
.fld textarea{min-height:104px;resize:vertical;line-height:1.55}
.fld .help{font-size:12.4px;color:var(--ink-3)}
.fld .err{font-size:12.8px;color:var(--bad);font-weight:600;display:none;align-items:center;gap:5px}
.fld.bad .err{display:flex}
.fld.bad input,.fld.bad select,.fld.bad textarea{border-color:var(--bad);background:#FFF8F8}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.opt{display:flex;gap:10px;align-items:flex-start;padding:13px 14px;border:1px solid var(--line-2);
  border-radius:var(--r-s);background:var(--paper);cursor:pointer;transition:border-color .15s,background .15s}
.opt:hover{border-color:var(--signal);background:var(--mist)}
.opt input{margin-top:2px;width:16px;height:16px;flex-shrink:0;accent-color:var(--signal)}
.opt .t{font-size:14.2px;color:var(--ink);font-weight:500;line-height:1.45}
.opt .t small{display:block;font-weight:400;color:var(--ink-3);font-size:12.6px;margin-top:2px}
.chks{display:flex;flex-direction:column;gap:12px}
.chkr{display:flex;gap:11px;align-items:flex-start;padding:14px;border:1px solid var(--line);
  border-radius:var(--r-s);background:var(--mist)}
.chkr input{margin-top:2px;width:17px;height:17px;flex-shrink:0;accent-color:var(--signal)}
.chkr .t{font-size:13.7px;color:var(--ink-2);line-height:1.55;cursor:pointer}
.chkr .t b{color:var(--ink);display:block;margin-bottom:3px;font-weight:600;font-size:14.2px}
.form-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;
  padding-top:24px;border-top:1px solid var(--line);flex-wrap:wrap}
.form-status{margin-top:20px;padding:16px 18px;border-radius:var(--r-s);font-size:14.6px;display:none}
.form-status[data-state="error"]{display:block;background:#FFF5F5;border:1px solid #F3C9C6;color:#7A1C16}
.form-status[data-state="ok"]{display:block;background:#F1FAF6;border:1px solid #BFE3D2;color:#0B5B3D}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.badge{display:inline-flex;align-items:center;gap:6px;font-family:var(--fm);font-size:11px;
  font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;
  border-radius:999px;background:var(--mist);color:var(--ink-2);border:1px solid var(--line)}

/* ==========================================================================
   Chat assistant
   ========================================================================== */
.chat-btn{position:fixed;right:22px;bottom:22px;z-index:200;width:56px;height:56px;
  border-radius:50%;border:0;cursor:pointer;background:var(--signal);
  box-shadow:0 8px 24px rgba(6,90,158,.36);display:flex;align-items:center;
  justify-content:center;transition:transform .18s,background .18s}
.chat-btn:hover{background:var(--signal-d);transform:translateY(-2px)}
.chat-btn svg{width:24px;height:24px;stroke:#fff;fill:none;stroke-width:2;
  stroke-linecap:round;stroke-linejoin:round}
.chat-btn .x{display:none}
.chat-btn[aria-expanded="true"] .x{display:block}
.chat-btn[aria-expanded="true"] .b{display:none}
.chat-panel{position:fixed;right:22px;bottom:90px;z-index:200;width:376px;max-width:calc(100vw - 44px);
  background:var(--paper);border:1px solid var(--line-2);border-radius:var(--r-l);
  box-shadow:var(--sh-4);overflow:hidden;display:none;flex-direction:column}
.chat-panel[data-open="true"]{display:flex}
.chat-head{background:var(--night);padding:16px 18px;color:#fff}
.chat-head b{font-family:var(--fd);font-size:15.5px;display:block}
.chat-head span{font-size:12.6px;color:#A8BDD4}
.chat-log{padding:16px;display:flex;flex-direction:column;gap:11px;max-height:330px;
  overflow-y:auto;background:var(--mist)}
.msg{max-width:84%;padding:10px 13px;border-radius:12px;font-size:14.2px;line-height:1.5}
.msg-bot{background:var(--paper);border:1px solid var(--line);color:var(--ink-2);
  align-self:flex-start;border-bottom-left-radius:4px}
.msg-me{background:var(--signal);color:#fff;align-self:flex-end;border-bottom-right-radius:4px}
.chat-quick{display:flex;flex-wrap:wrap;gap:7px;padding:0 16px 14px;background:var(--mist)}
.chat-quick button{font-family:var(--fs);font-size:13px;font-weight:500;color:var(--signal);
  background:var(--paper);border:1px solid var(--line-2);border-radius:999px;
  padding:7px 13px;cursor:pointer}
.chat-quick button:hover{border-color:var(--signal);background:#fff}
.chat-form{padding:14px 16px;border-top:1px solid var(--line);background:var(--paper);
  display:flex;flex-direction:column;gap:9px}
.chat-form input,.chat-form textarea{font-family:var(--fs);font-size:15px;color:var(--ink);
  padding:10px 12px;border:1px solid var(--line-2);border-radius:var(--r-s);width:100%}
.chat-form textarea{min-height:64px;resize:vertical;line-height:1.5}
.chat-form input:focus,.chat-form textarea:focus{border-color:var(--signal);
  outline:2px solid rgba(11,111,191,.18)}
.chat-send{display:flex;gap:9px;align-items:center}
.chat-send .btn{flex:1}
.chat-note{font-size:11.6px;color:var(--ink-3);line-height:1.45}

/* ==========================================================================
   Responsive
   ========================================================================== */
@media (max-width:980px){
  .ft-g{grid-template-columns:1fr 1fr;gap:30px}
  .split{gap:38px}
}
@media (max-width:860px){
  .wrap{padding:0 20px}
  .nav-in{padding:0 20px;height:60px;gap:12px}
  .nav-links{display:none}
  .burger{display:flex}
  .nav-cta .btn-quiet{display:none}
  .nav-cta .btn{padding:9px 13px;font-size:13px}
  section{padding:54px 0}
  h1{font-size:33px}
  h2{font-size:26px}
  h3{font-size:19px}
  .ph h1{font-size:30px}
  .lede{font-size:17px}
  .hero{padding:50px 0 42px}
  .g2,.g3,.g4{grid-template-columns:1fr}
  .split{grid-template-columns:1fr;gap:32px}
  .frow{grid-template-columns:1fr}
  .opts{grid-template-columns:1fr}
  .cta{padding:40px 24px;border-radius:var(--r-l)}
  .app{height:auto}
  .app-side{display:none}
  .kpis{grid-template-columns:1fr 1fr}
  .toc{position:static}
  .split.legal-split{grid-template-columns:1fr}
  .chat-panel{right:12px;left:12px;width:auto;bottom:84px}
  .chat-btn{right:16px;bottom:16px}
}
@media (max-width:520px){
  .ft-g{grid-template-columns:1fr}
  .chat-log{max-height:44vh}
}

/* --- motion --- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important}
  .card:hover,.btn:hover,.chat-btn:hover{transform:none}
}

/* --- print (legal pages must print cleanly) --- */
@media print{
  .nav,.ft,.cta,.chat-btn,.chat-panel,.skip,.toc,.bc{display:none!important}
  body{font-size:11pt;color:#000;background:#fff}
  .ph{border:0;padding:0 0 12pt}
  .legal-body{max-width:none}
  a{color:#000;text-decoration:underline}
  section{padding:0 0 12pt}
}

/* --- testimonials --- */
.tm{margin:0;background:var(--paper);border:1px solid var(--line);border-radius:var(--r-m);
  padding:26px;display:flex;flex-direction:column;gap:16px}
.tm-q{width:26px;height:26px;stroke:var(--spark);fill:none;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}
.tm blockquote{margin:0}
.tm blockquote p{font-size:16.2px;line-height:1.6;color:var(--ink);font-weight:500}
.tm figcaption{margin-top:auto;padding-top:4px;border-top:1px solid var(--line);
  padding-top:16px;display:flex;flex-direction:column;gap:2px}
.tm figcaption b{font-size:14.5px;color:var(--ink);font-weight:600}
.tm figcaption span{font-size:13.4px;color:var(--ink-3)}

/* ------------------------------------------------- Cloudflare Turnstile ---
   The robot check on the quote form and the chat panel.

   ⛔ Do NOT give .cf-turnstile a fixed height. Turnstile sizes its own iframe
   and changes that size when it escalates from a silent check to a visible
   challenge; pinning the height clips the challenge and the visitor is left
   with a form they cannot submit and nothing on screen explaining why.

   In the chat panel the widget is appearance="interaction-only", so it renders
   at zero height on almost every visit. The margin only ever applies to the
   rare visit where a real challenge appears. */
.cf-turnstile { margin: 26px 0 0; }
.chat-form .cf-turnstile { margin: 10px 0 0; }
.chat-form .cf-turnstile:empty { margin: 0; }
