/* PeopleGraph — see DESIGN.md. Paper, hairlines, tabular numerals. */
:root {
  --paper:#F7F5F1; --card:#FFFFFF; --ink:#16181C; --ink-2:#5A5F66; --ink-3:#8A8F97;
  --rule:#DED9D0; --rule-2:#EDE9E2; --graph:#14433E; --graph-soft:#E7EFEC;
  --ready:#1F6F4A; --caution:#8A6A16; --risk:#9B2C22; --leaving:#7A7F87;
  --sans:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --display:"Instrument Serif",Georgia,serif;
  --gutter:clamp(16px,4vw,40px);
  --maxw:1180px;
}

* { box-sizing:border-box; }
html { -webkit-text-size-adjust:100%; }
body {
  margin:0; background:var(--paper); color:var(--ink);
  font:400 16px/1.5 var(--sans); font-feature-settings:"ss01";
  text-rendering:optimizeLegibility;
}
h1,h2,h3 { margin:0; font-weight:400; }
p { margin:0 0 1em; }
a { color:var(--graph); text-underline-offset:3px; }
button { font:inherit; color:inherit; cursor:pointer; }
table { border-collapse:collapse; width:100%; }
.num, td.num, .score { font-family:var(--mono); font-variant-numeric:tabular-nums; }

.wrap { max-width:var(--maxw); margin:0 auto; padding:0 var(--gutter); }
.rule { height:1px; background:var(--rule); border:0; margin:0; }

/* ---------- masthead ---------- */
.masthead {
  position:sticky; top:0; z-index:20; background:rgba(247,245,241,.93);
  backdrop-filter:blur(6px); border-bottom:1px solid var(--rule);
}
.masthead .wrap { display:flex; align-items:center; gap:24px; height:58px; }
.wordmark { display:flex; align-items:baseline; gap:9px; font-family:var(--display);
  font-size:23px; letter-spacing:-.01em; }
.wordmark svg { align-self:center; }
.masthead nav { margin-left:auto; display:flex; gap:22px; font-size:14px; }
.masthead nav a { color:var(--ink-2); text-decoration:none; }
.masthead nav a:hover { color:var(--graph); }
.local-mark {
  display:inline-flex; align-items:center; gap:6px; font-size:11px; letter-spacing:.08em;
  text-transform:uppercase; color:var(--graph); border:1px solid var(--graph);
  padding:3px 8px; border-radius:2px; white-space:nowrap;
}

/* ---------- opening ---------- */
.opening { padding-top:clamp(48px,7vw,92px); padding-bottom:clamp(32px,4vw,52px); }
.opening h1 {
  font-family:var(--display); font-size:clamp(34px,5.4vw,58px); line-height:1.06;
  letter-spacing:-.015em; max-width:16ch;
}
.opening .lede { margin-top:22px; font-size:clamp(17px,2vw,19px); max-width:58ch; color:var(--ink-2); }
.opening .lede strong { color:var(--ink); font-weight:500; }
.facts { display:flex; flex-wrap:wrap; gap:0; margin-top:38px; border-top:1px solid var(--rule); }
.fact { flex:1 1 170px; padding:16px 20px 14px 0; border-right:1px solid var(--rule-2); }
.fact:last-child { border-right:0; }
.fact b { display:block; font-family:var(--display); font-size:34px; line-height:1; }
.fact span { display:block; margin-top:7px; font-size:12.5px; color:var(--ink-2); max-width:22ch; }

/* ---------- section furniture ---------- */
.section { scroll-margin-top:66px; padding-top:clamp(40px,5vw,66px); padding-bottom:clamp(40px,5vw,66px); }
.section-head { display:flex; align-items:flex-end; gap:20px; flex-wrap:wrap;
  border-bottom:1px solid var(--rule); padding-bottom:12px; margin-bottom:24px; }
.eyebrow { font-size:11.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); }
.section-head h2 { font-family:var(--display); font-size:clamp(25px,3vw,33px); letter-spacing:-.01em; }
.section-head p { margin:0; color:var(--ink-2); font-size:14.5px; max-width:52ch; }
.section-head .spacer { margin-left:auto; }

/* ---------- console ---------- */
.console { border:1px solid var(--rule); background:var(--card); }
.console-bar {
  display:flex; align-items:center; gap:14px; flex-wrap:wrap;
  padding:10px 14px; border-bottom:1px solid var(--rule); background:#FCFBF9;
}
.console-bar .grp { display:flex; align-items:center; gap:8px; font-size:12.5px; color:var(--ink-2); }
.console-bar label { font-size:11.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-3); }
.segmented { display:inline-flex; border:1px solid var(--rule); border-radius:2px; overflow:hidden; }
.segmented button { background:transparent; border:0; padding:5px 11px; font-size:12.5px; color:var(--ink-2); }
.segmented button[aria-pressed="true"] { background:var(--graph); color:#fff; }
.switch { display:inline-flex; align-items:center; gap:7px; font-size:12.5px; color:var(--ink-2); cursor:pointer; }
.switch input { accent-color:var(--graph); width:14px; height:14px; }
select, input[type=text], input[type=email] {
  font:inherit; font-size:13px; padding:5px 8px; border:1px solid var(--rule);
  background:var(--card); color:var(--ink); border-radius:2px; max-width:100%;
}
select:focus-visible, input:focus-visible, button:focus-visible, a:focus-visible {
  outline:2px solid var(--graph); outline-offset:1px;
}
.audit-btn { background:transparent; border:1px solid var(--rule); border-radius:2px;
  padding:5px 10px; font-size:12.5px; color:var(--ink-2); }

.console-body { display:grid; grid-template-columns:186px 1fr; min-height:560px; }
.rail { border-right:1px solid var(--rule); background:#FCFBF9; padding:10px 0; }
.rail button {
  display:block; width:100%; text-align:left; background:transparent; border:0;
  border-left:3px solid transparent; padding:9px 14px; font-size:14px; color:var(--ink-2);
}
.rail button small { display:block; font-size:11.5px; color:var(--ink-3); margin-top:2px; }
.rail button[aria-current="true"] { border-left-color:var(--graph); color:var(--ink); background:var(--card); }
.rail button[disabled] { color:var(--ink-3); cursor:not-allowed; }
.rail .rail-label { padding:14px 14px 6px; font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--ink-3); }
.panel { padding:20px 22px 26px; min-width:0; }
.panel > h3 { font-family:var(--display); font-size:25px; margin-bottom:4px; }
.panel > .panel-note { color:var(--ink-2); font-size:14px; max-width:64ch; margin-bottom:18px; }

/* ---------- metrics ---------- */
.metrics { display:flex; flex-wrap:wrap; gap:0; border-top:1px solid var(--rule-2);
  border-bottom:1px solid var(--rule-2); margin-bottom:20px; }
.metric { flex:1 1 130px; padding:12px 16px 12px 0; }
.metric b { display:block; font-family:var(--display); font-size:29px; line-height:1.05; }
.metric span { font-size:12px; color:var(--ink-2); }
.metric .delta { display:block; font-family:var(--mono); font-size:11.5px; color:var(--risk); margin:2px 0 1px; }

/* ---------- badges, chips, meters ---------- */
.badge {
  display:inline-block; font-size:11px; letter-spacing:.08em; text-transform:uppercase;
  border:1px solid currentColor; padding:2px 7px; border-radius:2px; white-space:nowrap;
}
.badge.solid { color:#fff !important; border-color:transparent; }
.b-ready { color:var(--ready); } .b-ready.solid { background:var(--ready); }
.b-caution { color:var(--caution); } .b-caution.solid { background:var(--caution); }
.b-risk { color:var(--risk); } .b-risk.solid { background:var(--risk); }
.b-leaving { color:var(--leaving); } .b-leaving.solid { background:var(--leaving); }
.b-graph { color:var(--graph); } .b-graph.solid { background:var(--graph); }
.badge-row { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:14px; }

.meter { height:4px; background:var(--rule-2); border-radius:2px; overflow:hidden; }
.meter i { display:block; height:100%; background:var(--graph); }
.meter.ready i { background:var(--ready); } .meter.caution i { background:var(--caution); }
.meter.risk i { background:var(--risk); }

/* ---------- record cards ---------- */
.records { display:grid; gap:10px; }
.record {
  position:relative; border:1px solid var(--rule); background:var(--card);
  border-left:3px solid var(--ink-3); padding:14px 16px;
  display:grid; grid-template-columns:1fr 220px; gap:18px;
}
.record.t-ready { border-left-color:var(--ready); }
.record.t-soon { border-left-color:var(--caution); }
.record.t-emerging { border-left-color:var(--ink-3); }
.record.t-leaving { border-left-color:var(--leaving); background:#FBFAF8; }
.record h4 { margin:0 0 3px; font-size:16px; font-weight:500; display:flex; flex-wrap:wrap;
  align-items:center; gap:8px; }
.record h4 .strike { text-decoration:line-through; color:var(--leaving); }
.record .who { font-size:13px; color:var(--ink-2); }
.record .why { margin-top:9px; font-size:13px; color:var(--ink-2); }
.record .why b { font-weight:500; color:var(--ink); }
.record .actions { margin-top:11px; display:flex; gap:8px; flex-wrap:wrap; }
.record .score { text-align:right; font-family:var(--display); font-size:31px; line-height:1; }
.record .score em { font-style:normal; font-family:var(--sans); font-size:12px; color:var(--ink-3); }
.breakdown { margin-top:9px; display:grid; gap:5px; }
.breakdown div { display:grid; grid-template-columns:96px 1fr 30px; gap:8px; align-items:center;
  font-size:11.5px; color:var(--ink-2); }
.breakdown span:last-child { font-family:var(--mono); text-align:right; }

.btn {
  background:transparent; border:1px solid var(--rule); border-radius:2px;
  padding:5px 10px; font-size:12.5px; color:var(--ink-2);
}
.btn:hover { border-color:var(--graph); color:var(--graph); }
.btn.primary { background:var(--graph); border-color:var(--graph); color:#fff; }
.btn.primary:hover { background:#0E332F; color:#fff; }
.btn[disabled] { opacity:.45; cursor:not-allowed; }

/* ---------- tables ---------- */
.table-scroll { overflow-x:auto; border:1px solid var(--rule); background:var(--card); }
.table-scroll table { min-width:720px; }
th, td { text-align:left; padding:8px 12px; border-bottom:1px solid var(--rule-2); font-size:13.5px; }
th { position:sticky; top:0; background:#FCFBF9; font-size:11.5px; letter-spacing:.07em;
  text-transform:uppercase; color:var(--ink-2); font-weight:500; z-index:1; }
td.num, th.num { text-align:right; }
tbody tr:last-child td { border-bottom:0; }
tbody tr:hover { background:#FBFAF8; }
caption { caption-side:bottom; padding:8px 12px; font-size:12px; color:var(--ink-3); text-align:left; }

/* ---------- issue groups ---------- */
details.issue { border:1px solid var(--rule); background:var(--card); margin-bottom:8px; }
details.issue > summary {
  cursor:pointer; padding:10px 14px; font-size:14px; display:flex; gap:10px; align-items:center;
  list-style:none;
}
details.issue > summary::-webkit-details-marker { display:none; }
details.issue > summary::before { content:"+"; font-family:var(--mono); color:var(--ink-3); }
details.issue[open] > summary::before { content:"–"; }
details.issue > summary .count { margin-left:auto; font-family:var(--mono); font-size:12.5px; color:var(--ink-2); }
details.issue ul { margin:0; padding:2px 14px 14px 34px; }
details.issue li { font-size:13.5px; color:var(--ink-2); margin-bottom:6px; }

/* ---------- nine box ---------- */
.ninebox { display:grid; grid-template-columns:auto repeat(3,1fr); gap:1px; background:var(--rule-2);
  border:1px solid var(--rule); }
.ninebox > * { background:var(--card); padding:12px; }
.ninebox .axis { background:#FCFBF9; font-size:11.5px; letter-spacing:.06em; text-transform:uppercase;
  color:var(--ink-3); display:flex; align-items:center; justify-content:center; text-align:center; }
.ninebox .cell { text-align:left; border:0; min-height:82px; }
.ninebox .cell b { font-family:var(--display); font-size:26px; display:block; line-height:1; }
.ninebox .cell span { font-size:12px; color:var(--ink-2); }
.ninebox .cell[aria-pressed="true"] { background:var(--graph-soft); }
.ninebox .cell.hot b { color:var(--graph); }

/* ---------- layers ---------- */
.layers { display:grid; gap:6px; }
.layers div { display:grid; grid-template-columns:76px 1fr 44px; gap:10px; align-items:center;
  font-size:13px; color:var(--ink-2); }
.layers .bar { height:14px; background:var(--graph-soft); }
.layers .bar i { display:block; height:100%; background:var(--graph); }
.layers .n { font-family:var(--mono); text-align:right; }

/* ---------- states ---------- */
.state { border:1px dashed var(--rule); background:#FCFBF9; padding:22px; text-align:left; }
.state h4 { margin:0 0 6px; font-size:15px; font-weight:500; }
.state p { margin:0 0 10px; font-size:13.5px; color:var(--ink-2); max-width:56ch; }
.skeleton { display:grid; gap:9px; }
.skeleton i { display:block; height:13px; background:linear-gradient(90deg,var(--rule-2),#F6F3EE,var(--rule-2));
  background-size:200% 100%; animation:sweep 1.2s linear infinite; }
.skeleton i:nth-child(2n) { width:78%; } .skeleton i:nth-child(3n) { width:58%; }
@keyframes sweep { to { background-position:-200% 0; } }
@media (prefers-reduced-motion:reduce) { .skeleton i { animation:none; } }

/* ---------- ask ---------- */
.ask-row { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:14px; }
.ask-row button { text-align:left; flex:1 1 210px; border:1px solid var(--rule); background:var(--card);
  padding:9px 12px; font-size:13px; color:var(--ink-2); border-radius:2px; }
.ask-row button[aria-pressed="true"] { border-color:var(--graph); color:var(--ink); background:var(--graph-soft); }
.answer { border-left:3px solid var(--graph); background:var(--graph-soft); padding:12px 14px;
  font-size:14.5px; margin-bottom:14px; }
.answer .how { display:block; margin-top:5px; font-size:12px; color:var(--ink-2); font-family:var(--mono); }

/* ---------- audit drawer ---------- */
.drawer { position:fixed; inset:auto 0 0 0; z-index:30; background:var(--card);
  border-top:1px solid var(--rule); box-shadow:0 -6px 24px rgba(20,24,28,.08); max-height:52vh; overflow:auto; }
.drawer .wrap { padding-top:12px; padding-bottom:16px; }
.drawer-head { display:flex; align-items:center; gap:12px; margin-bottom:8px; }
.drawer-head h4 { font-size:14px; font-weight:500; margin:0; }
.drawer-head .spacer { margin-left:auto; }
.drawer[hidden] { display:none; }

/* ---------- prose blocks ---------- */
.cols { display:grid; grid-template-columns:repeat(auto-fit,minmax(248px,1fr)); gap:0; }
.col { padding:18px 22px 18px 0; border-right:1px solid var(--rule-2); }
.col:last-child { border-right:0; }
.col h3 { font-size:15px; font-weight:500; margin-bottom:6px; }
.col p { font-size:14px; color:var(--ink-2); margin:0; }
.col .step { font-family:var(--mono); font-size:12px; color:var(--ink-3); display:block; margin-bottom:8px; }

.limits li { font-size:14.5px; color:var(--ink-2); margin-bottom:9px; max-width:68ch; }
.limits li b { color:var(--ink); font-weight:500; }

/* ---------- waitlist ---------- */
.waitlist { border:1px solid var(--rule); background:var(--card); padding:24px; display:grid;
  grid-template-columns:1fr 1fr; gap:28px; }
.wl { display:grid; gap:10px; }
.wl[hidden] { display:none; }
.wl .hp { position:absolute; left:-9999px; }
.waitlist form { display:grid; gap:12px; align-content:start; }
.waitlist label, .wl label { font-size:11.5px; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-3); }
.waitlist .field, .wl .field { display:grid; gap:5px; }
.waitlist input, .wl input, .wl select { padding:9px 10px; font-size:14.5px; }
.waitlist .err, .wl .err { color:var(--risk); font-size:12.5px; }
.waitlist .note, .wl .note { font-size:12.5px; color:var(--ink-3); }

footer { border-top:1px solid var(--rule); padding:26px 0 40px; font-size:13px; color:var(--ink-2); }
footer .wrap { display:flex; gap:20px; flex-wrap:wrap; }

/* ---------- responsive ---------- */
@media (max-width:860px) {
  .section-head .spacer, .console-bar .spacer { margin-left:0; }
  .section-head p { max-width:none; }
  .console-body { grid-template-columns:1fr; }
  .rail { display:flex; overflow-x:auto; border-right:0; border-bottom:1px solid var(--rule); padding:0; }
  .rail .rail-label { display:none; }
  .rail button { white-space:nowrap; width:auto; border-left:0; border-bottom:3px solid transparent; padding:11px 14px; }
  .rail button[aria-current="true"] { border-left:0; border-bottom-color:var(--graph); }
  .rail button small { display:none; }
  .record { grid-template-columns:1fr; }
  .record .score { text-align:left; }
  .waitlist { grid-template-columns:1fr; }
  .masthead nav { display:none; }
  .fact { border-right:0; }
}
@media (max-width:520px) {
  .ninebox { grid-template-columns:auto repeat(3,1fr); font-size:12px; }
  .ninebox > * { padding:8px; }
  .ninebox .cell b { font-size:20px; }
  .ninebox .cell span { display:none; }
}

/* ---------- landing: offers, product, compare ---------- */
.btn.big { padding:10px 18px; font-size:14.5px; }
a.btn { display:inline-block; text-decoration:none; }
a.btn.is-disabled { background:var(--rule-2); border-color:var(--rule); color:var(--ink-2); cursor:not-allowed; }
.nav-buy { margin-left:18px; white-space:nowrap; }
.cta-row { display:flex; flex-wrap:wrap; gap:10px; margin-top:28px; }
.fine { margin-top:10px; font-size:12px; color:var(--ink-3); }
.mono { font-family:var(--mono); font-size:.92em; }

.tiers { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); border:1px solid var(--rule); background:var(--card); }
.tiers.two-tiers { grid-template-columns:1fr 1fr; }
.tier-actions { display:flex; gap:8px; flex-wrap:wrap; }
.bundle { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin-top:-1px;
  border:1px solid var(--rule); background:var(--graph-soft); padding:14px 22px; font-size:14.5px; }
.bundle p { margin:0; } .bundle span { color:var(--ink-2); }
.buy .btn.big + .btn.big { margin-top:-4px; }

.tier { padding:22px 22px 24px; display:flex; flex-direction:column; gap:10px; }
.tier + .tier { border-left:1px solid var(--rule); }
.tiers.toolkits .tier { border-left:0; box-shadow:inset 1px 0 0 var(--rule); }
.tier.featured { border-top:3px solid var(--graph); padding-top:19px; }
.tier h3 { font-family:var(--display); font-size:26px; }
.tier .job { font-size:14.5px; color:var(--ink); margin:0; }
.tier ul { margin:0 0 6px; padding-left:18px; font-size:13.5px; color:var(--ink-2); flex:1; }
.tier li { margin-bottom:5px; }
.tier .btn { align-self:flex-start; }
.price { margin:0; display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.price b { font-family:var(--display); font-size:34px; font-weight:400; line-height:1; }
.price span { font-size:12.5px; color:var(--ink-2); }

.two { display:grid; grid-template-columns:1.1fr 1fr; gap:32px; align-items:start; }
.two > *, .product > *, .tiers > * { min-width:0; }
.two p { font-size:15px; max-width:60ch; }
.code { background:var(--ink); color:#EDE9E2; font:13px/1.6 var(--mono); padding:14px 16px; overflow-x:auto;
  border-radius:2px; margin:0 0 14px; }

.product { display:grid; grid-template-columns:1.45fr 1fr; gap:28px; align-items:start; }
.shot { margin:0; border:1px solid var(--rule); background:var(--card); }
.shot img { display:block; width:100%; height:auto; }
.shot figcaption { padding:8px 12px; font-size:12px; color:var(--ink-3); border-top:1px solid var(--rule-2); }
.buy { border:1px solid var(--rule); background:var(--card); padding:20px; display:grid; gap:14px; }
.checkout-note { margin:0; font-size:13px; color:var(--ink-2); border-left:3px solid var(--caution); padding-left:10px; }
.specs { margin:0; display:grid; grid-template-columns:86px 1fr; gap:8px 12px; font-size:13.5px; }
.specs dt { color:var(--ink-3); font-size:11.5px; letter-spacing:.07em; text-transform:uppercase; padding-top:2px; }
.specs dd { margin:0; color:var(--ink-2); }
.plain { margin:0 0 10px; padding-left:18px; font-size:14px; color:var(--ink-2); }
.plain li { margin-bottom:5px; }
.col p a { font-size:14px; }

.compare { min-width:760px; }
.compare td:first-child { color:var(--ink); font-weight:500; width:30%; }
.compare td { color:var(--ink-2); }
.compare th:nth-child(3), .compare td:nth-child(3) { background:#F4F8F6; }

.faq { border-top:1px solid var(--rule); }
.faq details { border-bottom:1px solid var(--rule); }
.faq summary { cursor:pointer; padding:14px 0; font-size:15.5px; list-style:none; display:flex; gap:12px; }
.faq summary::-webkit-details-marker { display:none; }
.faq summary::before { content:"+"; font-family:var(--mono); color:var(--ink-3); width:12px; }
.faq details[open] summary::before { content:"–"; }
.faq p { margin:0 0 16px 24px; font-size:14.5px; color:var(--ink-2); max-width:70ch; }

@media (max-width:860px) {
  .tiers, .two, .product { grid-template-columns:1fr; }
  .tier + .tier { border-left:0; border-top:1px solid var(--rule); }
  .tiers.two-tiers { grid-template-columns:1fr; }
  .tiers.toolkits .tier { box-shadow:none; }
  .nav-buy { margin-left:auto; }
}

/* ---------- free tools ---------- */
.calc-page .eyebrow a { color:inherit; }
.calc-explain p, .calc-explain li { max-width:72ch; color:var(--ink-2); }
.calc-cta { display:flex; justify-content:space-between; align-items:center; gap:22px; flex-wrap:wrap;
  border:1px solid var(--rule); background:var(--card); border-top:3px solid var(--graph); padding:22px; }
.calc-cta h3 { font-family:var(--display); font-size:24px; margin:4px 0 6px; }
.calc-cta p { margin:0; color:var(--ink-2); max-width:62ch; font-size:14.5px; }
.tool-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(250px,1fr)); gap:14px; margin-top:28px; }
.tool-card { display:block; border:1px solid var(--rule); background:var(--card); padding:18px; text-decoration:none; color:var(--ink); }
.tool-card:hover { border-color:var(--graph); }
.tool-card h3 { font-family:var(--display); font-size:22px; margin:6px 0; }
.tool-card p { margin:0; font-size:13.5px; color:var(--ink-2); }

/* ---------- free tools: the live page ---------- */
.tools-hero { padding-bottom:18px; }
.intents { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin-top:26px; }
.intents-label { font-size:12px; letter-spacing:.08em; text-transform:uppercase; color:var(--ink-3); margin-right:4px; }
.intents button { font:inherit; font-size:13.5px; padding:7px 13px; border:1px solid var(--rule); background:var(--card);
  color:var(--ink-2); border-radius:999px; cursor:pointer; transition:border-color .15s, color .15s, background .15s; }
.intents button:hover { border-color:var(--graph); color:var(--graph); }
.intents button[aria-pressed="true"] { background:var(--graph); border-color:var(--graph); color:#fff; }
.tools-live { padding-bottom:clamp(30px,4vw,50px); }
.live-card { border:1px solid var(--rule); background:var(--card); padding:22px; display:flex; flex-direction:column; gap:12px;
  transition:opacity .25s, transform .25s, border-color .2s, box-shadow .2s; }
.live-card:hover, .live-card:focus-within { border-color:var(--graph); box-shadow:0 6px 22px rgba(20,67,62,.08); }
.live-card.dim { opacity:.32; transform:scale(.985); }
.live-card.dim:hover { opacity:.7; }
.live-card.feature { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.2fr); gap:26px; align-items:center; margin-bottom:16px;
  border-top:3px solid var(--graph); }
.live-card h2 { font-family:var(--display); font-size:clamp(26px,3vw,34px); line-height:1.1; margin:4px 0 8px; }
.live-copy p { color:var(--ink-2); font-size:14.5px; margin:0 0 14px; max-width:46ch; }
.design-pick { margin-bottom:16px; }
.tree { width:100%; height:auto; background:var(--paper); border:1px solid var(--rule-2);
  background-image:radial-gradient(var(--rule) 1px, transparent 1px); background-size:16px 16px; }
.tree .edge { stroke:#B9B3A8; stroke-width:1.2; }
.tree .node rect:first-child { fill:#fff; stroke:#D4CEC4; }
.tree .bar { fill:var(--ink); opacity:.75; } .tree .bar2 { fill:var(--ink-3); opacity:.6; }
.live-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:16px; }
.mini-link { margin-top:auto; font-size:13.5px; }
@media (max-width:760px) {
  .live-card.feature { grid-template-columns:1fr; }
  }
@media (prefers-reduced-motion: reduce) {
  .live-card, }

/* ---------- calculators: sliders, result panel, pictures ---------- */
.viz-cap { font-size:13.5px; color:var(--ink-2); margin:10px 0 0; }
.viz-cap b { color:var(--ink); font-weight:500; }
/* 100 people */
.v-dots { display:grid; grid-template-columns:repeat(20, 1fr); gap:5px; max-width:360px; }
.v-dots i { aspect-ratio:1; border-radius:50%; background:#fff; border:1px solid #cfd9d5; transition:background .25s, border-color .25s; }
.v-dots i.on { background:var(--risk); border-color:var(--risk); }
.v-dots.mini { gap:4px; max-width:none; }
/* a cost split into parts */
.v-stack { display:flex; height:14px; gap:2px; }
.v-stack i { display:block; transition:flex .35s ease; }
.v-key { display:grid; grid-template-columns:1fr 1fr; gap:6px 16px; margin:12px 0 0; }
.v-key div { display:flex; justify-content:space-between; gap:8px; font-size:13px; border-bottom:1px solid rgba(0,0,0,.06); padding-bottom:4px; }
.v-key dt { color:var(--ink-2); } .v-key dt i { display:inline-block; width:9px; height:9px; margin-right:6px; }
.v-key dd { margin:0; font-family:var(--mono); font-size:12.5px; color:var(--ink); }
.v-key dd span { color:var(--ink-3); }
/* the organisation's shape */
.v-pyramid { display:grid; gap:4px; margin-top:12px; }
.v-layer { display:grid; grid-template-columns:62px 1fr 56px; align-items:center; gap:8px; font-size:12px; color:var(--ink-3); }
.v-layer .t { display:flex; justify-content:center; }
.v-layer .t i { display:block; height:14px; background:var(--graph); border-radius:2px; transition:width .35s ease; }
.v-layer .n { font-family:var(--mono); text-align:right; color:var(--ink-2); }
/* headcount by year */
.calc-viz svg, .mini-viz svg { width:100%; height:auto; max-height:210px; overflow:visible; }
.mini-viz svg { max-height:160px; }
svg rect.now { fill:var(--ink-3); } svg rect.yr { fill:var(--graph); }
svg text.val { font-family:var(--mono); font-size:11px; fill:var(--ink); } svg text.lab { font-size:11px; fill:var(--ink-3); }
/* span against the common range */
.v-gauge { position:relative; height:12px; background:#fff; border:1px solid var(--rule-2); margin:8px 0 22px; }
.v-gauge .band { position:absolute; left:26.7%; width:33.3%; top:0; bottom:0; background:#d7e6e1; }
.v-gauge .mark { position:absolute; top:-6px; width:5px; height:22px; margin-left:-2.5px; background:var(--graph); border-radius:2px; transition:left .35s ease; }
.v-gauge .mark.out { background:var(--caution); }
.v-gauge span { position:absolute; top:16px; transform:translateX(-50%); font-family:var(--mono); font-size:10.5px; color:var(--ink-3); }
.v-gauge span:first-of-type { transform:none; } .v-gauge span:last-of-type { transform:translateX(-100%); }
/* the live cards on /tools/ */
.live-head { display:flex; justify-content:space-between; align-items:baseline; gap:10px; }
.live-head .mini-link { margin:0; font-size:12.5px; }
.mini-viz .v-key { grid-template-columns:1fr; gap:3px; }
.mini-viz .v-gauge { margin-bottom:20px; }
.live-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
@media (max-width:760px) { .live-grid { grid-template-columns:1fr; } }

/* ---------- calculators ----------
   One frame, two equal panels, one padding. Inside a panel everything shares the
   same left and right edge: label left, number right, slider track edge to edge.
   No dividers, underlines or boxes, so nothing can end in the wrong place. */
.calc { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); margin-top:32px; border:1px solid var(--rule); background:var(--card); }
.calc-inputs, .calc-result { padding:32px; }
.calc-inputs { display:flex; flex-direction:column; gap:28px; }
.calc-result { background:var(--graph-soft); display:flex; flex-direction:column; }
.calc-num { display:block; margin-top:14px; font-family:var(--display); font-weight:400; font-size:clamp(52px,6vw,76px); line-height:.95;
  color:var(--graph); font-variant-numeric:tabular-nums; }
.calc-sub { margin-top:10px; font-size:14.5px; color:var(--ink-2); }
.calc-viz { margin-top:28px; }
.calc-formula { margin:auto 0 0; padding-top:24px; font-family:var(--mono); font-size:12.5px; color:var(--ink-3); }
.slide { display:grid; grid-template-columns:1fr auto; align-items:baseline; row-gap:12px; }
.slide label { font-size:14px; color:var(--ink-2); }
.slide input[type=number] { width:6.5ch; margin:0; padding:0; border:0; background:transparent; text-align:right;
  font-family:var(--display); font-size:28px; line-height:1; color:var(--ink); font-variant-numeric:tabular-nums; -moz-appearance:textfield; cursor:text; }
.slide input[type=number]::-webkit-inner-spin-button, .slide input[type=number]::-webkit-outer-spin-button { -webkit-appearance:none; margin:0; }
.slide input[type=number]:hover { color:var(--graph); }
.slide input[type=number]:focus { outline:none; color:var(--graph); }
.slide input[type=range] { grid-column:1 / -1; display:block; width:100%; height:20px; margin:0; padding:0; cursor:pointer;
  --fill:50%; -webkit-appearance:none; appearance:none; background:transparent; }
.slide input[type=range]::-webkit-slider-runnable-track { height:4px; border-radius:2px;
  background:linear-gradient(90deg, var(--graph) var(--fill), var(--rule-2) var(--fill)); }
.slide input[type=range]::-moz-range-track { height:4px; border-radius:2px; background:var(--rule-2); }
.slide input[type=range]::-moz-range-progress { height:4px; border-radius:2px; background:var(--graph); }
.slide input[type=range]::-webkit-slider-thumb { -webkit-appearance:none; width:20px; height:20px; margin-top:-8px; border-radius:50%;
  background:#fff; border:2px solid var(--graph); box-shadow:0 1px 3px rgba(0,0,0,.14); transition:transform .12s; }
.slide input[type=range]::-moz-range-thumb { width:16px; height:16px; border-radius:50%; background:#fff; border:2px solid var(--graph); }
.slide input[type=range]:hover::-webkit-slider-thumb { transform:scale(1.1); }
.slide input[type=range]:focus-visible { outline:2px solid var(--graph); outline-offset:4px; border-radius:2px; }
.adv summary { cursor:pointer; font-size:14px; color:var(--graph); list-style:none; }
.adv summary::-webkit-details-marker { display:none; }
.adv summary::before { content:"+ "; } .adv[open] summary::before { content:"− "; }
.adv-body { display:flex; flex-direction:column; gap:28px; margin-top:28px; }
/* the same pieces, smaller, on the /tools/ cards */
.mini-form { display:flex; flex-direction:column; gap:20px; }
.mini-form .slide input[type=number] { font-size:22px; }
.mini-form .slide label { font-size:13px; }
.mini-out b { display:block; font-family:var(--display); font-size:clamp(40px,4.4vw,52px); line-height:.95; color:var(--graph); font-weight:400; font-variant-numeric:tabular-nums; }
.mini-out span { display:block; margin-top:8px; font-size:13px; color:var(--ink-2); }
@media (max-width:760px) { .calc { grid-template-columns:1fr; } .calc-inputs, .calc-result { padding:24px; } }
.slide input.num { width:7.5ch; margin:0; padding:0; border:0; background:transparent; text-align:right;
  font-family:var(--display); font-size:28px; line-height:1; color:var(--ink); font-variant-numeric:tabular-nums; cursor:text; }
.slide input.num:hover, .slide input.num:focus { outline:none; color:var(--graph); }
.mini-form .slide input.num { font-size:22px; }
.v-dots { max-width:none; }
.calc-viz svg, .mini-viz svg { max-height:none; }
/* cards: the answer on top, the sliders along the bottom edge, level across a row */
.live-grid .live-card { gap:0; }
.live-grid .mini-out { margin-top:22px; }
.live-grid .mini-viz, .live-grid .v-dots.mini { margin-top:20px; }
.live-grid .mini-form { margin-top:auto; padding-top:28px; }
.v-key div { border-bottom:0; padding-bottom:0; }
