/* ============================================================
   Deliberate Lab — global stylesheet
   Design system: "Deep Space Experimentation Lab" — a dark,
   scientific, technical visual language for a Shopify CRO &
   experimentation agency. Every page links this file. Edit the
   tokens in :root once and it updates across the whole site.
   ============================================================ */

:root{
  /* ---- primitive palette (Deep Space Experimentation Lab) ---- */
  --space:#05070B;        /* page background */
  --space-2:#08111C;      /* secondary background — alt sections, footer, chrome */
  --panel:#0D1724;        /* elevated surface — cards, readouts, dark tiles */
  --panel-2:#111E2D;      /* further-elevated surface — feature cards, modals, inputs' surroundings */
  --text:#F4F7FA;         /* primary text / high-contrast lines */
  --muted:#8B9AAA;        /* secondary text */
  --muted-2:#7690A1;      /* tertiary text — captions, source lines, timestamps; clears WCAG AA 4.5:1 on --space/--panel/--panel-2 */
  --cyan:#71E6FF;         /* primary accent — labels, links, live/data highlights */
  --blue:#5B8CFF;         /* secondary accent — fills, underlines, bullets, badges */
  --violet:#9B8CFF;       /* tertiary accent — used sparingly for variety on tags/badges */
  --success:#7DFFB2;      /* positive outcome — wins, high scores, "go" states */
  --danger:#FF7A6E;       /* negative state — form errors, abandonment marks */
  --hairline:#203143;     /* borders, dividers */

  /* ---- legacy aliases (kept only so any inline `style="...var(--x)"`
     usage resolves; the rules below reference the primitive tokens
     above directly) ---- */
  --paper:var(--space);
  --paper-2:var(--space-2);
  --ink:var(--text);
  --ink-70:var(--muted);
  --ink-45:var(--muted-2);
  --gold:var(--cyan);
  --gold-line:var(--blue);
  --gold-wash:rgba(91,140,255,.12);

  /* ---- structure ---- */
  --maxw:1200px;
  --display:"Space Grotesk","Hanken Grotesk",system-ui,-apple-system,sans-serif;
  --sans:"Hanken Grotesk",system-ui,-apple-system,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;
  /* kept for any legacy var(--serif) reference — same family as --display */
  --serif:var(--display);

  /* ---- radius scale ---- */
  --radius-sm:4px;
  --radius-md:8px;
  --radius-lg:14px;
  --radius-pill:999px;

  /* ---- shadow / glow scale (dark-surface appropriate) ---- */
  --shadow-sm:0 10px 24px rgba(0,0,0,.35);
  --shadow-md:0 18px 44px rgba(0,0,0,.45);
  --shadow-glow:0 0 0 1px rgba(113,230,255,.10), 0 14px 34px rgba(0,0,0,.5);

  /* ---- motion timing ---- */
  --ease-out:cubic-bezier(.22,.68,0,1);  /* shared motion easing */
  --dur-fast:.18s;
  --dur-base:.32s;
  --dur-slow:.55s;
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{
  font-family:var(--sans);
  color:var(--text);
  background:var(--space);
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 32px}
a{color:inherit;text-decoration:none}
::selection{background:rgba(113,230,255,.22);color:var(--text)}

/* baseline focus ring for every interactive element site-wide (guarantees
   visible keyboard focus even on dark panels); component-specific rules
   elsewhere override this via higher selector specificity where a
   different treatment is wanted. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible{
  outline:2px solid var(--cyan);
  outline-offset:2px;
}

/* ============================================================
   "CRO Intelligence Lab" visual language — reusable primitives used
   across every page: subtle grid texture, glass panels, telemetry
   labels, status LEDs, console headers, and a generic scroll-reveal
   system for multi-node diagrams. Kept deliberately restrained —
   low-opacity lines, soft glow, no saturated neon — per the brief.
   All motion here is disabled under prefers-reduced-motion (see the
   media query near the end of this file) and implemented with plain
   CSS/JS (no animation libraries).
   ============================================================ */

/* ---- 1. subtle animated grid — applied via ::before so it works on
   every .hero / .page-hero / .cta-band with zero HTML changes ---- */
.hero,.page-hero,.cta-band{position:relative;overflow:hidden}
.hero::before,.page-hero::before,.cta-band::before{
  content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:
    linear-gradient(rgba(113,230,255,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(113,230,255,.05) 1px,transparent 1px);
  background-size:64px 64px;
  -webkit-mask-image:radial-gradient(ellipse 75% 55% at 50% 0%,#000 40%,transparent 100%);
  mask-image:radial-gradient(ellipse 75% 55% at 50% 0%,#000 40%,transparent 100%);
  animation:grid-drift 70s linear infinite;
}
.hero>*,.page-hero>*,.cta-band>*{position:relative;z-index:1}
@keyframes grid-drift{from{background-position:0 0}to{background-position:64px 64px}}

/* ---- 2 & 5. thin technical lines / signal paths — a reusable animated
   dashed-line class for any SVG path standing in for a "signal" moving
   through the system (already used by the services-page loop diagram;
   formalised here so any new diagram can opt in the same way) ---- */
.signal-path{animation:signal-flow 3s linear infinite}
@keyframes signal-flow{to{stroke-dashoffset:-20}}

/* ---- 3. experiment IDs — small mono tag used on every experiment/case
   card; .exp-id already carries this treatment (see homepage + case
   studies), documented here as the canonical pattern to reuse:
   font: var(--mono), 11px, letter-spacing .14em, uppercase, var(--cyan) */

/* ---- 4. data nodes / 6. telemetry labels / 7. controlled glow ---- */
.telemetry{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2)}
.telemetry .led{width:6px;height:6px;border-radius:50%;background:var(--success);flex:none;box-shadow:0 0 0 0 rgba(125,255,178,.5);animation:led-pulse 2.2s ease-in-out infinite}
.telemetry .led.cyan{background:var(--cyan);box-shadow:0 0 0 0 rgba(113,230,255,.5)}
.telemetry .led.blue{background:var(--blue);box-shadow:0 0 0 0 rgba(91,140,255,.5)}
@keyframes led-pulse{0%,100%{opacity:1;box-shadow:0 0 0 0 rgba(125,255,178,.35)}50%{opacity:.55;box-shadow:0 0 0 4px rgba(125,255,178,0)}}

/* status LED + label — generalises the pulsing-dot pattern already used
   by .cs-status into a reusable component for any "live" state */
.status-led{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.status-led i{width:6px;height:6px;border-radius:50%;background:var(--success);flex:none;animation:led-pulse 2.2s ease-in-out infinite}
.status-led.status-cyan i{background:var(--cyan)}

/* small mono metric-code chip, e.g. "CVR" / "RPV" next to a metric label */
.metric-code{display:inline-block;font-family:var(--mono);font-size:10px;letter-spacing:.04em;color:var(--cyan);background:rgba(113,230,255,.08);padding:2px 6px;border-radius:4px;margin-left:6px;white-space:nowrap;vertical-align:middle}

/* ---- 9. glass-like panels, used with restraint (hero visual + console
   headers only, not applied broadly) ---- */
.glass-panel{
  background:rgba(13,23,36,.55);
  backdrop-filter:blur(14px) saturate(140%);
  -webkit-backdrop-filter:blur(14px) saturate(140%);
  border:1px solid rgba(255,255,255,.08);
  border-radius:var(--radius-lg);
  box-shadow:0 1px 0 rgba(255,255,255,.05) inset, var(--shadow-md);
}

/* console header strip — used to frame the PROOF Score decision engine
   and the CRO Diagnostic result as an "instrument reading", not a
   generic card */
.console-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:16px;margin-bottom:20px;border-bottom:1px solid rgba(255,255,255,.1);flex-wrap:wrap}
.console-head .telemetry{color:var(--cyan)}
.console-id{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--muted-2);white-space:nowrap}

/* ---- 10. animated experimentation loop — generic scroll-triggered
   reveal for multi-node flow diagrams (hero, method, services). Any
   node/line marked .flow-node / .flow-arc-line fades in staggered by
   its --i custom property once js/motion.js arms + draws the parent
   .diagram on scroll into view. Independent of the older two-node
   .fig-node/.fig-arc system so both can coexist without colliding. */
svg.diagram.node-armed .flow-node{opacity:0;transform:translateY(6px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out);transition-delay:calc(var(--i,0) * 130ms)}
svg.diagram.node-armed .flow-arc-line{opacity:0;transition:opacity .5s ease;transition-delay:calc(var(--i,0) * 130ms + 80ms)}
svg.diagram.node-draw .flow-node{opacity:1;transform:none}
svg.diagram.node-draw .flow-arc-line{opacity:1}

/* ============================================================
   Page transitions — Cross-Document View Transitions API.
   Opting in via @view-transition makes supporting browsers (Chrome/Edge)
   animate every same-origin navigation between pages automatically; there
   is nothing else to wire up per-page. Unsupporting browsers (Firefox,
   Safari) simply ignore this whole block and navigate normally — that's
   the graceful fallback for this layer. A second, JS-driven fallback for
   those browsers lives in js/transitions.js. Both layers are gated behind
   prefers-reduced-motion here and in that script.
   ============================================================ */
@media (prefers-reduced-motion: no-preference){
  @view-transition{
    navigation: auto;
  }
  ::view-transition-old(root){
    animation: dl-page-out .28s var(--ease-out) forwards;
  }
  ::view-transition-new(root){
    animation: dl-page-in .34s var(--ease-out) forwards;
  }
}
@keyframes dl-page-out{
  from{opacity:1;transform:translateY(0)}
  to{opacity:0;transform:translateY(-10px)}
}
@keyframes dl-page-in{
  from{opacity:0;transform:translateY(10px)}
  to{opacity:1;transform:translateY(0)}
}

/* ---------- type helpers ---------- */
.eyebrow{
  font-family:var(--mono);
  font-size:12px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:var(--cyan);
  display:inline-flex;
  align-items:center;
  gap:10px;
}
.eyebrow::before{
  content:"";
  width:26px;height:1px;background:var(--blue);display:inline-block;
}
h1,h2,h3{font-family:var(--display);font-weight:600;line-height:1.08;letter-spacing:-.01em}
h2{font-size:clamp(28px,3.6vw,46px)}
p{color:var(--muted)}
.lead{font-size:clamp(17px,1.5vw,20px);color:var(--muted);max-width:56ch}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--sans);font-weight:600;font-size:15px;
  padding:14px 24px;border-radius:var(--radius-sm);border:1px solid transparent;
  background:linear-gradient(135deg,var(--blue),var(--cyan));color:var(--space);cursor:pointer;
  transition:transform var(--dur-fast) ease, box-shadow var(--dur-fast) ease, background var(--dur-base) ease;
}
.btn:hover{background:linear-gradient(135deg,var(--cyan),var(--blue));transform:translateY(-1px);box-shadow:var(--shadow-glow)}
.btn-ghost{
  background:transparent;color:var(--text);border:1px solid var(--hairline);
}
.btn-ghost:hover{border-color:var(--cyan);background:rgba(113,230,255,.06)}
.btn .arw{transition:transform var(--dur-fast) ease}
.btn:hover .arw{transform:translateX(3px)}

/* ---------- nav ---------- */
header{position:sticky;top:0;z-index:50;background:rgba(5,7,11,.82);
  backdrop-filter:saturate(180%) blur(12px);border-bottom:1px solid transparent;transition:border-color .3s ease}
header.scrolled{border-bottom:1px solid var(--hairline)}
.nav{display:flex;align-items:center;justify-content:space-between;height:74px}
.brand{display:flex;align-items:center;gap:11px;font-family:var(--display);font-weight:600;font-size:20px;letter-spacing:-.01em;color:var(--text)}
.brand .mark{width:22px;height:22px;flex:none}
.nav-links{display:flex;align-items:center;gap:34px}
.nav-links a{font-size:15px;font-weight:500;color:var(--muted);position:relative;padding:11px 0;display:inline-flex;align-items:center}
.nav-links a:hover{color:var(--text)}
.nav-links a::after{content:"";position:absolute;left:0;bottom:6px;width:0;height:1px;background:var(--cyan);transition:width .22s ease}
.nav-links a:hover::after{width:100%}
.nav-cta{display:flex;align-items:center;gap:18px}
.nav-links a.nav-cta-mobile{display:none}
.menu-btn{display:none;align-items:center;justify-content:center;background:none;border:0;cursor:pointer;padding:0;width:44px;height:44px;flex-direction:column;gap:5px}
.menu-btn span{width:22px;height:2px;background:var(--text);display:block;transition:transform .22s var(--ease-out), opacity .18s ease}
.menu-btn.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.menu-btn.open span:nth-child(2){opacity:0}
.menu-btn.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- hero ---------- */
.hero{padding:78px 0 64px}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center}
/* base size fits the narrower single-column heroes (method/services/tools/insights/about/case-studies);
   the homepage's two-column hero-grid gets the larger size below since its column is proportioned for it —
   without this split, that one big size forced 3-line wraps and left a lot of empty space in the narrower heroes */
.hero h1{font-size:clamp(30px,3.8vw,46px);margin:22px 0 26px}
.hero-grid .hero-copy h1{font-size:clamp(38px,5.2vw,68px)}
.hero h1 em{font-style:italic;color:var(--cyan);font-weight:500}
.cta-row{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}
.audit-copy .cta-row{margin-top:26px}
.hero .foot-note{margin-top:30px;font-family:var(--mono);font-size:12.5px;letter-spacing:.03em;color:var(--muted-2);display:flex;align-items:center;gap:10px}
.tickline{display:inline-block;width:1px;height:13px;background:var(--blue)}
.diagram{width:100%;height:auto;display:block}

/* ---------- sector strip ---------- */
.sectors{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);background:var(--space-2)}
.sectors .row{display:flex;align-items:center;gap:28px;flex-wrap:wrap;padding:22px 0}
.sectors .lab{font-family:var(--mono);font-size:11.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-2);white-space:nowrap}
.sectors .items{display:flex;gap:26px;flex-wrap:wrap;font-family:var(--display);font-size:17px;color:var(--text)}
.sectors .items span{position:relative}
.sectors .items span:not(:last-child)::after{content:"·";margin-left:26px;color:var(--blue)}

/* ---------- sector strip: marquee variant (homepage only — see "generic section" below for other .sectors reuses) ---------- */
.sectors-row{display:flex;align-items:center;gap:28px;padding:22px 0}
.marquee{
  flex:1;min-width:0;overflow:hidden;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent);
  mask-image:linear-gradient(90deg,transparent,#000 40px,#000 calc(100% - 40px),transparent);
}
.marquee-track{display:flex;width:max-content;animation:marquee-scroll 34s linear infinite}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-group{display:flex;align-items:center;flex:none}
.marquee-group span{font-family:var(--display);font-size:17px;color:var(--text);white-space:nowrap}
.marquee-group span.dot{margin:0 26px;color:var(--blue);font-family:var(--display)}
@keyframes marquee-scroll{
  from{transform:translateX(0)}
  to{transform:translateX(-50%)}
}

/* ---------- generic section ---------- */
.section{padding:96px 0;border-bottom:1px solid var(--hairline)}
.section.warm{background:var(--space-2)}
.exhibit{font-family:var(--mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--cyan);margin-bottom:20px}
.exhibit b{color:var(--text);font-weight:500}

/* blind spot */
.split{display:grid;grid-template-columns:1fr 1fr;gap:60px;align-items:start}
.blind h2{max-width:14ch}
.blind .body{padding-top:6px}
.blind .body p+p{margin-top:18px}
.contrast{margin-top:34px;border-top:1px solid var(--hairline);padding-top:26px;display:flex;gap:40px;flex-wrap:wrap}
.contrast .k{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);display:block;margin-bottom:6px}
.contrast .v{font-family:var(--display);font-size:22px}
.contrast .v.dim{color:var(--muted-2)}
.contrast .v.hit{color:var(--cyan)}

/* ---------- hero: outcome word-cycler ---------- */
.hero-cycle-line{font-family:var(--sans);font-size:16px;color:var(--muted);margin-top:16px}
.word-cycle{display:inline-block;color:var(--cyan);font-weight:600}

/* ---------- friction, visualised ---------- */
.friction-row-top{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:48px}
.fric-tile{
  border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--panel);
  padding:20px 22px 24px;display:flex;flex-direction:column;
  transition:border-color var(--dur-base) ease, box-shadow var(--dur-base) ease, transform var(--dur-base) ease;
}
.fric-tile:hover{border-color:var(--blue);box-shadow:var(--shadow-glow);transform:translateY(-2px)}
.fric-stage{border-radius:var(--radius-sm);overflow:hidden;margin-bottom:18px}
.fric-svg{width:100%;height:auto;display:block}
.fric-title{font-size:19px;font-weight:600;margin-bottom:8px;color:var(--text)}
.fric-cost{font-size:14px;color:var(--muted)}
.fric-tile-signature{margin-top:24px;padding:28px 30px 32px}
.fric-tile-signature .fric-title{font-size:23px;margin-top:4px}
.fric-tile-signature .fric-cost{font-size:15.5px;max-width:56ch}
.fric-stage-signature{margin-bottom:22px}
.friction-close{margin-top:44px;padding-top:34px;border-top:1px solid var(--hairline);display:flex;align-items:center;justify-content:space-between;gap:24px;flex-wrap:wrap}
.friction-close-line{font-family:var(--display);font-size:19px;color:var(--text);max-width:52ch}

/* fric1 — rage clicks */
.fric1-cursor{transform:translate(126px,74px);animation:fric1-cursor-move 4.5s ease-in-out infinite}
@keyframes fric1-cursor-move{
  0%,7%{transform:translate(126px,74px)}
  9%{transform:translate(126px,76px)}
  11%,29%{transform:translate(126px,74px)}
  31%{transform:translate(126px,76px)}
  33%,51%{transform:translate(126px,74px)}
  53%{transform:translate(126px,76px)}
  55%,70%{transform:translate(126px,74px)}
  90%{transform:translate(180px,108px)}
  100%{transform:translate(126px,74px)}
}
.fric1-burst{opacity:0;transform-origin:118px 71px;animation:fric1-burst-pulse 4.5s ease-out infinite}
.fric1-burst-1{animation-delay:.15s}
.fric1-burst-2{animation-delay:1.65s}
.fric1-burst-3{animation-delay:3.15s}
@keyframes fric1-burst-pulse{
  0%{opacity:0;transform:scale(.5)}
  6%{opacity:1;transform:scale(.6)}
  22%{opacity:0;transform:scale(1.7)}
  100%{opacity:0;transform:scale(1.7)}
}

/* fric2 — the abandoned form */
.fric2-fill{animation-duration:6s;animation-timing-function:ease-in-out;animation-iteration-count:infinite}
.fric2-fill-1{animation-name:fric2-fill-1-anim}
.fric2-fill-2{animation-name:fric2-fill-2-anim}
.fric2-fill-3{animation-name:fric2-fill-3-anim}
@keyframes fric2-fill-1-anim{
  0%{width:0}
  12%,100%{width:152px}
}
@keyframes fric2-fill-2-anim{
  0%,12%{width:0}
  24%,78%{width:152px}
  88%,100%{width:0}
}
@keyframes fric2-fill-3-anim{
  0%,24%{width:0}
  36%,78%{width:152px}
  88%,100%{width:0}
}
.fric2-cursor{animation:fric2-cursor-move 6s ease-in-out infinite}
@keyframes fric2-cursor-move{
  0%{transform:translate(186px,20px)}
  12%{transform:translate(186px,20px)}
  24%{transform:translate(186px,50px)}
  36%,60%{transform:translate(186px,80px)}
  75%,86%{transform:translate(180px,10px)}
  100%{transform:translate(186px,20px)}
}
.fric2-x{opacity:0;animation:fric2-x-fade 6s ease-in-out infinite}
@keyframes fric2-x-fade{
  0%,68%{opacity:0}
  78%,90%{opacity:1}
  100%{opacity:0}
}

/* fric3 — comparison paralysis */
.fric3-tab{fill:var(--panel);animation:fric3-tab-active 4.5s ease-in-out infinite}
.fric3-tab-1{animation-delay:0s}
.fric3-tab-2{animation-delay:1.5s}
.fric3-tab-3{animation-delay:3s}
@keyframes fric3-tab-active{
  0%{fill:var(--panel)}
  8%,25%{fill:var(--panel-2)}
  33%,100%{fill:var(--panel)}
}
.fric3-spinner-arc{transform-origin:110px 88px;animation:fric3-spin 1s linear infinite}
@keyframes fric3-spin{to{transform:rotate(360deg)}}

/* fric4 — the blind handoff (signature) */
.fric4-dot-lost{animation:fric4-dot-lost-move 5s ease-in-out infinite}
@keyframes fric4-dot-lost-move{
  0%{transform:translateX(0);opacity:1}
  40%{transform:translateX(210px);opacity:1}
  48%{transform:translateX(210px);opacity:0}
  100%{transform:translateX(210px);opacity:0}
}
.fric4-dot-held{animation:fric4-dot-held-move 5s ease-in-out infinite}
@keyframes fric4-dot-held-move{
  0%{transform:translateX(0)}
  82%,100%{transform:translateX(420px)}
}
.fric4-pulse{opacity:0;transform-origin:440px 140px;animation:fric4-pulse-ring 5s ease-out infinite}
@keyframes fric4-pulse-ring{
  0%,80%{opacity:0;transform:scale(1)}
  88%{opacity:.85;transform:scale(1.35)}
  100%{opacity:0;transform:scale(2)}
}

/* ---------- the problem, in numbers ---------- */
.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:44px;margin-top:48px}
.stat-block{display:flex;flex-direction:column}
.stat-figure{
  font-family:var(--display);font-weight:600;color:var(--text);line-height:1.05;
  font-size:clamp(38px,4.2vw,56px);position:relative;padding-bottom:18px;margin-bottom:16px;
}
.stat-figure::after{content:"";position:absolute;left:0;bottom:0;width:52px;height:3px;background:var(--blue)}
.stat-figure-text{font-size:clamp(23px,2.4vw,30px);max-width:12ch}
.stat-label{font-family:var(--sans);font-size:15px;color:var(--muted);max-width:34ch}
.stat-source{font-family:var(--mono);font-size:11px;letter-spacing:.03em;color:var(--muted-2);margin-top:14px}
.stats-closing{margin-top:40px;padding-top:26px;border-top:1px solid var(--hairline)}

/* ---------- founder-presence band ---------- */
.founder-photo.placeholder-box{border:1px solid var(--blue)}
.chip-row{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 26px}
.chip{
  display:inline-flex;align-items:center;font-family:var(--mono);font-size:11.5px;letter-spacing:.03em;
  color:var(--muted);background:var(--panel);border:1px solid var(--hairline);
  padding:8px 14px;border-radius:var(--radius-pill);line-height:1.3;
}

/* loop section */
.loop-grid{display:grid;grid-template-columns:.92fr 1.08fr;gap:60px;align-items:center}
.loop-copy h2{max-width:16ch;margin-bottom:22px}
.loop-copy p+p{margin-top:14px}
.loop-examples{margin-top:28px;display:flex;flex-direction:column;gap:0}
.loop-examples .ex{display:flex;align-items:baseline;gap:14px;padding:14px 0;border-top:1px solid var(--hairline);font-size:15.5px}
.loop-examples .ex:last-child{border-bottom:1px solid var(--hairline)}
.loop-examples .from{color:var(--muted-2);font-family:var(--mono);font-size:13px;min-width:132px}
.loop-examples .arw{color:var(--cyan);font-family:var(--mono)}
.loop-examples .to{color:var(--text);font-weight:500}
.loop-visual{background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius-md);padding:30px}

/* how we work */
.steps{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-top:52px;border-top:1px solid var(--text)}
.step{padding:28px 26px 34px;border-right:1px solid var(--hairline);position:relative;transition:transform var(--dur-base) ease, box-shadow var(--dur-base) ease}
.step:last-child{border-right:0}
.step .num{font-family:var(--mono);font-size:12px;color:var(--cyan);letter-spacing:.1em}
.step h3{font-size:21px;margin:16px 0 12px;font-weight:600;color:var(--text)}
.step p{font-size:14.5px}
.step::before{content:"";position:absolute;top:-1px;left:0;width:36px;height:2px;background:var(--blue)}
.step:hover{transform:translateY(-3px);box-shadow:var(--shadow-glow)}

/* proof score */
.proof-grid{display:grid;grid-template-columns:1fr 1.15fr;gap:64px;align-items:center}
.proof-copy h2{margin-bottom:20px;max-width:15ch}
.readout{background:var(--panel);color:var(--text);border-radius:var(--radius-md);padding:34px 36px;font-family:var(--mono)}
.readout .rhead{display:flex;justify-content:space-between;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-bottom:18px;margin-bottom:8px;border-bottom:1px solid rgba(255,255,255,.14)}
.readout .rrow{display:flex;align-items:center;gap:16px;padding:13px 0;border-bottom:1px solid rgba(255,255,255,.08)}
.readout .rrow:last-child{border-bottom:0}
.readout .letter{font-family:var(--display);font-size:26px;color:var(--cyan);width:26px;flex:none;text-align:center}
.readout .rlabel{flex:1;min-width:0;font-size:14px;color:var(--text);letter-spacing:.02em}
.readout .bars{display:flex;gap:4px}
.readout .bars i{width:16px;height:9px;background:rgba(255,255,255,.16);display:block;border-radius:1px}
.readout .bars i.on{background:var(--blue)}
.readout .wt{width:34px;text-align:right;font-size:13px;color:var(--text)}
.readout .rnote{margin-top:20px;font-size:11.5px;color:var(--muted);line-height:1.5}

/* offer */
.offer-head{max-width:60ch;margin-bottom:52px}
.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.card{border:1px solid var(--hairline);border-radius:var(--radius-md);padding:32px 30px 30px;background:var(--panel);display:flex;flex-direction:column;transition:border-color var(--dur-base) ease, transform var(--dur-base) ease, box-shadow var(--dur-base) ease}
.card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:var(--shadow-glow)}
.card .tag{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan)}
.card h3{font-size:25px;margin:16px 0 4px;font-weight:600;color:var(--text)}
.card.feature{background:var(--panel-2);color:var(--text);border-color:var(--panel-2)}
.card.feature .tag{color:var(--cyan)}
.card.feature p{color:var(--muted)}
.card.feature .link{color:var(--text)}
.card.feature .link .arw{color:var(--cyan)}
.card .price{font-family:var(--mono);font-size:12.5px;color:var(--muted-2);margin-bottom:16px}
.card.feature .price{color:var(--muted)}
.card p{font-size:15px;flex:1}
.variant-cards{grid-template-columns:repeat(2,1fr)}
.variant-tag{display:inline-block;background:rgba(91,140,255,.14);padding:4px 10px;border-radius:var(--radius-sm);margin:0 8px 10px 0}
.card.feature .variant-tag{background:rgba(113,230,255,.14)}

/* ---------- pick your variant intro strip (services.html) ---------- */
.variant-intro{border-top:1px solid var(--hairline);border-bottom:1px solid var(--hairline);background:var(--space-2);padding:34px 0;text-align:center}
.variant-tagline{font-family:var(--display);font-size:18px;color:var(--text);margin-top:14px}
.card .link{margin-top:22px;font-weight:600;font-size:14.5px;display:inline-flex;align-items:center;gap:8px;color:var(--text)}
.card .link .arw{color:var(--cyan);transition:transform var(--dur-fast) ease}
.card:hover .link .arw{transform:translateX(3px)}
.badge{font-family:var(--mono);font-size:10.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--space);background:var(--blue);padding:3px 8px;border-radius:var(--radius-sm);align-self:flex-start;margin-bottom:14px;display:inline-block}

/* credibility */
.cred h2{max-width:20ch;margin-bottom:24px}
.cred .lead{margin-bottom:46px}
.pillars{display:grid;grid-template-columns:repeat(3,1fr);gap:44px}
.pillar .p-k{font-family:var(--mono);font-size:12px;letter-spacing:.06em;color:var(--cyan);margin-bottom:12px;display:flex;align-items:center;gap:9px}
.pillar .p-k::before{content:"";width:7px;height:7px;background:var(--blue);display:inline-block;transform:rotate(45deg)}
.pillar h3{font-size:19px;margin-bottom:10px;font-weight:600;font-family:var(--display);color:var(--text)}
.pillar p{font-size:14.5px}

/* cta band */
.cta-band{padding:104px 0;text-align:center;background:var(--space-2);border-bottom:1px solid var(--hairline)}
.cta-band h2{font-size:clamp(30px,4vw,52px);max-width:20ch;margin:0 auto 20px}
.cta-band .lead{margin:0 auto 34px;text-align:center}

/* ---------- services page: the Deliberate Audit ---------- */
.audit-grid{display:grid;grid-template-columns:1fr 1fr;gap:56px;align-items:center}
.audit-copy p+p{margin-top:14px}
.mono-note{font-family:var(--mono);font-size:12.5px;letter-spacing:.03em;color:var(--muted-2);display:flex;align-items:center;gap:10px;margin-top:24px}
.readout .rnum{font-family:var(--mono);font-size:11px;color:var(--blue);width:22px;flex:none}
.readout .rtag{margin-left:auto;font-size:11.5px;color:var(--muted);white-space:nowrap;padding-left:12px}

/* deliverables strip reuses .sectors — see "sector strip" rules above */

/* ---------- services page: the Deliberate Program tiers ---------- */
.tier-attrs{list-style:none;margin:18px 0 6px;border-top:1px solid var(--hairline)}
.tier-attrs li{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:11px 0;border-bottom:1px solid var(--hairline);font-size:13px}
.tier-attrs .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted-2)}
.tier-attrs .v{color:var(--text);font-weight:500;text-align:right}
.card.feature .tier-attrs{border-top-color:rgba(255,255,255,.14)}
.card.feature .tier-attrs li{border-bottom-color:rgba(255,255,255,.1)}
.card.feature .tier-attrs .k{color:var(--muted)}
.card.feature .tier-attrs .v{color:var(--text)}

/* ---------- services page: on-demand ---------- */
.ondemand-row{display:flex;justify-content:space-between;align-items:center;gap:40px;flex-wrap:wrap}
.ondemand-row h2{max-width:22ch}

/* ---------- services page: sub-services strip ---------- */
.subservices{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin-top:52px;border-top:1px solid var(--text)}

/* ---------- services page: FAQ accordion ---------- */
.faq-list{margin-top:40px;border-top:1px solid var(--hairline);max-width:820px}
.faq-item{border-bottom:1px solid var(--hairline)}
.faq-q{display:flex;align-items:center;justify-content:space-between;gap:20px;width:100%;text-align:left;background:none;border:0;cursor:pointer;padding:22px 0;font-family:var(--display);font-weight:600;font-size:17px;color:var(--text)}
.faq-q:hover{color:var(--cyan)}
.faq-q:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
.faq-q .plus{flex:none;width:20px;height:20px;position:relative}
.faq-q .plus::before,.faq-q .plus::after{content:"";position:absolute;background:var(--text);transition:transform var(--dur-slow) var(--ease-out), opacity var(--dur-base) ease}
.faq-q .plus::before{top:50%;left:0;width:100%;height:1.5px;transform:translateY(-50%)}
.faq-q .plus::after{left:50%;top:0;width:1.5px;height:100%;transform:translateX(-50%)}
.faq-q[aria-expanded="true"] .plus::after{transform:translateX(-50%) rotate(90deg);opacity:0}
.faq-a{overflow:hidden;transition:max-height .32s var(--ease-out)}
.faq-a-inner{padding:0 0 22px;font-size:14.5px;color:var(--muted);max-width:66ch}

/* ---------- reusable: related-content links (service-page pattern) ---------- */
.related-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-top:28px}
.related-card{
  display:flex;flex-direction:column;gap:8px;padding:20px 22px;
  border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--panel);
  transition:border-color var(--dur-base) ease, transform var(--dur-base) ease, box-shadow var(--dur-base) ease;
}
.related-card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:var(--shadow-glow)}
.related-card .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--cyan)}
.related-card h3{font-family:var(--display);font-size:17px;font-weight:600;line-height:1.35;color:var(--text)}
.related-card .link{margin-top:auto;font-weight:600;font-size:13.5px;display:inline-flex;align-items:center;gap:6px;color:var(--text)}
.related-card .link .arw{color:var(--cyan);transition:transform var(--dur-fast) ease}
.related-card:hover .link .arw{transform:translateX(3px)}

/* ---------- reusable: diamond-bullet checklist ---------- */
.check-list{list-style:none;margin-top:16px;display:flex;flex-direction:column;gap:9px}
.check-list li{display:flex;align-items:flex-start;gap:10px;font-size:14px;color:var(--muted)}
.check-list li::before{content:"";flex:none;width:7px;height:7px;margin-top:6px;background:var(--blue);display:inline-block;transform:rotate(45deg)}

/* ---------- reusable: bright accent button variant (for use on dark panels) ---------- */
.btn-gold{background:var(--cyan);color:var(--space);border-color:var(--cyan)}
.btn-gold:hover{background:#9FEEFF;border-color:#9FEEFF}

/* ---------- reusable: disabled buttons ---------- */
.btn:disabled{opacity:.4;cursor:not-allowed;pointer-events:none;transform:none}

/* ---------- reusable: visually-hidden (screen-reader-only) content ---------- */
.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}

/* ---------- tools.html: Revenue Leak assessment ---------- */
.aq-shell{max-width:720px;margin:0 auto}
.aq-widget{
  background:var(--panel);border:1px solid var(--hairline);border-radius:var(--radius-lg);
  padding:46px 48px;box-shadow:var(--shadow-sm);
}
.aq-panel h2{margin:18px 0 14px;max-width:26ch}
.aq-panel .lead{margin-bottom:24px}
.aq-panel .check-list{margin-bottom:32px}

/* progress bar */
.aq-progress{margin-bottom:34px}
.aq-progress-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px;font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}
.aq-progress-pct{color:var(--cyan)}
.aq-progress-track{height:4px;border-radius:2px;background:var(--hairline);overflow:hidden}
.aq-progress-fill{height:100%;background:var(--blue);border-radius:2px;width:0%;transition:width .35s var(--ease-out)}

/* question + options */
.aq-question{transition:opacity .2s var(--ease-out), transform .2s var(--ease-out)}
.aq-question.aq-anim{opacity:0;transform:translateY(8px)}
.aq-fieldset{border:0;margin:0;padding:0;min-width:0}
.aq-fieldset legend{
  font-family:var(--display);font-weight:600;font-size:clamp(20px,2.6vw,26px);line-height:1.3;
  color:var(--text);padding:0;margin-bottom:26px;max-width:32ch;
}
.aq-fieldset legend:focus-visible{outline:none}
.aq-options{list-style:none;display:flex;flex-direction:column;gap:10px}
.aq-option{position:relative}
.aq-option-label{
  display:flex;align-items:flex-start;gap:14px;padding:16px 18px;
  border:1px solid var(--hairline);border-radius:var(--radius-md);cursor:pointer;
  font-size:15px;color:var(--muted);
  transition:border-color .18s ease, background .18s ease;
}
.aq-option-label:hover{border-color:var(--blue)}
.aq-radio-dot{
  flex:none;width:18px;height:18px;border-radius:50%;border:1.5px solid var(--hairline);
  margin-top:1px;position:relative;transition:border-color .18s ease;
}
.aq-radio-dot::after{
  content:"";position:absolute;inset:3px;border-radius:50%;background:var(--blue);
  opacity:0;transition:opacity .15s ease;
}
.aq-input:checked + .aq-option-label{border-color:var(--blue);background:rgba(91,140,255,.08)}
.aq-input:checked + .aq-option-label .aq-radio-dot{border-color:var(--blue)}
.aq-input:checked + .aq-option-label .aq-radio-dot::after{opacity:1}
.aq-input:focus-visible + .aq-option-label{outline:2px solid var(--cyan);outline-offset:2px}

/* back / next */
.aq-nav{display:flex;justify-content:space-between;align-items:center;margin-top:36px;gap:16px}

/* result panel */
.aq-result{background:var(--panel-2);color:var(--text);border-radius:var(--radius-md);padding:44px 40px 40px;text-align:center}
.aq-gauge{width:220px;max-width:70%;margin:0 auto;display:block}
.aq-gauge-track{fill:none;stroke:rgba(255,255,255,.14);stroke-width:14;stroke-linecap:round}
.aq-gauge-fill{fill:none;stroke:var(--cyan);stroke-width:14;stroke-linecap:round;transition:stroke-dashoffset 1s var(--ease-out)}
.aq-score-row{display:flex;align-items:baseline;justify-content:center;gap:6px;margin-top:2px}
.aq-score-num{font-family:var(--display);font-size:56px;font-weight:600;color:var(--text);line-height:1}
.aq-score-max{font-family:var(--mono);font-size:15px;color:var(--muted)}
.aq-result .calc-verdict{margin-top:16px}
.aq-result h3{font-size:clamp(21px,2.6vw,27px);margin:22px auto 12px;max-width:32ch;color:var(--text)}
.aq-body{color:var(--muted);max-width:46ch;margin:0 auto 30px;font-size:15px}
.aq-cta-row{display:flex;flex-direction:column;align-items:center;gap:16px}
.aq-retake{background:none;border:0;color:var(--muted);font-family:var(--mono);font-size:12px;letter-spacing:.04em;text-decoration:underline;text-underline-offset:3px;cursor:pointer;padding:4px}
.aq-retake:hover{color:var(--text)}

/* ---------- tools.html: CRO Diagnostic maturity breakdown + priority recommendation ---------- */
.aq-breakdown{margin:28px 0;display:flex;flex-direction:column;gap:16px;text-align:left}
.aq-breakdown-row{display:grid;grid-template-columns:150px 1fr 42px;align-items:center;gap:12px}
.aq-breakdown-label{font-family:var(--mono);font-size:11px;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}
.aq-breakdown-track{height:6px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.aq-breakdown-fill{height:100%;border-radius:3px;background:var(--cyan);width:0%;transition:width 1s var(--ease-out)}
.aq-breakdown-pct{font-family:var(--mono);font-size:12px;color:var(--text);text-align:right}
.aq-priority{margin:24px 0;padding:18px 20px;border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-md);background:rgba(255,255,255,.03);text-align:left}
.aq-priority .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--cyan);display:block;margin-bottom:8px}
.aq-priority p{color:var(--text);font-size:14.5px;line-height:1.55}

/* ---------- article template: teardown structure block (Problem/Evidence/Analysis/
   Hypothesis/Recommendation/What to test/What we learned) ---------- */
.teardown{background:var(--space-2);border:1px solid var(--hairline);border-left:3px solid var(--blue);border-radius:var(--radius-md);padding:30px 32px;margin:44px 0}
.teardown h3{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin:0 0 20px;font-weight:500}
.teardown-fields{display:flex;flex-direction:column;gap:18px}
.teardown-field dt{font-family:var(--mono);font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);margin-bottom:5px}
.teardown-field dd{font-family:var(--sans);font-size:15.5px;color:var(--text);line-height:1.6}

/* checkbox variant of .aq-radio-dot, used by multi-select questions (tool-advisor.html) */
.aq-check-dot{border-radius:4px}
.aq-check-dot::after{border-radius:1.5px;inset:4px}

/* ---------- tool-advisor.html: Testing Tool Advisor result cards ---------- */
.ta-result-heading{font-size:clamp(21px,2.6vw,27px);margin:0 auto 8px;max-width:32ch;color:var(--text)}
.ta-result-sub{color:var(--muted);max-width:46ch;margin:0 auto 30px;font-size:14.5px}
.ta-tool-list{display:flex;flex-direction:column;gap:14px;text-align:left;margin-bottom:32px}
.ta-tool-card{
  display:flex;gap:16px;align-items:flex-start;padding:20px 22px;
  border:1px solid rgba(255,255,255,.14);border-radius:var(--radius-md);background:rgba(255,255,255,.03);
  opacity:0;transform:translateY(10px);animation:ta-rise .5s var(--ease-out) forwards;
}
.ta-tool-card:nth-child(1){animation-delay:.05s}
.ta-tool-card:nth-child(2){animation-delay:.15s}
.ta-tool-card:nth-child(3){animation-delay:.25s}
@keyframes ta-rise{to{opacity:1;transform:none}}
.ta-tool-rank{
  flex:none;width:30px;height:30px;border-radius:50%;border:1px solid var(--cyan);
  display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:13px;color:var(--cyan);
}
.ta-tool-body{min-width:0}
.ta-tool-name{font-family:var(--sans);font-size:16.5px;font-weight:600;color:var(--text);margin-bottom:6px}
.ta-tool-why{font-family:var(--sans);font-size:14px;color:var(--muted);line-height:1.55}
.ta-tool-tags{margin-top:10px;font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;color:var(--muted)}
.ta-tool-tag{display:inline-block;background:rgba(91,140,255,.14);color:var(--cyan);border-radius:var(--radius-sm);padding:2px 7px;margin:3px 5px 0 0}
.ta-email{margin-top:6px}
.ta-email-form{display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:6px}
.ta-email-row{display:flex;gap:10px;width:100%;max-width:380px}
.ta-email-row input{
  flex:1;min-width:0;padding:12px 14px;border-radius:var(--radius-md);border:1px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.05);color:var(--text);font-family:var(--sans);font-size:14.5px;
}
.ta-email-row input::placeholder{color:var(--muted-2)}
.ta-email-row input.invalid{border-color:var(--danger)}
.ta-email-status{font-family:var(--mono);font-size:12px;color:var(--muted);min-height:16px}
.ta-email-status.success{color:var(--success)}
.ta-email-status.error{color:var(--danger)}

/* ---------- method page: vertical process timeline ---------- */
.timeline{margin-top:52px;border-top:1px solid var(--text)}
.tl-item{display:grid;grid-template-columns:48px 1fr;gap:28px;padding:32px 0;border-bottom:1px solid var(--hairline)}
.tl-item:last-child{border-bottom:0}
.tl-num{width:48px;height:48px;border-radius:50%;border:1px solid var(--text);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:13px;color:var(--text);flex:none}
.tl-body::before{content:"";width:36px;height:2px;background:var(--blue);display:block;margin-bottom:14px}
.tl-body h3{font-size:22px;margin-bottom:10px;font-weight:600;color:var(--text)}
.tl-body p{font-size:15px;max-width:64ch}

/* ---------- deliberate-audit page: research list ---------- */
.research-list{margin-top:44px;border-top:1px solid var(--hairline)}
.research-item{display:grid;grid-template-columns:56px 1fr;gap:24px;padding:26px 12px;border-bottom:1px solid var(--hairline);border-radius:var(--radius-sm)}
.research-item:last-child{border-bottom:0}
.research-num{font-family:var(--mono);font-size:13px;color:var(--muted-2);padding-top:3px}
.research-body h3{font-size:18px;font-weight:600;color:var(--text)}
.research-sub{font-family:var(--mono);font-size:11.5px;color:var(--muted-2);font-weight:400;margin-left:6px}
.research-body p{margin-top:6px;font-size:14.5px;color:var(--muted);max-width:62ch}
.research-item-highlight{background:rgba(91,140,255,.08);box-shadow:inset 3px 0 0 var(--blue);border-bottom-color:transparent}
.research-item-highlight .research-num{color:var(--cyan)}

/* ---------- deliberate-audit page: dossier (deliverables), a .readout variant ---------- */
.dossier .d-row{display:grid;grid-template-columns:40px 1fr;gap:20px;padding:20px 0;border-bottom:1px solid rgba(255,255,255,.08);align-items:start}
.dossier .d-row:last-child{border-bottom:0}
.dossier .d-num{font-family:var(--display);font-size:22px;color:var(--cyan);flex:none}
.dossier .d-body h3{font-family:var(--sans);font-size:16px;font-weight:600;color:var(--text);margin-bottom:4px}
.dossier .d-body p{font-family:var(--sans);font-size:13.5px;color:var(--muted);line-height:1.5}

/* ---------- method page: PROOF Score calculator ---------- */
.calc{display:grid;grid-template-columns:1.1fr .9fr;gap:56px;align-items:start;margin-top:48px}
.calc-row{margin-bottom:28px}
.calc-row:last-child{margin-bottom:0}
.calc-row-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px;gap:10px}
.calc-row-head label{font-family:var(--sans);font-weight:600;font-size:14.5px;color:var(--text)}
.calc-row-head .wt{font-family:var(--mono);font-size:11px;color:var(--cyan);margin-left:6px}
.calc-row-head output{font-family:var(--mono);font-size:16px;color:var(--text);min-width:16px;text-align:right}
.calc input[type="range"]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:2px;background:var(--hairline);outline:none;cursor:pointer;display:block}
.calc input[type="range"]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:20px;height:20px;border-radius:50%;background:var(--blue);border:2px solid var(--space);box-shadow:0 0 0 1px var(--hairline);cursor:pointer;transition:background .15s ease}
.calc input[type="range"]::-webkit-slider-thumb:hover{background:var(--cyan)}
.calc input[type="range"]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--blue);border:2px solid var(--space);box-shadow:0 0 0 1px var(--hairline);cursor:pointer;transition:background .15s ease}
.calc input[type="range"]::-moz-range-thumb:hover{background:var(--cyan)}
.calc input[type="range"]::-moz-range-track{height:4px;border-radius:2px;background:var(--hairline)}
.calc input[type="range"]:focus-visible{outline:2px solid var(--cyan);outline-offset:6px}
.calc-result{background:var(--panel);color:var(--text);border-radius:var(--radius-md);padding:34px 36px;display:flex;flex-direction:column}
.calc-gauge-track{height:10px;border-radius:6px;background:rgba(255,255,255,.14);overflow:hidden}
.calc-gauge-fill{height:100%;width:0%;background:var(--blue);border-radius:6px;transition:width .5s var(--ease-out)}
.calc-score{display:flex;align-items:baseline;gap:6px;margin-top:16px}
.calc-score #calcTotal{font-family:var(--display);font-size:44px;font-weight:600;color:var(--text);line-height:1}
.calc-max{font-family:var(--mono);font-size:14px;color:var(--muted)}
.calc-verdict{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;padding:8px 14px;border-radius:var(--radius-pill);display:inline-block;margin-top:18px;border:1px solid rgba(255,255,255,.24);color:var(--text);background:rgba(255,255,255,.06);transition:background .2s ease, color .2s ease, border-color .2s ease}
.calc-verdict.tier-high{background:var(--success);color:var(--space);border-color:var(--success)}
.calc-verdict.tier-mid{background:rgba(91,140,255,.16);color:var(--cyan);border-color:rgba(91,140,255,.4)}
.calc-verdict.tier-low{background:rgba(255,255,255,.06);color:var(--muted);border-color:rgba(255,255,255,.14)}
.calc-result .mono-note{color:var(--muted);margin-top:22px}
.calc-result .btn{margin-top:26px;align-self:flex-start}

/* ---------- case studies index: sector filter bar ---------- */
.cs-filters{display:flex;gap:10px;flex-wrap:wrap;margin:36px 0 44px}
.cs-filter-btn{
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);background:var(--panel);border:1px solid var(--hairline);
  border-radius:var(--radius-pill);padding:9px 18px;cursor:pointer;
  transition:border-color .18s ease, color .18s ease, background .18s ease;
}
.cs-filter-btn:hover{border-color:var(--blue);color:var(--text)}
.cs-filter-btn.active{background:var(--blue);border-color:var(--blue);color:var(--space)}
.cs-filter-btn:focus-visible{outline:2px solid var(--cyan);outline-offset:3px}

/* ---------- case studies index: card grid ---------- */
.cs-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.cs-card{
  border:1px solid var(--hairline);border-radius:var(--radius-md);padding:30px 28px;background:var(--panel);
  display:flex;flex-direction:column;gap:16px;
  transition:border-color var(--dur-base) ease, transform var(--dur-base) ease, box-shadow var(--dur-base) ease;
}
.cs-card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:var(--shadow-glow)}
.cs-card[hidden]{display:none}
.cs-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.cs-status{display:inline-flex;align-items:center;gap:7px;font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2);white-space:nowrap;padding-top:2px}
.cs-status .dot{width:6px;height:6px;border-radius:50%;background:var(--success);flex:none;animation:csPulse 1.8s ease-in-out infinite}
.cs-card h3{font-size:21px;font-weight:600;line-height:1.2;color:var(--text)}
.cs-card p{font-size:14.5px;flex:1}
.cs-card-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--hairline);padding-top:16px;flex-wrap:wrap}
.cs-tag{font-family:var(--mono);font-size:10px;letter-spacing:.1em;text-transform:uppercase;color:var(--cyan);background:rgba(113,230,255,.1);padding:5px 10px;border-radius:var(--radius-sm);white-space:nowrap}
.cs-card .link{font-weight:600;font-size:13.5px;display:inline-flex;align-items:center;gap:7px;color:var(--text)}
.cs-card .link .arw{color:var(--cyan);transition:transform var(--dur-fast) ease}
.cs-card:hover .link .arw{transform:translateX(3px)}
.cs-empty{margin-top:8px;font-size:15px;color:var(--muted-2)}
.cs-empty a{color:var(--cyan);text-decoration:underline;text-underline-offset:3px}
@keyframes csPulse{0%,100%{opacity:1}50%{opacity:.25}}

/* ---------- case studies: experiment-record card (extends .cs-card / reuses
   .exp-fields from the homepage experiment-preview cards) ---------- */
.cs-grid.exp-records{grid-template-columns:repeat(2,1fr)}
.exp-record-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}
.exp-record-meta{display:flex;flex-direction:column;gap:4px}
.exp-record-brand{font-family:var(--sans);font-size:13px;color:var(--muted)}
.exp-record-tags{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 2px}
.exp-record h3{font-family:var(--display);font-size:20px;font-weight:600;color:var(--text);margin:2px 0 4px}
.exp-record-metrics{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding-top:16px;margin-top:4px;border-top:1px solid var(--hairline)}
.exp-metric-block{display:flex;flex-direction:column;gap:4px}
.exp-metric-block .k{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2)}
.exp-metric-block .v{font-family:var(--sans);font-size:13.5px;color:var(--text)}
.exp-record-outcome{display:flex;flex-direction:column;gap:10px;padding-top:16px;margin-top:16px;border-top:1px solid var(--hairline)}
.exp-outcome-row{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.exp-outcome-row .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2);white-space:nowrap}
.exp-outcome-row .v{font-family:var(--sans);font-size:13.5px;color:var(--text);text-align:right}
.exp-outcome-row .v.pending{color:var(--muted-2);font-style:italic}
.exp-record-foot{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:10px;padding-top:16px;margin-top:16px;border-top:1px solid var(--hairline)}

/* ---------- results card (case-studies.html) — swap in a real result by
   editing the RESULT object at the top of js/result-card.js; everything
   here renders from that one object once RESULT.state is set to 'live' ---------- */
.result-card{
  border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--panel);
  padding:48px 44px;text-align:center;max-width:720px;margin:0 auto;
}
.result-quote-mark{font-family:var(--display);font-size:56px;color:var(--blue);line-height:1;margin-bottom:6px}
.result-pending-text{font-family:var(--display);font-size:clamp(19px,1.8vw,23px);color:var(--text);line-height:1.55;max-width:52ch;margin:0 auto 30px}
.result-quote{font-family:var(--display);font-style:italic;font-size:clamp(20px,2vw,25px);color:var(--text);line-height:1.55;max-width:52ch;margin:0 auto 30px}
.result-metric{display:flex;flex-direction:column;align-items:center;gap:6px;margin-bottom:28px}
.result-metric-value{font-family:var(--display);font-weight:600;font-size:clamp(44px,5vw,64px);color:var(--text);line-height:1;position:relative;padding-bottom:16px}
.result-metric-value::after{content:"";position:absolute;left:50%;bottom:0;transform:translateX(-50%);width:52px;height:3px;background:var(--blue)}
.result-metric-label{font-family:var(--sans);font-size:14px;color:var(--muted)}
.result-person{display:flex;align-items:center;justify-content:center;gap:14px;padding-top:22px;border-top:1px solid var(--hairline)}
.result-person-info{text-align:left}
.result-name{display:block;font-family:var(--sans);font-weight:600;font-size:15px;color:var(--text)}
.result-role{display:block;font-family:var(--mono);font-size:11px;color:var(--muted-2);margin-top:2px}
.result-logo{height:26px;width:auto;margin-left:8px}

/* ---------- case study template: scorecard component (dark panel, reused per-case) ---------- */
.scorecard{background:var(--panel);color:var(--text);border-radius:var(--radius-md);padding:34px 36px;font-family:var(--mono)}
.scorecard .sc-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted);padding-bottom:18px;margin-bottom:24px;border-bottom:1px solid rgba(255,255,255,.14)}
.scorecard .sc-status{padding:4px 12px;border-radius:var(--radius-pill);border:1px solid rgba(255,255,255,.24);color:var(--text);font-size:10px;letter-spacing:.1em;white-space:nowrap}
.scorecard .sc-status.tier-win{background:var(--success);color:var(--space);border-color:var(--success)}
.scorecard .sc-status.tier-flat{background:rgba(255,255,255,.06);color:var(--muted)}
.sc-row{margin-bottom:26px}
.sc-row:last-of-type{margin-bottom:0}
.sc-row-top{display:flex;justify-content:space-between;align-items:baseline;gap:14px;margin-bottom:10px;font-family:var(--sans)}
.sc-metric{font-size:14.5px;color:var(--text);font-weight:600}
.sc-value{font-family:var(--mono);font-size:14.5px;color:var(--cyan);white-space:nowrap}
.sc-bar-track{height:6px;border-radius:3px;background:rgba(255,255,255,.12);overflow:hidden}
.sc-bar-fill{height:100%;border-radius:3px;background:var(--blue)}
.sc-bar-fill.sc-bar-secondary{background:var(--text)}
.sc-note{margin-top:24px;padding-top:20px;border-top:1px solid rgba(255,255,255,.14);font-size:12px;color:var(--muted);line-height:1.6}

/* ---------- case study template: misc reusable bits ---------- */
.cs-back{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2);margin-bottom:26px;transition:color .18s ease}
.cs-back:hover{color:var(--cyan)}
.cs-back .arw{transform:rotate(180deg);display:inline-block}
.placeholder-box{
  border:1px dashed var(--hairline);border-radius:var(--radius-sm);background:var(--space-2);
  display:flex;align-items:center;justify-content:center;text-align:center;
  padding:40px 24px;min-height:220px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;color:var(--muted-2);line-height:1.7;
}
.exp-meta{list-style:none;margin-top:24px;border-top:1px solid var(--hairline)}
.exp-meta li{display:flex;justify-content:space-between;gap:14px;padding:12px 0;border-bottom:1px solid var(--hairline);font-size:13.5px}
.exp-meta .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}
.exp-meta .v{color:var(--text);font-weight:500;text-align:right}

/* ---------- about page: credentials strip (extends .sectors) ---------- */
.cred-row{display:flex;align-items:center;gap:28px;flex-wrap:wrap;padding:22px 0}
.cred-badge{
  flex:none;width:84px;height:84px;border-radius:50%;border:1px dashed var(--hairline);
  background:var(--panel);display:flex;align-items:center;justify-content:center;text-align:center;
  font-family:var(--mono);font-size:9px;letter-spacing:.03em;color:var(--muted-2);line-height:1.35;padding:8px;
}
.cred-text{display:flex;flex-direction:column;gap:10px}
.cred-text .lab{white-space:normal}

/* ---------- about page: Deliberate Lab vs. typical agency comparison ---------- */
.compare{margin-top:44px;border-top:1px solid var(--text)}
.compare-head{
  display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:24px;padding:0 0 14px;
  border-bottom:1px solid var(--hairline);
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted-2);
}
.compare-head .ch-us{color:var(--cyan)}
.compare-row{
  display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:24px;align-items:start;
  padding:20px 0;border-bottom:1px solid var(--hairline);
}
.compare-row:last-child{border-bottom:0}
.cr-label{font-family:var(--display);font-weight:600;font-size:16.5px;color:var(--text);padding-top:1px}
.cr-tag{display:none}
.cr-typical{font-size:14.5px;color:var(--muted-2);line-height:1.5}
.cr-us{font-size:14.5px;color:var(--text);font-weight:500;line-height:1.5;display:flex;align-items:flex-start;gap:9px}
.cr-us::before{content:"";flex:none;width:7px;height:7px;margin-top:6px;background:var(--blue);display:inline-block;transform:rotate(45deg)}

/* ---------- insights.html: article card grid (filter bar reuses .cs-filters / .cs-filter-btn, grid reuses .cs-grid, tag reuses .cs-tag) ---------- */
.ins-card{
  border:1px solid var(--hairline);border-radius:var(--radius-lg);overflow:hidden;background:var(--panel);
  display:flex;flex-direction:column;
  transition:border-color var(--dur-base) ease, transform var(--dur-base) ease, box-shadow var(--dur-base) ease;
}
.ins-card:hover{border-color:var(--blue);transform:translateY(-3px);box-shadow:var(--shadow-glow)}
.ins-card[hidden]{display:none}
.ins-card-link{display:flex;flex-direction:column;height:100%;color:inherit}
.ins-card-soon{opacity:.9}
.ins-media{
  aspect-ratio:16/9;position:relative;overflow:hidden;
  background:linear-gradient(135deg,var(--panel-2) 0%,#16263a 55%,var(--cyan) 150%);
  display:flex;align-items:flex-end;padding:16px;
}
.ins-media-index{font-family:var(--display);font-size:52px;font-weight:600;color:rgba(255,255,255,.16);line-height:1}
.ins-body{padding:24px 24px 26px;display:flex;flex-direction:column;gap:12px;flex:1}
.ins-meta{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.ins-date{font-family:var(--mono);font-size:11px;color:var(--muted-2);white-space:nowrap}
.ins-body h3{font-size:19px;font-weight:600;line-height:1.35;color:var(--text)}
.ins-body p{font-size:14px;color:var(--muted);flex:1}
.ins-cta{margin-top:4px;font-weight:600;font-size:13.5px;display:inline-flex;align-items:center;gap:7px;color:var(--text)}
.ins-cta .arw{color:var(--cyan);transition:transform var(--dur-fast) ease}
.ins-card:hover .ins-cta .arw{transform:translateX(3px)}
.ins-cta-soon{color:var(--muted-2);font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase}

/* ---------- insights.html: newsletter capture panel ---------- */
.news-panel{
  background:var(--panel-2);color:var(--text);border-radius:var(--radius-lg);padding:52px 56px;
  display:grid;grid-template-columns:1.1fr 1fr;gap:48px;align-items:center;
}
.news-copy .eyebrow{color:var(--cyan)}
.news-copy h2{color:var(--text);margin:14px 0 12px;max-width:16ch}
.news-copy .lead{color:var(--muted)}
.news-form{width:100%}
.news-field{display:flex;gap:10px;flex-wrap:wrap}
.news-field input[type="email"]{
  flex:1;min-width:200px;padding:14px 16px;border:1px solid rgba(255,255,255,.2);border-radius:var(--radius-sm);
  background:rgba(255,255,255,.06);color:var(--text);font-family:var(--sans);font-size:15px;
  transition:border-color .18s ease, box-shadow .18s ease;
}
.news-field input::placeholder{color:var(--muted-2)}
.news-field input:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(113,230,255,.18)}
.news-field input.invalid{border-color:var(--danger)}
.news-status{margin-top:14px;font-family:var(--mono);font-size:12.5px;color:var(--muted);min-height:16px}
.news-status.success{color:var(--success)}
.news-status.error{color:var(--danger)}

/* ---------- article-template.html / article pages: editorial reading layout ---------- */
.article-hero{padding:56px 0 40px;border-bottom:1px solid var(--hairline)}
.article-wrap{max-width:68ch;margin:0 auto;padding:0 32px}
.article-title{font-size:clamp(30px,4.6vw,50px);line-height:1.14;margin:20px 0 20px}
.article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-family:var(--mono);font-size:12.5px;color:var(--muted-2);letter-spacing:.02em}
.article-meta .dot{width:3px;height:3px;border-radius:50%;background:var(--muted-2);display:inline-block}
.article-body{padding:64px 0 8px}
.article-body h2{font-size:clamp(23px,3vw,30px);margin:52px 0 18px;line-height:1.28;color:var(--text)}
.article-body h3{font-size:clamp(18.5px,2.2vw,22px);margin:36px 0 14px;line-height:1.32;color:var(--text)}
.article-body p{font-size:17px;line-height:1.75;color:var(--muted);margin-bottom:22px}
.article-body ul,.article-body ol{margin:0 0 24px 22px;color:var(--muted);font-size:16.5px;line-height:1.75}
.article-body li{margin-bottom:8px}
.article-body a{color:var(--cyan);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--blue)}
.article-body a:hover{color:var(--text)}
.article-body strong{color:var(--text);font-weight:600}
.article-body blockquote{
  margin:40px 0;padding:2px 0 2px 26px;border-left:3px solid var(--blue);
  font-family:var(--display);font-style:italic;font-size:clamp(20px,2.4vw,25px);
  line-height:1.5;color:var(--cyan);
}
.article-body blockquote cite{display:block;margin-top:12px;font-family:var(--mono);font-style:normal;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2)}
.article-figure{margin:44px 0}
.article-figure figcaption{margin-top:12px;font-family:var(--mono);font-size:12.5px;color:var(--muted-2);text-align:center}
.article-body pre{background:var(--panel);color:var(--text);border-radius:var(--radius-md);padding:20px 22px;overflow-x:auto;font-family:var(--mono);font-size:13.5px;line-height:1.6;margin:32px 0}
.article-body code{font-family:var(--mono);font-size:.9em;background:var(--space-2);padding:2px 6px;border-radius:var(--radius-sm);color:var(--text)}
.article-body pre code{background:none;padding:0;color:inherit}
.takeaways{background:var(--space-2);border:1px solid var(--hairline);border-left:3px solid var(--blue);border-radius:var(--radius-md);padding:28px 30px;margin:44px 0}
.takeaways h3{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan);margin:0 0 16px;font-weight:500}
.takeaways .check-list{margin-top:0}
.article-author{display:flex;align-items:center;gap:14px;margin-top:48px;padding-top:32px;border-top:1px solid var(--hairline)}
.article-author-avatar{width:46px;height:46px;border-radius:50%;flex:none;background:var(--panel);border:1px dashed var(--hairline);display:flex;align-items:center;justify-content:center;font-family:var(--mono);font-size:9px;color:var(--muted-2);text-align:center;line-height:1.2}
.article-author-name{font-family:var(--display);font-weight:600;font-size:15.5px;color:var(--text)}
.article-author-role{font-family:var(--mono);font-size:11.5px;color:var(--muted-2);margin-top:2px}

/* ---------- 404 page ---------- */
.err-section{padding:150px 0 120px;border-bottom:0}
.err-num{font-family:var(--display);font-weight:600;font-size:clamp(84px,15vw,164px);line-height:1;color:var(--blue);margin:10px 0 4px}
.err-section h1{font-size:clamp(28px,3.6vw,42px);margin-bottom:18px}

/* stub page hero (method / services / case-studies / about / insights) */
.page-hero{padding:132px 0 88px}
.page-hero .tag-soon{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);background:var(--panel);border:1px solid var(--hairline);padding:6px 12px;border-radius:var(--radius-pill);margin-bottom:22px}
.page-hero h1{font-size:clamp(32px,4.6vw,54px);margin:0 0 22px}
.page-hero .btn{margin-top:32px}

/* footer */
footer{background:var(--space-2);color:var(--muted);padding:70px 0 34px}
.f-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:40px;padding-bottom:48px;border-bottom:1px solid rgba(255,255,255,.12)}
.f-brand .brand{color:var(--text)}
.f-brand p{color:var(--muted);font-family:var(--mono);font-size:12.5px;margin-top:16px;letter-spacing:.02em}
.f-locale{display:flex;align-items:center;gap:9px;margin-top:18px}
.f-locale .flag-in{flex:none;border-radius:1px;box-shadow:0 0 0 1px rgba(255,255,255,.16)}
.f-locale span{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.f-col h4{font-family:var(--mono);font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted-2);margin-bottom:16px;font-weight:400}
.f-col a{display:block;color:var(--muted);font-size:14.5px;padding:11px 0}
.f-col a:hover{color:var(--cyan)}
.f-bot{display:flex;justify-content:space-between;align-items:center;padding-top:26px;flex-wrap:wrap;gap:12px}
.f-bot span{font-family:var(--mono);font-size:12px;color:var(--muted-2);letter-spacing:.02em}

/* ---------- book-a-call modal ---------- */
body.modal-open,body.nav-open{overflow:hidden}
.modal-overlay{
  position:fixed;inset:0;z-index:200;
  background:rgba(5,7,11,.72);
  backdrop-filter:blur(3px);
  display:flex;align-items:center;justify-content:center;
  padding:24px;
  opacity:0;visibility:hidden;
  transition:opacity .22s ease, visibility .22s ease;
}
.modal-overlay.open{opacity:1;visibility:visible}
.modal{
  position:relative;
  width:100%;max-width:440px;max-height:90vh;overflow-y:auto;
  background:var(--panel-2);
  border-radius:var(--radius-lg);
  padding:40px 36px 34px;
  box-shadow:var(--shadow-md);
  transform:translateY(14px) scale(.98);
  transition:transform .24s ease;
}
.modal-overlay.open .modal{transform:translateY(0) scale(1)}
.modal-close{
  position:absolute;top:10px;right:10px;
  width:44px;height:44px;border-radius:50%;border:1px solid var(--hairline);
  background:transparent;color:var(--muted);
  font-size:22px;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  transition:border-color .18s ease, color .18s ease;
}
.modal-close:hover{border-color:var(--cyan);color:var(--text)}
.modal-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px;font-family:var(--display);font-weight:600;font-size:18px;letter-spacing:-.01em;color:var(--text)}
.modal-brand .mark{width:20px;height:20px;flex:none}
.modal .eyebrow{margin-bottom:14px}
.modal h3{font-size:clamp(23px,3vw,28px);margin-bottom:8px}
.modal-sub{font-size:14.5px;color:var(--muted);margin-bottom:26px;max-width:38ch}
/* .form-panel shares every one of these rules with .modal (the booking form) —
   the contact page's form reuses this exact input/label/status system so both
   forms always look and behave identically. */
.modal .field,.form-panel .field{margin-bottom:18px}
.modal label,.form-panel label{
  display:block;font-family:var(--mono);font-size:11px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted-2);margin-bottom:7px;
}
.modal input[type="text"],.modal input[type="tel"],
.form-panel input[type="text"],.form-panel input[type="email"],.form-panel select,.form-panel textarea{
  width:100%;padding:13px 14px;border:1px solid var(--hairline);border-radius:var(--radius-sm);
  font-family:var(--sans);font-size:15.5px;color:var(--text);background:var(--space-2);
  transition:border-color .18s ease, box-shadow .18s ease;
}
.form-panel textarea{resize:vertical;min-height:100px;line-height:1.5}
.form-panel select{
  appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238B9AAA' fill='none' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:36px;
}
.form-panel select:invalid{color:var(--muted-2)}
.modal input::placeholder,.form-panel input::placeholder,.form-panel textarea::placeholder{color:var(--muted-2)}
.modal input:focus,.form-panel input:focus,.form-panel select:focus,.form-panel textarea:focus{outline:none;border-color:var(--cyan);box-shadow:0 0 0 3px rgba(113,230,255,.16)}
.modal input.invalid,.form-panel input.invalid,.form-panel select.invalid{border-color:var(--danger)}
.modal .err,.form-panel .err{display:none;margin-top:6px;font-size:12.5px;color:var(--danger)}
.modal input.invalid + .err,.form-panel input.invalid + .err,.form-panel select.invalid + .err{display:block}
.hp-field{position:absolute;left:-9999px;top:-9999px;width:1px;height:1px;overflow:hidden}
.modal-submit,.form-panel .btn[type="submit"]{width:100%;justify-content:center;margin-top:6px}
.modal-submit:disabled,.form-panel .btn[type="submit"]:disabled{opacity:.65;cursor:default;transform:none}
.modal-status,.form-status{margin-top:14px;text-align:center;font-family:var(--mono);font-size:12.5px;letter-spacing:.02em;min-height:16px;color:var(--muted-2)}
.modal-status.success,.form-status.success{color:var(--success)}
.modal-status.error,.form-status.error{color:var(--danger)}

/* ---------- contact page: standalone form panel (reuses .split for the grid) ---------- */
.form-panel{border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--panel);padding:38px 36px}

@media(max-width:520px){
  .modal{padding:32px 24px 28px;border-radius:var(--radius-md)}
  .modal-overlay{padding:16px}
}
@media(prefers-reduced-motion:reduce){
  .modal-overlay,.modal{transition:none}
}

/* reveal on scroll */
.reveal{opacity:0;transform:translateY(18px);transition:opacity .7s ease, transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* ============================================================
   Motion system (js/motion.js) — all of it degrades to a plain,
   fully-visible page if JS is unavailable, and is skipped entirely
   under prefers-reduced-motion (see the media query at the bottom).
   ============================================================ */

/* scroll-progress bar */
.scroll-progress{position:absolute;top:0;left:0;height:2px;width:0%;background:var(--blue);z-index:2;transition:width .12s ease-out}

/* hero entrance sequence */
.hero-copy.motion-hero .eyebrow,
.hero-copy.motion-hero .lead,
.hero-copy.motion-hero .cta-row,
.hero-copy.motion-hero .foot-note{opacity:0}
.hero-copy.motion-hero .eyebrow{animation:motionUp .42s var(--ease-out) .02s forwards}
.hero-copy.motion-hero .lead{animation:motionUp .38s var(--ease-out) .26s forwards}
.hero-copy.motion-hero .cta-row{animation:motionUp .38s var(--ease-out) .34s forwards}
.hero-copy.motion-hero .foot-note{animation:motionUp .34s var(--ease-out) .42s forwards}
.hero-copy.motion-hero h1 .w{
  display:inline-block;opacity:0;transform:translateY(.4em);
  animation:motionUp .42s var(--ease-out) forwards;
  animation-delay:calc(50ms + min(var(--i,0) * 14ms, 140ms));
}
@keyframes motionUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}

/* self-drawing hero diagram (FIG. A) */
svg.diagram.fig-armed .fig-node{opacity:0;transform:translateY(6px);transition:opacity .5s var(--ease-out), transform .5s var(--ease-out)}
svg.diagram.fig-armed .fig-node-a{transition-delay:.1s}
svg.diagram.fig-armed .fig-node-b{transition-delay:.22s}
svg.diagram.fig-armed .fig-arc{transition:stroke-dashoffset .85s var(--ease-out)}
svg.diagram.fig-armed .fig-arc-decision{transition-delay:.38s}
svg.diagram.fig-armed .fig-arc-back{transition-delay:1.15s}
svg.diagram.fig-armed .fig-label{opacity:0;transition:opacity .4s ease}
svg.diagram.fig-armed .fig-label-decision{transition-delay:1.05s}
svg.diagram.fig-armed .fig-label-back{transition-delay:1.55s}
svg.diagram.fig-armed .fig-badge{opacity:0;transform:translateY(4px);transition:opacity .45s ease, transform .45s ease;transition-delay:1.85s}
svg.diagram.fig-armed.fig-draw .fig-node{opacity:1;transform:none}
svg.diagram.fig-armed.fig-draw .fig-arc{stroke-dashoffset:0}
svg.diagram.fig-armed.fig-draw .fig-label{opacity:1}
svg.diagram.fig-armed.fig-draw .fig-badge{opacity:1;transform:none}

/* staggered scroll reveals — .reveal[data-stagger] animates its direct children */
.reveal[data-stagger]{opacity:1;transform:none}
.reveal[data-stagger] > *{
  opacity:0;transform:translateY(16px);
  transition:opacity .55s var(--ease-out), transform .55s var(--ease-out);
  transition-delay:calc(var(--i,0) * 80ms);
}
.reveal[data-stagger].in > *{opacity:1;transform:none}

/* PROOF weight bars — fill in on scroll, alongside the .countup numerals */
.readout.bars-armed .bars i.on{transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease-out);transition-delay:calc(var(--i,0) * 110ms)}
.readout.bars-armed.bars-fill .bars i.on{transform:scaleX(1)}

/* active-section nav highlight */
.nav-links a.active{color:var(--text)}
.nav-links a.active::after{width:100%}

/* ============================================================
   Homepage (Shopify CRO rebuild) — new components
   ============================================================ */

/* ---------- hero: experimentation-system flow diagram ---------- */
.flow-diagram{width:100%;height:auto;display:block;max-width:340px;margin:0 auto}
.flow-pulse{animation:flow-pulse-move 7s ease-in-out infinite}
@keyframes flow-pulse-move{
  0%{transform:translateY(0);opacity:1}
  15%{transform:translateY(84px);opacity:1}
  30%{transform:translateY(168px);opacity:1}
  45%{transform:translateY(252px);opacity:1}
  60%{transform:translateY(336px);opacity:1}
  75%{transform:translateY(420px);opacity:1}
  85%{transform:translateY(420px);opacity:0}
  90%{transform:translateY(0);opacity:0}
  100%{transform:translateY(0);opacity:1}
}

/* ---------- problem section: leaking-funnel visualisation ---------- */
.problem-funnel{display:grid;grid-template-columns:repeat(7,1fr);gap:14px;margin-top:48px}
.funnel-stage{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;padding-top:6px}
.funnel-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;color:var(--muted);text-align:center;line-height:1.4}
.funnel-track{width:100%;height:6px;border-radius:3px;background:var(--hairline);overflow:hidden}
.funnel-fill{height:100%;border-radius:3px;background:linear-gradient(90deg,var(--blue),var(--cyan))}
.funnel-leak{position:absolute;top:-2px;right:2px;width:7px;height:7px;border-radius:50%;background:var(--danger)}
.funnel-leak::after{content:"";position:absolute;inset:0;border-radius:50%;background:var(--danger);animation:funnel-leak-pulse 2.2s ease-in-out infinite;animation-delay:calc(var(--i,0) * 300ms)}
@keyframes funnel-leak-pulse{0%{opacity:.65;transform:scale(1)}70%{opacity:0;transform:scale(2.6)}100%{opacity:0;transform:scale(2.6)}}
.funnel-caption{margin-top:28px;font-family:var(--mono);font-size:12px;color:var(--muted-2);display:flex;align-items:center;gap:10px}

/* ---------- experimentation system: 6-step grid (extends .steps) ---------- */
.steps-6{grid-template-columns:repeat(6,1fr)}

/* ---------- what we optimize: journey strip ---------- */
.journey-strip{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-top:44px}
.journey-item{font-family:var(--mono);font-size:12.5px;letter-spacing:.03em;color:var(--text);background:var(--panel);border:1px solid var(--hairline);padding:9px 16px;border-radius:var(--radius-pill);white-space:nowrap}
.journey-strip .arw{color:var(--blue);font-size:13px}
.optimize-areas{margin-top:32px}
.optimize-areas .k{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);display:block;margin-bottom:14px}

/* ---------- services page: "how we work" continuous-loop diagram ---------- */
.loop-diagram-wrap{margin-top:48px}
.loop-diagram{width:100%;height:auto;display:block}
.loop-flow{animation:signal-flow 3s linear infinite}
.loop-strip-mobile{display:none;margin-top:44px}
.loop-strip-mobile .loop-back{color:var(--cyan);font-size:15px;margin-left:2px}
.loop-strip-caption{margin-top:20px;font-family:var(--mono);font-size:12px;color:var(--muted-2);display:flex;align-items:center;gap:10px}

/* ---------- experiment preview cards ---------- */
.exp-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-top:48px}
.exp-card{border:1px solid var(--hairline);border-radius:var(--radius-md);background:var(--panel);padding:28px 26px;display:flex;flex-direction:column;gap:18px;transition:border-color var(--dur-base) ease, transform var(--dur-base) ease, box-shadow var(--dur-base) ease}
.exp-card:hover{border-color:var(--blue);transform:translateY(-2px);box-shadow:var(--shadow-glow)}
.exp-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.exp-id{font-family:var(--mono);font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--cyan)}
.exp-demo-badge{font-family:var(--mono);font-size:10px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted-2);border:1px dashed var(--hairline);padding:4px 9px;border-radius:var(--radius-pill);white-space:nowrap}
.exp-fields{display:flex;flex-direction:column;gap:12px}
.exp-field dt{font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);margin-bottom:4px}
.exp-field dd{font-family:var(--sans);font-size:14.5px;color:var(--text);line-height:1.5}
.exp-card-foot{padding-top:16px;border-top:1px solid var(--hairline);display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
.exp-metric{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.exp-status{font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);background:rgba(255,255,255,.05);padding:4px 10px;border-radius:var(--radius-pill);border:1px solid var(--hairline)}

/* ---------- responsive ---------- */
@media(max-width:960px){
  .hero-grid,.split,.loop-grid,.proof-grid,.audit-grid,.calc,.news-panel{grid-template-columns:1fr;gap:40px}
  .hero-visual{order:-1;max-width:440px}
  .steps{grid-template-columns:1fr 1fr}
  .step{border-bottom:1px solid var(--hairline)}
  .step:nth-child(2){border-right:0}
  .cards,.pillars,.cs-grid,.friction-row-top,.stats-grid,.exp-grid,.cs-grid.exp-records{grid-template-columns:1fr}
  .f-top{grid-template-columns:1fr 1fr}
  .f-brand{grid-column:1/-1}
  .subservices{grid-template-columns:1fr 1fr}
  .subservices .step{border-bottom:1px solid var(--hairline)}
  .subservices .step:nth-child(2n){border-right:0}
  .steps-6{grid-template-columns:repeat(3,1fr)}
  .steps-6 .step{border-bottom:1px solid var(--hairline)}
  .steps-6 .step:nth-child(3n){border-right:0}
  .problem-funnel{grid-template-columns:repeat(4,1fr)}
  .loop-diagram-wrap{display:none}
  .loop-strip-mobile{display:flex}
}
/* the 7-link horizontal nav (Method/Services/Assessment/Case Studies/About/
   Insights/Resources) + brand + CTA button need more room than the 960px
   content-grid breakpoint above provides, so the mobile dropdown menu gets
   its own wider breakpoint here instead of sharing that one. */
@media(max-width:1080px){
  .nav-links{
    display:flex;position:absolute;top:74px;left:0;right:0;flex-direction:column;
    background:var(--space-2);border-bottom:1px solid var(--hairline);padding:20px 22px;gap:6px;
    max-height:calc(100vh - 74px);overflow-y:auto;box-shadow:var(--shadow-md);
    opacity:0;visibility:hidden;transform:translateY(-10px);pointer-events:none;
    transition:opacity .2s var(--ease-out), transform .2s var(--ease-out), visibility .2s;
  }
  .nav-links.open{opacity:1;visibility:visible;transform:none;pointer-events:auto}
  .nav-links a{padding:13px 0;font-size:17px}
  .menu-btn{display:flex}
  .nav-cta .btn{display:none}
  .nav-links a.nav-cta-mobile{
    display:inline-flex;align-items:center;justify-content:center;gap:9px;
    margin-top:10px;padding:14px 24px;
    background:linear-gradient(135deg,var(--blue),var(--cyan));color:var(--space);
    border-radius:var(--radius-sm);font-weight:600;font-size:15px;
  }
  .nav-links a.nav-cta-mobile:hover{background:linear-gradient(135deg,var(--cyan),var(--blue));color:var(--space)}
  .nav-links a.nav-cta-mobile::after{display:none}
}
@media(max-width:640px){
  .wrap{padding:0 22px}
  .sectors-row{flex-direction:column;align-items:flex-start;gap:12px}
  .marquee{width:100%}
  .stats-grid{gap:34px;margin-top:34px}
  .result-card{padding:34px 24px}
  .form-panel{padding:28px 22px}
  .result-metric-value{font-size:40px}
  .result-person{flex-direction:column;gap:8px;text-align:center}
  .result-person-info{text-align:center}
  .stat-figure{font-size:38px;padding-bottom:14px;margin-bottom:12px}
  .hero{padding:48px 0 40px}
  .page-hero{padding:88px 0 56px}
  .section{padding:64px 0}
  .steps{grid-template-columns:1fr}
  .step{border-right:0}
  .contrast{gap:28px}
  .friction-row-top{gap:16px;margin-top:34px}
  .fric-tile-signature{padding:22px 20px 26px}
  .friction-close{flex-direction:column;align-items:flex-start;gap:18px}
  .f-top{grid-template-columns:1fr}
  .readout{padding:24px 20px}
  .readout .rrow{gap:10px}
  .readout .bars{gap:3px}
  .readout .bars i{width:13px}
  .subservices{grid-template-columns:1fr}
  .subservices .step{border-right:0}
  .ondemand-row{gap:24px}
  .ondemand-row .btn{width:100%;justify-content:center}
  .tl-item{grid-template-columns:40px 1fr;gap:18px;padding:26px 0}
  .research-item{grid-template-columns:40px 1fr;gap:16px;padding:20px 8px}
  .dossier .d-row{grid-template-columns:32px 1fr;gap:14px}
  .tl-num{width:40px;height:40px;font-size:12px}
  .calc-result{padding:26px 24px}
  .scorecard{padding:26px 22px}
  .cs-filters{gap:8px}
  .cs-filter-btn{padding:8px 14px;font-size:11px}
  .aq-widget{padding:30px 22px}
  .aq-fieldset legend{margin-bottom:22px}
  .aq-option-label{padding:14px 15px;font-size:14.5px}
  .aq-result{padding:34px 22px 30px}
  .aq-score-num{font-size:44px}
  .aq-nav{gap:10px}
  .aq-nav .btn{padding:13px 16px;font-size:14px}
  .ta-tool-card{padding:16px 16px;gap:12px}
  .ta-email-row{flex-direction:column}
  .cred-row{gap:18px}
  .cred-badge{width:66px;height:66px;font-size:8px}
  .compare-head{display:none}
  .compare-row{grid-template-columns:1fr;gap:4px;padding:22px 0}
  .cr-tag{display:block;font-family:var(--mono);font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted-2);margin:8px 0 2px}
  .cr-label{font-size:17px}
  .news-panel{padding:34px 24px}
  .news-field{flex-direction:column}
  .news-field .btn{width:100%;justify-content:center}
  .article-hero{padding:40px 0 30px}
  .article-wrap{padding:0 22px}
  .article-body{padding:44px 0 4px}
  .article-body blockquote{padding-left:20px}
  .takeaways{padding:22px 20px}
  .err-section{padding:90px 0 70px}
  .steps-6{grid-template-columns:1fr}
  .problem-funnel{grid-template-columns:1fr}
  .funnel-stage{flex-direction:row;justify-content:space-between;padding-top:0}
  .funnel-label{text-align:left;width:130px;flex:none}
  .funnel-leak{top:50%;right:0;transform:translateY(-50%)}
  .exp-card{padding:22px 20px}
  .exp-record-metrics{grid-template-columns:1fr}
  .exp-outcome-row{flex-direction:column;gap:2px}
  .exp-outcome-row .v{text-align:left}
}
@media(prefers-reduced-motion:reduce){
  *{scroll-behavior:auto}
  .reveal,.reveal[data-stagger] > *{transition:none;opacity:1;transform:none}
  .marquee-track{animation:none}
  .marquee-group[aria-hidden="true"]{display:none}
  .marquee{overflow-x:auto}
  /* friction, visualised — freeze each vignette on its clearest storytelling frame */
  .fric-tile:hover{transform:none}
  .fric1-cursor,.fric1-burst,.fric2-fill,.fric2-cursor,.fric2-x,
  .fric3-tab,.fric3-spinner-arc,.fric4-dot-lost,.fric4-dot-held,.fric4-pulse{animation:none}
  .fric1-burst-1{opacity:1;transform:scale(1.1)}
  .fric1-burst-2,.fric1-burst-3{opacity:0}
  .fric2-fill-1,.fric2-fill-2{width:152px}
  .fric2-fill-3{width:0}
  .fric2-cursor{transform:translate(180px,10px)}
  .fric2-x{opacity:.65}
  .fric4-dot-lost{transform:translateX(210px);opacity:.35}
  .fric4-dot-held{transform:translateX(420px)}
  .fric4-pulse{opacity:.7;transform:scale(1.2)}
  .hero-copy.motion-hero .eyebrow,
  .hero-copy.motion-hero .lead,
  .hero-copy.motion-hero .cta-row,
  .hero-copy.motion-hero .foot-note,
  .hero-copy.motion-hero h1 .w{animation:none;opacity:1;transform:none}
  svg.diagram.fig-armed .fig-node,
  svg.diagram.fig-armed .fig-label,
  svg.diagram.fig-armed .fig-badge{transition:none;opacity:1;transform:none}
  svg.diagram.fig-armed .fig-arc{transition:none;stroke-dashoffset:0}
  .readout.bars-armed .bars i.on{transition:none;transform:none}
  .scroll-progress{transition:none}
  .btn{transition:background .18s ease, color .18s ease}
  .card:hover,.step:hover,.related-card:hover{transform:none}
  .nav-links{transition:none}
  .menu-btn span{transition:none}
  .faq-a{transition:none}
  .faq-q .plus::before,.faq-q .plus::after{transition:none}
  .calc-gauge-fill{transition:none}
  .calc-verdict{transition:none}
  .calc input[type="range"]::-webkit-slider-thumb{transition:none}
  .calc input[type="range"]::-moz-range-thumb{transition:none}
  .cs-status .dot{animation:none}
  .cs-card:hover,.ins-card:hover{transform:none}
  .aq-question,.aq-question.aq-anim{transition:none;opacity:1;transform:none}
  .aq-progress-fill{transition:none}
  .aq-gauge-fill{transition:none}
  .ta-tool-card{animation:none;opacity:1;transform:none}
  .btn .arw,.card .link .arw,.cs-card .link .arw,.ins-cta .arw{transition:none}
  .btn:hover .arw,.card:hover .link .arw,.cs-card:hover .link .arw,.ins-card:hover .ins-cta .arw{transform:none}
  .flow-pulse{animation:none;opacity:1;transform:none}
  .funnel-leak::after{animation:none;opacity:.6}
  .exp-card:hover{transform:none}
  .loop-flow{animation:none}
  .aq-breakdown-fill{transition:none}
  .hero::before,.page-hero::before,.cta-band::before{animation:none}
  .signal-path{animation:none}
  .telemetry .led,.status-led i{animation:none;opacity:1;box-shadow:none}
  svg.diagram.node-armed .flow-node,
  svg.diagram.node-armed .flow-arc-line{transition:none;opacity:1;transform:none}
}
