/* ═══════════ 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{
  /* ── type ──
     Helvetica Neue is a licensed desktop font, not a webfont we can ship, so
     it is referenced rather than bundled: Macs have it, and everything else
     falls through to Helvetica then Arial, which are metrically close enough
     that the layout does not move. Poppins is a real webfont and loads. */
  --f-head:"Helvetica Neue","HelveticaNeue",Helvetica,Arial,sans-serif;
  --f-body:Poppins,"Helvetica Neue",Helvetica,Arial,sans-serif;
  --f-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --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:var(--f-body);
  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:var(--f-head); 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:var(--f-head); 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:var(--f-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:var(--f-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:var(--f-head); font-size:22px; font-weight:700; margin-bottom:6px;}
.k-sub{color:var(--ink-2); max-width:64ch; font-size:16px; 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;}
/* ── a section the client will not see ──
   Only ever drawn in the studio editor. It has to read as a placeholder at a
   glance, or it becomes another thing to mistake for real content. */
.k-sec.k-empty{padding:0;}
.k-empty .k-emptynote{
  margin:10px 0; padding:14px 18px; border-radius:10px;
  border:1px dashed var(--line-2); background:var(--surface-2);
  color:var(--muted); font-size:13px; line-height:1.5;
}
.k-empty .k-emptynote b{color:var(--ink-2); font-weight:600;}
.k-prose p{margin-bottom:14px; color:var(--ink-2); max-width:70ch;}

/* ═══════════ COVER ═══════════
   Its own world: MedStar blue, a portrait bleeding off the left, and the
   headline at full size. Deliberately unlike the sections below it — this is
   the only page meant to be looked at rather than read.

   The type on it is deep navy, not white. White on #00A6E6 measures 2.8:1,
   which fails legibility at every size; navy on the same blue is 5.7:1 and
   passes. The brand colour is unchanged — only what sits on it. */
.k-hero{
  --cov-ground:#00A6E6;
  --cov-ground-2:#31BDF0;
  --cov-accent:#04222E;
  --cov-accent-soft:#06384B;
  --cov-solid:#04222E;
  --cov-body:#083A4C;
  position:relative; overflow:hidden;
  background:linear-gradient(105deg, #0089C4 0%, var(--cov-ground) 38%, var(--cov-ground-2) 100%);
  color:#04222E;
  display:grid; grid-template-columns:minmax(0,0.92fr) minmax(0,1.35fr);
  align-items:stretch; min-height:600px;
  border-bottom:1px solid rgba(4,34,46,.14);
}
.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(255,255,255,.26) 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:var(--f-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;}
/* the moustache: the same line, sitting under the name rather than over it */
.k-cbrow.under{margin:0 0 24px;}

.scan-root .k-hero-h1{
  font-family:var(--f-head); font-weight:900;
  font-size:clamp(40px,5.6vw,82px); line-height:1.02; letter-spacing:-.022em;
  color:#04222E; margin:0 0 26px; text-wrap:balance;
}
/* a name with a moustache under it closes the gap between the two */
.scan-root .k-hero-h1.tight{margin-bottom:16px;}
/* *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:#fff;
}
.scan-root .k-hero-h1 strong{font-weight:900; color:#04222E;}
/* the practice name standing in for a headline: a name is usually shorter than
   a sentence, so it takes the larger end of the scale and sits tighter */
.scan-root .k-hero-h1.k-hero-name{
  font-size:clamp(46px,6.4vw,96px); line-height:.98; letter-spacing:-.03em;
}

/* scoped: .scan-root p{margin:0} is more specific than a bare class */
.scan-root .k-hero-sub{
  font-family:var(--f-body);
  font-size:16px; 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:var(--f-body);
  font-size:16px; font-weight:500; line-height:1.1;
  padding:13px 22px; border-radius:99px;
  border:1px solid rgba(4,34,46,.28); color:#04222E; 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:var(--f-mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);}
.k-tile .big{
  font-family:var(--f-head); 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:var(--f-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:var(--f-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:var(--f-mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);}
.k-mapmeta .mv{font-family:var(--f-head); 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:var(--f-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:var(--f-mono); font-size:12.5px; color:var(--ink-2); width:38px; text-align:right; font-variant-numeric:tabular-nums;}
.k-brow .st{font-family:var(--f-mono); font-size:12.5px; color:var(--ink-2); font-variant-numeric:tabular-nums;}
.k-brow .rk{font-family:var(--f-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:var(--f-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:var(--f-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:var(--f-mono); font-size:9.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--muted);}
.k-cost .c-val{
  font-family:var(--f-head); 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:var(--f-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:var(--f-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:var(--f-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:var(--f-mono);}
.k-inp input{
  width:100%; border:0; background:transparent; color:var(--ink); padding:10px 4px;
  font-family:var(--f-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:var(--f-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:var(--f-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:var(--f-head); 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:var(--f-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:var(--f-head); font-weight:800; font-size:34px; letter-spacing:-.045em; line-height:1;}
.k-ps .k{font-family:var(--f-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:var(--f-head); 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:var(--f-head); font-weight:700; font-size:20px;}
.k-case-head .m{font-size:12.5px; color:var(--muted); font-family:var(--f-mono);}
.k-quote{font-family:var(--f-head); 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:var(--f-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:var(--f-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:var(--f-head); 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:var(--f-head); font-weight:700; font-size:21px; letter-spacing:-.02em;}
.k-thead .m{
  font-family:var(--f-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:var(--f-head); 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:var(--f-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:var(--f-head); 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:var(--f-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:var(--f-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:var(--f-head); font-weight:700; font-size:17px;}
.k-case .m{font-size:12px; color:var(--muted); font-family:var(--f-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:var(--f-head); 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:var(--f-head); 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:var(--f-head); 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:var(--f-mono); font-size:10.5px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--muted); line-height:1.4;
}
/* ── presented by ──
   The closing panel, and the one place in the document that asks the reader to
   act. It takes the cover's dark ground deliberately: the deck opens and closes
   on the same surface, and everything measured sits on white in between. */
.k-presenter{
  --cov-ground:#00A6E6;
  --cov-ground-2:#31BDF0;
  /* the closing panel runs white on the blue: the moustache rule, the eyebrow,
     the role line and the paragraph all take it, so the block reads as one
     piece of type rather than two colours */
  --cov-accent:#FFFFFF;
  --cov-accent-soft:#FFFFFF;
  --cov-solid:#04222E;
  --cov-body:rgba(255,255,255,.94);
  position:relative; overflow:hidden; color:#FFFFFF;
  background:linear-gradient(105deg, #0089C4 0%, var(--cov-ground) 38%, var(--cov-ground-2) 100%);
  border-top:1px solid rgba(4,34,46,.14);
}
.k-presenter::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:radial-gradient(90% 120% at 12% 10%, rgba(255,255,255,.24) 0%, transparent 60%);
}
/* the studio-only preview: the real panel, dimmed just enough to read as a
   placeholder, with a line above it saying so */
.k-presenter.k-pdemo .k-pwrap{opacity:.62;}
.k-pflag{
  position:relative; z-index:2;
  padding:12px 7vw; font-family:var(--f-mono); font-size:11px; line-height:1.6;
  letter-spacing:.04em; color:#FFFFFF;
  background:rgba(4,34,46,.34); border-bottom:1px solid rgba(255,255,255,.22);
}
.k-pwrap{
  position:relative; z-index:1;
  max-width:1180px; margin:0 auto; padding:64px 7vw;
  display:grid; grid-template-columns:260px minmax(0,1fr); gap:48px; align-items:center;
}
.k-pshot{
  aspect-ratio:4/5; border-radius:14px; overflow:hidden;
  background:rgba(255,255,255,.20); border:1px solid rgba(255,255,255,.42);
  box-shadow:0 24px 60px rgba(4,34,46,.30);
  display:grid; place-items:center;
}
.k-pshot img{width:100%; height:100%; object-fit:cover; object-position:center 28%; display:block;}
.k-pshot .ini{
  font-family:var(--f-head); font-weight:800; font-size:44px; letter-spacing:-.02em;
  color:rgba(255,255,255,.62);
}
/* scoped: .scan-root h2 and .scan-root a are more specific than a bare class,
   and will otherwise win on the font and the link colour */
.scan-root .k-pname{
  font-family:var(--f-head); font-weight:900;
  font-size:clamp(34px,4.4vw,58px); line-height:1.03; letter-spacing:-.024em;
  color:#FFFFFF; margin:0;
}
.k-prole{
  font-family:var(--f-mono); font-size:11px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--cov-accent-soft); margin-top:12px;
}
.scan-root .k-pline{
  font-size:16px; line-height:1.68; color:var(--cov-body);
  margin:20px 0 0; max-width:56ch;
}
.k-pacts{display:flex; gap:12px; flex-wrap:wrap; margin-top:28px;}
.scan-root .k-pbtn{
  display:inline-flex; align-items:center; justify-content:center;
  min-height:48px; padding:0 26px; border-radius:999px;
  font-family:var(--f-head);
  font-weight:700; font-size:15px; letter-spacing:-.01em;
  text-decoration:none; white-space:nowrap;
  border:1px solid #FFFFFF; background:#FFFFFF; color:#04222E;
  box-shadow:0 10px 26px rgba(4,34,46,.22);
  transition:background .16s ease, border-color .16s ease, transform .16s ease;
}
.scan-root .k-pbtn:hover{background:#EAF7FE; border-color:#EAF7FE;}
.scan-root .k-pbtn.on{
  background:var(--cov-solid); border-color:var(--cov-solid); color:#fff;
  box-shadow:0 12px 30px rgba(4,34,46,.30);
}
.scan-root .k-pbtn.on:hover{background:#06384B; border-color:#06384B;}
.scan-root .k-pbtn:active{transform:translateY(1px);}
/* the address and the number in full, for anyone reading this on paper where
   a button is only a shape */
.k-pmeta{
  display:flex; gap:22px; flex-wrap:wrap; margin-top:18px;
  font-family:var(--f-mono); font-size:12px; letter-spacing:.02em;
  color:rgba(255,255,255,.82);
}
@media (max-width:820px){
  .k-pwrap{grid-template-columns:1fr; gap:28px; padding:48px 7vw; text-align:left;}
  .k-pshot{max-width:220px; aspect-ratio:1/1;}
  .scan-root .k-pbtn{flex:1 1 auto;}
}
@media print{
  .k-presenter{-webkit-print-color-adjust:exact; print-color-adjust:exact; break-inside:avoid;}
  .scan-root .k-pbtn{box-shadow:none;}
}

.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);}

/* ── practice profile ──
   Three rows of four, every row the same shape: what they type and what that
   makes. The uniform grid is the point — the eye reads across a row and the
   arithmetic is visible without anyone explaining it. */
.k-pfrow{
  display:grid; grid-template-columns:repeat(4,minmax(0,1fr));
  gap:16px; margin-bottom:16px; align-items:stretch;
}
.k-pfrow .k-sfield{
  background:var(--surface); border:1px solid var(--line); border-radius:12px;
  padding:16px 18px; align-content:start; box-shadow:var(--shadow);
}
.k-pftile{
  background:var(--surface-2); border:1px solid var(--line-2); border-radius:12px;
  padding:16px 18px; display:grid; align-content:start; gap:6px; box-shadow:var(--shadow);
}
.k-pftile .lab{
  font-family:var(--f-mono); font-size:10px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--muted);
}
.k-pftile .big{
  font-family:var(--f-head); font-size:30px; font-weight:800;
  letter-spacing:-.04em; line-height:1.05; color:var(--ink);
  font-variant-numeric:tabular-nums;
}
.k-pftile .sub{font-size:11.5px; color:var(--muted); line-height:1.45;}
/* the two figures the whole conversation turns on */
.k-pftile.gold{
  background:linear-gradient(180deg,#EAF6FD 0%, #DCEEF9 100%);
  border-color:#9AD3EE;
}
.k-pftile.gold .lab{color:#0E6A93;}
.k-pftile.gold .big{color:#04222E; font-size:34px;}
.k-pflab{
  font-family:var(--f-mono); font-size:10px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--muted); margin:26px 0 14px;
  display:flex; align-items:center; gap:11px;
}
.k-pflab::after{content:""; flex:1; height:1px; background:var(--line);}
@media (max-width:1000px){ .k-pfrow{grid-template-columns:repeat(2,minmax(0,1fr));} }
@media (max-width:620px){ .k-pfrow{grid-template-columns:1fr;} }

/* ── 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:var(--f-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:var(--f-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:var(--f-head); 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:var(--f-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:var(--f-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:var(--f-mono); font-size:10px; letter-spacing:.13em;
  text-transform:uppercase; color:var(--muted);
}
.k-stile .big{
  font-family:var(--f-head); 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:var(--f-head); 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:var(--f-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:var(--f-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. */
/* ── the four programmes ──
   A price list, not a spec sheet. The rail on the left holds the name and the
   figure and nothing else, pinned to the top so a short card and a long one
   start on the same line; the right side carries everything that justifies it.
   The brand blue appears only as a rule and a marker — at 2.9:1 on white it
   cannot carry text, so no price is ever set in it. */
.k-progs{display:grid; gap:26px;}
.k-prog{
  background:var(--surface); border:1px solid var(--line); border-radius:16px;
  display:grid; grid-template-columns:330px 1fr; overflow:hidden; position:relative;
  box-shadow:var(--shadow);
}
.k-prog::before{
  content:""; position:absolute; top:0; left:0; right:0; height:3px; z-index:2;
  background:linear-gradient(90deg,#00A6E6 0%, #1B6B9E 100%);
}
.k-prog.rec{border-color:#00A6E6; box-shadow:var(--lift);}
.k-prog .tag{
  position:absolute; top:3px; right:0; z-index:2;
  background:#04222E; color:#fff; padding:7px 15px; border-radius:0 0 0 12px;
  font-family:var(--f-mono); font-size:10px; font-weight:600;
  letter-spacing:.12em; text-transform:uppercase;
}
.k-prog-head{
  background:linear-gradient(180deg,var(--surface-2) 0%, #EDF2F7 100%);
  border-right:1px solid var(--line);
  padding:34px 28px; display:grid; align-content:start; gap:0;
}
.k-prog.rec .k-prog-head{background:linear-gradient(180deg,#EAF6FD 0%, #DCEEF9 100%);}
.k-prog-head h4{
  font-family:var(--f-head); font-size:19px; font-weight:700; letter-spacing:-.02em;
  line-height:1.2; color:var(--ink);
}
/* the figure gets a rule over it, so the eye lands on the money */
.k-prog-head .price{
  display:flex; align-items:baseline; gap:8px; flex-wrap:wrap;
  margin-top:18px; padding-top:16px; border-top:1px solid var(--line-2);
}
.k-prog-head .price b{
  font-family:var(--f-head); font-size:38px; font-weight:800;
  letter-spacing:-.045em; line-height:1; color:var(--ink);
}
.k-prog-head .price span{
  color:var(--ink-2); font-size:13px; font-weight:500;
  font-family:var(--f-body); letter-spacing:0;
}
.k-prog-head .pnote{
  font-size:12.5px; color:var(--muted); line-height:1.5; margin-top:12px;
}
.k-prog-body{padding:32px 34px; display:grid; gap:16px; align-content:start; min-width:0;}
.k-prog-body .lede{
  font-family:var(--f-head); font-weight:700; font-size:17px; color:var(--ink);
  line-height:1.4; letter-spacing:-.015em;
}
.k-prog-body .blurb{font-size:15px; color:var(--ink-2); line-height:1.62; max-width:72ch;}
.k-prog-body .lab{
  font-family:var(--f-mono); font-size:10px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--muted); margin-top:8px;
  display:flex; align-items:center; gap:11px;
}
.k-prog-body .lab::after{content:""; flex:1; height:1px; background:var(--line);}
/* ten bullets down one column makes a card three screens tall; two columns
   keeps the whole programme in one view */
.k-prog-body ul{
  margin:0; padding:0; list-style:none; font-size:13.5px; color:var(--ink-2);
  columns:2; column-gap:34px;
}
.k-prog-body li{
  display:flex; gap:9px; align-items:flex-start; line-height:1.5;
  break-inside:avoid; -webkit-column-break-inside:avoid; margin-bottom:9px;
}
.k-prog-body li::before{
  content:"✓"; color:#0E86BE; font-size:12px; line-height:1.5; flex:none; font-weight:700;
}
.k-prog-body .enote{
  font-size:14px; color:var(--ink); font-weight:600;
  background:var(--surface-2); border:1px solid var(--line);
  border-left:3px solid #00A6E6; border-radius:0 8px 8px 0; padding:12px 16px;
}
.k-prog-body .term{
  font-size:12px; color:var(--muted); border-top:1px solid var(--line);
  padding-top:14px; margin-top:6px; line-height:1.5;
}

/* a price table inside a programme card is a sub-element, not a document of
   its own: no shadow, no forced width, and the money column carries the weight */
.k-prog-body .k-tablewrap{box-shadow:none; border-radius:10px;}
.k-prog-body .k-table{min-width:0; font-size:13px;}
.k-prog-body .k-table th{padding:11px 14px;}
.k-prog-body .k-table td{padding:11px 14px;}
.k-prog-body .k-table tbody tr:nth-child(odd) td{background:var(--surface-2);}
.k-prog-body .k-table td.n:last-child{color:var(--ink); font-weight:700;}

/* 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:var(--f-head); font-size:16px; font-weight:700; letter-spacing:-.01em; margin:0;}
.k-inc .m{font-size:11.5px; color:var(--muted); font-family:var(--f-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:var(--f-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;}
}
