/* =========================================================
   FinancialAdvisor.co.uk — design system
   "The Independent Ledger" — paper, ink, one cobalt accent.
   Spec: design_handoff_independent_ledger/ (README + Design System.dc.html)
   ========================================================= */

/* ---------- fonts (self-hosted) ---------- */

@font-face {
  font-family: "Fraunces";
  src: url("/assets/fonts/fraunces-var.woff2") format("woff2");
  font-weight: 300 700;
  font-stretch: normal;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: "Fraunces";
  src: url("/assets/fonts/fraunces-var-italic.woff2") format("woff2");
  font-weight: 300 700;
  font-stretch: normal;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: "Hanken Grotesk";
  src: url("/assets/fonts/hanken-grotesk-var.woff2") format("woff2");
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* ---------- tokens ---------- */

:root {
  --paper: #f4efe6;
  --paper-deep: #ece6da;
  --ink: #17140f;
  --text-2: #5b564d;
  --text-3: #8a8377;
  --rule: #d9d2c5;
  --rule-soft: #e2dbcf;
  --leader: #b9b2a5;
  --input-rule: #c9c2b4;
  --accent: #1f3fbf;
  --accent-on-ink: #7f93e6;
  --f-text: #e9e2d5;
  --f-muted: #b5ad9d;
  --f-rule: #3a352c;
  --font-display: "Fraunces", Georgia, "Times New Roman", serif;
  --font-text: "Hanken Grotesk", system-ui, -apple-system, sans-serif;
  --container: 1320px;
  --pad: clamp(20px, 4vw, 56px);
}

/* ---------- base ---------- */

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  font-family: var(--font-text);
  font-size: 17px;
  line-height: 1.6;
  color: var(--ink);
  background: var(--paper);
  -webkit-font-smoothing: antialiased;
}

img, svg { max-width: 100%; }

a { color: inherit; text-decoration: none; transition: color 0.15s, border-color 0.15s; }
a:hover { color: var(--accent); }

::selection { background: var(--accent); color: var(--paper); }

:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }

:target { scroll-margin-top: 96px; }

input::placeholder { color: var(--text-3); font-style: italic; }

h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 400;
  color: var(--ink);
  margin: 0 0 0.5em;
}
h1 {
  font-variation-settings: "opsz" 144;
  font-size: clamp(40px, 7.9vw, 118px);
  line-height: 0.94;
  letter-spacing: -0.04em;
}
h2 {
  font-variation-settings: "opsz" 96;
  font-size: clamp(34px, 4.2vw, 60px);
  line-height: 1;
  letter-spacing: -0.035em;
}
h3 {
  font-variation-settings: "opsz" 27;
  font-size: 27px;
  line-height: 1.15;
  letter-spacing: -0.02em;
}

p { margin: 0 0 1.2em; }
strong { font-weight: 600; }

/* ---------- layout ---------- */

.container {
  max-width: var(--container);
  margin: 0 auto;
  padding: 0 var(--pad);
}

.grid-12 {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  gap: 24px;
}
@media (max-width: 999px) { .grid-12 { grid-template-columns: minmax(0, 1fr); } }

.section {
  padding: clamp(48px, 6vw, 88px) 0 clamp(64px, 8vw, 128px);
  border-top: 1px solid var(--ink);
}
.section.no-rule { border-top: 0; }
.band-deep { background: var(--paper-deep); }

/* ---------- labels & taxonomy line ---------- */

.label {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-2);
}
.label.faint { color: var(--text-3); }

.taxonomy {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  padding: 12px 0 0;
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-2);
}
.taxonomy .t-terms { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.taxonomy .t-term { color: var(--accent); }
.taxonomy .t-hair { flex: 0 0 32px; height: 1px; background: var(--leader); }
.taxonomy .t-folio {
  font-family: var(--font-display);
  font-size: 14px;
  letter-spacing: 0;
  text-transform: none;
  font-weight: 400;
  color: var(--text-3);
  white-space: nowrap;
}

/* ---------- links (no filled buttons anywhere) ---------- */

.link-primary,
.link-secondary {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 16px;
  font-weight: 600;
  padding: 6px 0;
  border-bottom: 1.5px solid var(--ink);
}
.link-secondary { border-bottom-color: var(--leader); }
.link-primary:hover,
.link-secondary:hover { color: var(--accent); border-bottom-color: var(--accent); }

.link-quiet { border-bottom: 1px solid var(--leader); }
.link-quiet:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* ---------- ledger rows ---------- */

.ledger { border-top: 2px solid var(--ink); }
.ledger-row {
  display: flex;
  align-items: baseline;
  gap: 12px;
  padding: 15px 0;
  border-bottom: 1px solid var(--rule);
  font-size: 16px;
}
.ledger-row .leader {
  flex: 1;
  border-bottom: 1px dotted var(--leader);
  transform: translateY(-5px);
}
.ledger-row .value {
  font-family: var(--font-display);
  font-size: 24px;
  line-height: 1;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.ledger-row .value.accent { color: var(--accent); }
.ledger-row .value.refused {
  font-family: var(--font-text);
  font-size: 12px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--accent);
}

/* ---------- ruled index rows (guide index, registers) ---------- */

.index-rows { border-top: 1px solid var(--ink); margin: 0; padding: 0; list-style: none; }
.index-row {
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 4px 12px;
  padding: 18px 0 20px;
  border-bottom: 1px solid var(--rule);
  color: var(--ink);
}
.index-row:hover { color: var(--accent); }
.index-row:hover .row-title { color: inherit; }
.index-row .row-no {
  font-family: var(--font-display);
  font-size: 18px;
  color: var(--text-3);
  font-variant-numeric: tabular-nums;
}
.index-row .row-title {
  font-family: var(--font-display);
  font-variation-settings: "opsz" 72;
  font-size: clamp(28px, 3.2vw, 46px);
  line-height: 1.05;
  letter-spacing: -0.025em;
}
.index-row .row-sub {
  grid-column: 2;
  font-size: 17px;
  line-height: 1.55;
  color: var(--text-2);
  max-width: 68ch;
  margin: 6px 0 0;
}
.index-row .row-meta {
  grid-column: 2;
  margin-top: 8px;
  font-size: 13px;
  color: var(--text-3);
}
@media (max-width: 639px) { .index-row { grid-template-columns: 36px 1fr; } }

/* ---------- notice strip (regulatory) ---------- */

.notice-bar { border-bottom: 1px solid var(--rule-soft); background: var(--paper); }
.notice-bar .container {
  padding-top: 7px;
  padding-bottom: 7px;
  display: flex;
  gap: 12px 20px;
  align-items: baseline;
  flex-wrap: wrap;
  font-size: 12.5px;
  line-height: 1.5;
  color: #6b6559;
}
.notice-bar strong {
  font-size: 10.5px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  white-space: nowrap;
  color: inherit;
}
.notice-bar .notice-text { flex: 1 1 320px; min-width: 0; }
.notice-bar a {
  white-space: nowrap;
  color: #6b6559;
  border-bottom: 1px solid var(--input-rule);
}
.notice-bar a:hover { color: var(--accent); border-bottom-color: var(--accent); }

/* ---------- masthead ---------- */

.masthead {
  position: sticky;
  top: 0;
  z-index: 40;
  background: rgba(244, 239, 230, 0.94);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  border-bottom: 1px solid var(--ink);
}
.masthead-inner {
  height: 72px;
  display: flex;
  align-items: center;
  gap: clamp(20px, 3vw, 48px);
}
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 0 0 auto;
  color: var(--ink);
}
.brand:hover { color: var(--ink); }
.brand .brand-bar {
  display: block;
  width: 3px;
  height: 26px;
  background: var(--accent);
}
.brand .wordmark {
  font-family: var(--font-display);
  font-variation-settings: "opsz" 36;
  font-weight: 500;
  font-size: 22px;
  letter-spacing: -0.02em;
  line-height: 1;
  white-space: nowrap;
}
.brand .tld { color: var(--accent); }

.m-nav { display: flex; align-items: center; gap: 28px; margin-left: 12px; }
.m-nav a {
  font-size: 15px;
  font-weight: 500;
  padding: 4px 0;
  background-image: linear-gradient(currentColor, currentColor);
  background-repeat: no-repeat;
  background-size: 0% 1px;
  background-position: 0 100%;
  transition: background-size 0.25s ease, color 0.15s;
}
.m-nav a:hover { background-size: 100% 1px; }
.m-nav a[aria-current="page"] { color: var(--accent); background-size: 100% 1px; }

.m-spacer { flex: 1; }

.m-search {
  margin: 0;
  display: flex;
  align-items: baseline;
  gap: 12px;
  border-bottom: 1px solid var(--input-rule);
  padding: 2px 0 6px;
  width: clamp(200px, 22vw, 320px);
  flex: 0 1 auto;
  min-width: 0;
  transition: border-color 0.2s;
}
.m-search:focus-within { border-color: var(--ink); }
.m-search label {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-3);
}
.m-search input {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  font-family: var(--font-display);
  font-size: 17px;
  line-height: 1.2;
  color: var(--ink);
  outline: none;
  padding: 0;
}
.m-search kbd {
  font-family: inherit;
  font-size: 11px;
  color: var(--text-3);
  letter-spacing: 0.06em;
}

.m-check {
  display: flex;
  align-items: center;
  gap: 8px;
  white-space: nowrap;
  flex: 0 0 auto;
  font-size: 15px;
  font-weight: 600;
  border-bottom: 2px solid var(--accent);
  padding: 4px 0;
}
.m-check:hover { color: var(--accent); }
.m-check[aria-current="page"] { color: var(--accent); }

.m-search-link, .m-menu-btn { display: none; }

.m-mobile-nav { display: none; }

@media (max-width: 1199px) {
  .masthead-inner { gap: 20px; }
  .m-nav { gap: 20px; }
  .m-search { width: 150px; }
  .m-search kbd { display: none; }
}

@media (max-width: 999px) {
  .m-nav, .m-search, .m-check { display: none; }
  .m-search-link {
    display: grid;
    place-items: center;
    height: 44px;
    padding: 0 8px;
    font-size: 14px;
    font-weight: 600;
    color: var(--ink);
  }
  .m-menu-btn {
    height: 44px;
    min-width: 44px;
    padding: 0 4px;
    display: flex;
    align-items: center;
    gap: 10px;
    background: transparent;
    border: 0;
    cursor: pointer;
    color: var(--ink);
    font: inherit;
    font-size: 14px;
    font-weight: 600;
  }
  .m-menu-btn .menu-lines { display: grid; gap: 5px; }
  .m-menu-btn .menu-lines span {
    display: block;
    width: 20px;
    height: 1.5px;
    background: currentColor;
  }
  .m-mobile-nav.open {
    display: grid;
    border-top: 1px solid var(--rule);
    background: var(--paper);
    padding: 12px var(--pad) 28px;
  }
  .m-mobile-nav a {
    font-family: var(--font-display);
    font-size: 30px;
    font-weight: 400;
    letter-spacing: -0.01em;
    padding: 14px 0;
    border-bottom: 1px solid var(--rule);
    display: flex;
    justify-content: space-between;
    align-items: center;
  }
  .m-mobile-nav a .arrow { font-family: var(--font-text); font-size: 18px; color: var(--text-3); }
  .m-mobile-nav a.m-check-mobile { border-bottom: 2px solid var(--accent); }
  .m-mobile-nav a.m-check-mobile .arrow { color: var(--accent); }
}

/* ---------- page header ---------- */

.pagehead { padding: clamp(40px, 5vw, 72px) 0 clamp(40px, 6vw, 72px); }
.pagehead .taxonomy { border-top: 1px solid var(--ink); }
.pagehead h1 {
  font-size: clamp(38px, 5.8vw, 88px);
  line-height: 0.96;
  margin: 28px 0 0;
  max-width: 16ch;
}
.pagehead .standfirst {
  font-size: 19px;
  line-height: 1.55;
  color: var(--text-2);
  max-width: 56ch;
  margin: 28px 0 0;
}
.pagehead .crumbs { font-size: 13px; color: var(--text-3); margin: 0 0 20px; }
.pagehead .crumbs a { border-bottom: 1px solid var(--leader); }
.pagehead .crumbs a:hover { color: var(--accent); border-bottom-color: var(--accent); }

@media (min-width: 1000px) {
  .pagehead-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 24px; }
  .pagehead-grid .ph-title { grid-column: 1 / span 7; }
  .pagehead-grid .ph-aside { grid-column: 9 / span 4; align-self: end; }
}

/* ---------- section head ---------- */

.section-head { margin-bottom: clamp(28px, 4vw, 48px); }
.section-head h2 { margin: 24px 0 0; max-width: 20ch; }
.section-head .section-sub {
  font-size: 17px;
  line-height: 1.55;
  color: var(--text-2);
  max-width: 62ch;
  margin: 16px 0 0;
}

/* ---------- article / guide reader ---------- */

.article-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 24px; }
.article-toc { grid-column: 1 / span 3; }
.article-col { grid-column: 5 / span 7; }
@media (max-width: 999px) {
  .article-grid { grid-template-columns: minmax(0, 1fr); }
  .article-toc, .article-col { grid-column: auto; }
  .article-toc { display: none; }
}

.article-toc .toc-inner { position: sticky; top: 96px; }
.article-toc ol { list-style: none; margin: 14px 0 0; padding: 0; }
.article-toc li { border-bottom: 1px solid var(--rule); }
.article-toc a {
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: 10px;
  padding: 11px 0;
  font-size: 15px;
  line-height: 1.4;
}
.article-toc .toc-no { font-family: var(--font-display); color: var(--text-3); font-size: 14px; }

.article-body { font-size: 19px; line-height: 1.65; }
.article-body > p, .article-body > ul, .article-body > ol { max-width: 68ch; }
.article-body h2 {
  display: grid;
  grid-template-columns: 52px 1fr;
  gap: 12px;
  align-items: baseline;
  font-variation-settings: "opsz" 72;
  font-size: clamp(30px, 3.4vw, 44px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  margin: clamp(48px, 6vw, 72px) 0 0.6em;
  padding-top: 20px;
  border-top: 1px solid var(--ink);
}
.article-body h2 .h-no { font-size: 18px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.article-body h2:first-child { margin-top: 0; }
.article-body h3 { margin: 1.6em 0 0.5em; }
.article-body ul, .article-body ol { margin: 0 0 1.2em; padding: 0 0 0 2px; list-style: none; }
.article-body ul > li, .article-body ol > li {
  padding: 12px 0;
  border-bottom: 1px solid var(--rule);
  position: relative;
  padding-left: 28px;
}
.article-body ul > li::before {
  content: "—";
  position: absolute;
  left: 0;
  color: var(--text-3);
}
.article-body ol { counter-reset: fa-li; }
.article-body ol > li { counter-increment: fa-li; padding-left: 36px; }
.article-body ol > li::before {
  content: counter(fa-li);
  position: absolute;
  left: 0;
  font-family: var(--font-display);
  color: var(--text-3);
  font-variant-numeric: tabular-nums;
}
.article-body table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.6em 0;
  font-size: 15px;
  font-variant-numeric: tabular-nums;
}
.article-body th {
  text-align: left;
  padding: 0 12px 10px 0;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-3);
  border-bottom: 1px solid var(--ink);
}
.article-body td { padding: 14px 12px 14px 0; border-bottom: 1px solid var(--rule); }
.article-body a { border-bottom: 1px solid var(--leader); }
.article-body a:hover { color: var(--accent); border-bottom-color: var(--accent); }

.article-body blockquote {
  margin: 1.8em 0;
  padding: 0;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  max-width: 68ch;
}
.article-body blockquote p {
  margin: 0;
  padding: 20px 0;
  font-family: var(--font-display);
  font-style: italic;
  font-weight: 300;
  font-size: 26px;
  line-height: 1.2;
  letter-spacing: -0.02em;
}

/* asides: definitions, notes, important */
.aside, .box {
  margin: 1.8em 0;
  padding: 16px 0 0 24px;
  border-left: 2px solid var(--ink);
  max-width: 64ch;
  font-size: 17px;
  line-height: 1.6;
}
.aside.note, .box-info { border-left-color: var(--accent); }
.box-warn, .box-rule { border-left-color: var(--ink); }
.aside .aside-label, .box .aside-label {
  display: block;
  margin: 0 0 8px;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--ink);
}
.aside.note .aside-label, .box-info .aside-label { color: var(--accent); }
.box p:last-child, .box ul:last-child { margin-bottom: 0; }
.box h3, .box h4 { margin-top: 0; font-family: var(--font-text); font-size: 15px; font-weight: 600; }

/* worked example */
.worked {
  margin: 1.8em 0;
  border-top: 3px double var(--ink);
  padding-top: 14px;
  max-width: 68ch;
}
.worked .worked-head {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  margin-bottom: 4px;
}
.worked .worked-head .label { color: var(--accent); }
.worked .worked-meta { font-size: 13px; color: var(--text-3); }

/* sources */
.sources { border-top: 1px solid var(--ink); margin: 1.4em 0 0; padding: 0; list-style: none; counter-reset: fa-src; }
.sources li {
  counter-increment: fa-src;
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: 10px;
  padding: 12px 0;
  border-bottom: 1px solid var(--rule);
  font-size: 15px;
}
.sources li::before {
  content: counter(fa-src);
  font-family: var(--font-display);
  color: var(--text-3);
}
.sources .src-pub { color: var(--text-3); }

/* next step / continue-with */
.next-step {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 16px;
  align-items: center;
  margin-top: 28px;
  padding: 18px 0;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
}
.next-step:hover { color: var(--accent); }
.next-step .ns-kicker {
  display: block;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--accent);
  margin-bottom: 6px;
}
.next-step .ns-title {
  display: block;
  font-family: var(--font-display);
  font-size: 24px;
  letter-spacing: -0.02em;
}
.next-step .arrow { font-size: 22px; }

/* meta ledger (4-cell under guide h1) */
.meta-ledger {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 24px;
  border-top: 2px solid var(--ink);
  margin-top: 28px;
}
.meta-ledger > div { padding: 12px 0 16px; border-bottom: 1px solid var(--rule); }
.meta-ledger .ml-value { font-family: var(--font-display); font-size: 18px; margin-top: 4px; }
@media (max-width: 639px) { .meta-ledger { grid-template-columns: repeat(2, minmax(0, 1fr)); } }

/* FAQ */
.faq-item { border-bottom: 1px solid var(--rule); }
.faq-list { border-top: 1px solid var(--ink); }
.faq-item summary {
  cursor: pointer;
  list-style: none;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  padding: 16px 0;
  font-weight: 600;
  font-size: 17px;
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: "+";
  font-family: var(--font-display);
  font-size: 22px;
  color: var(--text-3);
  transition: transform 0.15s;
}
.faq-item[open] summary::after { content: "−"; color: var(--accent); }
.faq-item .faq-body { padding: 0 0 18px; color: var(--text-2); font-size: 16px; max-width: 68ch; }

/* ---------- inputs ---------- */

.field {
  display: grid;
  gap: 6px;
  border-bottom: 1px solid var(--input-rule);
  padding-bottom: 8px;
  margin-bottom: 28px;
  transition: border-color 0.2s;
}
.field:focus-within { border-color: var(--ink); }
.field > .field-label {
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-2);
}
.field .field-value {
  display: flex;
  align-items: baseline;
  gap: 6px;
  font-family: var(--font-display);
  font-size: 30px;
}
.field .unit { color: var(--text-3); font-size: 0.8em; }
.field input[type="text"],
.field input[type="number"],
.field input[type="email"],
.field select {
  border: 0;
  background: transparent;
  font: inherit;
  color: var(--ink);
  outline: none;
  width: 100%;
  padding: 0;
  font-variant-numeric: tabular-nums;
}
.field select { appearance: none; cursor: pointer; }
.field .hint { font-weight: 400; font-size: 13px; letter-spacing: 0; text-transform: none; color: var(--text-3); }

/* sliders */
.slider-field { margin-bottom: 28px; }
.slider-field .slider-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
}
.slider-field .slider-readout {
  font-family: var(--font-display);
  font-size: 22px;
  font-variant-numeric: tabular-nums;
}
.slider-field .slider-minmax,
.calc-slider .slider-minmax {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--text-3);
  margin-top: 4px;
  font-variant-numeric: tabular-nums;
}
input[type="range"] {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 24px;
  margin: 8px 0 0;
  background: transparent;
  cursor: pointer;
}
input[type="range"]::-webkit-slider-runnable-track { height: 1px; background: var(--leader); }
input[type="range"]::-moz-range-track { height: 1px; background: var(--leader); }
input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--ink);
  border: 0;
  margin-top: -6.5px;
}
input[type="range"]::-moz-range-thumb {
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: var(--ink);
  border: 0;
}

/* ---------- calculator layout ---------- */

.calc-grid { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 24px; }
.calc-inputs { grid-column: 1 / span 4; }
.calc-result { grid-column: 6 / span 7; }
@media (max-width: 999px) {
  .calc-grid { grid-template-columns: minmax(0, 1fr); }
  .calc-inputs, .calc-result { grid-column: auto; }
}

.calc-result .result-headline {
  font-family: var(--font-display);
  font-variation-settings: "opsz" 144;
  font-weight: 300;
  font-size: clamp(56px, 6.8vw, 112px);
  line-height: 0.9;
  letter-spacing: -0.05em;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  margin: 12px 0 0;
}
.calc-result .result-caption { font-size: 17px; color: var(--text-2); max-width: 52ch; margin-top: 16px; }

.chart { width: 100%; margin: 28px 0 0; }
.chart svg { display: block; width: 100%; height: auto; }
.chart .grid-line { stroke: var(--rule); stroke-width: 1; }
.chart .baseline { stroke: var(--ink); stroke-width: 1; }
.chart .line-ink { stroke: var(--ink); stroke-width: 1.5; fill: none; }
.chart .line-accent { stroke: var(--accent); stroke-width: 1.5; fill: none; }
.chart .fill-accent { fill: var(--accent); opacity: 0.08; }
.chart text { font-family: var(--font-text); font-size: 11px; fill: var(--text-3); }

.assumptions { font-size: 15px; color: var(--text-2); }

/* ---------- newsletter ---------- */

.newsletter { background: var(--paper-deep); }
.newsletter-inner { padding: clamp(40px, 5vw, 64px) 0; }
.newsletter h2 { font-style: italic; font-weight: 300; }
.newsletter form { display: flex; align-items: baseline; gap: 20px; max-width: 480px; }
.newsletter input[type="email"] {
  flex: 1;
  min-width: 0;
  border: 0;
  border-bottom: 1px solid var(--input-rule);
  background: transparent;
  font-family: var(--font-display);
  font-size: 19px;
  color: var(--ink);
  outline: none;
  padding: 2px 0 6px;
  transition: border-color 0.2s;
}
.newsletter input[type="email"]:focus { border-color: var(--ink); }
.newsletter button {
  background: none;
  border: 0;
  border-bottom: 1.5px solid var(--ink);
  padding: 6px 0;
  font: inherit;
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
  cursor: pointer;
  display: inline-flex;
  gap: 10px;
  transition: color 0.15s, border-color 0.15s;
}
.newsletter button:hover { color: var(--accent); border-color: var(--accent); }
.newsletter .form-note { font-size: 13px; color: var(--text-3); margin-top: 12px; }
.newsletter .form-success { font-weight: 600; }

/* ---------- footer ---------- */

.site-footer {
  border-top: 1px solid var(--ink);
  background: var(--ink);
  color: var(--f-text);
  line-height: 1.6;
  margin-top: clamp(48px, 7vw, 96px);
}
.site-footer .footer-inner { padding: clamp(48px, 6vw, 88px) 0 32px; }
.footer-mast {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: 24px;
  row-gap: 32px;
  align-items: end;
  margin-bottom: clamp(40px, 5vw, 64px);
}
.footer-mast .f-brand { grid-column: 1 / span 5; display: flex; align-items: center; gap: 14px; }
.footer-mast .f-blurb { grid-column: 7 / span 6; margin: 0; font-size: 16px; line-height: 1.5; color: var(--f-muted); max-width: 44ch; }
@media (max-width: 999px) {
  .footer-mast { grid-template-columns: minmax(0, 1fr); }
  .footer-mast .f-brand, .footer-mast .f-blurb { grid-column: auto; }
}
.footer-mast .brand-bar { display: block; width: 3px; height: 34px; background: var(--accent); }
.footer-mast .f-wordmark {
  font-family: var(--font-display);
  font-variation-settings: "opsz" 72;
  font-weight: 400;
  font-size: clamp(28px, 3vw, 40px);
  letter-spacing: -0.03em;
  line-height: 1;
}
.footer-mast .tld { color: var(--accent-on-ink); }

.footer-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 40px clamp(24px, 3vw, 48px);
  border-top: 1px solid var(--f-rule);
  padding-top: 28px;
}
@media (max-width: 999px) { .footer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 639px) { .footer-grid { grid-template-columns: minmax(0, 1fr); } }
.site-footer h4 {
  font-family: var(--font-text);
  margin: 0 0 14px;
  font-size: 11px;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-3);
}
.site-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: 9px; font-size: 15px; }
.site-footer a { transition: color 0.15s; }
.site-footer a:hover { color: #fff; }
.site-footer .f-all { color: #fff; border-bottom: 1px solid var(--text-2); }

.footer-disclaimer {
  margin-top: clamp(40px, 5vw, 72px);
  border-top: 1px solid var(--f-rule);
  padding-top: 24px;
  font-size: 13px;
  line-height: 1.6;
  color: var(--f-muted);
}
.footer-disclaimer strong { color: var(--f-text); font-weight: 600; }
.footer-disclaimer a { color: var(--f-text); border-bottom: 1px solid var(--text-2); }

.footer-bottom {
  margin-top: 32px;
  border-top: 1px solid var(--f-rule);
  padding-top: 18px;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 12px 32px;
  font-size: 13px;
  color: var(--text-3);
}
.footer-bottom a { color: inherit; }
.footer-bottom a:hover { color: #fff; }
.footer-bottom nav { display: flex; flex-wrap: wrap; gap: 20px; }

/* ---------- big numerals / stat band ---------- */

.numerals { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 24px; border-top: 1px solid var(--ink); }
@media (max-width: 999px) { .numerals { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.numerals .num-cell { padding: 20px 0 24px; border-bottom: 1px solid var(--rule); }
.numerals .n {
  font-family: var(--font-display);
  font-variation-settings: "opsz" 144;
  font-weight: 300;
  font-size: clamp(76px, 9.5vw, 156px);
  line-height: 0.88;
  letter-spacing: -0.055em;
  font-variant-numeric: tabular-nums;
}
.numerals .n.accent { color: var(--accent); }
.numerals .l { font-size: 15px; line-height: 1.5; color: var(--text-2); margin-top: 14px; max-width: 26ch; }

/* ---------- glossary ---------- */

.glossary dt {
  font-family: var(--font-display);
  font-size: 24px;
  letter-spacing: -0.02em;
  padding-top: 18px;
}
.glossary dd {
  margin: 6px 0 0;
  color: var(--text-2);
  padding: 0 0 18px;
  border-bottom: 1px solid var(--rule);
  max-width: 68ch;
}

/* ---------- utility ---------- */

.skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  background: var(--ink);
  color: var(--paper);
  font-weight: 600;
  padding: 12px 20px;
}
.skip-link:focus { left: 0; }

.hp { position: absolute !important; left: -9999px !important; height: 0; overflow: hidden; }

.tabular { font-variant-numeric: tabular-nums; }

/* ---------- embed mode (?embed=1 on calculator pages — see /licensing) ---------- */

html.embed .notice-bar,
html.embed .masthead,
html.embed .pagehead,
html.embed .site-footer { display: none; }
html.embed body { background: var(--paper); }
html.embed .section { padding: 14px 0 64px; border-top: 0; }
.embed-attribution {
  position: fixed;
  left: 0;
  right: 0;
  bottom: 0;
  background: var(--ink);
  color: var(--f-muted);
  font-size: 13px;
  text-align: center;
  padding: 8px 14px;
  z-index: 60;
}
.embed-attribution a { color: var(--accent-on-ink); }

/* ---------- motion ---------- */

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  * { transition: none !important; animation: none !important; }
}

/* ---------- print ---------- */

@media print {
  .notice-bar, .masthead, .site-footer, .newsletter, .skip-link, .m-menu-btn,
  .next-step, .article-toc { display: none !important; }
  body { background: #fff; color: #000; font-size: 12pt; }
  .pagehead { padding: 0 0 12pt; }
  a { color: #000; border-bottom: none !important; }
  .article-body a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 0.85em; color: #444; }
  .worked, .aside, .box, .faq-item, .index-row { break-inside: avoid; }
  details.faq-item { display: block; }
  .faq-item summary::after { display: none; }
  .faq-item .faq-body { display: block; }
  .chart { display: none; }
  .article-grid, .calc-grid { display: block; }
}

/* ---------- search page ---------- */

mark { background: transparent; color: var(--accent); font-weight: 600; }
input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; }

.search-hero { border-bottom: 1.5px solid var(--ink); padding-bottom: 12px; margin-top: clamp(24px, 3vw, 40px); }
.search-hero label { display: grid; gap: 10px; }
.search-hero-row { display: flex; align-items: baseline; gap: 20px; }
.search-hero input[type="search"] {
  flex: 1;
  min-width: 0;
  border: 0;
  background: transparent;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 96;
  font-size: clamp(32px, 5vw, 72px);
  line-height: 1.05;
  letter-spacing: -0.035em;
  color: var(--ink);
  outline: none;
  padding: 0;
}
.search-hero input::placeholder { color: var(--leader); }
.search-hero button {
  all: unset;
  cursor: pointer;
  font-family: var(--font-text);
  font-size: 13px;
  font-weight: 600;
  color: var(--text-3);
  border-bottom: 1px solid var(--leader);
  padding: 4px 0;
  min-height: 44px;
  display: inline-flex;
  align-items: center;
  transition: color 0.15s;
}
.search-hero button:hover { color: var(--accent); }
.search-status-row {
  margin: 12px 0 0;
  display: flex;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  font-size: 13px;
  color: var(--text-3);
}

.search-hit {
  display: grid;
  grid-template-columns: 40px minmax(0, 1fr) 120px;
  column-gap: 24px;
  row-gap: 8px;
  align-items: baseline;
  padding: 20px 0;
  color: var(--ink);
}
.search-hit:hover { color: var(--accent); }
.search-hit .hit-no { font-family: var(--font-display); font-size: 15px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.search-hit .hit-title {
  display: block;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 72;
  font-size: clamp(22px, 2.2vw, 30px);
  line-height: 1.1;
  letter-spacing: -0.025em;
}
.search-hit .hit-desc { display: block; margin-top: 8px; font-size: 15px; line-height: 1.55; color: var(--text-2); max-width: 64ch; }
.search-hit .hit-kind { text-align: right; }
@media (max-width: 639px) {
  .search-hit { grid-template-columns: minmax(0, 1fr); }
  .search-hit .hit-kind { text-align: left; }
}

.search-idle { row-gap: 48px; }
.search-idle .idle-col-l { grid-column: 1 / span 6; }
.search-idle .idle-col-r { grid-column: 8 / span 5; }
@media (max-width: 999px) { .search-idle .idle-col-l, .search-idle .idle-col-r { grid-column: auto; } }
.search-idle .taxonomy { border-top: 1px solid var(--ink); margin-bottom: 8px; }
.suggest-list, .browse-list { list-style: none; margin: 0; padding: 0; }
.suggest-list li, .browse-list li { border-bottom: 1px solid var(--rule); }
.suggest-list button {
  all: unset;
  cursor: pointer;
  width: 100%;
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  padding: 14px 0;
  font-family: var(--font-display);
  font-size: clamp(20px, 1.8vw, 24px);
  letter-spacing: -0.015em;
  min-height: 44px;
  transition: color 0.15s;
}
.suggest-list button:hover { color: var(--accent); }
.suggest-list button span[aria-hidden] { font-family: var(--font-text); font-size: 16px; color: var(--text-3); }
.browse-list a {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
  padding: 14px 0;
  font-size: 16px;
  min-height: 44px;
}
.search-empty-panel { border-top: 1px solid var(--ink); padding-top: 28px; max-width: 60ch; }
.search-empty-title {
  margin: 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 72;
  font-size: clamp(26px, 3vw, 40px);
  line-height: 1.1;
  letter-spacing: -0.03em;
}
.search-empty-title em { font-style: italic; font-weight: 300; }
.search-empty-sub { margin: 16px 0 0; font-size: 16px; color: var(--text-2); }

/* ---------- homepage ---------- */

.hero { padding: clamp(44px, 6.5vw, 96px) var(--pad) 0; }
.hero-taxonomy { border-top: 0; padding-top: 0; margin-bottom: clamp(28px, 3.5vw, 52px); }
.hero-grid { align-items: end; row-gap: 0; }
.hero-h1 { grid-column: 1 / span 8; margin: 0; }
.hero-em { font-style: italic; font-weight: 300; display: inline-block; white-space: nowrap; padding-left: clamp(20px, 4.5vw, 72px); letter-spacing: -0.03em; }
.hero-manifesto { grid-column: 9 / span 4; align-self: end; }
.hero-manifesto .label { margin: 0 0 10px; }
.manifesto {
  list-style: none;
  margin: 0;
  padding: 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 60;
  font-size: clamp(24px, 2.3vw, 33px);
  line-height: 1.05;
  letter-spacing: -0.02em;
}
.manifesto li { padding: 13px 0; border-top: 1px solid var(--rule); }
.manifesto li.first { border-top: 1px solid var(--ink); }
.manifesto li.last { border-bottom: 1px solid var(--ink); }
.manifesto .accent { color: var(--accent); }
.hero-sub { margin-top: clamp(36px, 4.5vw, 64px); }
.hero-lede { grid-column: 1 / span 5; font-size: clamp(18px, 1.45vw, 21px); line-height: 1.5; margin: 0; max-width: 44ch; }
.hero-actions { grid-column: 7 / span 5; display: flex; flex-wrap: wrap; align-content: end; gap: 12px 36px; }
.hero-actions a { min-height: 44px; }
.ledger-taxonomy { margin-top: clamp(56px, 7vw, 112px); border-top: 1px solid var(--ink); }
.disclosure-ledger {
  margin: 8px 0 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0 clamp(24px, 4vw, 64px);
}
.disclosure-ledger .ledger-row { padding: 18px 0; }
.disclosure-ledger dt, .disclosure-ledger dd { margin: 0; }
@media (max-width: 999px) {
  .hero-h1, .hero-manifesto, .hero-lede, .hero-actions { grid-column: auto; }
  .hero-manifesto { margin-top: 40px; }
  .hero-actions { margin-top: 20px; }
  .hero-em { padding-left: 0; }
  .disclosure-ledger { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 639px) { .disclosure-ledger { grid-template-columns: minmax(0, 1fr); } }

.section-headrow { align-items: end; row-gap: 20px; margin: clamp(28px, 3.5vw, 48px) 0 clamp(36px, 4.5vw, 64px); }
.section-headrow .sh-title { grid-column: 1 / span 7; margin: 0; text-wrap: balance; }
.section-headrow .sh-standfirst { grid-column: 9 / span 4; margin: 0; font-size: 16px; line-height: 1.55; color: var(--text-2); }
@media (max-width: 999px) { .section-headrow .sh-title, .section-headrow .sh-standfirst { grid-column: auto; } }

/* start-here rows */
.start-rows { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.start-rows > li { border-bottom: 1px solid var(--rule); }
.start-rows a {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: 24px;
  row-gap: 12px;
  align-items: baseline;
  padding: clamp(22px, 2.5vw, 34px) 0;
  color: var(--ink);
}
.start-rows a:hover { color: var(--accent); }
.start-rows .sr-no { grid-column: 1 / span 1; font-family: var(--font-display); font-size: clamp(15px, 1.2vw, 18px); font-variant-numeric: tabular-nums; color: var(--text-3); }
.start-rows .sr-title {
  grid-column: 2 / span 5;
  display: block;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 96;
  font-size: clamp(28px, 3.2vw, 46px);
  line-height: 1.02;
  letter-spacing: -0.03em;
  text-wrap: balance;
}
.start-rows .sr-sum { grid-column: 8 / span 3; display: block; font-size: 15px; line-height: 1.55; color: var(--text-2); }
.start-rows .sr-cta { grid-column: 11 / span 2; display: flex; flex-direction: column; gap: 8px; align-items: flex-end; text-align: right; }
.start-rows .sr-go { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; white-space: nowrap; }
@media (max-width: 999px) {
  .start-rows a { grid-template-columns: 40px minmax(0, 1fr); }
  .start-rows .sr-no { grid-column: 1; }
  .start-rows .sr-title, .start-rows .sr-sum, .start-rows .sr-cta { grid-column: 2; }
  .start-rows .sr-cta { align-items: flex-start; text-align: left; flex-direction: row; gap: 16px; }
}
@media (max-width: 639px) {
  .start-rows a { grid-template-columns: minmax(0, 1fr); }
  .start-rows .sr-no, .start-rows .sr-title, .start-rows .sr-sum, .start-rows .sr-cta { grid-column: auto; }
}

/* calculator register */
.band-deep .section-headrow { margin-top: clamp(28px, 3.5vw, 48px); }
.calc-register { border-top: 1px solid var(--ink); }
.cr-head {
  display: grid;
  grid-template-columns: 44px 1.1fr 0.6fr 1.4fr 236px 28px;
  gap: 20px;
  padding: 10px 0;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-3);
  border-bottom: 1px solid var(--leader);
}
.cr-row {
  display: grid;
  grid-template-columns: 44px 1.1fr 0.6fr 1.4fr 236px 28px;
  gap: 20px;
  align-items: baseline;
  padding: 20px 0;
  border-bottom: 1px solid #cfc8ba;
  color: var(--ink);
}
.cr-row:hover { color: var(--accent); }
.cr-no { font-family: var(--font-display); font-size: 15px; font-variant-numeric: tabular-nums; color: var(--text-3); }
.cr-name { font-family: var(--font-display); font-variation-settings: "opsz" 48; font-size: clamp(22px, 1.8vw, 26px); line-height: 1.1; letter-spacing: -0.02em; }
.cr-area { font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; color: var(--text-2); }
.cr-desc { font-size: 15px; line-height: 1.5; color: var(--text-2); }
.cr-example { display: flex; align-items: center; gap: 12px; font-size: 13px; font-variant-numeric: tabular-nums; white-space: nowrap; }
.cr-example svg { flex: 0 0 auto; }
.cr-arrow { text-align: right; font-size: 18px; }
@media (max-width: 999px) {
  .cr-head { display: none; }
  .cr-row { grid-template-columns: 32px minmax(0, 1fr); gap: 8px 12px; }
  .cr-row > * { grid-column: 2; }
  .cr-row .cr-no { grid-column: 1; grid-row: 1 / span 4; }
  .cr-arrow { display: none; }
  .cr-example { white-space: normal; }
}
.calc-register-foot {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  flex-wrap: wrap;
  gap: 12px;
  margin-top: 20px;
  font-size: 14px;
  color: var(--text-2);
}

/* pathways */
.journeys { border-top: 1px solid var(--ink); row-gap: 0; }
.journey-tabs { grid-column: 1 / span 6; display: grid; align-content: start; }
.journey-tabs button {
  all: unset;
  cursor: pointer;
  display: grid;
  grid-template-columns: 40px 1fr 24px;
  gap: 16px;
  align-items: baseline;
  padding: 24px 0;
  border-bottom: 1px solid var(--rule);
  font-family: var(--font-display);
  font-variation-settings: "opsz" 72;
  font-size: clamp(24px, 2.4vw, 36px);
  line-height: 1.05;
  letter-spacing: -0.025em;
  color: var(--text-3);
  transition: color 0.15s;
}
.journey-tabs button:hover { color: var(--accent); }
.journey-tabs button:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.journey-tabs button[aria-selected="true"] { color: var(--ink); }
.journey-tabs .jt-no { font-family: var(--font-display); font-size: 15px; font-variant-numeric: tabular-nums; color: var(--text-3); }
.journey-tabs .jt-quote { font-style: italic; font-weight: 300; }
.journey-tabs .jt-arrow { font-family: var(--font-text); font-size: 18px; color: var(--accent); opacity: 0; transition: opacity 0.2s; }
.journey-tabs button[aria-selected="true"] .jt-arrow { opacity: 1; }
.journey-panel { grid-column: 8 / span 5; padding-top: 24px; }
.journey-panel .label { margin: 0 0 4px; }
.journey-steps { list-style: none; margin: 0; padding: 0; }
.journey-steps li { border-bottom: 1px solid var(--rule); }
.journey-steps a {
  display: grid;
  grid-template-columns: 40px 1fr auto;
  gap: 16px;
  align-items: baseline;
  padding: 18px 0;
  color: var(--ink);
}
.journey-steps a:hover { color: var(--accent); }
.journey-steps .js-no { font-family: var(--font-display); font-size: 15px; color: var(--text-3); font-variant-numeric: tabular-nums; }
.journey-steps .js-label { font-size: 19px; line-height: 1.35; }
@media (max-width: 999px) {
  .journey-tabs, .journey-panel { grid-column: auto; }
  .journey-tabs button { font-size: 25px; }
  .journey-steps .js-label { font-size: 17px; }
}

/* big numerals */
.numbers-taxonomy { margin-bottom: clamp(40px, 5vw, 72px); }
.big-numerals {
  margin: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 48px clamp(24px, 3vw, 48px);
}
@media (max-width: 999px) { .big-numerals { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 639px) { .big-numerals { grid-template-columns: minmax(0, 1fr); } }
.big-numerals .bn-n {
  margin: 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 144;
  font-weight: 300;
  font-size: clamp(76px, 9.5vw, 156px);
  line-height: 0.88;
  letter-spacing: -0.055em;
  font-variant-numeric: tabular-nums;
}
.big-numerals .bn-n.accent { color: var(--accent); }
.big-numerals .bn-pct { font-size: 0.42em; font-weight: 400; letter-spacing: -0.02em; }
.big-numerals .bn-l {
  margin: 18px 0 0;
  padding-top: 12px;
  border-top: 1px solid var(--ink);
  font-size: 14px;
  line-height: 1.45;
  color: var(--text-2);
  max-width: 22ch;
}
.big-numerals .is-accent .bn-l { border-top-color: var(--accent); color: var(--ink); font-weight: 600; }

/* funding */
.funding-h2 {
  font-variation-settings: "opsz" 144;
  font-size: clamp(38px, 5.8vw, 88px);
  line-height: 0.96;
  letter-spacing: -0.04em;
  margin: clamp(28px, 3.5vw, 48px) 0 0;
  max-width: 15ch;
  text-wrap: balance;
}
.funding-cols { row-gap: 48px; margin-top: clamp(40px, 5vw, 80px); }
.funding-l { grid-column: 1 / span 5; }
.funding-r { grid-column: 7 / span 6; }
@media (max-width: 999px) { .funding-l, .funding-r { grid-column: auto; } }
.funding-tablehead {
  border-top: 2px solid var(--ink);
  padding: 12px 0 6px;
  display: flex;
  justify-content: space-between;
}
.funding-tablehead.is-accent { border-top-color: var(--accent); }
.f-status { font-size: 12px; letter-spacing: 0.1em; text-transform: uppercase; font-weight: 600; color: var(--text-2); white-space: nowrap; }
.funding-more { margin-top: 22px; font-size: 14px; }
.trust-essays {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(32px, 4vw, 64px);
  margin-top: clamp(56px, 7vw, 104px);
  border-top: 1px solid var(--ink);
  padding-top: 32px;
}
@media (max-width: 999px) { .trust-essays { grid-template-columns: minmax(0, 1fr); } }
.trust-essays .te-no { margin: 0 0 16px; font-family: var(--font-display); font-size: 15px; color: var(--text-3); }
.trust-essays h3 { font-variation-settings: "opsz" 48; line-height: 1.12; letter-spacing: -0.025em; margin: 0 0 14px; }
.trust-essays p { margin: 0; font-size: 15px; line-height: 1.6; color: var(--text-2); }
.worth-repeating {
  margin: clamp(40px, 5vw, 64px) 0 0;
  padding: 20px 0 0;
  border-top: 1px solid var(--rule);
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-2);
  max-width: 88ch;
}
.worth-repeating strong { color: var(--ink); }

/* the letter */
.letter-grid { row-gap: 40px; align-items: start; margin-top: clamp(36px, 4.5vw, 64px); }
.letter-l { grid-column: 1 / span 6; }
.letter-r { grid-column: 8 / span 5; padding-top: 30px; }
@media (max-width: 999px) { .letter-l, .letter-r { grid-column: auto; } .letter-r { padding-top: 0; } }
.letter-plate { border-top: 3px double var(--ink); border-bottom: 1px solid var(--ink); padding: 22px 0 18px; }
.letter-plate h2 {
  font-variation-settings: "opsz" 144;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(40px, 4.8vw, 68px);
  line-height: 0.98;
  letter-spacing: -0.035em;
  margin: 0;
}
.letter-sub { margin: 24px 0 0; font-size: 16px; line-height: 1.55; color: var(--text-2); max-width: 46ch; }
.letter-form {
  display: flex;
  align-items: flex-end;
  gap: 20px;
  border-bottom: 1.5px solid var(--ink);
  padding-bottom: 10px;
}
.letter-form label { flex: 1; display: grid; gap: 6px; }
.letter-form input[type="email"] {
  border: 0;
  background: transparent;
  font-family: var(--font-display);
  font-size: clamp(22px, 2vw, 28px);
  color: var(--ink);
  padding: 4px 0;
  outline: none;
  width: 100%;
  min-width: 0;
}
.letter-form button {
  all: unset;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-text);
  font-size: 15px;
  font-weight: 600;
  color: var(--ink);
  min-height: 44px;
  padding: 0 2px;
  transition: color 0.15s;
}
.letter-form button:hover { color: var(--accent); }
.letter-form button:focus-visible { outline: 2px solid var(--accent); outline-offset: 4px; }
.form-note { margin: 14px 0 0; font-size: 13px; line-height: 1.5; color: var(--text-2); }
.form-success { font-weight: 600; margin: 0; }

/* ---------- guide reader (Guide Reader.dc.html) ---------- */

.taxonomy.plain { border-top: 0; padding-top: 0; }
.guide-head .crumbs { margin-bottom: clamp(28px, 3.5vw, 48px); }
.guide-head .taxonomy { margin-bottom: clamp(20px, 2.5vw, 32px); }
.guide-headgrid { align-items: end; row-gap: 28px; }
.guide-headgrid h1 {
  grid-column: 1 / span 8;
  font-size: clamp(40px, 6vw, 92px);
  line-height: 0.96;
  margin: 0;
  max-width: none;
  text-wrap: balance;
}
.guide-standfirst {
  grid-column: 9 / span 4;
  margin: 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 24;
  font-size: clamp(19px, 1.5vw, 22px);
  line-height: 1.4;
  letter-spacing: -0.01em;
  color: var(--ink);
}
@media (max-width: 999px) { .guide-headgrid h1, .guide-standfirst { grid-column: auto; } }

.guide-head .meta-ledger { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--rule); margin-top: clamp(32px, 4vw, 56px); }
.guide-head .meta-ledger > div { padding: 14px 0; border-bottom: 0; }
.guide-head .meta-ledger dt { margin: 0 0 4px; }
.guide-head .meta-ledger dd { margin: 0; font-size: 15px; }
.guide-head .meta-ledger .ml-value { font-family: var(--font-text); }

.guide-bodygrid { padding-top: clamp(40px, 5vw, 72px); padding-bottom: clamp(64px, 8vw, 128px); }
.article-toc a { grid-template-columns: 28px 1fr; font-size: 14px; color: var(--text-2); }
.article-toc a:hover { color: var(--accent); }
.article-toc .toc-no { font-size: 13px; }

.article-body > section { margin-bottom: clamp(48px, 5vw, 72px); }
.article-body h2 {
  font-size: clamp(28px, 2.8vw, 38px);
  margin: 0 0 22px;
}
.article-body section > h2 { border-top: 1px solid var(--ink); }
@media (max-width: 639px) { .article-body h2 { grid-template-columns: 36px 1fr; } }

/* article lists per the reader spec */
.article-body ul, .article-body ol { border-top: 1px solid var(--rule); counter-reset: fa-li; padding: 0; }
.article-body ul > li, .article-body ol > li { padding: 14px 0 14px 44px; font-size: 17px; line-height: 1.6; }
.article-body ul > li::before { top: 14px; }
.article-body ol > li::before {
  content: counter(fa-li, decimal-leading-zero);
  top: 16px;
  font-size: 15px;
}
.article-body aside, .article-body .aside { margin: 32px 0; padding: 14px 0 0 24px; border-left: 2px solid var(--ink); }
.article-body aside[data-kind="note"] { border-left-color: var(--accent); }
.article-body aside::before {
  content: attr(data-label);
  display: block;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--ink);
  margin-bottom: 8px;
}
.article-body aside[data-kind="note"]::before { color: var(--accent); }
.article-body aside p { font-size: 17px; }
.article-body aside p:last-child { margin-bottom: 0; }
.article-body aside ul, .article-body aside ol { border-top: 0; }
.article-body table { margin: 8px 0 1.6em; }
.article-body td { vertical-align: top; line-height: 1.55; }

/* FAQ (reader) */
.article-body .faq-list { border-top: 0; }
.faq-item summary {
  grid-template-columns: 1fr 24px;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 48;
  font-size: 22px;
  line-height: 1.25;
  letter-spacing: -0.015em;
  font-weight: 400;
  padding: 18px 0;
  display: grid;
  align-items: baseline;
  gap: 16px;
}
.faq-item summary:hover { color: var(--accent); }
.faq-item summary::after { font-family: var(--font-text); font-size: 20px; text-align: right; }
.faq-item .faq-body { padding: 0 0 22px; font-size: 17px; line-height: 1.6; }

/* sources */
.sources-sec { margin-bottom: clamp(40px, 5vw, 56px); }
.sources-h {
  margin: 0 0 4px;
  padding-top: 20px;
  border-top: 1px solid var(--ink);
  font-family: var(--font-text);
}
.sources { border-top: 0; }
.sources li { padding: 10px 0; font-size: 15px; line-height: 1.5; }
.guide-foot {
  margin: 0;
  padding-top: 20px;
  border-top: 1px solid var(--rule);
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-2);
}
.guide-foot a { border-bottom: 1px solid var(--leader); }

/* continue with */
.continue-with .taxonomy { margin-bottom: clamp(28px, 3.5vw, 48px); }
.cw-grid { row-gap: 40px; align-items: start; }
.cw-next { grid-column: 1 / span 7; display: block; color: var(--ink); }
.cw-next:hover { color: var(--accent); }
.cw-next .label { display: block; margin-bottom: 14px; }
.cw-next .cw-title {
  display: block;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 96;
  font-size: clamp(32px, 3.6vw, 52px);
  line-height: 1.02;
  letter-spacing: -0.03em;
  text-wrap: balance;
}
.cw-next .cw-go {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  margin-top: 20px;
  font-size: 15px;
  font-weight: 600;
  border-bottom: 1.5px solid currentColor;
  padding-bottom: 4px;
}
.cw-rel { grid-column: 9 / span 4; }
.cw-rel .label { margin: 0 0 4px; }
.cw-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.cw-list li { border-bottom: 1px solid var(--rule); }
.cw-list a {
  display: grid;
  grid-template-columns: 32px 1fr;
  gap: 14px;
  align-items: baseline;
  padding: 16px 0;
  color: var(--ink);
}
.cw-list a:hover { color: var(--accent); }
.cw-list .cw-no { font-family: var(--font-display); font-size: 14px; color: var(--text-3); }
.cw-list a span:last-child { font-size: 18px; line-height: 1.35; }
@media (max-width: 999px) { .cw-next, .cw-rel { grid-column: auto; } }

/* ---------- calculator instrument (Calculator Reader.dc.html) ---------- */

input[type="number"] { -moz-appearance: textfield; }
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }

.calc-work { padding-top: clamp(40px, 5vw, 72px); row-gap: 56px; align-items: start; }
.calc-in { grid-column: 1 / span 4; }
.calc-out { grid-column: 6 / span 7; }
@media (max-width: 999px) { .calc-in, .calc-out { grid-column: auto; } }
.calc-work .taxonomy, .calc-sec .taxonomy { border-top: 1px solid var(--ink); margin-bottom: 28px; }

.calc-fields { display: grid; gap: 30px; }
.calc-field { display: grid; gap: 8px; }
.calc-field-row {
  display: flex;
  align-items: baseline;
  gap: 6px;
  border-bottom: 1px solid var(--input-rule);
  padding-bottom: 8px;
  font-family: var(--font-display);
  font-size: 30px;
  line-height: 1;
  transition: border-color 0.2s;
}
.calc-field-row:focus-within { border-color: var(--ink); }
.calc-field-row .unit { color: var(--text-3); font-size: 22px; }
.calc-field-row .unit.suffix { font-size: 18px; white-space: nowrap; }
.calc-field input[type="number"] {
  border: 0;
  background: transparent;
  font: inherit;
  color: var(--ink);
  outline: none;
  width: 100%;
  min-width: 0;
  padding: 0;
  font-variant-numeric: tabular-nums;
}
.calc-field select {
  border: 0;
  border-bottom: 1px solid var(--input-rule);
  border-radius: 0;
  background: transparent;
  font-family: var(--font-display);
  font-size: 24px;
  line-height: 1.2;
  color: var(--ink);
  outline: none;
  padding: 2px 0 8px;
  width: 100%;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
}
.calc-slider { display: grid; gap: 8px; }
.calc-slider-head { display: flex; justify-content: space-between; align-items: baseline; }
.calc-slider .slider-readout {
  font-family: var(--font-display);
  font-size: 22px;
  font-variant-numeric: tabular-nums;
}
.calc-noscript { font-size: 15px; color: var(--text-2); border-left: 2px solid var(--accent); padding-left: 16px; }

.result-lead { margin: 0 0 6px; font-size: 14px; color: var(--text-2); }
.result-headline {
  margin: 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 144;
  font-weight: 300;
  font-size: clamp(56px, 6.8vw, 112px);
  line-height: 0.9;
  letter-spacing: -0.05em;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
  overflow-wrap: anywhere;
}
.result-note { margin: 14px 0 0; font-size: 15px; color: var(--text-2); max-width: 52ch; }
.result-rows { margin: 36px 0 0; }
.result-rows dt, .result-rows dd { margin: 0; }

.calc-chart-fig, .calc-bars-fig { margin: 40px 0 0; }
.calc-chart-fig figcaption, .calc-bars-fig figcaption {
  display: flex;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-3);
  margin-bottom: 10px;
}
.calc-chart-fig svg { display: block; overflow: visible; font-family: var(--font-text); }
.leg-row { display: flex; gap: 20px; flex-wrap: wrap; }
.leg { display: inline-flex; align-items: center; gap: 8px; }
.leg-swatch { display: inline-block; width: 18px; border-top: 1.5px solid var(--ink); }
.leg-swatch.accent { border-top-color: var(--accent); }
.leg-swatch.square { width: 12px; height: 12px; border-top: 0; }
.bars-track { display: flex; height: 28px; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.bars-track > div { border-right: 1px solid var(--paper); }
.bars-legend { margin-top: 10px; font-size: 13px; color: var(--text-2); text-transform: none; letter-spacing: 0; font-weight: 400; }

.calc-sec { padding-top: clamp(64px, 8vw, 112px); }
.calc-sec-last { padding-bottom: clamp(64px, 8vw, 128px); }
.calc-secgrid { row-gap: 24px; margin-top: clamp(28px, 3.5vw, 48px); }
.cs-title { grid-column: 1 / span 5; margin: 0; font-size: clamp(30px, 3.6vw, 52px); text-wrap: balance; }
.cs-body { grid-column: 7 / span 5; font-size: 17px; line-height: 1.65; }
.cs-body p { margin: 0 0 1.2em; }
.cs-formula { grid-column: 1 / span 5; }
.cs-formula h2 { margin: 0 0 24px; font-size: clamp(30px, 3.6vw, 52px); }
.cs-formula .formula {
  margin: 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 48;
  font-style: italic;
  font-size: clamp(20px, 2vw, 28px);
  line-height: 1.4;
  letter-spacing: -0.01em;
  overflow-wrap: anywhere;
}
.cs-formula .formula-note { margin: 16px 0 0; font-size: 15px; line-height: 1.6; color: var(--text-2); }
.sens-head { align-items: end; margin-bottom: clamp(28px, 3.5vw, 40px); }
.cs-stand { grid-column: 9 / span 4; margin: 0; font-size: 16px; line-height: 1.55; color: var(--text-2); }
@media (max-width: 999px) { .cs-title, .cs-body, .cs-formula, .cs-stand { grid-column: auto; } }

.assumption-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.assumption-list li {
  display: grid;
  grid-template-columns: 40px 1fr;
  gap: 12px;
  padding: 16px 0;
  border-bottom: 1px solid var(--rule);
  font-size: 16px;
  line-height: 1.55;
}
.assumption-list .a-no { font-family: var(--font-display); font-size: 15px; color: var(--text-3); font-variant-numeric: tabular-nums; }

.sens-table { width: 100%; border-collapse: collapse; font-size: 16px; font-variant-numeric: tabular-nums; }
.sens-table thead tr { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.sens-table th {
  text-align: left;
  padding: 12px 0;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--text-3);
}
.sens-table th.num { text-align: right; }
.sens-table tbody tr { border-bottom: 1px solid var(--rule); }
.sens-table td { padding: 16px 0; color: var(--text-2); }
.sens-table td:nth-child(2) { color: var(--ink); }
.sens-table .sens-val { text-align: right; font-family: var(--font-display); font-size: 22px; color: var(--ink); }
.sens-table td.sens-delta { text-align: right; }
@media (max-width: 639px) { .sens-table .sens-delta { display: none; } }

.calc-next { row-gap: 32px; margin-top: clamp(56px, 7vw, 96px); }
.cn-guide { grid-column: 1 / span 6; }
.cn-all { grid-column: 7 / span 6; }
@media (max-width: 999px) { .cn-guide, .cn-all { grid-column: auto; } }
.calc-next .ns-kicker.quiet { color: var(--text-3); }
.calc-next .ns-title { font-variation-settings: "opsz" 48; font-size: 24px; line-height: 1.15; }

.calc-reminder {
  margin: clamp(40px, 5vw, 64px) 0 0;
  padding-top: 20px;
  border-top: 1px solid var(--rule);
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-2);
  max-width: 88ch;
}
.calc-reminder strong { color: var(--ink); }
.calc-reminder a { border-bottom: 1px solid var(--leader); }

html.embed .calc-head { display: none; }
html.embed .calc-work { padding-top: 14px; }

/* ---------- guide & calculator indexes ---------- */

.index-standfirst {
  grid-column: 9 / span 4;
  margin: 0;
  font-size: clamp(17px, 1.4vw, 20px);
  line-height: 1.5;
}
@media (max-width: 999px) { .index-standfirst { grid-column: auto; } }

.gi-secnav {
  margin-top: clamp(40px, 5vw, 72px);
  border-top: 1px solid var(--ink);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 24px;
}
@media (max-width: 999px) { .gi-secnav { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 639px) { .gi-secnav { grid-template-columns: minmax(0, 1fr); } }
.gi-secnav a {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 12px;
  align-items: baseline;
  padding: 16px 0 18px;
  border-bottom: 1px solid var(--rule);
  color: var(--ink);
}
.gi-secnav .gs-folio { display: block; font-family: var(--font-display); font-size: 13px; color: var(--text-3); margin-bottom: 6px; }
.gi-secnav .gs-title { display: block; font-family: var(--font-display); font-variation-settings: "opsz" 48; font-size: 22px; line-height: 1.15; letter-spacing: -0.02em; }
.gi-secnav .gs-count { font-size: 13px; color: var(--text-3); }

.gi-rows a.feat .sr-title { font-size: clamp(28px, 3.2vw, 44px); }
.gi-rows a:not(.feat) .sr-title { font-size: clamp(22px, 2.2vw, 30px); }
.gi-rows .accent-label { color: var(--accent); }
.gi-rows .gi-mins { font-size: 13px; color: var(--text-3); white-space: nowrap; }
.gi-reminder-sec { padding-bottom: clamp(64px, 8vw, 128px); }

.ci-promises {
  margin: clamp(40px, 5vw, 72px) 0 0;
  border-top: 1px solid var(--ink);
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 24px;
}
@media (max-width: 999px) { .ci-promises { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 639px) { .ci-promises { grid-template-columns: minmax(0, 1fr); } }
.ci-promises dt, .ci-promises dd { margin: 0; }
.ci-promises .ledger-row { font-size: 15px; }
.ci-promises .value { font-size: 20px; }

.ci-rows .ci-row {
  display: grid;
  grid-template-columns: repeat(12, minmax(0, 1fr));
  column-gap: 24px;
  row-gap: 14px;
  align-items: start;
  padding: clamp(22px, 2.5vw, 32px) 0;
  color: var(--ink);
}
.ci-rows li { border-bottom: 1px solid var(--rule); }
.ci-rows { border-top: 1px solid var(--ink); }
.ci-row:hover { color: var(--accent); }
.ci-no { grid-column: 1 / span 1; font-family: var(--font-display); font-size: 16px; font-variant-numeric: tabular-nums; color: var(--text-3); padding-top: 6px; }
.ci-main { grid-column: 2 / span 5; }
.ci-name { display: block; font-family: var(--font-display); font-variation-settings: "opsz" 72; font-size: clamp(26px, 2.8vw, 40px); line-height: 1.05; letter-spacing: -0.025em; }
.ci-desc { display: block; margin-top: 10px; font-size: 15px; line-height: 1.55; color: var(--text-2); max-width: 42ch; }
.ci-method { grid-column: 8 / span 2; display: block; padding-top: 6px; font-size: 15px; line-height: 1.6; color: var(--text-2); overflow-wrap: anywhere; }
.ci-method .label { display: block; margin-bottom: 8px; }
.ci-method em { font-family: var(--font-display); font-variation-settings: "opsz" 24; font-style: italic; }
.ci-example { grid-column: 10 / span 2; display: block; padding-top: 6px; }
.ci-example .label { display: block; margin-bottom: 8px; }
.ci-example svg { display: block; margin-bottom: 8px; }
.ci-example .ci-in { display: block; font-size: 13px; line-height: 1.5; color: var(--text-2); }
.ci-example .ci-out { display: block; font-family: var(--font-display); font-size: 22px; line-height: 1.1; letter-spacing: -0.01em; margin-top: 4px; }
.ci-arrow { grid-column: 12 / span 1; text-align: right; font-size: 20px; padding-top: 4px; }
@media (max-width: 999px) {
  .ci-row { grid-template-columns: 44px minmax(0, 1fr); }
  .ci-no { grid-column: 1; }
  .ci-main, .ci-method, .ci-example { grid-column: 2; }
  .ci-arrow { display: none; }
}
@media (max-width: 639px) {
  .ci-row { grid-template-columns: minmax(0, 1fr); }
  .ci-no, .ci-main, .ci-method, .ci-example { grid-column: auto; }
}

/* ---------- check-an-adviser toolkit ---------- */

.progress-ledger {
  margin-top: clamp(36px, 4.5vw, 64px);
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--rule);
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 0 24px;
  align-items: center;
}
@media (max-width: 999px) { .progress-ledger { grid-template-columns: minmax(0, 1fr); } }
.pl-count { padding: 16px 0; display: flex; align-items: baseline; gap: 14px; }
.pl-n {
  font-family: var(--font-display);
  font-variation-settings: "opsz" 72;
  font-weight: 300;
  font-size: clamp(40px, 4vw, 56px);
  line-height: 0.9;
  letter-spacing: -0.04em;
  font-variant-numeric: tabular-nums;
}
.pl-total { font-size: 0.5em; color: var(--text-3); letter-spacing: 0; }
.pl-note { font-size: 14px; color: var(--text-2); }
.pl-actions { padding: 16px 0; display: flex; gap: 28px; flex-wrap: wrap; }
.pl-print { font-size: 14px; cursor: pointer; background: none; }
.pl-reset {
  all: unset;
  cursor: pointer;
  font-family: var(--font-text);
  font-size: 14px;
  font-weight: 500;
  color: var(--text-3);
  border-bottom: 1px solid var(--leader);
  padding: 4px 0;
  transition: color 0.15s;
}
.pl-reset:hover { color: var(--accent); }

.toolkit-body section { margin-bottom: clamp(48px, 5vw, 72px); }
.toolkit-body .taxonomy { border-top: 1px solid var(--ink); }
.step-title {
  font-variation-settings: "opsz" 96;
  font-size: clamp(30px, 3.4vw, 46px);
  line-height: 1.02;
  letter-spacing: -0.035em;
  margin: 22px 0 14px;
  text-wrap: balance;
}
.step-intro { margin: 0 0 24px; font-size: 17px; line-height: 1.6; color: var(--text-2); max-width: 62ch; }
.check-rows { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--rule); }
.check-rows li { border-bottom: 1px solid var(--rule); }
.check-rows label {
  display: grid;
  grid-template-columns: 24px 1fr;
  gap: 16px;
  align-items: start;
  padding: 16px 0;
  cursor: pointer;
  min-height: 44px;
  transition: color 0.15s;
}
.check-rows input[type="checkbox"] {
  appearance: none;
  -webkit-appearance: none;
  width: 18px;
  height: 18px;
  margin: 4px 0 0 2px;
  border: 1.5px solid var(--ink);
  background: transparent;
  cursor: pointer;
  transition: background 0.15s, border-color 0.15s;
}
.check-rows input[type="checkbox"]:checked { background: var(--accent); border-color: var(--accent); }
.check-rows .chk-text { font-size: 17px; line-height: 1.55; }
.check-rows .chk-body { color: var(--text-2); }
.check-rows label:has(input:checked) { color: var(--text-3); }
.check-rows label:has(input:checked) strong { text-decoration: line-through; text-decoration-color: var(--leader); }
.step-note { margin: 28px 0 0; }
.toc-count { text-align: right; font-size: 12px; color: var(--text-3); }
.toc-count.all-done { color: var(--accent); }
.article-toc a { grid-template-columns: 28px 1fr auto; }
.toc-register { margin-top: 20px; font-size: 14px; }

.redress-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 0 24px;
  border-top: 1px solid var(--ink);
}
@media (max-width: 999px) { .redress-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 639px) { .redress-grid { grid-template-columns: minmax(0, 1fr); } }
.redress-grid li { padding: 20px 0 24px; border-bottom: 1px solid #cfc8ba; }
.rd-no { display: block; font-family: var(--font-display); font-size: clamp(28px, 2.4vw, 36px); font-weight: 300; line-height: 1; color: var(--text-3); margin-bottom: 14px; }
.rd-title { display: block; font-family: var(--font-display); font-variation-settings: "opsz" 48; font-size: 23px; line-height: 1.15; letter-spacing: -0.02em; margin-bottom: 10px; }
.rd-body { display: block; font-size: 15px; line-height: 1.55; color: var(--text-2); }

.next-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 0 24px;
  border-top: 1px solid var(--ink);
}
@media (max-width: 999px) { .next-grid { grid-template-columns: minmax(0, 1fr); } }
.next-grid li { border-bottom: 1px solid var(--rule); }
.next-grid a { display: block; padding: 20px 0 24px; color: var(--ink); }
.next-grid a:hover { color: var(--accent); }
.next-grid .label { display: block; margin-bottom: 12px; }
.next-grid .nx-title { display: block; font-family: var(--font-display); font-variation-settings: "opsz" 72; font-size: clamp(24px, 2.4vw, 32px); line-height: 1.05; letter-spacing: -0.025em; }
.next-grid .nx-body { display: block; margin-top: 10px; font-size: 15px; line-height: 1.55; color: var(--text-2); }

/* ---------- document pages ---------- */

.doc-h1 {
  font-size: clamp(38px, 5.8vw, 88px);
  line-height: 0.96;
  margin: 28px 0 0;
  max-width: 18ch;
  text-wrap: balance;
}
.doc-standfirst { margin: 24px 0 0; max-width: 62ch; font-size: 19px; line-height: 1.55; color: var(--text-2); }
.doc-standfirst p { margin: 0 0 0.8em; }
.doc-standfirst .meta { font-size: 14px; color: var(--text-3); }
.doc-main .narrow { max-width: 820px; }
.doc-main .section { border-top: 0; }
.doc-main h2 {
  font-variation-settings: "opsz" 72;
  font-size: clamp(26px, 2.8vw, 38px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  margin: 1.8em 0 0.6em;
  padding-top: 20px;
  border-top: 1px solid var(--ink);
}
.doc-main h3 { margin: 1.4em 0 0.4em; }
.doc-main ul, .doc-main ol { list-style: none; margin: 0 0 1.4em; padding: 0; border-top: 1px solid var(--rule); }
.doc-main li { position: relative; padding: 12px 0 12px 32px; border-bottom: 1px solid var(--rule); }
.doc-main ul > li::before { content: "—"; position: absolute; left: 0; top: 12px; color: var(--text-3); }
.doc-main ol { counter-reset: fa-doc; }
.doc-main ol > li { counter-increment: fa-doc; padding-left: 40px; }
.doc-main ol > li::before {
  content: counter(fa-doc, decimal-leading-zero);
  position: absolute;
  left: 0;
  top: 14px;
  font-family: var(--font-display);
  font-size: 14px;
  color: var(--text-3);
  font-variant-numeric: tabular-nums;
}
.doc-main aside { margin: 32px 0; padding: 14px 0 0 24px; border-left: 2px solid var(--ink); }
.doc-main aside[data-kind="note"] { border-left-color: var(--accent); }
.doc-main aside::before {
  content: attr(data-label);
  display: block;
  font-size: 11px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  font-weight: 600;
  margin-bottom: 8px;
}
.doc-main aside[data-kind="note"]::before { color: var(--accent); }
.doc-main aside ul, .doc-main aside ol { border-top: 0; }
.doc-main table { width: 100%; border-collapse: collapse; margin: 1.4em 0; font-size: 15px; font-variant-numeric: tabular-nums; }
.doc-main th { text-align: left; padding: 0 12px 10px 0; font-size: 11px; letter-spacing: 0.14em; text-transform: uppercase; font-weight: 600; color: var(--text-3); border-bottom: 1px solid var(--ink); }
.doc-main td { padding: 12px 12px 12px 0; border-bottom: 1px solid var(--rule); vertical-align: top; }
.doc-main a { border-bottom: 1px solid var(--leader); }
.doc-main a:hover { color: var(--accent); border-bottom-color: var(--accent); }
.doc-main .inline-disclaimer {
  margin: 32px 0 0;
  padding-top: 20px;
  border-top: 1px solid var(--rule);
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-2);
}

/* legacy widget mappings (advice-fees, licensing) */
.calc-layout { display: grid; grid-template-columns: minmax(300px, 420px) 1fr; gap: clamp(24px, 4vw, 56px); align-items: start; }
@media (max-width: 999px) { .calc-layout { grid-template-columns: minmax(0, 1fr); } }
.calc-panel h2:first-child, .results-panel h2:first-child { margin-top: 0; border-top: 0; padding-top: 0; font-size: 22px; }
.calc-panel { border-top: 2px solid var(--ink); padding-top: 18px; }
.results-panel { border-top: 2px solid var(--accent); padding-top: 18px; }
.result-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); gap: 18px; margin: 0 0 22px; }
.result-stat .stat-label { font-size: 11px; text-transform: uppercase; letter-spacing: 0.14em; font-weight: 600; color: var(--text-3); margin-bottom: 4px; }
.result-stat .stat-value {
  font-family: var(--font-display);
  font-weight: 300;
  font-size: clamp(28px, 2.6vw, 40px);
  letter-spacing: -0.03em;
  font-variant-numeric: tabular-nums;
}
.result-stat .stat-value.accent { color: var(--accent); }
.result-stat .stat-value.warn { color: var(--accent); }
.result-note { font-size: 14px; color: var(--text-2); border-top: 1px solid var(--rule); padding-top: 14px; margin-bottom: 0; }
.calc-chart { width: 100%; height: 220px; margin: 4px 0 18px; }
.assumptions { font-size: 15px; color: var(--text-2); }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 20px; }
@media (max-width: 639px) { .field-row { grid-template-columns: minmax(0, 1fr); } }
.fee-form { border-top: 2px solid var(--ink); padding-top: 22px; margin: 10px 0 34px; }
.fee-form .form-note { font-size: 13px; color: var(--text-3); margin: 14px 0 0; }
.fee-form .fee-form-msg { margin: 12px 0 0; font-weight: 600; font-size: 15px; min-height: 1.2em; }
.fee-form .fee-form-msg.warn { color: var(--accent); }
.fee-form .form-success { color: var(--accent); font-weight: 600; }
.fee-form button[type="submit"], .fee-form .btn {
  all: unset;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-family: var(--font-text);
  font-size: 16px;
  font-weight: 600;
  color: var(--ink);
  border-bottom: 1.5px solid var(--ink);
  padding: 6px 0;
  min-height: 44px;
  transition: color 0.15s, border-color 0.15s;
}
.fee-form button[type="submit"]:hover, .fee-form .btn:hover { color: var(--accent); border-bottom-color: var(--accent); }
.fee-form button[type="submit"]::after, .fee-form .btn::after { content: "→"; }
.toolkit-bar {
  display: flex;
  align-items: baseline;
  gap: 16px;
  flex-wrap: wrap;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--rule);
  padding: 12px 0;
  font-size: 14px;
  color: var(--text-2);
  margin-bottom: 28px;
}
.btn { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; border-bottom: 1.5px solid var(--ink); padding: 6px 0; transition: color 0.15s, border-color 0.15s; background: none; cursor: pointer; font-size: 15px; color: var(--ink); border-top: 0; border-left: 0; border-right: 0; }
.btn:hover { color: var(--accent); border-bottom-color: var(--accent); }
.btn-small { font-size: 14px; }
.tier-price { font-family: var(--font-display); font-weight: 300; font-size: clamp(30px, 3vw, 44px); letter-spacing: -0.03em; margin: 4px 0 2px; font-variant-numeric: tabular-nums; }
.tier-price .per { font-size: 15px; font-weight: 400; color: var(--text-3); font-family: var(--font-text); }
.card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 0 clamp(24px, 3vw, 48px); border-top: 1px solid var(--ink); }
.card { padding: 20px 0 24px; border-bottom: 1px solid var(--rule); display: flex; flex-direction: column; color: var(--ink); }
.card h3 { margin: 0 0 10px; }
.card p { color: var(--text-2); font-size: 15px; margin-bottom: 0; }
.card .card-cta { margin-top: auto; padding-top: 16px; font-weight: 600; font-size: 14px; }
.card-icon { display: none; }
.tag {
  display: inline-block;
  font-size: 11px;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--text-3);
  margin-bottom: 12px;
  align-self: flex-start;
}
.tag.amber { color: var(--accent); }

/* video plates */
.video-card .thumb { aspect-ratio: auto; height: 0; border-top: 3px double var(--ink); margin-bottom: 16px; background: none; display: block; }
.video-card .thumb .play { display: none; }

/* glossary nav */
.glossary-nav { font-size: 15px; letter-spacing: 0.08em; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--rule); padding: 10px 0; margin-bottom: 24px; }
.glossary-nav a { font-family: var(--font-display); font-weight: 400; padding: 2px 6px; border-bottom: 0; }
.glossary dt { border-top: 0; padding-left: 0; }
.glossary dd { border-bottom: 1px solid var(--rule); padding-left: 0; }
.doc-main .glossary dt, .doc-main .glossary dd { position: static; }
.g-more { font-size: 13px; font-weight: 600; white-space: nowrap; }

/* ---------- about page ---------- */

.nameplate-rule { border-top: 3px double var(--ink); }
.const-grid { row-gap: 48px; margin-top: clamp(36px, 4.5vw, 64px); align-items: start; }
.const-articles {
  grid-column: 1 / span 6;
  list-style: none;
  margin: 0;
  padding: 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 96;
  font-size: clamp(34px, 4.2vw, 64px);
  line-height: 1.02;
  letter-spacing: -0.035em;
}
.const-articles li { display: grid; grid-template-columns: 56px 1fr; gap: 16px; align-items: baseline; padding: 20px 0; border-top: 1px solid var(--rule); }
.const-articles li.first { border-top: 1px solid var(--ink); }
.const-articles li.last { border-bottom: 1px solid var(--ink); }
.const-articles .ca-no { font-size: 15px; color: var(--text-3); }
.const-articles .accent { color: var(--accent); }
.const-rules { grid-column: 8 / span 5; }
.const-rules .label { margin: 0 0 4px; }
.rule-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.rule-list li { display: grid; grid-template-columns: 40px 1fr; gap: 12px; padding: 16px 0; border-bottom: 1px solid var(--rule); font-size: 16px; line-height: 1.55; }
.rule-list .rl-no { font-family: var(--font-display); font-size: 15px; color: var(--text-3); font-variant-numeric: tabular-nums; padding-top: 3px; }
.rule-list .rl-body { color: var(--text-2); }
@media (max-width: 999px) { .const-articles, .const-rules { grid-column: auto; } }
.std-h2 { font-size: clamp(30px, 3.6vw, 52px); margin: 0 0 28px; }
.std-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.std-list li { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 6px 20px; padding: 16px 0; border-bottom: 1px solid var(--rule); font-size: 15px; line-height: 1.55; }
.std-list li > span { color: var(--text-2); }
@media (max-width: 639px) { .std-list li { grid-template-columns: minmax(0, 1fr); } }
.founder-plate { border-top: 1px solid var(--ink); padding-top: 18px; }
.fp-name { margin: 0; font-family: var(--font-display); font-variation-settings: "opsz" 48; font-size: 28px; line-height: 1.1; letter-spacing: -0.02em; }
.fp-meta { margin: 6px 0 0; font-size: 13px; color: var(--text-3); }
.fp-bio { margin: 18px 0 0; font-size: 16px; line-height: 1.6; color: var(--text-2); }
.contact-plate { border-top: 1px solid var(--rule); margin-top: 28px; padding-top: 18px; }
.contact-plate .label { margin: 0 0 6px; }
.contact-plate p { margin: 0; font-size: 16px; line-height: 1.6; color: var(--text-2); }

/* ---------- 404 ---------- */

.err-main { padding-top: clamp(56px, 8vw, 128px); padding-bottom: clamp(64px, 8vw, 128px); }
.err-numeral {
  margin: clamp(24px, 3vw, 40px) 0 0;
  font-family: var(--font-display);
  font-variation-settings: "opsz" 144;
  font-weight: 300;
  font-size: clamp(120px, 22vw, 320px);
  line-height: 0.85;
  letter-spacing: -0.06em;
  font-variant-numeric: tabular-nums;
  color: var(--accent);
}
.err-h1 {
  font-variation-settings: "opsz" 96;
  font-size: clamp(28px, 3.4vw, 48px);
  line-height: 1.05;
  letter-spacing: -0.03em;
  margin: clamp(24px, 3vw, 40px) 0 0;
  max-width: 22ch;
  text-wrap: balance;
}
.err-sub { margin: 16px 0 0; font-size: 17px; color: var(--text-2); max-width: 48ch; }
.err-links { list-style: none; margin: clamp(32px, 4vw, 56px) 0 0; padding: 0; border-top: 1px solid var(--ink); max-width: 640px; }
.err-links li { border-bottom: 1px solid var(--rule); }
.err-links a {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  padding: 16px 0;
  font-family: var(--font-display);
  font-size: clamp(22px, 2vw, 28px);
  letter-spacing: -0.02em;
  color: var(--ink);
}
.err-links a:hover { color: var(--accent); }
.err-links .arrow { font-family: var(--font-text); font-size: 18px; color: var(--text-3); }

/* ---------- print, toolkit & instruments ---------- */

@media print {
  .progress-ledger .pl-actions, .crumbs, .gi-secnav, .calc-next, .cw-grid,
  .err-links, .m-mobile-nav { display: none !important; }
  .check-rows input[type="checkbox"] {
    -webkit-appearance: checkbox;
    appearance: checkbox;
  }
  .check-rows label:has(input:checked) strong { text-decoration: none; }
  .guide-headgrid h1, .doc-h1 { font-size: 24pt; }
  .taxonomy .t-term { color: #000; }
  .result-headline { color: #000; font-size: 28pt; }
  .toolkit-body section, .calc-sec { break-inside: avoid-page; }
  .calc-work { display: block; }
  .calc-chart-fig, .calc-bars-fig { display: none; }
}

/* corrections from the preview pass */
[hidden] { display: none !important; }
.check-rows li { padding-left: 0; }
.check-rows li::before { content: none; }
