/* ============================================================
   v3 "alive" FEATURE detail family (.v3-ft), shared by the six
   /features/* pages. Ground truth: product-teams.php (marketing
   body pattern: framed entities, mono kickers, orange underline
   sweeps, one-shot reveals behind html.motion, dark night final
   CTA band) + integration-detail (spec-datasheet + capability-card
   vocabulary). Cool ladder only, 2px corners, no shadows.

   Motion registers:
   - Constructive one-shots: header underline sweeps, hero hot-word
     sweep, scroll reveals. Gated behind html.motion.
   - ONE calm ambient object per page, and only where the page
     genuinely depicts product behavior: the ask-console caret on
     ask-anything (.ft-caret) and the brief readout dot on
     weekly-brief (.ft-livedot). Every other page is constructive
     only. Paused when the tab is hidden; fully static under
     reduced-motion / html.reduce.

   Honesty: the signature plates are honest-empty skeletons (no
   fabricated customers, quotes, or numbers), so no orange evidence
   mark exists in this family. Orange appears only as the current
   (caret, readout dot, sweeps, hover heat) and the dark-band CTA.
   ============================================================ */

.v3-ft{
  /* ---- light drafting grammar (cool ladder) ---- */
  --ink:#141519;        /* UI, buttons, headlines, body text on light */
  --graphite:#2A2D31;   /* strong meta, firm hairline */
  --v3muted:#8A8D93;    /* mono labels, kickers, captions (cool) */
  --v3frame:#868A90;    /* corner registration marks (cool graphite) */
  --paper:#FFFFFF;      /* clean white card / surface fill */
  --ground:#FCFDFD;     /* cool near-white page ground */
  --v3board:#F0F2F3;    /* light board behind surfaces */
  --v3board-2:#E9ECEE;  /* firmer board tone */
  --v3rule:#E6E9EB;     /* hairline on ground */
  --v3rule-2:#D7DBDE;   /* firmer hairline */
  --v3sec:#565A60;      /* secondary body text (cool) */
  --skel:#EAEDEF;       /* cool placeholder skeleton */
  --skel-2:#DBDFE2;     /* firmer cool placeholder */
  --v3orange:#FF4F00;   /* THE ENERGY: sweeps, current, dark-band CTA */
  --v3brand:#5F67BB;    /* logo indigo, the one signature corner on light */
  /* ---- dark band tokens (night register) ---- */
  --band:#0E0F13;       /* near-black ink band ground */
  --band-2:#15171C;     /* lifted panel fill on ink */
  --d-fg:#F3F3F1;       /* text on ink */
  --d-sec:#A5A9AE;      /* secondary on ink */
  --d-muted:#767B81;    /* mono muted on ink */
  --d-rule:rgba(255,255,255,.12);
  --d-rule-2:rgba(255,255,255,.20);
  --d-frame:rgba(255,255,255,.30);
  --gridline:rgba(255,255,255,.030); /* blueprint grid on the night ground */

  display:block; background:var(--ground); color:var(--ink);
  font-family:var(--sans); font-size:16px; line-height:1.58;
  font-variant-numeric:tabular-nums;
}
.v3-ft b{ font-weight:600; }
.v3-ft h1,.v3-ft h2,.v3-ft h3{ margin:0; letter-spacing:-0.03em; text-wrap:balance; font-weight:600; }
.v3-ft p{ margin:0; }
.v3-ft a{ color:inherit; }

.v3-ft .wrap{ max-width:1120px; margin:0 auto; padding:0 28px; }
.v3-ft section{ padding:88px 0; position:relative; } /* 2026-07-10 consistency pass: was 84px — aligned to the 88px marketing-band rhythm (v3-solution / home / pricing) */
.v3-ft .band-light + .band-light{ border-top:1px solid var(--v3rule); }
.v3-ft .micro{ font-size:12px; color:var(--v3muted); }

/* ---------- section header + sweep-in orange underline ---------- */
.v3-ft .head{ margin-bottom:34px; }

/* A prose section that carries its own header (eyebrow + h2 + body) instead of a
   .head block still needs space under the heading. h2 is margin:0 globally, so without
   this the body copy sits flush against it. Affects every bare .v3-reveal header. */
.v3-ft .v3-reveal:not(.head) > h2{ margin-bottom:18px; }
.v3-ft .kick{ display:block; font:500 11px var(--mono); letter-spacing:.2em; text-transform:uppercase; color:var(--v3muted); margin-bottom:14px; }
.v3-ft .head h2{ font-size:clamp(27px,3.2vw,36px); letter-spacing:-0.03em; line-height:1.12; color:var(--ink); max-width:27ch; }
.v3-ft .uline{ display:block; height:3px; width:58px; margin-top:16px; background:var(--v3orange); transform-origin:left center; border-radius:1px; }
html.motion .v3-ft .uline{ transform:scaleX(0); transition:transform .5s cubic-bezier(.2,.75,.2,1); }
html.motion .v3-ft .uline.in{ transform:scaleX(1); }
.v3-ft .v3-sub{ font-size:16px; max-width:62ch; margin-top:14px; color:var(--v3sec); line-height:1.6; }

/* reveal (fade-up), gated so reduced-motion / no-JS shows everything settled */
html.motion .v3-ft .v3-reveal{ opacity:0; transform:translateY(14px); transition:opacity .5s ease, transform .5s cubic-bezier(.2,.75,.2,1); }
html.motion .v3-ft .v3-reveal.in{ opacity:1; transform:none; }

/* ---------- the entity corner frame (drafting grammar) ---------- */
.v3-ft .fr{
  position:relative;
  --fc:var(--v3frame);
  --sig:var(--v3brand);     /* the one signature corner: indigo on light */
  --fl:16px; --ft:0.75px; --fts:calc(var(--ft) * 3);
  background-image:
    linear-gradient(var(--fc),var(--fc)), linear-gradient(var(--fc),var(--fc)),
    linear-gradient(var(--fc),var(--fc)), linear-gradient(var(--fc),var(--fc)),
    linear-gradient(var(--fc),var(--fc)), linear-gradient(var(--fc),var(--fc)),
    linear-gradient(var(--sig),var(--sig)), linear-gradient(var(--sig),var(--sig));
  background-repeat:no-repeat;
  background-position:top left,top left, top right,top right, bottom left,bottom left, bottom right,bottom right;
  background-size:
    var(--fl) var(--ft), var(--ft) var(--fl),
    var(--fl) var(--ft), var(--ft) var(--fl),
    var(--fl) var(--ft), var(--ft) var(--fl),
    var(--fl) var(--fts), var(--fts) var(--fl);
  transition:background-size .18s ease;
}
.v3-ft .fr:hover{ --fl:22px; }
.v3-ft .band-dark .fr{ --fc:var(--d-frame); --sig:var(--v3orange); }

/* ---------- buttons: INK fill on light, ORANGE only on the dark band ---------- */
.v3-ft .v3-btn{ display:inline-block; padding:12px 26px; border-radius:2px; font:600 15px var(--sans); text-decoration:none; border:1px solid var(--graphite); color:var(--ink); background:transparent; letter-spacing:-0.01em; transition:background .16s ease, color .16s ease, border-color .16s ease, transform .16s ease; }
.v3-ft .v3-btn:hover{ background:rgba(20,21,25,.05); border-color:var(--ink); }
.v3-ft .v3-btn.primary{ background:var(--ink); color:var(--paper); border-color:var(--ink); }
.v3-ft .v3-btn.primary:hover{ background:#000; border-color:#000; }
.v3-ft .band-dark .v3-btn{ color:var(--d-fg); border-color:var(--d-rule-2); background:rgba(255,255,255,.015); }
.v3-ft .band-dark .v3-btn:hover{ background:rgba(255,255,255,.06); border-color:var(--d-fg); }
.v3-ft .band-dark .v3-btn.energy{ color:#fff; border-color:var(--v3orange); background:var(--v3orange); }
.v3-ft .band-dark .v3-btn.energy:hover{ filter:brightness(1.07); transform:translateY(-1px); }

/* ================= FEATURE HERO (light): flush-left copy + framed signature plate ================= */
.v3-ft .ft-hero{ padding:56px 0 88px; } /* pb tracks the 88px band rhythm */
.v3-ft .ft-crumbs{ display:flex; align-items:center; gap:9px; font:500 11px var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--v3muted); margin-bottom:24px; flex-wrap:wrap; }
.v3-ft .ft-crumbs a{ color:var(--v3muted); text-decoration:none; }
.v3-ft .ft-crumbs a:hover{ color:var(--ink); text-decoration:underline; text-underline-offset:3px; }
.v3-ft .ft-crumbs .sep{ color:var(--v3rule-2); }
.v3-ft .ft-crumbs .cur{ color:var(--graphite); }
.v3-ft .ft-hero-grid{ display:grid; grid-template-columns:1.06fr .94fr; gap:56px; align-items:center; }
.v3-ft .v3-eyebrow{ display:inline-flex; align-items:center; gap:9px; font:500 11px var(--mono); letter-spacing:.2em; text-transform:uppercase; color:var(--v3muted); margin-bottom:18px; }
.v3-ft .v3-eyebrow .spark{ width:7px; height:7px; border-radius:50%; background:var(--v3orange); flex:none; } /* static, no loop */
.v3-ft .ft-copy h1{ font-size:clamp(36px,4.6vw,52px); line-height:1.05; letter-spacing:-0.035em; margin-bottom:18px; max-width:17ch; }
.v3-ft .ft-copy h1 .hot{ position:relative; white-space:nowrap; }
.v3-ft .ft-copy h1 .hot::after{ content:""; position:absolute; left:0; right:0; bottom:.02em; height:3px; background:var(--v3orange); transform-origin:left; border-radius:1px; }
html.motion .v3-ft .ft-copy h1 .hot::after{ transform:scaleX(0); transition:transform .5s cubic-bezier(.2,.75,.2,1) .3s; }
html.motion.armed .v3-ft .ft-copy h1 .hot::after{ transform:scaleX(1); }
.v3-ft .nb{ white-space:nowrap; }
.v3-ft .ft-diff{ font-size:18px; line-height:1.42; color:var(--ink); max-width:46ch; margin-bottom:16px; }
.v3-ft .ft-lead{ font-size:16px; color:var(--v3sec); max-width:54ch; margin-bottom:28px; line-height:1.6; }
.v3-ft .ft-cta{ display:flex; gap:12px; flex-wrap:wrap; align-items:center; margin-bottom:14px; }
.v3-ft .ft-hero .micro{ max-width:52ch; }

/* ---------- the signature plate: the page's own framed artifact (honest-empty) ---------- */
.v3-ft .ft-plate{ background:var(--paper); padding:22px 24px 20px; display:flex; flex-direction:column; }
.v3-ft .ft-plate-kick{ font:600 10px var(--mono); letter-spacing:.16em; text-transform:uppercase; color:var(--v3muted); margin-bottom:14px; }
.v3-ft .ft-plate-foot{ margin-top:16px; padding-top:12px; border-top:1px solid var(--v3rule); font:400 11px var(--mono); letter-spacing:.02em; color:var(--v3muted); line-height:1.55; }
.v3-ft .sk{ display:block; height:9px; background:var(--skel); border-radius:1px; }
.v3-ft .sk.s2{ background:var(--skel-2); }

/* plate A: ask console (ask-anything). The caret is the page's ONE ambient element. */
.v3-ft .ftq-q{ display:flex; align-items:center; gap:10px; padding:11px 13px; background:var(--v3board); margin-bottom:16px; }
.v3-ft .ftq-gt{ font:600 13px var(--mono); color:var(--graphite); flex:none; }
.v3-ft .ftq-q .sk{ flex:1; max-width:72%; }
.v3-ft .ft-caret{ display:inline-block; width:7px; height:15px; background:var(--v3orange); flex:none; }
html.motion .v3-ft .ft-caret{ animation:ftcaret 1.15s steps(2,end) infinite; }
@keyframes ftcaret{ 50%{ opacity:0; } }
.v3-ft .ftq-a{ display:flex; flex-direction:column; gap:9px; margin-bottom:16px; }
.v3-ft .ftq-cites{ display:flex; flex-direction:column; }
.v3-ft .ftq-cite{ display:flex; align-items:center; gap:12px; padding:9px 0; border-top:1px solid var(--v3rule); }
.v3-ft .ftq-cite:first-child{ border-top:1px solid var(--graphite); }
.v3-ft .ftq-k{ flex:0 0 84px; font:500 10px var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--graphite); }
.v3-ft .ftq-cite .sk{ flex:1; height:8px; }

/* plate B: Monday brief readout (weekly-brief). The dot is the page's ONE ambient element. */
.v3-ft .ftw-status{ display:flex; align-items:center; gap:9px; padding-bottom:12px; border-bottom:1px solid var(--graphite); font:500 10px var(--mono); letter-spacing:.15em; text-transform:uppercase; color:var(--graphite); }
.v3-ft .ft-livedot{ width:8px; height:8px; border-radius:50%; background:var(--v3orange); flex:none; }
html.motion .v3-ft .ft-livedot{ animation:ftbreathe 3.4s ease-in-out infinite; }
@keyframes ftbreathe{ 0%,100%{ opacity:1; } 50%{ opacity:.35; } }
.v3-ft .ftw-item{ display:grid; grid-template-columns:26px minmax(0,1fr); gap:12px; padding:13px 0; border-top:1px solid var(--v3rule); align-items:start; }
.v3-ft .ftw-item:first-of-type{ border-top:0; }
.v3-ft .ftw-rank{ font:500 11px var(--mono); color:var(--v3muted); padding-top:1px; }
.v3-ft .ftw-lines{ display:flex; flex-direction:column; gap:8px; }

/* plate C: pre-call brief rows */
.v3-ft .ftp-row{ display:grid; grid-template-columns:96px minmax(0,1fr); gap:14px; padding:11px 0; border-top:1px solid var(--v3rule); align-items:start; }
.v3-ft .ftp-row:first-of-type{ border-top:1px solid var(--graphite); }
.v3-ft .ftp-k{ font:500 10px var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--graphite); padding-top:1px; }
.v3-ft .ftp-v{ display:flex; flex-direction:column; gap:7px; }

/* plate D: competitive landscape tiers */
.v3-ft .ftc-row{ display:grid; grid-template-columns:76px minmax(0,1fr); gap:14px; padding:12px 0; border-top:1px solid var(--v3rule); align-items:start; }
.v3-ft .ftc-row:first-of-type{ border-top:1px solid var(--graphite); }
.v3-ft .ftc-k{ font:500 10px var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--graphite); padding-top:1px; }
.v3-ft .ftc-v{ display:flex; flex-direction:column; gap:7px; }

/* plate E: ship-notify list */
.v3-ft .fts-row{ display:flex; align-items:center; gap:12px; padding:11px 0; border-top:1px solid var(--v3rule); }
.v3-ft .fts-row:first-of-type{ border-top:1px solid var(--graphite); }
.v3-ft .fts-av{ width:26px; height:26px; background:var(--skel-2); border-radius:2px; flex:none; }
.v3-ft .fts-lines{ flex:1; display:flex; flex-direction:column; gap:7px; min-width:0; }
.v3-ft .fts-lines .sk{ height:8px; }
.v3-ft .fts-draft{ flex:none; font:500 9px var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--graphite); border:1px solid var(--v3rule-2); border-radius:2px; padding:4px 8px; }

/* plate F: synthetic persona thread */
.v3-ft .ftm-msg{ display:flex; gap:11px; align-items:flex-start; padding:9px 0; }
.v3-ft .ftm-av{ width:26px; height:26px; border-radius:2px; flex:none; background:var(--skel-2); }
.v3-ft .ftm-av.you{ background:transparent; border:1px solid var(--graphite); color:var(--graphite); font:600 7.5px var(--mono); letter-spacing:.08em; display:inline-flex; align-items:center; justify-content:center; }
.v3-ft .ftm-b{ flex:1; display:flex; flex-direction:column; gap:7px; min-width:0; padding-top:4px; }
.v3-ft .ftm-b .sk{ height:8px; }
.v3-ft .ftm-cite{ display:flex; align-items:center; gap:7px; margin-top:2px; }
.v3-ft .ftm-cite .arr{ font:500 10px var(--mono); color:var(--v3muted); flex:none; }
.v3-ft .ftm-cite .sk{ height:6px; width:52%; }

/* ================= WHAT YOU GET: capability cards ================= */
.v3-ft .ft-caps{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.v3-ft .ft-cap{ background:var(--paper); padding:20px 22px 22px; display:flex; flex-direction:column; }
.v3-ft .ft-cap .ckick{ font:600 10px var(--mono); letter-spacing:.16em; text-transform:uppercase; color:var(--v3muted); margin-bottom:12px; }
.v3-ft .ft-cap h3{ font-size:17.5px; letter-spacing:-0.02em; line-height:1.2; margin-bottom:9px; }
.v3-ft .ft-cap p{ font-size:14px; color:var(--v3sec); line-height:1.6; }

/* ================= HOW IT WORKS: steps ================= */
.v3-ft .ft-steps{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:26px; }
.v3-ft .ft-step{ border-top:2px solid var(--graphite); padding-top:14px; }
.v3-ft .ft-step .s-no{ display:block; font:500 10px var(--mono); letter-spacing:.16em; text-transform:uppercase; color:var(--v3muted); margin-bottom:10px; }
.v3-ft .ft-step b{ display:block; font-size:15.5px; letter-spacing:-0.015em; color:var(--ink); margin-bottom:7px; line-height:1.25; }
.v3-ft .ft-step p{ font-size:13.5px; color:var(--v3sec); line-height:1.58; }

/* ================= WHERE IT LIVES: honest integration cross-links ================= */
.v3-ft .ft-where{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 22px; }
.v3-ft .ft-wrow{ display:flex; align-items:center; gap:13px; padding:13px 15px; background:var(--paper); border:1px solid var(--v3rule); border-radius:2px; text-decoration:none; transition:border-color .16s ease, background .16s ease; }
.v3-ft a.ft-wrow:hover{ border-color:var(--v3rule-2); background:rgba(255,79,0,.03); }
.v3-ft a.ft-wrow:hover .warr{ color:var(--v3orange); }
.v3-ft .ft-wrow .wlogo{ width:30px; height:30px; flex:none; display:inline-flex; align-items:center; justify-content:center; border:1px solid var(--v3rule); border-radius:2px; background:var(--paper); }
.v3-ft .ft-wrow .wlogo img{ width:17px; height:17px; display:block; }
.v3-ft .ft-wrow .wtxt{ flex:1; min-width:0; }
.v3-ft .ft-wrow .wname{ display:block; font-size:14.5px; font-weight:600; letter-spacing:-0.01em; color:var(--ink); line-height:1.2; }
.v3-ft .ft-wrow .wmeta{ display:block; font:400 11px var(--mono); letter-spacing:.02em; color:var(--v3muted); margin-top:3px; }
.v3-ft .ft-wrow .warr{ flex:none; font:500 13px var(--mono); color:var(--v3muted); transition:color .16s ease; }
.v3-ft .ft-where-note{ margin-top:16px; font:400 11.5px var(--mono); letter-spacing:.02em; color:var(--v3muted); }

/* ================= MORE FEATURES: sibling cross-links ================= */
.v3-ft .ft-more{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:22px; }
.v3-ft .ft-mcard{ background:var(--paper); padding:18px 20px; display:flex; flex-direction:column; text-decoration:none; }
.v3-ft .ft-mcard .ix{ font:600 10px var(--mono); letter-spacing:.16em; text-transform:uppercase; color:var(--v3muted); margin-bottom:10px; }
.v3-ft .ft-mcard h3{ font-size:16.5px; letter-spacing:-0.02em; margin-bottom:7px; color:var(--ink); }
.v3-ft .ft-mcard p{ font-size:13.5px; color:var(--v3sec); line-height:1.55; flex:1; }
.v3-ft .ft-mcard .marr{ margin-top:14px; font:500 12px var(--mono); color:var(--v3muted); transition:color .16s ease; }
.v3-ft .ft-mcard:hover .marr{ color:var(--v3orange); }

/* ================= DARK BAND base + night register ================= */
.v3-ft .band-dark{ background:var(--band); color:var(--d-fg); }
.v3-ft .band-dark .head h2{ color:var(--d-fg); }
.v3-ft .band-dark.night{
  background-image:
    linear-gradient(var(--gridline) 1px, transparent 1px),
    linear-gradient(90deg, var(--gridline) 1px, transparent 1px);
  background-size:34px 34px; background-position:center top;
  position:relative; overflow:hidden;
}
.v3-ft .band-dark.night::before{ content:""; position:absolute; top:8%; left:50%; transform:translateX(-50%);
  width:760px; max-width:120%; height:520px; pointer-events:none; z-index:0;
  background:radial-gradient(ellipse at center, rgba(255,79,0,.09), rgba(255,79,0,0) 62%); }
.v3-ft .band-dark.night > .wrap{ position:relative; z-index:1; }

/* ================= CLOSING CTA (dark night band) ================= */
.v3-ft .ft-final{ text-align:center; padding:104px 0 112px; } /* 2026-07-10: was 100/108 — aligned to the 104/112 dark-CTA rhythm (v3-solution .final) */
.v3-ft .ft-final h2{ font-size:clamp(30px,3.6vw,42px); margin-bottom:14px; color:var(--d-fg); max-width:24ch; margin-left:auto; margin-right:auto; }
.v3-ft .ft-final .sub{ font-size:16px; color:var(--d-sec); max-width:52ch; margin:0 auto 4px; line-height:1.6; }
.v3-ft .ft-final .uline{ margin:22px auto 26px; }
.v3-ft .ft-final .ft-cta{ justify-content:center; margin-bottom:0; }
.v3-ft .ft-final .micro{ margin-top:16px; color:var(--d-muted); }

/* ================= ambient hygiene ================= */
html.tab-hidden .v3-ft .ft-caret,
html.tab-hidden .v3-ft .ft-livedot{ animation-play-state:paused !important; }

/* ================= reduced motion: fully static settled states ================= */
@media (prefers-reduced-motion:reduce){
  .v3-ft *,.v3-ft *::before,.v3-ft *::after{ animation:none !important; transition:none !important; scroll-behavior:auto !important; }
}
html.reduce .v3-ft *,html.reduce .v3-ft *::before,html.reduce .v3-ft *::after{ animation:none !important; transition:none !important; }

/* ================= responsive ================= */
@media (max-width:980px){
  .v3-ft section{ padding:62px 0; }
  .v3-ft .ft-hero{ padding:44px 0 62px; }
  .v3-ft .ft-hero-grid{ grid-template-columns:1fr; gap:42px; }
  .v3-ft .ft-copy h1{ max-width:20ch; }
  .v3-ft .ft-caps{ grid-template-columns:1fr; gap:18px; }
  .v3-ft .ft-steps{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .v3-ft .ft-more{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
  .v3-ft .ft-final{ padding:78px 0 92px; }
}
@media (max-width:640px){
  .v3-ft .ft-cta .v3-btn{ flex:1 1 100%; text-align:center; }
  .v3-ft .ft-copy h1{ font-size:clamp(31px,8.6vw,42px); }
  .v3-ft .ft-steps{ grid-template-columns:1fr; }
  .v3-ft .ft-where{ grid-template-columns:1fr; }
  .v3-ft .ft-more{ grid-template-columns:1fr; }
  .v3-ft .ftp-row{ grid-template-columns:84px minmax(0,1fr); }
}

/* ---------- frame re-assert (2026-07-10 consistency pass) ----------
   The `background:` SHORTHANDS on .ft-plate/.ft-cap/.ft-mcard above reset background-image
   and erased the corner registration marks. Re-asserted LAST so source order inside this
   file can never kill the frame again (sister backstop lives in v3.css for inline pages). */
.v3-ft .fr{
  background-image:
    linear-gradient(var(--fc),var(--fc)), linear-gradient(var(--fc),var(--fc)),
    linear-gradient(var(--fc),var(--fc)), linear-gradient(var(--fc),var(--fc)),
    linear-gradient(var(--fc),var(--fc)), linear-gradient(var(--fc),var(--fc)),
    linear-gradient(var(--sig),var(--sig)), linear-gradient(var(--sig),var(--sig));
  background-repeat:no-repeat;
  background-position:top left,top left, top right,top right, bottom left,bottom left, bottom right,bottom right;
  background-size:
    var(--fl) var(--ft), var(--ft) var(--fl),
    var(--fl) var(--ft), var(--ft) var(--fl),
    var(--fl) var(--ft), var(--ft) var(--fl),
    var(--fl) var(--fts), var(--fts) var(--fl);
}

/* ================= COMPARISON TABLE =================
   Same visual as the homepage compare-board, rescoped from .v3-home to .v3-ft
   so alternative/comparison pages get the proven scannable two-column layout
   instead of stacked prose rows. */
.v3-ft .compare-board{ padding:8px 24px; background:var(--paper); border-top:1px solid var(--rule-2); border-bottom:1px solid var(--rule-2); }
.v3-ft .compare-table{ width:100%; border-collapse:collapse; table-layout:fixed; }
.v3-ft .compare-table th,.v3-ft .compare-table td{ text-align:left; vertical-align:top; }
.v3-ft .compare-table thead th{ padding:16px 18px; background:var(--board); font:500 10px var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--v3muted); }
.v3-ft .compare-table thead th:last-child{ color:var(--graphite); }
.v3-ft .compare-table tbody tr{ border-top:1px solid var(--rule); }
.v3-ft .compare-table tbody th{ padding:18px; font:500 10px/1.5 var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--v3muted); }
.v3-ft .compare-table tbody td{ padding:17px 18px 19px; font-size:14px; line-height:1.5; color:var(--sec); }
.v3-ft .compare-table tbody td:last-child{ border-left:1px solid var(--rule); color:var(--ink); font-weight:600; }
.v3-ft .compare-mobile-label{ display:none; }

@media (max-width:980px){
  .v3-ft .compare-board{ padding:4px 18px; }
  .v3-ft .compare-table,.v3-ft .compare-table tbody,.v3-ft .compare-table tr,.v3-ft .compare-table th,.v3-ft .compare-table td{ display:block; width:auto; }
  .v3-ft .compare-table thead{ position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
  .v3-ft .compare-table tbody tr{ padding:18px 0; }
  .v3-ft .compare-table tbody th{ padding:0 0 11px; }
  .v3-ft .compare-table tbody td{ padding:9px 0 0; }
  .v3-ft .compare-table tbody td:last-child{ margin-top:14px; padding-top:14px; border-left:0; border-top:1px solid var(--rule); }
  .v3-ft .compare-mobile-label{ display:block; margin-bottom:5px; font:500 9px var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--v3muted); }
}

/* ---- filled evidence plate (Canny compare hero) ---- */
.v3-ft .ev-q{ font-size:12.5px; line-height:1.42; color:var(--ink); }
.v3-ft .ev-tag{ align-self:flex-start; margin-top:2px; font:600 9px var(--mono); letter-spacing:.09em; text-transform:uppercase; color:var(--v3muted); border:1px solid var(--v3rule); border-radius:2px; padding:2px 6px; }
.v3-ft .ev-tag.sev{ color:var(--v3orange); border-color:var(--v3orange); }
.v3-ft .ev-tag.rev{ color:var(--ink); border-color:var(--graphite); }

/* ---- MCP answer card (Canny compare, decide payoff) ---- */
.v3-ft .ans{ background:var(--paper); border:1px solid var(--v3rule); border-radius:4px; padding:16px 18px 14px; margin-top:26px; }
.v3-ft .ans-q{ display:flex; gap:9px; align-items:baseline; padding-bottom:12px; border-bottom:1px solid var(--graphite); }
.v3-ft .ans-q .ask{ font:600 10px var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--v3orange); flex:none; }
.v3-ft .ans-q .qt{ font-size:14px; line-height:1.3; color:var(--ink); font-weight:600; }
.v3-ft .ans-row{ display:grid; grid-template-columns:24px minmax(0,1fr) auto; gap:12px; align-items:center; padding:11px 0; border-top:1px solid var(--v3rule); }
.v3-ft .ans-row:first-of-type{ border-top:none; }
.v3-ft .ans-rk{ font:600 12px var(--mono); color:var(--v3muted); }
.v3-ft .ans-t{ font-size:13.5px; font-weight:600; line-height:1.25; color:var(--ink); }
.v3-ft .ans-m{ display:block; margin-top:3px; font:400 11px var(--mono); color:var(--v3sec); letter-spacing:.01em; }
.v3-ft .ans-rev{ text-align:right; font:600 13px var(--sans); color:var(--ink); font-variant-numeric:tabular-nums; white-space:nowrap; }
.v3-ft .ans-foot{ margin-top:12px; padding-top:11px; border-top:1px solid var(--v3rule); font:400 11px var(--mono); color:var(--v3muted); letter-spacing:.01em; }
@media (max-width:640px){ .v3-ft .ans-row{ grid-template-columns:20px minmax(0,1fr); } .v3-ft .ans-rev{ grid-column:2; text-align:left; margin-top:2px; } }

/* ---- Canny hero scorecard: one call, kept vs dropped (animated) ---- */
.v3-ft .cvx{ background:var(--paper); border:1px solid var(--v3rule); border-radius:14px; padding:18px 18px 16px; box-shadow:0 1px 0 rgba(20,21,25,.02), 0 18px 40px -28px rgba(20,21,25,.22); }
.v3-ft .cvx-top{ display:flex; align-items:baseline; gap:8px; margin:0 0 13px; }
.v3-ft .cvx-src{ font:600 11px/1 var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--ink); }
.v3-ft .cvx-goes{ font:600 10px/1 var(--mono); letter-spacing:.1em; text-transform:uppercase; color:var(--v3muted); }
.v3-ft .cvx-grid{ display:grid; grid-template-columns:minmax(56px,auto) 1fr 1.12fr; align-items:stretch; }
.v3-ft .cvx-h{ font:600 9.5px/1 var(--mono); letter-spacing:.12em; text-transform:uppercase; padding:0 10px 8px; border-bottom:1.5px solid var(--v3rule); }
.v3-ft .cvx-h.canny{ color:var(--v3muted); }
.v3-ft .cvx-h.us{ color:var(--v3orange); border-bottom-color:var(--v3orange); }
.v3-ft .cvx-rk{ font:600 9.5px/1.2 var(--mono); letter-spacing:.09em; text-transform:uppercase; color:var(--v3muted); padding:11px 10px; border-bottom:1px solid var(--v3rule); display:flex; align-items:center; }
.v3-ft .cvx-c{ font-size:12.5px; line-height:1.32; color:var(--ink); padding:11px 10px; border-bottom:1px solid var(--v3rule); display:flex; align-items:center; min-width:0; }
.v3-ft .cvx-c.canny{ color:var(--v3sec); }
.v3-ft .cvx-c.us{ color:var(--ink); font-weight:500; }
.v3-ft .cvx-c.drop{ opacity:.5; }
.v3-ft .cvx-x{ position:relative; display:inline-block; font:600 9.5px/1 var(--mono); letter-spacing:.1em; text-transform:uppercase; color:var(--v3muted); }
.v3-ft .cvx-x::after{ content:""; position:absolute; left:-2px; right:-2px; top:52%; height:1.5px; background:var(--v3muted); transform:scaleX(1); transform-origin:left center; }
.v3-ft .cvx-c.tally, .v3-ft .cvx-rk.tally{ border-bottom:none; padding-top:13px; align-items:baseline; }
.v3-ft .cvx-c.tally b{ font:700 26px/1 var(--sans); letter-spacing:-.02em; }
.v3-ft .cvx-c.tally i{ font:600 9.5px/1 var(--mono); letter-spacing:.1em; text-transform:uppercase; color:var(--v3muted); font-style:normal; margin-left:7px; }
.v3-ft .cvx-c.tally.canny b{ color:var(--v3muted); }
.v3-ft .cvx-c.tally.us b{ color:var(--v3orange); }
.v3-ft .cvx-foot{ margin:15px 2px 0; font-size:12px; line-height:1.45; color:var(--v3sec); }
@media (max-width:560px){ .v3-ft .cvx-grid{ grid-template-columns:minmax(50px,auto) 1fr 1.1fr; } .v3-ft .cvx-c, .v3-ft .cvx-rk{ padding:9px 7px; font-size:11.5px; } .v3-ft .cvx-c.tally b{ font-size:22px; } }

/* motion: play on reveal (.in). Base above is the fully-readable static/reduced state. */
@keyframes cvxRise{ from{opacity:0; transform:translateY(9px)} to{opacity:1; transform:none} }
@keyframes cvxDrop{ 0%{opacity:0; transform:translateY(9px)} 30%{opacity:1; transform:none} 100%{opacity:.5; transform:none} }
@keyframes cvxStrike{ from{transform:scaleX(0)} to{transform:scaleX(1)} }
@keyframes cvxPop{ 0%{opacity:0; transform:scale(.72)} 60%{opacity:1; transform:scale(1.1)} 100%{opacity:1; transform:scale(1)} }
html.motion .v3-ft .cvx-src, html.motion .v3-ft .cvx-goes, html.motion .v3-ft .cvx-h, html.motion .v3-ft .cvx-rk, html.motion .v3-ft .cvx-c{ opacity:0; transform:translateY(9px); }
html.motion .v3-ft .cvx-c.drop .cvx-x::after{ transform:scaleX(0); }
html.motion .v3-ft .cvx.in .cvx-src{ animation:cvxRise .5s ease both; }
html.motion .v3-ft .cvx.in .cvx-goes{ animation:cvxRise .5s ease .08s both; }
html.motion .v3-ft .cvx.in .cvx-h{ animation:cvxRise .45s ease .16s both; }
html.motion .v3-ft .cvx.in .cvx-rk{ animation:cvxRise .45s ease calc(.28s + var(--i)*.11s) both; }
html.motion .v3-ft .cvx.in .cvx-c.keep{ animation:cvxRise .45s ease calc(.28s + var(--i)*.11s) both; }
html.motion .v3-ft .cvx.in .cvx-c.drop{ animation:cvxDrop 1s ease calc(.28s + var(--i)*.11s) both; }
html.motion .v3-ft .cvx.in .cvx-c.drop .cvx-x::after{ animation:cvxStrike .38s ease calc(.72s + var(--i)*.11s) both; }
html.motion .v3-ft .cvx.in .cvx-c.tally{ animation:cvxPop .55s cubic-bezier(.2,.8,.25,1.25) calc(.34s + var(--i)*.11s) both; }
@media (prefers-reduced-motion: reduce){ html.motion .v3-ft .cvx-src, html.motion .v3-ft .cvx-goes, html.motion .v3-ft .cvx-h, html.motion .v3-ft .cvx-rk, html.motion .v3-ft .cvx-c{ opacity:1; transform:none; animation:none !important; } html.motion .v3-ft .cvx-c.drop .cvx-x::after{ transform:scaleX(1); } }

/* ---- The four failures: numbered side-by-side module ---- */
.v3-ft .fx{ margin-top:24px; border-top:1px solid var(--v3rule); }
.v3-ft .fx-row{ display:grid; grid-template-columns:auto 1fr; column-gap:20px; padding:26px 0; border-bottom:1px solid var(--v3rule); }
.v3-ft .fx-n{ font:700 34px/1 var(--sans); letter-spacing:-.02em; color:var(--v3muted); }
.v3-ft .fx-k{ display:block; font:600 9.5px/1 var(--mono); letter-spacing:.14em; text-transform:uppercase; color:var(--v3muted); margin-bottom:7px; }
.v3-ft .fx-h{ margin:0 0 14px; font:600 21px/1.22 var(--sans); letter-spacing:-.01em; color:var(--ink); }
.v3-ft .fx-cmp{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.v3-ft .fx-side{ padding-left:12px; border-left:2px solid var(--v3rule); }
.v3-ft .fx-side.us{ border-left-color:var(--v3orange); }
.v3-ft .fx-lbl{ display:block; font:600 9.5px/1 var(--mono); letter-spacing:.1em; text-transform:uppercase; margin-bottom:5px; }
.v3-ft .fx-side.canny .fx-lbl{ color:var(--v3muted); }
.v3-ft .fx-side.us .fx-lbl{ color:var(--v3orange); }
.v3-ft .fx-txt{ font-size:13.5px; line-height:1.42; color:var(--v3sec); }
.v3-ft .fx-side.us .fx-txt{ color:var(--ink); }
@media (max-width:640px){
  .v3-ft .fx-row{ column-gap:14px; padding:22px 0; }
  .v3-ft .fx-n{ font-size:26px; }
  .v3-ft .fx-h{ font-size:18px; margin-bottom:12px; }
  .v3-ft .fx-cmp{ grid-template-columns:1fr; gap:11px; }
}

/* ---- FAQ (bottom-of-page depth for the researcher + crawlers) ---- */
.v3-ft .faq{ margin-top:22px; border-top:1px solid var(--v3rule); }
.v3-ft .faq-item{ padding:24px 0; border-bottom:1px solid var(--v3rule); }
.v3-ft .faq-q{ margin:0 0 10px; font:600 18px/1.32 var(--sans); letter-spacing:-.01em; color:var(--ink); }
.v3-ft .faq-a{ font-size:15px; line-height:1.62; color:var(--v3sec); max-width:72ch; }
@media (max-width:640px){ .v3-ft .faq-item{ padding:20px 0; } .v3-ft .faq-q{ font-size:16px; } .v3-ft .faq-a{ font-size:14.5px; } }

.v3-ft .ans-rev i{ display:block; text-align:right; font:600 8.5px/1 var(--mono); letter-spacing:.06em; text-transform:uppercase; color:var(--v3muted); font-style:normal; margin-top:4px; }

/* ---- Compare hub: competitor comparison cards ---- */
.v3-ft .cmp-head{ max-width:64ch; }
.v3-ft .cmp-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 340px)); gap:18px; }
.v3-ft .cmp-card{ display:flex; flex-direction:column; padding:24px 22px 20px; border:1px solid var(--v3rule); border-radius:14px; background:var(--paper); text-decoration:none; color:var(--ink); transition:border-color .16s ease, transform .16s ease, box-shadow .16s ease; }
.v3-ft .cmp-card:hover{ border-color:var(--graphite); transform:translateY(-2px); box-shadow:0 18px 40px -28px rgba(20,21,25,.22); }
.v3-ft .cmp-vs{ font:600 10px/1 var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--v3muted); }
.v3-ft .cmp-name{ margin:6px 0 10px; font:600 22px/1.1 var(--sans); letter-spacing:-.02em; color:var(--ink); }
.v3-ft .cmp-hook{ font-size:14px; line-height:1.5; color:var(--v3sec); margin:0 0 auto; }
.v3-ft .cmp-go{ margin-top:16px; font:600 13px var(--sans); color:var(--v3orange); }
@media (max-width:640px){ .v3-ft .cmp-grid{ grid-template-columns:1fr; } }

/* ---- Sibling links at the foot of each comparison page (#2706) ----
   Each comparison page carried exactly two incoming internal links, both from
   /compare, so the whole cluster hung off one hub. Hairlines, not frames: this
   is a list, and the grammar reserves frames for entities. ---- */
.v3-ft .cmp-more{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill, minmax(240px, 1fr)); gap:0 32px; }
.v3-ft .cmp-more li{ border-top:1px solid var(--v3rule); }
.v3-ft .cmp-more a{ display:flex; align-items:baseline; gap:9px; padding:14px 2px; font:500 15px/1.3 var(--sans); text-decoration:none; color:var(--ink); transition:color .16s ease; }
.v3-ft .cmp-more a:hover{ color:var(--v3orange); }
.v3-ft .cmp-more-vs{ flex:none; font:600 10px/1 var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--v3muted); }
@media (max-width:640px){ .v3-ft .cmp-more{ grid-template-columns:1fr; } }

/* ---- Dovetail hero proof: same feedback, two tools (workflow -> outcome) ---- */
.v3-ft .dvx{ background:var(--paper); border:1px solid var(--v3rule); border-radius:14px; padding:18px 18px 16px; box-shadow:0 1px 0 rgba(20,21,25,.02), 0 18px 40px -28px rgba(20,21,25,.22); }
.v3-ft .dvx-top{ display:flex; align-items:baseline; gap:8px; margin:0 0 14px; }
.v3-ft .dvx-src{ font:600 11px/1 var(--mono); letter-spacing:.12em; text-transform:uppercase; color:var(--ink); }
.v3-ft .dvx-goes{ font:600 10px/1 var(--mono); letter-spacing:.1em; text-transform:uppercase; color:var(--v3muted); }
.v3-ft .dvx-cols{ display:grid; grid-template-columns:1fr 1fr; gap:16px; }
.v3-ft .dvx-lbl{ display:block; font:600 9.5px/1 var(--mono); letter-spacing:.12em; text-transform:uppercase; margin-bottom:10px; }
.v3-ft .dvx-col.dt .dvx-lbl{ color:var(--v3muted); }
.v3-ft .dvx-col.us .dvx-lbl{ color:var(--v3orange); }
.v3-ft .dvx-steps{ list-style:none; margin:0 0 12px; padding:0; counter-reset:s; }
.v3-ft .dvx-steps li{ position:relative; padding:0 0 8px 20px; font-size:12px; line-height:1.35; color:var(--v3sec); counter-increment:s; }
.v3-ft .dvx-steps li::before{ content:counter(s); position:absolute; left:0; top:0; font:600 9px/1.5 var(--mono); color:var(--v3muted); }
.v3-ft .dvx-end{ font-size:12.5px; line-height:1.36; padding:10px 12px; border-radius:9px; }
.v3-ft .dvx-end.inert{ background:var(--skel); color:var(--v3muted); }
.v3-ft .dvx-end.priced{ background:rgba(255,79,0,.06); border:1px solid rgba(255,79,0,.22); color:var(--ink); font-weight:500; }
.v3-ft .dvx-end.priced b{ color:var(--v3orange); }
.v3-ft .dvx-foot{ margin:14px 2px 0; font-size:12px; line-height:1.45; color:var(--v3sec); }
@media (max-width:560px){ .v3-ft .dvx-cols{ grid-template-columns:1fr; gap:14px; } }
