/* ═══════════ GROWTH STRATEGY SESSION ═══════════
   Ported from the Growth Scan document. Scoped under .scan-root so it
   renders as the finished client document inside the dark back office,
   the same way the shop review does. Slate and steel, Archivo over
   Instrument Sans, with IBM Plex Mono carrying every label and figure. */
.scan-root{
  --ground:#F1F4F7; --surface:#FFFFFF; --surface-2:#F7F9FB; --sunk:#E9EEF3;
  --ink:#0C1420; --ink-2:#39485A; --muted:#67788B; --line:#DCE3EB; --line-2:#C6D1DD;
  --accent:#1B6B9E; --accent-soft:#E3EFF7; --accent-ink:#11506F;
  --now:#A86634; --now-soft:#F6ECE2;
  --crit:#B23F38; --crit-soft:#FBEAE7;
  --caut:#8F6D0E; --caut-soft:#FAF2DC;
  --good:#2E7A57; --good-soft:#E5F3EB;
  --shadow:0 1px 2px rgba(12,20,32,.05), 0 10px 30px -14px rgba(12,20,32,.22);
  --lift:0 2px 4px rgba(12,20,32,.06), 0 22px 48px -22px rgba(12,20,32,.32);
  --r:12px;
  --band:#0A111B; --band-2:#111B29; --band-ink:#EAF1F8; --band-mute:#7F93AA;
  --band-line:#1E2C3C; --band-accent:#63AEDD; --band-now:#D08F52;
  background:var(--ground); color:var(--ink);
  font-family:"Instrument Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  font-size:16px; line-height:1.55; -webkit-font-smoothing:antialiased;
}
.scan-root *,.scan-root *::before,.scan-root *::after{box-sizing:border-box;}
.scan-root h1,.scan-root h2,.scan-root h3,.scan-root h4{
  font-family:"Archivo",sans-serif; margin:0; text-wrap:balance;
  letter-spacing:-.025em; line-height:1.12;
}
.scan-root p{margin:0;}
.scan-root a{color:var(--accent);}
.k-wrap{max-width:1200px; margin:0 auto; padding:0 24px;}

/* top bar */
.k-topbar{
  position:sticky; top:0; z-index:20; background:rgba(255,255,255,.9);
  backdrop-filter:blur(14px); border-bottom:1px solid var(--line);
}
.k-topbar-in{display:flex; align-items:center; gap:20px; height:60px;}
.k-brand{font-family:"Archivo"; font-weight:800; letter-spacing:-.04em; font-size:17px; flex:none;}
.k-brand em{
  font-style:normal; color:var(--muted); font-weight:500; font-size:10.5px;
  letter-spacing:.16em; text-transform:uppercase; font-family:"IBM Plex Mono"; margin-left:8px;
}
.k-brand img{height:26px; display:block;}
.k-topnav{display:flex; gap:2px; margin-left:auto; overflow-x:auto; scrollbar-width:none;}
.k-topnav::-webkit-scrollbar{display:none;}
.k-topnav a{
  font-size:12.5px; color:var(--muted); text-decoration:none; padding:6px 11px;
  border-radius:7px; white-space:nowrap; font-weight:500;
}
.k-topnav a:hover{color:var(--ink); background:var(--surface-2);}
.k-topnav a.on{color:var(--accent); background:var(--accent-soft);}

.k-sec{padding:64px 0; border-bottom:1px solid var(--line);}
.k-sec.alt{background:var(--surface);}
.k-sec.last{border-bottom:none;}
/* the closing panel used to carry .last; now that any section can be the final
   one, let the last rendered section drop its rule on its own */
.scan-root .k-sec:last-of-type{border-bottom:none;}
.k-eyebrow{
  font-family:"IBM Plex Mono"; font-size:10.5px; letter-spacing:.2em; text-transform:uppercase;
  color:var(--muted); display:flex; align-items:center; gap:12px; margin-bottom:16px;
}
.k-eyebrow::after{content:""; flex:1; height:1px; background:var(--line);}
.k-h{font-size:clamp(26px,3.8vw,40px); font-weight:700; margin-bottom:12px;}
.k-h3{font-family:"Archivo"; font-size:22px; font-weight:700; margin-bottom:6px;}
.k-sub{color:var(--ink-2); max-width:64ch; font-size:16.5px; margin-bottom:30px;}
.k-note{font-size:12.5px; color:var(--muted); margin-top:14px; max-width:74ch; line-height:1.55;}
.k-note.tight{margin-top:2px;}
.k-note strong{color:var(--ink);}
.k-spacer{height:26px;}
.k-prose p{margin-bottom:14px; color:var(--ink-2); max-width:70ch;}

/* ═══════════ COVER ═══════════
   Its own world: a plum ground, a portrait bleeding off the left, and a
   high-contrast serif. Deliberately unlike the sections below it, which
   stay navy and sans — this is the only page meant to be looked at rather
   than read. */
.k-hero{
  --cov-ground:#1B0A16;
  --cov-ground-2:#2E1024;
  --cov-accent:#E8489B;
  --cov-accent-soft:#F49BC8;
  --cov-solid:#D81B7A;
  --cov-body:#B9A8B4;
  position:relative; overflow:hidden;
  background:linear-gradient(105deg, #120610 0%, var(--cov-ground) 34%, var(--cov-ground-2) 100%);
  color:#fff;
  display:grid; grid-template-columns:minmax(0,0.92fr) minmax(0,1.35fr);
  align-items:stretch; min-height:600px;
  border-bottom:1px solid rgba(255,255,255,.07);
}
.k-hero.noshot{grid-template-columns:1fr; min-height:460px;}
/* the glow sits ABOVE the portrait, not behind it — otherwise the portrait's
   fade ends on flat ground while the ground beside it is lit, and the seam
   between the two columns becomes a visible vertical line. */
.k-hero::before{
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:radial-gradient(120% 130% at 88% 6%, rgba(216,27,122,.30) 0%, transparent 58%);
}

/* the portrait bleeds off the left and dissolves into the ground */
.k-hero-shot{position:relative; overflow:hidden; z-index:0;}
.k-hero-shot img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center top; display:block;
}
.k-hero-shot::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(90deg, transparent 40%, var(--cov-ground) 99%);
}

.k-hero-body{
  position:relative; z-index:2;
  display:flex; flex-direction:column; justify-content:center;
  padding:76px 7vw 76px 48px; max-width:760px;
}
.k-hero.noshot .k-hero-body{padding-left:7vw; margin:0 auto; width:100%; max-width:1180px;}

/* NB: .k-brow is the scoreboard's row class — the cover needs its own name */
.k-cbrow{
  display:flex; align-items:center; gap:14px;
  font-family:"IBM Plex Mono"; font-size:11px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--cov-accent-soft); margin-bottom:26px;
  white-space:nowrap;
}
.k-cbrow i{width:34px; height:1px; background:var(--cov-accent); flex:none;}

.scan-root .k-hero-h1{
  font-family:Fraunces, Georgia, serif; font-weight:900;
  font-size:clamp(40px,5.6vw,82px); line-height:1.02; letter-spacing:-.022em;
  color:#fff; margin:0 0 26px; text-wrap:balance;
}
/* *starred* words carry the accent, in italic — the one flourish on the page */
.scan-root .k-hero-h1 em{
  font-style:italic; font-weight:900; color:var(--cov-accent-soft);
}
.scan-root .k-hero-h1 strong{font-weight:900; color:#fff;}

/* scoped: .scan-root p{margin:0} is more specific than a bare class */
.scan-root .k-hero-sub{
  font-family:"Instrument Sans", system-ui, sans-serif;
  font-size:17px; line-height:1.72; color:var(--cov-body);
  max-width:46ch; margin:0 0 34px;
}

.k-hpills{display:flex; flex-wrap:wrap; gap:11px;}
.k-hpill{
  font-family:"Instrument Sans", system-ui, sans-serif;
  font-size:14px; font-weight:500; line-height:1;
  padding:12px 20px; border-radius:99px;
  border:1px solid rgba(255,255,255,.22); color:#E9DCE5; white-space:nowrap;
}
.k-hpill.on{background:var(--cov-solid); border-color:var(--cov-solid); color:#fff; font-weight:600;}

@media (max-width:900px){
  .k-hero{grid-template-columns:1fr; min-height:0;}
  .k-hero-shot{height:44vh; min-height:300px;}
  .k-hero-shot::after{background:linear-gradient(180deg, transparent 45%, var(--cov-ground) 99%);}
  .k-hero-body{padding:34px 24px 48px;}
  .k-hero.noshot .k-hero-body{padding:48px 24px;}
  .k-cbrow{white-space:normal; letter-spacing:.16em; gap:10px;}
  .k-cbrow i{width:22px;}
}

/* vitals */
/* auto-fit, not a fixed four: the tile count varies by profile (five common,
   plus whatever the profile adds), and a hard four leaves an orphan on row two */
/* The separator lines are drawn by each tile's own 1px ring, meeting in the
   gap — not by a coloured background showing through it. With a background the
   cells left over on the last row rendered as a solid grey block beside the
   tiles, which read as a broken tile rather than as nothing. */
.k-tiles{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:1px;
  background:var(--surface);
  border:1px solid var(--line); border-radius:var(--r); overflow:hidden; box-shadow:var(--shadow);
}
.k-tile{
  background:var(--surface); padding:20px; display:grid; gap:6px;
  align-content:start; min-height:130px; box-shadow:0 0 0 1px var(--line);
}
.k-tile .lab{font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);}
.k-tile .big{
  font-family:"Archivo"; font-weight:800; font-size:33px; letter-spacing:-.04em;
  font-variant-numeric:tabular-nums; line-height:1; min-height:33px;
}
.k-tile .big em{font-style:normal; font-size:17px; font-weight:600; color:var(--muted);}
.k-tile .sub{font-size:12.5px; color:var(--ink-2); line-height:1.4;}
.k-flag{
  display:inline-flex; align-items:center; gap:6px; font-size:10.5px; font-weight:600;
  padding:3px 9px; border-radius:99px; width:fit-content; font-family:"IBM Plex Mono";
  letter-spacing:.06em; text-transform:uppercase;
}
.k-flag.f-crit{background:var(--crit-soft); color:var(--crit);}
.k-flag.f-caut{background:var(--caut-soft); color:var(--caut);}
.k-flag.f-good{background:var(--good-soft); color:var(--good);}
.k-flag.f-neut{background:var(--sunk); color:var(--muted);}
.k-flag.f-none{background:var(--sunk); color:var(--muted);}
/* a tile nothing has measured: present, plainly empty, making no claim */
.k-tile.is-blank{opacity:.62;}
.k-notyet{
  font-family:"IBM Plex Mono"; font-size:11px; letter-spacing:.06em;
  color:var(--muted); align-self:end; padding-top:6px;
}
.k-srcline{margin-top:16px; font-size:12px; color:var(--muted); display:flex; flex-wrap:wrap; gap:8px 20px;}
.k-srcline span{display:inline-flex; align-items:center; gap:7px;}
.k-tick{width:5px; height:5px; border-radius:99px; background:var(--good); display:inline-block; flex:none;}
.k-tick.est{background:var(--caut);}

/* the leak */

/* scoreboard */
.k-mapmeta{display:flex; gap:40px; margin-bottom:20px; flex-wrap:wrap;}
.k-mapmeta .mk{font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);}
.k-mapmeta .mv{font-family:"Archivo"; font-weight:800; font-size:30px; letter-spacing:-.04em; line-height:1.1;}
.k-mapmeta .mv.warn{color:var(--now);}
.k-board{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; box-shadow:var(--lift);}
.k-brow{
  display:grid; grid-template-columns:1.5fr 1.1fr 78px 66px; gap:16px;
  align-items:center; padding:15px 22px; border-bottom:1px solid var(--line);
}
.k-brow.head{background:var(--surface-2); padding:12px 22px;}
.k-brow.head div{font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);}
.k-brow.head div:last-child{text-align:right;}
.k-brow:last-child{border-bottom:none;}
.k-brow .nm{font-size:14.5px; color:var(--ink-2); font-weight:500;}
.k-rv{display:flex; align-items:center; gap:10px;}
.k-rv .track{flex:1; height:8px; background:var(--sunk); border-radius:99px; overflow:hidden;}
.k-rv .fill{height:100%; background:var(--line-2); border-radius:99px;}
.k-rv .n{font-family:"IBM Plex Mono"; font-size:12.5px; color:var(--ink-2); width:38px; text-align:right; font-variant-numeric:tabular-nums;}
.k-brow .st{font-family:"IBM Plex Mono"; font-size:12.5px; color:var(--ink-2); font-variant-numeric:tabular-nums;}
.k-brow .rk{font-family:"IBM Plex Mono"; font-size:13px; color:var(--ink-2); text-align:right; font-variant-numeric:tabular-nums;}
.k-brow.you{background:var(--now-soft); border-top:2px solid var(--now); border-bottom:none;}
.k-brow.you .nm{color:var(--ink); font-weight:700; font-size:15.5px;}
.k-brow.you .k-rv .fill{background:var(--now);}
.k-brow.you .st,.k-brow.you .rk{color:var(--ink); font-weight:600;}

/* findings */
.k-finding{
  display:grid; grid-template-columns:auto 1fr auto; gap:22px; align-items:start;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:22px 24px;
}
.k-finding + .k-finding{margin-top:12px;}
.k-finding .fnum{font-family:"IBM Plex Mono"; font-size:12px; color:var(--muted); padding-top:4px; width:24px;}
.k-finding h4{font-size:19px; font-weight:600; margin:8px 0 7px;}
.k-finding p{font-size:14.5px; color:var(--ink-2); max-width:66ch;}
.k-ev{
  margin-top:11px; font-family:"IBM Plex Mono"; font-size:11.5px; color:var(--muted);
  background:var(--sunk); padding:8px 11px; border-radius:7px; display:inline-block;
}
.k-cost{text-align:right; min-width:140px;}
.k-cost .c-lab{font-family:"IBM Plex Mono"; font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);}
.k-cost .c-val{
  font-family:"Archivo"; font-weight:800; font-size:23px; color:var(--now);
  font-variant-numeric:tabular-nums; white-space:nowrap; letter-spacing:-.03em;
}

/* tables */
.k-tablewrap{overflow-x:auto; border:1px solid var(--line); border-radius:var(--r); background:var(--surface); box-shadow:var(--shadow);}
.k-table{border-collapse:collapse; width:100%; min-width:660px; font-size:13.5px;}
.k-table th{
  text-align:left; font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--muted); font-weight:500; padding:13px 16px;
  border-bottom:1px solid var(--line); white-space:nowrap; background:var(--surface-2);
}
.k-table td{padding:13px 16px; border-bottom:1px solid var(--line); color:var(--ink-2); vertical-align:middle;}
.k-table tr:last-child td{border-bottom:none;}
.k-table td.n,.k-table th.n{font-family:"IBM Plex Mono"; font-variant-numeric:tabular-nums; text-align:right; white-space:nowrap;}
.k-table td strong{color:var(--ink); font-weight:600;}
.k-table tr.hot td{background:var(--crit-soft);}

/* ad cards */

/* the model */
.k-model{display:grid; grid-template-columns:280px 1fr; gap:28px; align-items:start;}
.k-inputs{display:grid; gap:14px;}
.k-inp{display:grid; gap:6px;}
.k-inp label{font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);}
.k-inp .ctl{
  display:flex; align-items:center; background:var(--surface); border:1px solid var(--line-2);
  border-radius:8px; padding:0 11px; transition:border-color .12s, box-shadow .12s;
}
.k-inp .ctl span{color:var(--muted); font-size:13px; font-family:"IBM Plex Mono";}
.k-inp input{
  width:100%; border:0; background:transparent; color:var(--ink); padding:10px 4px;
  font-family:"IBM Plex Mono"; font-size:15px; font-variant-numeric:tabular-nums; outline:none;
}
.k-inp .ctl:focus-within{border-color:var(--accent); box-shadow:0 0 0 3px var(--accent-soft);}
.k-legend{display:flex; gap:18px; font-size:12.5px; color:var(--ink-2); margin-bottom:16px; flex-wrap:wrap;}
.k-legend b{display:inline-flex; align-items:center; gap:8px; font-weight:500;}
.k-legend .sw{width:11px; height:11px; border-radius:3px; display:inline-block;}
.k-legend .sw.now{background:var(--now);}
.k-legend .sw.ms{background:var(--accent);}
.k-fun{display:grid; gap:2px;}
.k-fstep{display:grid; grid-template-columns:160px 1fr 1fr; gap:14px; align-items:center; padding:10px 0; border-bottom:1px dashed var(--line);}
.k-fstep:last-child{border-bottom:none;}
.k-fstep .sl{font-size:13.5px; color:var(--ink-2);}
.k-fstep .sl small{display:block; font-family:"IBM Plex Mono"; font-size:10px; color:var(--muted); letter-spacing:.08em;}
.k-fbar{display:flex; align-items:center; gap:10px;}
.k-fbar .b{height:22px; border-radius:5px; min-width:3px; transition:width .35s cubic-bezier(.4,0,.2,1);}
.k-fbar .b.now{background:var(--now);}
.k-fbar .b.ms{background:var(--accent);}
.k-fbar .t{font-family:"IBM Plex Mono"; font-size:13px; font-variant-numeric:tabular-nums; font-weight:500; white-space:nowrap;}
.k-fstep.tot{border-top:1px solid var(--line-2); border-bottom:none; margin-top:8px; padding-top:16px;}
.k-fstep.tot .sl{font-weight:600; color:var(--ink); font-size:15px;}
.k-fstep.tot .t{font-size:16px; font-weight:600;}
.k-delta{
  margin-top:22px; background:var(--accent-soft); border:1px solid rgba(27,107,158,.3);
  border-radius:var(--r); padding:20px 24px; display:flex; flex-wrap:wrap; gap:26px; align-items:center;
}
.k-delta .d-big{
  font-family:"Archivo"; font-weight:800; font-size:35px; color:var(--accent-ink);
  font-variant-numeric:tabular-nums; letter-spacing:-.04em;
}
.k-delta .d-lab{font-size:13.5px; color:var(--ink-2); max-width:42ch;}
.k-delta .dsub{font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-top:2px;}

/* proof */
.k-proof-stats{
  display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:var(--line);
  border:1px solid var(--line); border-radius:var(--r); overflow:hidden; margin-bottom:26px;
}
.k-ps{background:var(--surface); padding:22px; text-align:center;}
.k-ps .v{font-family:"Archivo"; font-weight:800; font-size:34px; letter-spacing:-.045em; line-height:1;}
.k-ps .k{font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted); margin-top:8px;}
.k-hero-case{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:32px;
  display:grid; grid-template-columns:1fr 340px; gap:36px; align-items:center;
  box-shadow:var(--lift); margin-bottom:20px;
}
.k-badge{
  width:52px; height:52px; border-radius:14px; display:grid; place-items:center;
  font-family:"Archivo"; font-weight:800; font-size:17px; letter-spacing:-.02em;
  background:var(--accent); color:#fff; flex:none;
}
.k-badge.sm{width:44px; height:44px; font-size:15px; border-radius:12px; background:var(--sunk); color:var(--ink);}
.k-case-head{display:flex; align-items:center; gap:14px; margin-bottom:18px;}
.k-case-head .n{font-family:"Archivo"; font-weight:700; font-size:20px;}
.k-case-head .m{font-size:12.5px; color:var(--muted); font-family:"IBM Plex Mono";}
.k-quote{font-family:"Archivo"; font-weight:500; font-size:clamp(19px,2.3vw,25px); line-height:1.35; letter-spacing:-.02em; color:var(--ink);}
.k-attrib{margin-top:14px; font-size:13px; color:var(--muted);}
.k-rankgrid{display:grid; gap:1px; background:var(--line); border:1px solid var(--line); border-radius:var(--r); overflow:hidden;}
.k-rank{background:var(--surface-2); padding:12px 16px; display:flex; justify-content:space-between; align-items:center; gap:14px;}
.k-rank .rl{font-size:13px; color:var(--ink-2);}
.k-rank .rv2{font-family:"IBM Plex Mono"; font-size:13px; font-weight:600; color:var(--accent); white-space:nowrap;}
/* ── testimonial cards ──
   One wide card per practice: the photograph bleeds down the left with the
   name laid over it, and the argument stacks on the right. Deliberately the
   tallest thing in the report — these are the pages a sceptical owner
   actually reads. */
.k-tcards{display:grid; gap:24px;}
.k-tcard{
  display:grid; grid-template-columns:1fr 1fr; gap:0;
  background:var(--surface); border:1px solid var(--line);
  border-radius:16px; overflow:hidden; box-shadow:var(--shadow);
}
.k-tcard.noshot{grid-template-columns:1fr;}

.k-tshot{position:relative; overflow:hidden; min-height:500px; background:var(--sunk);}
.k-tshot img{
  position:absolute; inset:0; width:100%; height:100%;
  object-fit:cover; object-position:center 18%; display:block;
}
/* the name sits on the picture, so the picture needs to darken under it */
.k-tshot::after{
  content:""; position:absolute; left:0; right:0; bottom:0; height:46%;
  background:linear-gradient(180deg, transparent, rgba(8,14,24,.78));
  pointer-events:none;
}
.k-tpill{
  position:absolute; top:18px; left:18px; z-index:2;
  background:var(--accent); color:#fff; border-radius:99px; padding:7px 15px;
  font-family:"IBM Plex Mono"; font-size:10.5px; font-weight:600;
  letter-spacing:.1em; text-transform:uppercase;
}
.k-tover{position:absolute; left:24px; right:24px; bottom:22px; z-index:2; color:#fff;}
.k-tover .nm{font-family:"Archivo"; font-weight:700; font-size:19px; letter-spacing:-.02em;}
.k-tover .rl{font-size:12.5px; color:rgba(255,255,255,.8); margin-top:3px; line-height:1.4;}

.k-tbody{padding:38px 40px; display:flex; flex-direction:column; justify-content:center; gap:22px;}
.k-thead{display:flex; align-items:center; gap:14px;}
.k-thead .n{font-family:"Archivo"; font-weight:700; font-size:21px; letter-spacing:-.02em;}
.k-thead .m{
  font-family:"IBM Plex Mono"; font-size:11px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--muted); margin-top:3px;
}
.k-tstats{display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:14px;}
.k-tstat{
  background:var(--accent-soft); border:1px solid rgba(27,107,158,.14);
  border-radius:10px; padding:16px 14px; text-align:center;
}
.k-tstat .v{
  font-family:"Archivo"; font-weight:800; font-size:26px; letter-spacing:-.03em;
  color:var(--accent-ink); line-height:1.05;
}
.k-tstat .k{
  font-size:11px; color:var(--ink-2); margin-top:5px; line-height:1.35;
  text-transform:uppercase; letter-spacing:.06em; font-family:"IBM Plex Mono";
}
.k-tnote{font-size:13px; color:var(--muted); margin-top:-10px;}
/* the rule down the left is what makes it read as testimony rather than body copy */
.k-tquote{
  margin:0; padding-left:20px; border-left:3px solid var(--accent);
  font-family:"Archivo"; font-style:italic; font-weight:500;
  font-size:17px; line-height:1.6; color:var(--ink);
}
.k-tatt{font-size:12.5px; color:var(--muted); margin-top:-12px; padding-left:23px;}
.k-tranklab{
  font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--muted); margin-bottom:-12px;
}
.k-tranks{display:grid; gap:9px;}
.k-trank{
  background:var(--surface-2); border:1px solid var(--line); border-radius:9px;
  padding:12px 16px; display:flex; justify-content:space-between; align-items:center; gap:16px;
}
.k-trank .rl{font-size:13.5px; color:var(--ink); font-weight:500;}
.k-trank .rv2{
  font-family:"IBM Plex Mono"; font-size:12.5px; font-weight:600;
  color:var(--accent); text-align:right;
}
.k-trank.hot{background:var(--good-soft); border-color:rgba(46,122,87,.22);}
.k-trank.hot .rv2{color:var(--good);}

.k-cases{display:grid; grid-template-columns:repeat(2,1fr); gap:20px;}
.k-case{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:24px; display:grid; gap:14px; align-content:start;}
.k-case .topline{display:flex; align-items:center; gap:13px;}
.k-case .n{font-family:"Archivo"; font-weight:700; font-size:17px;}
.k-case .m{font-size:12px; color:var(--muted); font-family:"IBM Plex Mono";}
.k-headline{display:flex; align-items:baseline; gap:11px; padding:12px 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); flex-wrap:wrap;}
.k-headline .hv{font-family:"Archivo"; font-weight:800; font-size:26px; letter-spacing:-.04em; color:var(--accent);}
.k-headline .hk{font-size:13px; color:var(--ink-2);}
.k-case q{font-size:14px; color:var(--ink-2); line-height:1.5; font-style:normal; quotes:"\201C" "\201D";}
.k-case .att{font-size:12px; color:var(--muted);}
/* ── the team ──
   Two faces lead at full width, the rest run four across. Portraits are
   landscape crops on a pale ground, so the grid reads as one set of
   photographs rather than a directory of avatars. */
/* flex rather than grid so a trailing part-row centres. With fourteen or
   sixteen people the last row holds two, and left-aligned they read as a
   mistake rather than the end of a set. */
.k-faces{display:flex; flex-wrap:wrap; gap:16px; margin-bottom:16px; justify-content:center;}
.k-face{margin:0; display:grid; gap:10px; flex:0 0 calc((100% - 48px) / 4); min-width:0;}
/* the leads run wider than the four-across, but not half the page — a
   portrait tile at half width is a poster, not a headshot */
.k-faces.lead .k-face{flex:0 0 30%;}
.k-face .shot{
  /* Headshots are portrait. A landscape tile crops one to a band across the
     forehead — the first version used 16/9 and cut every chin off. */
  position:relative; aspect-ratio:4/5; overflow:hidden; border-radius:10px;
  background:var(--sunk); border:1px solid var(--line); box-shadow:var(--shadow);
  display:grid; place-items:center;
}
.k-face .shot img{width:100%; height:100%; object-fit:cover; object-position:center 28%; display:block;}
.k-face .shot .ini{
  font-family:"Archivo"; font-weight:800; font-size:26px; letter-spacing:-.02em; color:var(--muted);
}
.k-face figcaption{display:grid; gap:2px; padding:0 2px;}
.k-face .nm{font-family:"Archivo"; font-weight:700; font-size:14.5px; letter-spacing:-.01em; color:var(--ink);}
.k-face.big .nm{font-size:18px;}
.k-face .rl{
  font-family:"IBM Plex Mono"; font-size:10.5px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--muted); line-height:1.4;
}
.k-teamempty{
  background:var(--surface-2); border:1px dashed var(--line-2); border-radius:var(--r);
  padding:22px 24px; color:var(--ink-2); font-size:14px; line-height:1.6; max-width:76ch;
}
.k-teamempty strong{color:var(--ink);}

/* ── organic search ──
   Five inputs the presenter fills in on the call, then two rows of tiles
   showing the same traffic through the industry's funnel and through ours.
   Dashes until the practice's own numbers are in. */
.k-schip{
  display:inline-block; margin-bottom:26px;
  background:var(--good-soft); color:var(--good); border-radius:99px; padding:7px 15px;
  font-family:"IBM Plex Mono"; font-size:11px; font-weight:600; letter-spacing:.08em;
}
.k-sinputs{
  display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:14px;
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:22px; box-shadow:var(--shadow);
}
.k-sfield{display:grid; gap:6px;}
.k-sfield .lb{
  font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--muted);
}
.k-sfield .in{display:flex; align-items:center; gap:6px; border-bottom:2px solid var(--line-2); padding-bottom:4px;}
.k-sfield .in .pre,.k-sfield .in .suf{font-style:normal; color:var(--muted); font-size:13px; flex:none;}
.k-sinput{
  border:none; background:none; width:100%; min-width:0; padding:0;
  font-family:"Archivo"; font-weight:800; font-size:26px; letter-spacing:-.03em;
  color:var(--ink); font-variant-numeric:tabular-nums;
}
.k-sinput:focus{outline:none;}
.k-sfield:focus-within .in{border-bottom-color:var(--accent);}
/* on the client's link these are figures, not fields */
.k-sfield.locked .in{border-bottom-color:var(--line);}
.k-sfield.locked .k-sinput{cursor:default;}
.k-sinput::placeholder{color:var(--line-2); font-weight:700;}
.k-sinput[readonly]{color:var(--ink);}
.k-sfield .hn{font-size:11.5px; color:var(--muted);}

.k-slab{
  font-family:"IBM Plex Mono"; font-size:10.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--muted); margin:32px 0 14px;
}
.k-sbars{display:grid; gap:10px;}
.k-sbar{display:grid; grid-template-columns:minmax(150px,230px) 1fr; gap:16px; align-items:center;}
.k-sbar .lb{font-size:13px; color:var(--ink-2);}
.k-sbar .tr{background:var(--sunk); border-radius:7px; height:32px; overflow:hidden;}
.k-sbar .fl{
  height:100%; background:var(--line-2); border-radius:7px;
  display:flex; align-items:center; padding:0 12px; min-width:44px;
}
.k-sbar .fl span{font-family:"IBM Plex Mono"; font-size:12px; font-weight:600; color:var(--ink);}
.k-sbar.ms .fl{background:linear-gradient(90deg, var(--accent), var(--accent-ink));}
.k-sbar.ms .fl span{color:#fff;}

.k-stiles{display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:14px;}
.k-stile{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  padding:18px 20px; display:grid; gap:5px; align-content:start;
}
.k-stiles.ms .k-stile{border-color:rgba(27,107,158,.28); background:var(--accent-soft);}
.k-stile .lab{
  font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--muted);
}
.k-stile .big{
  font-family:"Archivo"; font-weight:800; font-size:30px; letter-spacing:-.04em;
  line-height:1.05; font-variant-numeric:tabular-nums; color:var(--ink);
}
.k-stiles.ms .k-stile .big{color:var(--accent-ink);}
.k-stile .sub{font-size:12px; color:var(--ink-2); line-height:1.4;}
.k-snet{
  margin-top:14px; font-size:14.5px; color:var(--ink-2);
  background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r);
  padding:14px 18px;
}
.k-snet b{font-family:"Archivo"; font-size:19px; letter-spacing:-.02em; color:var(--ink);}
.k-snet span{color:var(--muted); font-size:12.5px;}
.k-snet span b{font-size:13px; font-family:"IBM Plex Mono"; font-weight:600; color:var(--ink-2);}

.k-snotes{display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-top:30px;}
.k-snote{background:var(--accent-soft); border-radius:var(--r); padding:24px;}
.k-snote.warm{background:var(--now-soft);}
.k-snote h4{
  font-family:"IBM Plex Mono"; font-size:10.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--accent-ink); margin-bottom:12px; font-weight:600;
}
.k-snote.warm h4{color:var(--now);}
.k-snote p{font-size:14px; color:var(--ink-2); line-height:1.65;}
.k-snote p + p{margin-top:11px;}
.k-snote strong{color:var(--ink);}

/* ── the four programs ──
   Each one is a full-width panel rather than a column in a pricing grid:
   they carry a monthly list, a rate table and terms, and squeezing that
   into thirds is what made the old version unreadable. They are also not
   tiers of one another, and a row of three cards implies that they are. */
.k-progs{display:grid; gap:20px;}
.k-prog{
  background:var(--surface); border:1px solid var(--line); border-radius:var(--r);
  display:grid; grid-template-columns:300px 1fr; overflow:hidden; position:relative;
}
.k-prog.rec{border-color:var(--accent); box-shadow:var(--lift);}
.k-prog .tag{
  position:absolute; top:0; right:0; z-index:2;
  background:var(--accent); color:#fff; padding:6px 14px; border-radius:0 0 0 10px;
  font-family:"IBM Plex Mono"; font-size:10px; font-weight:600;
  letter-spacing:.12em; text-transform:uppercase;
}
.k-prog-head{
  background:var(--surface-2); border-right:1px solid var(--line);
  padding:28px 26px; display:flex; flex-direction:column; justify-content:center; gap:8px;
}
.k-prog.rec .k-prog-head{background:var(--accent-soft);}
.k-prog-head h4{font-family:"Archivo"; font-size:20px; font-weight:700; letter-spacing:-.02em;}
.k-prog-head .price{display:flex; align-items:baseline; gap:7px; flex-wrap:wrap;}
.k-prog-head .price b{font-family:"Archivo"; font-size:32px; font-weight:800; letter-spacing:-.04em;}
.k-prog-head .price span{color:var(--muted); font-size:13px;}
.k-prog-head .pnote{font-size:12px; color:var(--ink-2); line-height:1.45;}
.k-prog-body{padding:28px 30px; display:grid; gap:14px; align-content:start;}
.k-prog-body .lede{font-family:"Archivo"; font-weight:600; font-size:16px; color:var(--ink);}
.k-prog-body .blurb{font-size:14.5px; color:var(--ink-2); line-height:1.6; max-width:70ch;}
.k-prog-body .lab{
  font-family:"IBM Plex Mono"; font-size:10px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--muted); margin-top:6px;
}
.k-prog-body ul{margin:0; padding:0; list-style:none; display:grid; gap:8px; font-size:13.5px; color:var(--ink-2);}
.k-prog-body li{display:grid; grid-template-columns:15px 1fr; gap:9px; align-items:start; line-height:1.5;}
.k-prog-body li::before{content:"✓"; color:var(--accent); font-size:12px; line-height:1.5;}
.k-prog-body .enote{font-size:13.5px; color:var(--ink); font-weight:500;}
.k-prog-body .term{
  font-size:12px; color:var(--muted); border-top:1px solid var(--line);
  padding-top:12px; margin-top:4px; line-height:1.5;
}

/* what every client gets regardless — deliberately one band, not three more cards */
.k-incwrap{margin-top:34px; border-top:2px solid var(--line-2); padding-top:30px;}
.k-incsub{color:var(--muted); font-size:13.5px; margin-bottom:22px;}
.k-incs{display:grid; grid-template-columns:repeat(3,1fr); gap:18px; align-items:start;}
.k-inc{background:var(--surface-2); border:1px solid var(--line); border-radius:var(--r); padding:22px;}
.k-inc h5{font-family:"Archivo"; font-size:16px; font-weight:700; letter-spacing:-.01em; margin:0;}
.k-inc .m{font-size:11.5px; color:var(--muted); font-family:"IBM Plex Mono"; margin-top:5px; line-height:1.45;}
.k-inc p{font-size:13.5px; color:var(--ink-2); line-height:1.55; margin-top:11px;}
.k-inc ul{margin:13px 0 0; padding:0; list-style:none; display:grid; gap:7px; font-size:12.5px; color:var(--ink-2);}
.k-inc li{display:grid; grid-template-columns:14px 1fr; gap:8px; align-items:start; line-height:1.45;}
.k-inc li::before{content:"✓"; color:var(--good); font-size:11px; line-height:1.45;}
.k-incnote{
  margin-top:20px; font-size:14px; color:var(--ink); line-height:1.6;
  max-width:80ch; font-weight:500;
}

.k-trustline{margin-top:22px; text-align:center; font-family:"IBM Plex Mono"; font-size:11px; letter-spacing:.18em; text-transform:uppercase; color:var(--muted);}

/* investment */

/* scroll reveal, matched to the shop format */
.scan-root .reveal{opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s ease;}
.scan-root .reveal.in{opacity:1; transform:none;}
@media(prefers-reduced-motion:reduce){
  .scan-root .reveal{opacity:1; transform:none; transition:none;}
  .scan-root *{animation:none !important;}
}

@media (max-width:1000px){
  .k-hero-in,.k-model,.k-hero-case,.k-cases{grid-template-columns:1fr;}
  .k-face{flex:0 0 calc((100% - 16px) / 2);}
  .k-faces.lead .k-face{flex:0 0 calc((100% - 16px) / 2);}
  .k-snotes{grid-template-columns:1fr;}
  .k-sbar{grid-template-columns:1fr; gap:6px;}
  .k-sbar .tr{height:28px;}
  .k-prog{grid-template-columns:1fr;}
  .k-prog-head{border-right:none; border-bottom:1px solid var(--line); padding:24px;}
  .k-prog-body{padding:24px;}
  .k-incs{grid-template-columns:1fr;}
  .k-tcard{grid-template-columns:1fr;}
  .k-tshot{min-height:0; height:340px;}
  .k-tbody{padding:28px 24px;}
  .k-tiles,.k-proof-stats{grid-template-columns:repeat(2,1fr);}
  .k-finding{grid-template-columns:auto 1fr;}
  .k-cost{grid-column:2; text-align:left; min-width:0;}
  .k-brow{grid-template-columns:1.2fr 1fr 56px 46px; gap:10px; padding:13px 14px; font-size:12.5px;}
  .k-fstep{grid-template-columns:104px 1fr 1fr;}
  .k-hero-case{padding:28px;}
  .k-sec{padding:44px 0;}
}
@media (max-width:620px){
  .k-tiles,.k-proof-stats{grid-template-columns:1fr;}
  .k-wrap{padding:0 16px;}
}

/* print: a paged document */
@media print{
  .scan-root .k-topbar{display:none;}
  .scan-root{background:#fff;}
  .k-sec{padding:30px 0; break-inside:avoid-page;}
  /* the cover is the one dark page; without this it prints as white-on-white
     whenever the browser's "background graphics" box is unticked */
  .k-hero,.k-hero::before,.k-hero-shot::after,.k-hpill,.k-hpill.on{
    -webkit-print-color-adjust:exact; print-color-adjust:exact;
  }
  .k-hero{break-after:page; min-height:0;}
  .k-hero-body{padding:52px 40px;}
  .scan-root .k-hero-h1{font-size:52px;}
  .scan-root .k-hero-sub{font-size:15px; margin-bottom:26px;}
  .k-finding,.k-tile,.k-prog,.k-inc,.k-case,.k-brow,.k-table tr{break-inside:avoid;}
  .k-stile,.k-snote,.k-sbar,.k-face{break-inside:avoid;}
  .k-face .shot{-webkit-print-color-adjust:exact; print-color-adjust:exact;}
  .k-sbar .fl,.k-stiles.ms .k-stile,.k-snote,.k-schip{
    -webkit-print-color-adjust:exact; print-color-adjust:exact;
  }
  .k-tcard{break-inside:avoid; box-shadow:none;}
  .k-tshot,.k-tshot::after,.k-tpill,.k-tstat,.k-trank,.k-trank.hot{
    -webkit-print-color-adjust:exact; print-color-adjust:exact;
  }
  .k-tshot{min-height:360px;}
  .k-tablewrap{overflow:visible;}
  .k-table{min-width:0;}
  .scan-root .reveal{opacity:1 !important; transform:none !important;}
}
