/* ---------- Inlined Google Fonts kit (woff2, latin + latin-ext; removes the fonts.googleapis.com round trip). Pulled from css2 Jul 18, 2026. ---------- */
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLyTOxKsv4RnUPU.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 400;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxKsv4Rn.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLyTOxKsv4RnUPU.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 500;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxKsv4Rn.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLyTOxKsv4RnUPU.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Archivo';
  font-style: normal;
  font-weight: 600;
  font-stretch: 100%;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/archivo/v25/k3kPo8UDI-1M0wlSV9XAw6lQkqWY8Q82sLydOxKsv4Rn.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Besley';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/besley/v22/PlI8FlO1MaNwaNG8UgeH2n5Mnfy5.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Besley';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/besley/v22/PlI8FlO1MaNwaNG8XAeH2n5MnQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Besley';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/besley/v22/PlI8FlO1MaNwaNG8UgeH2n5Mnfy5.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Besley';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/besley/v22/PlI8FlO1MaNwaNG8XAeH2n5MnQ.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1iEq131nj-otFQ.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F63fjptAgt5VM-kVkqdyU8n1i8q131nj-o.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgsAXHNlYzg.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(https://fonts.gstatic.com/s/ibmplexmono/v20/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgsAXHNk.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ============================================================
   JANOVER CAPITAL · styles.css
   Design system: "Engraved Capital"
   Palette: bottle green / ledger ivory / engraved ink
   Type: Besley (display) · Archivo (body) · IBM Plex Mono (data)
   ============================================================ */

:root{
  --green-950:#08251C;
  --green-900:#0B2F23;
  --green-800:#0F3D2E;
  --green-700:#145C43;
  --green-600:#1E7A4F;
  --ink:#151B17;
  --ink-soft:#3D463F;
  --ink-mute:#68716A;
  --paper:#FFFFFF;
  --ledger:#F1F2EC;
  --ledger-deep:#E8EAE1;
  --line:#D9DED4;
  --line-dark:rgba(255,255,255,.16);
  --up:#1E7A4F;
  --down:#A33A2E;
  --gold:#8C6D2F;
  --gold-ink:#7A5E28; /* darker gold for small text on light bg; passes WCAG AA */

  --font-display:"Besley", "Georgia", serif;
  --font-body:"Archivo", -apple-system, "Segoe UI", sans-serif;
  --font-mono:"IBM Plex Mono", "SFMono-Regular", Menlo, monospace;

  --w-max:1180px;
  --w-text:720px;
  --radius:3px;
  --shadow:0 1px 2px rgba(21,27,23,.06), 0 8px 28px rgba(21,27,23,.08);
  --shadow-lg:0 2px 4px rgba(21,27,23,.08), 0 18px 50px rgba(21,27,23,.14);
  --ease:cubic-bezier(.22,.61,.2,1);
}

/* ---------- Reset / base ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
[hidden]{display:none !important} /* author display rules (e.g. .btn) must never override the hidden attribute */
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{
  font-family:var(--font-body);
  font-size:17px;line-height:1.65;
  color:var(--ink);background:var(--paper);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
img,svg{display:block;max-width:100%}
a{color:var(--green-700);text-decoration:none}
a:hover{text-decoration:underline;text-underline-offset:3px}
button{font:inherit;cursor:pointer}
::selection{background:var(--green-900);color:#fff}
:focus-visible{outline:2px solid var(--green-600);outline-offset:3px;border-radius:2px}
.section--dark :focus-visible,.on-dark :focus-visible,.site-footer :focus-visible,.rate-strip :focus-visible,.sizer__result :focus-visible{outline-color:#9DC3AF} /* visible focus on dark surfaces */

.container{max-width:var(--w-max);margin:0 auto;padding:0 24px}
.container--text{max-width:var(--w-text)}

/* ---------- Type ---------- */
h1,h2,h3,h4{font-family:var(--font-display);font-weight:700;line-height:1.08;color:var(--ink);letter-spacing:-.01em}
.display-xl{font-size:clamp(2.6rem,6.4vw,4.6rem);line-height:1.02}
h1,.h1{font-size:clamp(2.2rem,5vw,3.4rem)}
h2,.h2{font-size:clamp(1.7rem,3.4vw,2.4rem)}
h3,.h3{font-size:clamp(1.2rem,2vw,1.45rem);line-height:1.25}
.lede{font-size:clamp(1.05rem,1.6vw,1.25rem);line-height:1.55;color:var(--ink-soft);max-width:56ch}
.eyebrow{
  font-family:var(--font-mono);font-size:.72rem;font-weight:500;
  letter-spacing:.18em;text-transform:uppercase;color:var(--green-700);
  display:flex;align-items:center;gap:12px;margin-bottom:18px;
}
.eyebrow::before{content:"";width:28px;height:1px;background:var(--green-700);flex:none}
.on-dark .eyebrow{color:#9DC3AF;background-color:transparent}.on-dark .eyebrow::before{background-color:#9DC3AF}
.mono{font-family:var(--font-mono)}
.muted{color:var(--ink-mute)}

/* ---------- Buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  padding:15px 28px;border-radius:var(--radius);border:1px solid transparent;
  font-weight:600;font-size:.98rem;letter-spacing:.01em;line-height:1;
  transition:transform .18s var(--ease),box-shadow .18s var(--ease),background .18s;
  text-decoration:none !important;white-space:nowrap;
}
.btn--primary{background:var(--green-900);color:#fff}
.btn--primary:hover{background:var(--green-800);transform:translateY(-1px);box-shadow:var(--shadow)}
.btn--ghost{border-color:var(--green-900);color:var(--green-900);background:transparent}
.btn--ghost:hover{background:rgba(11,47,35,.05)}
.on-dark .btn--primary{background:#fff;color:var(--green-950)}
.on-dark .btn--primary:hover{background:var(--ledger)}
.on-dark .btn--ghost{border-color:rgba(255,255,255,.45);color:#fff}
.on-dark .btn--ghost:hover{background:rgba(255,255,255,.08)}
.btn--lg{padding:18px 34px;font-size:1.05rem}
.btn[disabled]{opacity:.55;pointer-events:none}

/* ---------- Header ---------- */
.site-header{
  position:sticky;top:0;z-index:60;background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);
}
.site-header__inner{display:flex;align-items:center;justify-content:space-between;gap:24px;height:76px}
.brand{display:flex;flex-direction:column;line-height:1;text-decoration:none !important}
.brand__name{font-family:var(--font-display);font-weight:800;font-size:1.42rem;letter-spacing:.015em;color:var(--green-950)}
.brand__sub{font-family:var(--font-mono);font-size:.6rem;letter-spacing:.42em;text-transform:uppercase;color:var(--gold-ink);margin-top:5px}
.site-footer .brand__sub{color:#C9A961}
.nav{display:flex;align-items:center;gap:30px}
.nav a{color:var(--ink-soft);font-weight:500;font-size:.95rem;text-decoration:none}
.nav a:hover,.nav a[aria-current="page"]{color:var(--green-900)}
.nav a[aria-current="page"]{box-shadow:0 2px 0 var(--green-900)}
.nav .has-menu{position:relative}
.nav .menu-trigger{background:none;border:0;color:var(--ink-soft);font-weight:500;font-size:.95rem;display:inline-flex;align-items:center;gap:6px;padding:6px 0}
.nav .menu-trigger:hover{color:var(--green-900)}
.nav .menu{
  position:absolute;top:calc(100% + 14px);left:-18px;min-width:280px;
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-lg);padding:10px;display:none;
}
.nav .has-menu.open .menu,.nav .has-menu:focus-within .menu{display:block}
.nav .menu a{display:block;padding:11px 14px;border-radius:2px;font-size:.94rem;color:var(--ink)}
.nav .menu a:hover{background:var(--ledger);text-decoration:none}
.nav .menu a small{display:block;color:var(--ink-mute);font-weight:400;font-size:.8rem;margin-top:2px}
.header-cta{display:flex;align-items:center;gap:18px}
.header-phone{font-family:var(--font-mono);font-size:.88rem;color:var(--green-900);font-weight:500}
.nav-toggle{display:none;background:none;border:0;padding:8px}
.nav-toggle span{display:block;width:24px;height:2px;background:var(--green-950);margin:5px 0;transition:.25s var(--ease)}

/* mobile nav */
@media(max-width:1150px){
  .nav{
    position:fixed;inset:76px 0 auto 0;background:#fff;border-bottom:1px solid var(--line);
    flex-direction:column;align-items:stretch;gap:0;padding:12px 24px 28px;
    transform:translateY(-110%);transition:transform .3s var(--ease);box-shadow:var(--shadow-lg);
    max-height:calc(100vh - 76px);max-height:calc(100dvh - 76px);overflow:auto;
  }
  .nav.open{transform:translateY(0)}
  .nav a,.nav .menu-trigger{padding:14px 0;border-bottom:1px solid var(--line);width:100%;text-align:left;font-size:1.05rem}
  .nav .menu{position:static;display:block;box-shadow:none;border:0;padding:0 0 0 16px;min-width:0}
  .nav .menu a{border-bottom:0;padding:10px 0;font-size:.98rem}
  .nav .menu-trigger .chev{display:none}
  .nav-toggle{display:block}
  .nav-toggle.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav-toggle.open span:nth-child(2){opacity:0}
  .nav-toggle.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
  .header-phone{display:none}
}

/* ---------- Hero ---------- */
.hero{position:relative;background:var(--paper);overflow:hidden;border-bottom:1px solid var(--line)}
.hero__inner{position:relative;padding:96px 0 84px;z-index:2}
.hero .guilloche{
  position:absolute;top:-140px;right:-180px;width:760px;height:760px;
  color:var(--green-900);opacity:.09;z-index:1;pointer-events:none;
}
.hero .guilloche--small{top:auto;bottom:-320px;right:auto;left:-320px;width:620px;height:620px;opacity:.05}
.hero__cta{display:flex;gap:16px;flex-wrap:wrap;margin-top:38px}
.hero .lede{margin-top:22px}
.hero__note{margin-top:26px;font-size:.9rem;color:var(--ink-mute);font-family:var(--font-mono)}
@media(max-width:640px){.hero__inner{padding:64px 0 56px}.hero .guilloche{width:520px;right:-220px;top:-120px}}

/* ---------- Rate strip ---------- */
.rate-strip{background:var(--green-950);color:#fff;border-bottom:1px solid var(--green-900)}
.rate-strip[hidden]{display:none}
.rate-strip__inner{display:flex;align-items:stretch;gap:0;overflow-x:auto;scrollbar-width:none}
.rate-strip__inner::-webkit-scrollbar{display:none}
.rate{
  display:flex;flex-direction:column;gap:3px;padding:16px 26px;
  border-right:1px solid var(--line-dark);min-width:150px;flex:none;
}
.rate:first-child{padding-left:0}
.rate__label{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:#9DC3AF}
.rate__value{font-family:var(--font-mono);font-size:1.18rem;font-weight:500;font-variant-numeric:tabular-nums;display:flex;align-items:baseline;gap:8px}
.rate__delta{font-size:.72rem;font-weight:500}
.rate__delta.up{color:#7FD6A4}
.rate__delta.down{color:#F0A08E}
.rate--meta{margin-left:auto;justify-content:center;border-right:0;padding-right:0;min-width:0}
.rate--meta .rate__label{color:#6E9583}
@media(max-width:640px){.rate{padding:13px 18px;min-width:128px}.rate__value{font-size:1.02rem}}

/* ---------- Sections ---------- */
.section{padding:96px 0}
.section--ledger{background:var(--ledger)}
.section--dark{background:var(--green-950);color:#E9EFE9}
.section--dark h2,.section--dark h3{color:#fff}
.section--dark .lede{color:#B9C9BD}
.section--tight{padding:72px 0}
.section-head{max-width:760px;margin-bottom:56px}
.section-head--center{margin-left:auto;margin-right:auto;text-align:center}
.section-head--center .eyebrow{justify-content:center}
@media(max-width:640px){.section{padding:64px 0}.section-head{margin-bottom:38px}}

/* ---------- Proof band ---------- */
.proof{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border:1px solid var(--line);border-radius:var(--radius);background:#fff;box-shadow:var(--shadow)}
.proof--4{grid-template-columns:repeat(4,1fr)}
.proof__item{padding:38px 32px;border-right:1px solid var(--line)}
.proof__item:last-child{border-right:0}
/* Mono numerals: every glyph in a monospace face carries identical weight,
   so the figures can never render part-bold/part-light across platforms. */
.proof__num{font-family:var(--font-mono);font-weight:500;font-size:clamp(1.8rem,2.9vw,2.3rem);color:var(--green-900);line-height:1;letter-spacing:-.02em;display:flex;align-items:baseline;white-space:nowrap}
.proof__plus{font-family:var(--font-mono);font-weight:500;font-size:.62em;color:var(--gold-ink);margin-left:2px;transform:translateY(-.5em)}
.proof__label{margin-top:12px;color:var(--ink-soft);font-size:.9rem;line-height:1.5;max-width:30ch}
.proof-note{margin-top:14px;font-size:.8rem;color:var(--ink-mute)}
@media(max-width:1020px){.proof--4{grid-template-columns:1fr 1fr}.proof--4 .proof__item{border-bottom:1px solid var(--line)}.proof--4 .proof__item:nth-child(even){border-right:0}.proof--4 .proof__item:nth-child(n+3){border-bottom:0}}
@media(max-width:820px){.proof{grid-template-columns:1fr}.proof__item{border-right:0;border-bottom:1px solid var(--line)}.proof__item:last-child{border-bottom:0}}
@media(max-width:560px){.proof--4{grid-template-columns:1fr}.proof--4 .proof__item{border-right:0;border-bottom:1px solid var(--line)}.proof--4 .proof__item:last-child{border-bottom:0}}

/* ---------- Executions grid ---------- */
.exec-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.exec-card{
  position:relative;background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:34px 30px 30px;display:flex;flex-direction:column;gap:12px;
  transition:transform .22s var(--ease),box-shadow .22s var(--ease),border-color .22s;
  text-decoration:none !important;color:var(--ink);overflow:hidden;
}
.exec-card::after{content:"";position:absolute;left:0;top:0;height:3px;width:0;background:var(--green-700);transition:width .3s var(--ease)}
.exec-card:hover{transform:translateY(-4px);box-shadow:var(--shadow-lg);border-color:var(--green-700)}
.exec-card:hover::after{width:100%}
.exec-card__tag{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-ink)}
.exec-card h3{color:var(--green-950)}
.exec-card p{color:var(--ink-soft);font-size:.95rem;flex:1}
.exec-card__btn{align-self:flex-start;margin-top:6px;display:inline-flex;align-items:center;justify-content:center;padding:12px 24px;border:1px solid var(--green-900);border-radius:var(--radius);color:var(--green-900);font-weight:600;font-size:.92rem;line-height:1;transition:background .18s var(--ease),color .18s var(--ease)}
.exec-card:hover .exec-card__btn{background:var(--green-900);color:#fff}
@media(max-width:960px){.exec-grid{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.exec-grid{grid-template-columns:1fr}}

/* ---------- Process ---------- */
.process{display:grid;grid-template-columns:repeat(4,1fr);gap:0;counter-reset:step}
.process__step{position:relative;padding:0 34px 0 0;counter-increment:step}
.process__step + .process__step{padding-left:34px;border-left:1px solid var(--line-dark)}
.process__step::before{
  content:"0" counter(step);display:block;
  font-family:var(--font-mono);font-size:.78rem;letter-spacing:.2em;color:#7FA890;margin-bottom:18px;
}
.process__step h3{font-size:1.22rem;margin-bottom:12px}
.process__step p{color:#B9C9BD;font-size:.93rem}
@media(max-width:960px){
  .process{grid-template-columns:1fr 1fr;gap:44px 0}
  .process__step:nth-child(odd){padding-left:0;border-left:0}
}
@media(max-width:640px){
  .process{grid-template-columns:1fr;gap:38px}
  .process__step{padding:0;border-left:0 !important}
}

/* ---------- Split (engine / principal) ---------- */
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:72px;align-items:center}
.split--rev{grid-template-columns:.95fr 1.05fr}
.split__body .btn{margin-top:30px}
.split ul.ticks{list-style:none;margin-top:26px;display:grid;gap:14px}
.split ul.ticks li{padding-left:30px;position:relative;color:var(--ink-soft);font-size:.98rem}
.section--dark .split ul.ticks li{color:#C6D4C9}
.split ul.ticks li::before{
  content:"";position:absolute;left:0;top:7px;width:14px;height:8px;
  border-left:2px solid var(--green-600);border-bottom:2px solid var(--green-600);transform:rotate(-45deg);
}
@media(max-width:960px){.split,.split--rev{grid-template-columns:1fr;gap:44px}}

/* engine panel: abstract lender-match visual */
.engine-panel{
  background:var(--green-950);border-radius:var(--radius);padding:34px;
  color:#DCE7DD;box-shadow:var(--shadow-lg);border:1px solid var(--green-800);
  font-family:var(--font-mono);position:relative;overflow:hidden;
}
.engine-panel .guilloche{position:absolute;right:-190px;bottom:-190px;width:430px;height:430px;color:#fff;opacity:.05}
.engine-panel__head{display:flex;justify-content:space-between;font-size:.68rem;letter-spacing:.14em;text-transform:uppercase;color:#7FA890;border-bottom:1px solid var(--line-dark);padding-bottom:14px;margin-bottom:18px}
.engine-row{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px dashed rgba(255,255,255,.12);font-size:.82rem}
.engine-row__name{color:#EDF3ED}
.engine-row__type{color:#7FA890;font-size:.7rem}
.engine-row__match{color:#7FD6A4;font-weight:500}
.engine-panel__foot{margin-top:18px;font-size:.7rem;color:#7FA890}

/* principal card */
.principal{
  background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
  padding:40px;position:relative;overflow:hidden;
}
.principal .guilloche{position:absolute;right:-160px;top:-160px;width:380px;height:380px;color:var(--green-900);opacity:.06}
.principal__photo{width:112px;height:112px;border-radius:50%;object-fit:cover;outline:1px solid rgba(140,109,47,.55);outline-offset:4px;margin-bottom:20px;position:relative;z-index:1;display:block}
.principal__role{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-ink);margin-bottom:14px}
.principal h3{font-size:1.6rem}
.principal p{margin-top:14px;color:var(--ink-soft);font-size:.97rem}
.principal__creds{margin-top:22px;display:flex;flex-wrap:wrap;gap:8px}
.cred{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;border:1px solid var(--line);border-radius:2px;padding:6px 10px;color:var(--ink-soft);background:var(--ledger)}

/* ---------- Mandates ---------- */
.mandates{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.mandate{
  border:1px solid var(--line);border-radius:var(--radius);padding:28px;background:#fff;
  display:flex;flex-direction:column;gap:8px;
}
.mandate__range{font-family:var(--font-mono);font-weight:500;font-size:1.05rem;color:var(--green-900);font-variant-numeric:tabular-nums}
.mandate__title{font-weight:600;color:var(--ink)}
.mandate p{font-size:.9rem;color:var(--ink-mute)}
@media(max-width:960px){.mandates{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.mandates{grid-template-columns:1fr}}

/* ---------- Terms table (product pages) ---------- */
.terms-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.terms-table th,.terms-table td{padding:16px 20px;text-align:left;border-bottom:1px solid var(--line);font-size:.95rem;vertical-align:top}
.terms-table tr:last-child th,.terms-table tr:last-child td{border-bottom:0}
.terms-table th{width:34%;font-family:var(--font-mono);font-weight:500;font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);background:var(--ledger)}
.terms-table td{color:var(--ink);font-variant-numeric:tabular-nums}
.table-note{margin-top:12px;font-size:.8rem;color:var(--ink-mute)}
@media(max-width:640px){.terms-table th,.terms-table td{display:block;width:100%}.terms-table th{border-bottom:0;padding-bottom:4px}}

/* ---------- Prose (product/legal body) ---------- */
.prose{max-width:var(--w-text)}
.prose h2{margin:56px 0 18px}
.prose h3{margin:36px 0 12px}
.prose p{margin:0 0 18px;color:var(--ink-soft)}
.prose ul,.prose ol{margin:0 0 18px 22px;color:var(--ink-soft)}
.prose li{margin-bottom:8px}
.prose strong{color:var(--ink)}
.prose a,.faq__a a{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px} /* links in body text are visibly links, not color-only */

/* ---------- FAQ ---------- */
.faq{max-width:820px;margin:0 auto;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{
  list-style:none;cursor:pointer;padding:24px 44px 24px 4px;position:relative;
  font-family:var(--font-display);font-weight:700;font-size:1.12rem;color:var(--ink);
}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{
  content:"+";position:absolute;right:8px;top:50%;transform:translateY(-50%);
  font-family:var(--font-mono);font-size:1.3rem;color:var(--green-700);transition:transform .2s var(--ease);
}
.faq details[open] summary::after{transform:translateY(-50%) rotate(45deg)}
.faq .faq__a{padding:0 4px 26px;color:var(--ink-soft);max-width:66ch}

/* ---------- CTA band ---------- */
.cta-band{position:relative;overflow:hidden}
.cta-band .guilloche{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:900px;height:900px;color:#fff;opacity:.05}
.cta-band__inner{position:relative;text-align:center;max-width:740px;margin:0 auto}
.cta-band .display-xl{color:#fff}
.cta-band .lede{margin:22px auto 0}
.cta-band__actions{display:flex;gap:16px;justify-content:center;flex-wrap:wrap;margin-top:40px}
.cta-band__phone{margin-top:26px;font-family:var(--font-mono);font-size:.9rem;color:#9DC3AF}
.cta-band__phone a{color:#fff}

/* ---------- Forms ---------- */
.form-wrap{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);padding:44px}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px}
.form-field{display:flex;flex-direction:column;gap:8px}
.form-field--full{grid-column:1 / -1}
.form-field label{font-weight:600;font-size:.9rem;color:var(--ink)}
.form-field label .req{color:var(--down)}
.form-field input,.form-field select,.form-field textarea{
  font:inherit;font-size:1rem;padding:14px 16px;border:1px solid var(--line);
  border-radius:var(--radius);background:#fff;color:var(--ink);width:100%;
  transition:border-color .15s,box-shadow .15s;
}
.form-field input:focus,.form-field select:focus,.form-field textarea:focus{
  outline:none;border-color:var(--green-700);box-shadow:0 0 0 3px rgba(20,92,67,.14);
}
.form-field small{color:var(--ink-mute);font-size:.8rem}
.form-actions{grid-column:1 / -1;display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px}
.form-privacy{flex-basis:100%;font-size:.8rem;color:var(--ink-mute);line-height:1.55;max-width:62ch;margin-top:12px}
.form-consent{font-size:.74rem;color:var(--ink-mute);line-height:1.6;border-top:1px solid var(--line);padding-top:16px;margin-top:12px}
.form-consent a{color:var(--ink-mute);text-decoration:underline;text-underline-offset:2px}
.form-consent a:hover{color:var(--green-700)}
/* inline validation states */
.form-field.invalid input,.form-field.invalid select,.form-field.invalid textarea{border-color:var(--down);box-shadow:0 0 0 3px rgba(163,58,46,.12)}
.form-field .field-error{display:none;color:var(--down);font-size:.8rem;font-weight:500}
.form-field.invalid .field-error{display:block}
/* v1.1.7: form.js appends the lazily-created .field-error to whatever wrapper carries
   .radio-required. When that wrapper is not itself a .form-field (older markup generations put
   .radio-required on the inner .radio-group), the two rules above never match and the radio
   error message existed in the DOM but stayed display:none. These close the gate for every
   markup generation. */
.radio-required .field-error{display:none;color:var(--down);font-size:.8rem;font-weight:500}
.radio-required.invalid .field-error,.radio-group.invalid .field-error{display:block}
@media(max-width:720px){.form-grid{grid-template-columns:1fr}.form-wrap{padding:28px 22px}}

/* ---------- Contact rail on form page ---------- */
.contact-rail{display:grid;gap:26px}
.contact-rail .rail-item{border-left:2px solid var(--green-700);padding-left:18px}
.contact-rail .rail-item strong{display:block;font-size:.9rem;margin-bottom:4px}
.contact-rail .rail-item span,.contact-rail .rail-item a{font-size:.95rem;color:var(--ink-soft)}
.page-grid{display:grid;grid-template-columns:1.5fr .8fr;gap:64px;align-items:start}
@media(max-width:960px){.page-grid{grid-template-columns:1fr;gap:44px}}

/* ---------- Page hero (interior) ---------- */
.page-hero{background:var(--ledger);border-bottom:1px solid var(--line);padding:72px 0 60px;position:relative;overflow:hidden}
.page-hero .guilloche{position:absolute;right:-230px;top:-230px;width:560px;height:560px;color:var(--green-900);opacity:.07}
.page-hero .lede{margin-top:18px}
.breadcrumb{font-family:var(--font-mono);font-size:.74rem;letter-spacing:.06em;color:var(--ink-mute);margin-bottom:22px}
.breadcrumb a{color:var(--ink-mute)}
.breadcrumb a:hover{color:var(--green-700)}
@media(max-width:640px){.page-hero{padding:48px 0 42px}}

/* ---------- Footer ---------- */
.site-footer{background:var(--green-950);color:#B9C9BD;padding:72px 0 36px;font-size:.92rem}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:44px;padding-bottom:48px;border-bottom:1px solid var(--line-dark)}
.site-footer .brand__name{color:#fff}
.footer-col .footer-col__title{font-family:var(--font-mono);font-size:.68rem;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:#8FB49E;margin-bottom:18px}
.footer-col ul{list-style:none;display:grid;gap:11px}
.footer-col a{color:#C6D4C9}
.footer-col a:hover{color:#fff}
.footer-about{max-width:34ch;margin-top:16px;color:#8FA394;font-size:.88rem}
.footer-legal{padding-top:28px;display:flex;flex-direction:column;gap:14px}
.footer-legal p{font-size:.76rem;color:#A2B2A6;max-width:100ch;line-height:1.6}
.footer-legal p a{color:#C6D3C9;text-decoration:underline;text-underline-offset:2px}
.footer-legal p a:hover{color:#fff}
.footer-legal .row{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;align-items:center}
.footer-legal .row a{color:#B7C6BA;font-size:.8rem;text-decoration:underline;text-underline-offset:2px}
@media(max-width:960px){.footer-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.footer-grid{grid-template-columns:1fr}}

/* ---------- Reveal animation ---------- */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.reveal.in{opacity:1;transform:none}
.reveal-d1{transition-delay:.08s}.reveal-d2{transition-delay:.16s}.reveal-d3{transition-delay:.24s}
/* Above-the-fold content must never wait for JS: heroes use a pure CSS
   entrance, and the H1 (the LCP element) renders instantly. */
.hero .reveal,.page-hero .reveal{opacity:1;transform:none;transition:none;animation:rise .55s var(--ease) both}
.hero .reveal-d1,.page-hero .reveal-d1{animation-delay:.07s}
.hero .reveal-d2,.page-hero .reveal-d2{animation-delay:.14s}
.hero .reveal-d3,.page-hero .reveal-d3{animation-delay:.21s}
.hero h1,.page-hero h1{animation:none !important;opacity:1 !important;transform:none !important}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .reveal{opacity:1;transform:none;transition:none}
  .hero .reveal,.page-hero .reveal{animation:none}
  .btn,.exec-card{transition:none}
}

/* ---------- Mobile sticky CTA bar ---------- */
.mobile-cta{display:none}
@media(max-width:720px){
  .mobile-cta{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:50;
    background:var(--green-950);border-top:1px solid var(--green-800);
    padding:10px 12px calc(10px + env(safe-area-inset-bottom));gap:10px;
  }
  .mobile-cta a{
    flex:1;display:flex;align-items:center;justify-content:center;
    padding:13px 10px;border-radius:var(--radius);font-weight:600;font-size:.95rem;line-height:1;
    color:#fff;border:1px solid rgba(255,255,255,.4);text-decoration:none;
  }
  .mobile-cta a.mobile-cta__primary{background:#fff;color:var(--green-950);border-color:#fff}
  body{padding-bottom:64px}
  .site-footer{padding-bottom:100px}
}

/* ---------- Utilities ---------- */
.mt-0{margin-top:0}.mt-24{margin-top:24px}.mt-40{margin-top:40px}.mt-56{margin-top:56px}
.center{text-align:center}
.hidden{display:none !important}
.skip-link{position:absolute;left:-9999px;top:0;background:#fff;color:var(--green-900);padding:12px 18px;z-index:100;font-weight:600}
.skip-link:focus{left:12px;top:12px}

/* ============ A+ PASS: brand lockup, testimonials, team ============ */

/* gold hairline across top of every page */
.site-header::before{content:"";position:absolute;top:0;left:0;right:0;height:2px;
  background:linear-gradient(90deg,var(--gold),#C9A961 40%,var(--gold));}
.site-header{position:sticky} /* keep */

/* brand lockup with rosette mark */
.brand{flex-direction:row;align-items:center;gap:12px}
.brand__mark{width:36px;height:36px;flex:none;color:var(--green-900)}
.site-footer .brand__mark{color:#9DC3AF}
.brand__stack{display:flex;flex-direction:column;line-height:1}

/* testimonials */
.quotes{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.quote-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:34px 30px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow);position:relative}
.quote-card::before{content:"\201C";font-family:var(--font-display);font-weight:800;
  font-size:4.2rem;line-height:.6;color:var(--gold);opacity:.55;display:block;height:.45em}
.quote-card blockquote{margin:0;font-family:var(--font-display);font-weight:600;
  font-size:1.12rem;line-height:1.4;color:var(--ink)}
.quote-card figcaption{margin-top:auto;padding-top:16px;border-top:1px solid var(--line)}
.quote-card figcaption strong{display:block;font-size:.92rem;color:var(--ink)}
.quote-card figcaption span{font-size:.82rem;color:var(--ink-mute)}
.stars{color:var(--gold-ink);letter-spacing:.18em;font-size:.85rem}
@media(max-width:1020px){.quotes{grid-template-columns:1fr 1fr}}
@media(max-width:680px){.quotes{grid-template-columns:1fr}}

/* thanks page: next steps */
.next-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;max-width:980px}
.next-step{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:28px;box-shadow:var(--shadow)}
.next-step__n{display:block;font-family:var(--font-mono);font-size:.78rem;letter-spacing:.2em;color:var(--gold-ink);margin-bottom:14px}
.next-step strong{display:block;font-size:1rem;color:var(--ink);margin-bottom:8px}
.next-step p{font-size:.9rem;color:var(--ink-soft)}
@media(max-width:820px){.next-steps{grid-template-columns:1fr}}

/* team */
.team-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.person{background:#fff;border:1px solid var(--line);border-radius:var(--radius);
  padding:30px 26px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}
.avatar{width:88px;height:88px;border-radius:50%;background:var(--green-950);
  display:flex;align-items:center;justify-content:center;position:relative;flex:none}
img.avatar{object-fit:cover;display:block;outline:1px solid rgba(140,109,47,.6);outline-offset:4px} /* ring via outline; ::after doesn't render on <img> */
.avatar span{font-family:var(--font-display);font-weight:700;font-size:1.5rem;color:#fff}
.avatar::after{content:"";position:absolute;inset:-5px;border:1px solid var(--gold);
  border-radius:50%;opacity:.6}
.avatar--alt{background:var(--ledger-deep)}
.avatar--alt svg{width:44px;height:44px;color:var(--green-900)}
.person h3{font-size:1.14rem}
.person .role{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--gold-ink)}
.person p{font-size:.88rem;color:var(--ink-soft)}
@media(max-width:960px){.team-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.team-grid{grid-template-columns:1fr}}


/* ---------- Blog ---------- */
.blog-embed{margin:0 0 28px;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:#fff}
.blog-embed iframe{display:block;border:0;width:100%}
.blog-figure{margin:28px 0;padding:28px 20px 18px;border:1px solid var(--line);border-radius:var(--radius);background:#fff}
.blog-figure svg{display:block;width:100%;height:auto}
.blog-figure figcaption{text-align:center;font-size:.8rem;color:var(--ink-mute);margin-top:10px}
.blog-subscribe{margin-top:48px;padding:28px;border:1px solid var(--line);border-radius:var(--radius);background:var(--ledger)}
.blog-subscribe h3{margin-bottom:6px}
.blog-subscribe p{color:var(--ink-soft);font-size:.92rem;margin-bottom:14px}
.blog-subscribe__row{display:flex;gap:10px;flex-wrap:wrap}
.blog-subscribe__row input{flex:1;min-width:220px;font:inherit;font-size:1rem;padding:13px 16px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;color:var(--ink)}
.blog-subscribe__row input:focus{outline:none;border-color:var(--green-700);box-shadow:0 0 0 3px rgba(20,92,67,.14)}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* ============ DEAL SIZER ============ */
.sizer{display:grid;grid-template-columns:1.1fr .9fr;gap:0;background:#fff;
  border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow-lg);overflow:hidden}
.sizer__inputs{padding:38px;display:grid;grid-template-columns:1fr 1fr;gap:18px}
.sizer__inputs .form-field label{font-size:.82rem}
.sizer__result{background:var(--green-950);color:#E9EFE9;padding:38px;display:flex;
  flex-direction:column;justify-content:center;gap:6px;position:relative;overflow:hidden}
.sizer__result .guilloche{position:absolute;right:-170px;top:-170px;width:400px;height:400px;color:#fff;opacity:.05}
.sizer__label{font-family:var(--font-mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;color:#7FA890}
.sizer__loan{font-family:var(--font-mono);font-weight:500;font-size:clamp(1.9rem,3.4vw,2.7rem);
  color:#fff;font-variant-numeric:tabular-nums;line-height:1.1}
.sizer__row{display:flex;gap:28px;margin-top:14px;flex-wrap:wrap}
.sizer__row div span{display:block}
.sizer__row .k{font-family:var(--font-mono);font-size:.64rem;letter-spacing:.14em;text-transform:uppercase;color:#7FA890}
.sizer__row .v{font-family:var(--font-mono);font-size:1.05rem;color:#DCE7DD;font-variant-numeric:tabular-nums}
.sizer__note{margin-top:16px;font-size:.76rem;color:#7FA890;font-family:var(--font-mono)}
.sizer__cta{margin-top:22px}
@media(max-width:960px){.sizer{grid-template-columns:1fr}.sizer__inputs{grid-template-columns:1fr 1fr;padding:26px}.sizer__result{padding:30px 26px}}
@media(max-width:560px){.sizer__inputs{grid-template-columns:1fr}}

.exec-grid h2{font-size:clamp(1.2rem,2vw,1.45rem);line-height:1.25}

/* ---------- Form radios / conditional fields ---------- */
.cond[hidden]{display:none}
.radio-group{display:flex;flex-direction:column;gap:10px;margin-top:6px}
.radio-group label{display:flex;align-items:center;gap:10px;font-size:.95rem;color:var(--ink-soft);font-weight:400;cursor:pointer;padding:5px 0}
.radio-group input{width:18px;height:18px;accent-color:var(--green-700);flex:none}

/* ---------- Two-step form ---------- */
.form-step{border:0;margin:0;padding:0;min-width:0}
.stepped .form-step{display:none}
.stepped .form-step.form-step--active{display:block}
.form-step__intro{font-family:var(--font-display);font-weight:700;font-size:1.25rem;color:var(--ink);margin:0 0 20px}
.form-progress{display:none}
form.stepped .form-progress{display:flex;align-items:center;gap:16px;margin-bottom:26px}
.form-progress span#step-label{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--green-700);white-space:nowrap}
.form-progress__bar{flex:1;height:3px;background:var(--line);border-radius:2px;overflow:hidden}
.form-progress__bar span{display:block;height:100%;width:50%;background:var(--green-700);border-radius:2px;transition:width .3s var(--ease)}
.form-wrap{scroll-margin-top:96px}

/* ---------- Cross-device hardening ---------- */
.footer-col ul a,.rail-item a,.rail-item span{overflow-wrap:anywhere}
.form-field select{-webkit-appearance:menulist;appearance:auto}
@media(hover:none){.btn--primary:hover{transform:none}}
.form-fallback{font-size:.9rem;color:var(--down);background:#FBEEE6;border:1px solid rgba(163,58,46,.35);border-radius:var(--radius);padding:14px 16px;line-height:1.5}
.form-fallback a{color:var(--down);font-weight:600;text-decoration:underline}

/* ---------- v7.4 mobile pack (Jul 18, 2026) ---------- */
/* Kill any stray horizontal page wiggle without creating a new scroll container */
html,body{overflow-x:clip}
/* Anchor jumps land below the sticky header */
[id]{scroll-margin-top:88px}
@media(max-width:640px){
  .container{padding:0 26px}
  /* Compact header: brand + CTA + hamburger fit one row down to 320px, nothing clips */
  .site-header__inner{height:62px;gap:10px}
  .nav{inset:62px 0 auto 0;max-height:calc(100vh - 62px);max-height:calc(100dvh - 62px)}
  .brand{gap:9px}
  .brand__mark{width:28px;height:28px}
  .brand__name{font-size:1.06rem}
  .brand__sub{font-size:.52rem;letter-spacing:.3em;margin-top:3px}
  .header-cta{gap:10px}
  .header-cta .btn{padding:9px 13px;font-size:.84rem;white-space:nowrap}
  .nav-toggle{padding:6px 4px}
  [id]{scroll-margin-top:74px}
}

/* ---------- Tombstones (/closings/) ---------- */
.tomb-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.tomb{background:#fff;border:1px solid var(--line);border-top:3px solid var(--green-900);border-radius:var(--radius);padding:24px 22px 20px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:9px}
.tomb__exec{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold-ink);display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.tomb__exec em{font-style:normal;color:var(--ink-mute);letter-spacing:.12em}
.tomb__amt{font-family:var(--font-mono);font-weight:500;font-size:1.42rem;color:var(--green-900);letter-spacing:-.01em}
.tomb__desc{font-size:.93rem;color:var(--ink-soft);line-height:1.5;flex:1}
.tomb__mkt{font-family:var(--font-mono);font-size:.77rem;color:var(--ink-mute);border-top:1px solid var(--line);padding-top:11px}
.tomb-note{margin-top:26px;font-size:.85rem;color:var(--ink-mute);max-width:74ch;line-height:1.6}
@media(max-width:960px){.tomb-grid{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.tomb-grid{grid-template-columns:1fr}}

/* Alternate section band (closings grid, homepage closings strip) */
.section--alt{background:var(--ledger)}

/* Closings filters */
.tomb-filters{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:0 0 24px}
.tomb-filters select{font-family:var(--font-mono);font-size:.82rem;padding:10px 12px;border:1px solid var(--line);border-radius:2px;background:#fff;color:var(--ink);max-width:100%}
.tomb-filters__reset{font-family:var(--font-mono);font-size:.78rem;letter-spacing:.06em;text-transform:uppercase;background:none;border:1px solid var(--line);border-radius:2px;padding:10px 14px;color:var(--ink-soft);cursor:pointer}
.tomb-filters__reset:hover{border-color:var(--green-900);color:var(--green-900)}
.tomb-count{margin-left:auto;font-family:var(--font-mono);font-size:.78rem;color:var(--ink-mute)}
@media(max-width:640px){.tomb-count{margin-left:0;width:100%}}
@media(hover:none){.tomb-filters select{font-size:1rem}}

/* ---------- Handoff notices (/thanks/) + non-blocking form notes ---------- */
.notice{background:#fff;border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:var(--radius);padding:22px 24px;margin:26px 0 0;max-width:640px;box-shadow:var(--shadow)}
.notice__title{font-family:var(--font-display);font-weight:700;font-size:1.08rem;margin-bottom:6px}
.notice p{color:var(--ink-soft);font-size:.95rem}
.notice__actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:14px}
.field-note{color:var(--ink-soft);font-size:.8rem;background:var(--ledger);border-radius:2px;padding:8px 10px;line-height:1.5}

/* ---------- v7.9 CRO batch ---------- */
.tomb--inline{margin-top:22px;max-width:560px}
.tomb-updated{font-family:var(--font-mono);font-size:.75rem;color:var(--ink-mute);margin-top:10px}
.article-reviewed{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-ink);margin:10px 0 0}
.article-inline-cta{font-size:.92rem;color:var(--ink-soft);border-left:2px solid var(--gold);padding-left:14px;margin:22px 0}
.related-list{list-style:none;display:grid;gap:12px;max-width:640px}
.related-list a{text-decoration:underline;text-underline-offset:3px}

/* Founder press + person links (v7.9b) */
.person__links{font-family:var(--font-mono);font-size:.74rem;margin-top:4px}
.person__links a{text-decoration:underline;text-underline-offset:3px;color:var(--green-700)}
.founder-press{margin-top:16px;font-family:var(--font-mono);font-size:.72rem;color:var(--ink-mute);line-height:1.6}

/* ============ KIT v1.0.0 ADDITIONS ============
   Promoted from the launched cmbs.loans v2 build (playbook §15 addenda).
   Includes the A11Y CONTAINMENT LAW base rules (§15.16): the RULE-PRESENCE
   battery gate fails any build missing them. */
.nav a,.nav .menu-trigger,.header-phone{white-space:nowrap}
.menu--plain a{display:block;padding:9px 14px;font-size:.86rem}
.taglabel{display:inline-block;background:#F1F2EC;border:1px solid #D9DED4;border-radius:3px;padding:4px 10px;font-size:.78rem;margin:2px 6px 6px 0;color:#3D463F}
.postmeta{font-size:.8rem;letter-spacing:.04em;color:#5F6764;margin-bottom:10px}
.postmeta a{color:inherit;text-decoration:underline;text-underline-offset:2px}
.toc__title{font-size:.8rem;letter-spacing:.06em;text-transform:uppercase;color:#5F6764;margin-bottom:4px}
.promo{border:1px solid #D9DED4;border-left:3px solid #8C6D2F;background:#F1F2EC;border-radius:3px;padding:22px 24px;margin:26px 0}
.promo__title{font-family:Besley,serif;font-weight:700;font-size:1.15rem;margin:0 0 10px;color:#08251C}
.promo__offers{list-style:none;margin:0 0 14px;padding:0;display:flex;flex-wrap:wrap;gap:8px 18px}
.promo__offers li{font-family:"IBM Plex Mono",monospace;font-size:.82rem;color:#145C43}
.chips{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.chip{border:1px solid #D9DED4;border-radius:3px;padding:6px 14px;font-family:"IBM Plex Mono",monospace;font-size:.82rem;color:#0F3D2E;background:#fff}
.split{display:grid;grid-template-columns:1fr 1fr;gap:26px 34px;margin-top:8px}
.split__item h3{font-family:Besley,serif;font-size:1.12rem;margin-bottom:8px;color:#08251C}
.split__item p{font-size:.93rem;color:#3D463F;line-height:1.65;margin-bottom:12px}
.footer-addr{margin-top:14px;font-size:.85rem;line-height:1.7}
.section-lede{max-width:720px;color:#3D463F;margin-top:8px}
.postgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.postcard{display:block;border:1px solid #D9DED4;border-radius:3px;background:#fff;padding:20px;text-decoration:none;color:inherit}
.postcard:hover{border-color:#145C43}
.postcard__date,.postcard__meta{display:block;font-size:.78rem;color:#5F6764;margin-bottom:6px}
.postcard__title{display:block;font-family:Besley,serif;font-size:1.05rem;color:#08251C;margin-bottom:8px}
.postcard__desc{display:block;font-size:.87rem;color:#3D463F;line-height:1.55}
.contributors{margin-top:34px;border-top:1px solid #D9DED4;padding-top:18px}
.contributors__row a{font-size:.85rem;display:inline-block;color:#145C43;text-decoration:underline;padding:8px 12px;margin:0 6px 8px 0;border:1px solid #D9DED4;border-radius:3px;min-height:24px}
.newly{margin-top:36px;border-top:1px solid #D9DED4;padding-top:18px}
.newly__item{display:flex;gap:14px;padding:12px 0;text-decoration:none;color:#151B17;border-bottom:1px solid #E8EAE1}
.newly__item .mono{font-size:.78rem;color:#5F6764;white-space:nowrap;padding-top:2px}
.newly__item:hover span:last-child{text-decoration:underline}
.newly__fam{font-size:.84rem;color:#5F6764;margin-top:12px}
.newly__fam a{color:#145C43;text-decoration:underline}
.calc{border:1px solid #D9DED4;border-radius:3px;background:#F1F2EC;padding:24px;margin-bottom:28px}
/* 2026-07-31 min-width guard. A grid item defaults to min-width:auto, so a label will not shrink
   below the min-content width of the control inside it, and a <select> takes its min-content width
   from its LONGEST OPTION. repeat(3,1fr) is really repeat(3,minmax(auto,1fr)), so one long option
   stretched the whole row: on /sba-7a-down-payment-calculator/ the option "Something else, such as
   working capital or equipment" forced every label to 558px inside a 375px viewport, and
   body{overflow-x:clip} hid the right 60% of all five fields with no scrollbar to reveal them. The
   680px collapse alone did NOT fix it (768px still clipped 3 of 10 labels on the 504 blended page).
   minmax(0,1fr) plus min-width:0 also restores the equal thirds the rule always intended: measured
   225/240.5/298px before, 195.3px x 3 after. Verified in-browser at 375/680/700/768/900/1024/1440
   on all 10 calculator pages across the three SBA sites, new and pre-existing. */
.calc__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px 18px;margin-bottom:18px}
.calc__grid label{display:flex;flex-direction:column;gap:6px;font-size:.82rem;font-weight:600;color:#0F3D2E;min-width:0}
.calc__grid input,.calc__grid select{border:1px solid #D9DED4;border-radius:3px;padding:10px 12px;font-family:"IBM Plex Mono",monospace;font-size:16px;background:#fff;color:#151B17;max-width:100%}
.calc__out{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 22px;border-top:1px solid #D9DED4;padding-top:16px}
.calc__out>div{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.calc__label{font-size:.84rem;color:#3D463F}
.calc__num{font-size:1.05rem;color:#0B2F23;font-weight:500;font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
.calc__table{width:100%;border-collapse:collapse;font-family:"IBM Plex Mono",monospace;font-size:.82rem;margin-top:16px}
.calc__table th{color:#3D463F;text-align:right;padding:8px 10px;border-bottom:1px solid #D9DED4}
.calc__table td{text-align:right;padding:6px 10px;border-bottom:1px solid #E8EAE1;font-variant-numeric:tabular-nums}
.calc__table th:first-child,.calc__table td:first-child{text-align:left}
.post-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:44px;align-items:start}
.post-aside{position:sticky;top:96px}
.aside-cta{border:1px solid #D9DED4;border-left:3px solid #8C6D2F;border-radius:3px;background:#F1F2EC;padding:20px;margin-bottom:22px}
.aside-cta__title{font-family:Besley,serif;font-weight:700;font-size:1.05rem;color:#08251C;margin-bottom:6px}
.aside-cta p{font-size:.88rem;color:#3D463F;margin-bottom:14px}
.aside-cta .btn{width:100%;text-align:center;justify-content:center;display:inline-flex}
.aside-cta__tel{display:block;margin-top:10px;font-family:"IBM Plex Mono",monospace;font-size:.88rem;color:#145C43;text-decoration:underline;text-align:center}
@media(max-width:1020px){.post-layout{grid-template-columns:1fr}.post-aside{position:static}}
.hero{padding-bottom:72px}
.hero + .section, .hero + .section--tight{padding-top:72px}
.section--tight{padding:44px 0}
[hidden]{display:none!important}
/* ============ A11Y CONTAINMENT LAW (playbook §15.16) ============
   Custom containers outside the parent design system's .prose/.footer-col contexts
   must re-inherit its link + contrast guarantees. Global base rules, UNSCOPED: */
p a:not(.btn), li a:not(.btn), td a:not(.btn), th a:not(.btn){text-decoration:underline;text-underline-offset:2px}
.footer-col a{display:inline-block;padding:4px 0;text-decoration:underline;text-underline-offset:2px}
.footer-legal .row a{display:inline-block;padding:6px 4px;text-decoration:underline}
.split__item a{color:#145C43;text-decoration:underline;text-underline-offset:2px}
.terms-table th{color:#3D463F}
.site-footer .footer-about a, .site-footer .footer-addr a{color:#E8EAE1;text-decoration:underline;text-underline-offset:2px}
.site-footer .footer-about a:hover, .site-footer .footer-addr a:hover{color:#FFFFFF}
.site-footer .footer-legal a{text-decoration:underline}

/* ==== KIT v1.0.1 (2026-07-23) class-contract closures + promoted consumption fixes ==== */
/* program cards + gold CTA + link/chip rows (promoted from hud.loans v1.2; closes the 16.1 defect list) */
.cardgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:22px;margin-top:10px}
.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px;box-shadow:var(--shadow)}
.card h3{margin:8px 0 10px}
.linkrow{list-style:none;margin:26px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px 12px}
.linkrow li{margin:0}
.linkrow a{display:inline-block;border:1px solid var(--line);border-radius:var(--radius);padding:9px 14px;color:var(--green-900);background:var(--paper);text-decoration:none}
.linkrow li a:not(.btn){text-decoration:none}
.linkrow a:hover{background:var(--ledger)}
.chiprow{list-style:none;margin:14px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.chiprow li{margin:0}
.card__links{list-style:none;margin:14px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:4px 14px}
.card__links li{margin:0}
.card__links a{display:inline-block;padding:2px 0}
.btn--gold{background:var(--gold);color:#fff}
.btn--gold:hover{background:var(--gold-ink)}
.chiprow--feat{margin:2px 0 12px}
.chiprow--feat .chip{font-size:.72rem;padding:4px 10px;background:var(--ledger);border-color:var(--line)}
/* in-article live rates table (pairs with main.js [data-rate-table]; promoted from hud.loans v1.3) */
.rates-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.rates-table caption{caption-side:top;text-align:left;font-family:var(--font-mono);font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);padding:0 0 10px}
.rates-table th,.rates-table td{padding:12px 16px;text-align:left;border-bottom:1px solid var(--line);font-size:.95rem}
.rates-table thead th{font-family:var(--font-mono);font-weight:500;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);background:var(--ledger)}
.rates-table tbody th{font-weight:600;font-family:var(--font-body)}
.rates-table tbody tr:last-child th,.rates-table tbody tr:last-child td{border-bottom:0}
.rates-table td .rate__delta{font-family:var(--font-mono);font-size:.78rem}
.rates-table td .rate__delta.up{color:var(--up)}
.rates-table td .rate__delta.down{color:var(--down)}
.rates-table__note{font-size:.85rem;color:var(--ink-mute);margin-top:10px}
/* mid-page CTA band, aside variant (promoted from apartment.loans owner-audit wave; classes shipped in v1.0.0 templates without rules) */
aside.cta-band{display:flex;align-items:center;justify-content:space-between;gap:18px 26px;flex-wrap:wrap;border:1px solid var(--line);border-left:3px solid var(--gold);border-radius:var(--radius);background:var(--ledger);padding:20px 24px;margin:6px 0 30px}
.cta-band__title{font-family:var(--font-display);font-weight:700;font-size:1.12rem;color:var(--green-950);margin:0 0 4px}
.cta-band__sub{font-size:.92rem;color:var(--ink-soft);margin:0}
aside.cta-band .cta-band__actions{display:flex;align-items:center;gap:14px;margin:0;flex-wrap:wrap;justify-content:flex-start}
aside.cta-band .cta-band__phone{margin:0;font-family:var(--font-mono);font-size:.88rem;color:var(--green-700);text-decoration:underline;text-underline-offset:3px}
/* contract closures + a11y (playbook 15.15 item 4: 16px inputs) */
.notice--gold{border-left:3px solid var(--gold)}
.calc__fields{min-width:0}
.calc__f input,.calc__f select{font-size:16px}

/* ===== kit v1.1.0 promotions: multifamily.loans v2 site appendix, verbatim (2026-07-23). NOTE: the .calc__table set below intentionally overrides the older hard-coded set above, matching the shipped multifamily cascade. ===== */
.page-hero--ornament .guilloche{position:absolute;right:-200px;top:-160px;width:560px;height:560px;color:var(--green-900);opacity:.07;pointer-events:none}
.rates-embed{margin:18px 0 6px}
.toc{border-left:3px solid var(--gold);background:var(--ledger);padding:16px 20px;margin:0 0 28px}
.toc ol{margin:0;padding-left:20px}
.toc li{margin:3px 0;font-size:.92rem}
.postcard__date{display:block;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:4px}
.calc__note{font-size:.85rem;color:var(--ink-mute);margin-top:10px}
.calc__schedule{margin-top:18px;overflow-x:auto}
.calc__table{width:100%;border-collapse:collapse;font-size:.88rem}
.calc__table th,.calc__table td{padding:8px 12px;border-bottom:1px solid var(--line);text-align:right;font-family:var(--font-mono)}
.calc__table th:first-child,.calc__table td:first-child{text-align:left}
.calc__table thead th{background:var(--ledger);font-weight:500}
.radio-required{border-color:var(--down)!important}
.product-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:22px;margin:22px 0}
.product-card{border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:22px 24px;box-shadow:var(--shadow)}
.product-card h3{margin:0 0 4px;font-size:1.15rem}
.product-card__updated{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-mute);margin:0 0 14px}
.product-card__terms{margin:0;display:grid;gap:0}
.product-card__terms>div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-bottom:1px solid var(--line)}
.product-card__terms>div:last-child{border-bottom:0}
.product-card__terms dt{color:var(--ink-mute);font-size:.88rem;margin:0}
.product-card__terms dd{margin:0;font-family:var(--font-mono);font-size:.88rem;text-align:right}
.product-card__note{font-size:.9rem;color:var(--ink-soft);margin:12px 0 0}
.product-card__link{margin:12px 0 0}
.takeaways{border-left:3px solid var(--gold);background:var(--ledger);padding:18px 22px;margin:26px 0}
.takeaways__title{font-family:var(--font-mono);font-size:.74rem;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-ink);margin:0 0 8px}
.takeaways ul{margin:0;padding-left:20px}
.takeaways li{margin:4px 0}
.tagfooter{margin-top:36px;padding-top:18px;border-top:1px solid var(--line)}
.tagfooter__label{font-family:var(--font-mono);font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin:0 0 10px}
.footer-family{list-style:none;margin:10px 0 0;padding:0}
.footer-family li{margin:4px 0}
.footer-family__title{font-size:.82rem;color:var(--ink-mute);margin:14px 0 0}
.footer-contact{font-size:.9rem;margin-top:14px}
.video-embed{position:relative;padding-bottom:56.25%;height:0;overflow:hidden;border-radius:var(--radius);border:1px solid var(--line)}
.video-embed iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.tomb__deal{font-size:.92rem;color:var(--ink-soft);margin:2px 0 0}
.tomb__funded{font-size:.82rem;color:var(--ink-mute);margin:2px 0 8px}
.aside-links{list-style:none;margin:0;padding:0}
.aside-links li{margin:6px 0;font-size:.9rem}
.faq-section{margin-top:36px}
.faq-section .faq{border-top:1px solid var(--line)}
.faq-section details{border-bottom:1px solid var(--line);padding:14px 0}
.faq-section summary{cursor:pointer;font-weight:600;color:var(--ink);list-style:none;position:relative;padding-right:28px}
.faq-section summary::-webkit-details-marker{display:none}
.faq-section summary::after{content:"+";position:absolute;right:4px;top:0;font-family:var(--font-mono);color:var(--gold-ink)}
.faq-section details[open] summary::after{content:"\2013"}
.faq-section .faq__a{padding:10px 0 4px;color:var(--ink-soft)}

/* ==== KIT v1.1.1 (2026-07-24): about-page anatomy (components/about-page.html) ==== */
.split--founder{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:40px;align-items:start}
.split--founder .person__links{margin-top:6px}
.founder-portrait img{border-radius:50%;width:240px;height:240px;object-fit:cover;outline:1px solid rgba(140,109,47,.6);outline-offset:5px}
.split--contact{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px}
.split--contact .mono{font-size:.72rem;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-mute);margin:0 0 4px}
.split--contact p{margin:0 0 16px}
@media(max-width:820px){.split--founder{grid-template-columns:1fr}.founder-portrait{order:-1}.split--contact{grid-template-columns:1fr}}
/* a person card with no bio collapses to a blank square - never ship one (cmbs defect 2026-07-24) */
.person p:empty{display:none}

/* ==== responsive + post-card fixes (2026-07-25 QA batch) ==== */
/* F2 calculators: .calc__grid ships as repeat(3,1fr) and .calc__out as repeat(2,1fr) with no
   breakpoint, so inputs and results sat in multiple columns at 390px and the schedule clipped. */
@media(max-width:680px){
  .calc__grid{grid-template-columns:1fr}
  .calc__out{grid-template-columns:1fr}
  .calc__fields,.calc__fields--grid{grid-template-columns:1fr}
  .calc[data-calc-pro]{width:auto;left:auto;transform:none}
  .calc[data-calc-pro] .calc__grid{grid-template-columns:1fr;gap:0}
  .calc[data-calc-pro] .calc__outs{border-left:0;padding-left:0;border-top:1px solid #D9DED4;padding-top:16px;margin-top:16px}
  .calc__table{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .calc{padding:18px}
}
/* F3 blog + author index: .postgrid stayed 1fr 1fr on phones. */
@media(max-width:640px){
  .postgrid{grid-template-columns:1fr}
}

/* F7 (found while verifying F4): .postcard is an <a>, and on blog/author indexes the grid sits
   inside .prose, where `.prose a{text-decoration:underline}` (0,1,1) outranks `.postcard`
   (0,1,0) -- so date, title and description all rendered underlined, 589 cards network-wide.
   The card already signals hover with its border, so it needs no underline in either state. */
.prose a.postcard,a.postcard:hover,.prose a.postcard:hover{text-decoration:none}

/* ==== partner-cta (paid referral block, kit v1.1.3) ==== */
/* The paid-referral block. Visually distinct from owned CTAs on purpose: a user must be able to tell
   at a glance that this hands them to a third party. Gold rule + ledger ground = "partner", matching
   the gold accent already used for advisory notices, never the primary green used for our own forms. */
.partner-cta{
  border:1px solid var(--line);
  border-left:3px solid var(--gold);
  border-radius:var(--radius);
  background:var(--ledger);
  padding:22px 24px;
  margin:28px 0;
}
.partner-cta__eyebrow{
  font-family:var(--font-mono);font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--gold-ink);margin:0 0 8px;
}
.partner-cta__title{
  font-family:var(--font-display);font-size:1.22rem;line-height:1.3;color:var(--green-950);
  margin:0 0 8px;
}
.partner-cta__body{font-size:.95rem;color:var(--ink-soft);line-height:1.55;margin:0 0 16px}
.partner-cta__btn{display:inline-block}
/* Disclosure is part of the block, never a footnote. It must be legible, not grey-on-grey:
   --ink-mute on --ledger clears WCAG AA at this size. */
.partner-cta__disclosure{
  font-size:.78rem;line-height:1.5;color:var(--ink-mute);margin:12px 0 0;max-width:60ch;
}
.partner-cta__disclosure a{color:var(--ink-soft);text-decoration:underline;text-underline-offset:2px}
/* Inside a calculator, the block is the next step after the result: tighten the gap so it reads as
   one unit with the numbers above it. */
.calc + .partner-cta{margin-top:18px}
@media(max-width:640px){
  .partner-cta{padding:18px 16px;margin:22px 0}
  .partner-cta__title{font-size:1.1rem}
  .partner-cta__btn{display:block;width:100%;text-align:center}
}

/* ---------- Prose data tables (kit v1.1.4) ----------
   Promoted from the build_crel.py site appendix, where the .table-scroll +
   .prose table system was proved. Before this, body tables on multifamily.loans
   and hud.loans matched no rule at all and rendered unstyled; .terms-table is a
   two-column label/value component whose <=640px block-stacking mangles any
   multi-column data table. Numeric columns opt in with class="num", the rank
   gutter with class="rank". Wrap wide tables in .table-scroll so they scroll
   horizontally on small screens instead of stacking. */
/* .prose is a grid item (.container is display:grid). A grid item defaults to
   min-width:auto, i.e. it refuses to shrink below its content's min-content size, so a
   wide table forces the whole track wider than the viewport and the overflow is then
   clipped by the html/body `overflow-x:clip`, silently cutting the article off on
   phones. min-width:0 lets the track shrink and hands the overflow to .table-scroll,
   which is what should own it. Verified at 375px: .prose 720px -> 323px, no page-level
   horizontal scroll, table still scrolls inside its own wrapper. */
.prose{min-width:0}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:20px 0}
.table-scroll table{margin:0;min-width:min(560px,100%)}
.prose table{width:100%;border-collapse:collapse;margin:20px 0;font-size:.94rem}
.prose th,.prose td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.prose thead th{background:var(--ledger);font-family:var(--font-mono);font-weight:500;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-mute);white-space:nowrap}
.prose td{font-variant-numeric:tabular-nums}
.prose th.num,.prose td.num{text-align:right;white-space:nowrap}
.prose td.rank{width:1%;white-space:nowrap;color:var(--ink-mute);font-family:var(--font-mono);font-size:.82rem}
.prose td.lender{font-weight:500}
.table-note{margin-top:12px;font-size:.8rem;color:var(--ink-mute)}

/* ---------- calc rate-sensitivity readout ---------- */
/* Sits between the results and the disclaimer. Styled as a finding, not a callout: same ink as the
   numbers above it, gold rule to tie it to the figures rather than to the partner block below. */
.calc__sens{
  margin:14px 0 0;padding:10px 0 0;border-top:1px solid var(--line);
  font-size:.9rem;line-height:1.5;color:var(--ink-soft);
}
.calc__sens[hidden]{display:none}
@media(max-width:640px){.calc__sens{font-size:.86rem}}

/* ---------- sidebar partner variant ---------- */
/* Visually subordinate to the site's own CTA directly above it: gold rule instead of the green
   primary, so a visitor can tell at a glance which button is ours and which hands them to a partner. */
.aside-cta--partner{border-left:3px solid var(--gold);background:var(--ledger)}
.aside-cta--partner .aside-cta__title{color:var(--gold-ink)}
.aside-cta__disclosure{font-size:.72rem;line-height:1.45;color:var(--ink-mute);margin:10px 0 12px}

/* ==== commercialrealestate.loans site appendix (build_crel.py; promotion queue) ==== */
.brand__sub{white-space:nowrap}
@media(min-width:1151px){.brand__sub{font-size:.56rem;letter-spacing:.16em}}
@media(max-width:1150px){.brand__sub{font-size:.5rem;letter-spacing:.12em}}
@media(max-width:430px){.brand__sub{font-size:.44rem;letter-spacing:.06em}
  .site-header .header-cta .btn{padding:9px 14px;font-size:.85rem}}
.article{padding:44px 0 8px}
.article .container--text h1{margin-bottom:14px}
.article .container--text .lede{margin-bottom:8px}
.article .postcard__date{margin:0 0 10px}
.article .prose{padding-bottom:24px}
.breadcrumb__sep{opacity:.45;margin:0 2px}
.display-l{font-size:clamp(1.8rem,1.2rem + 2.2vw,2.9rem);line-height:1.1;margin:0 0 12px}
.menu--wide{columns:2;column-gap:20px;min-width:min(560px,86vw)}
.menu--wide a{break-inside:avoid}
@media (max-width:1150px){.menu--wide{columns:1;min-width:0}}
.post-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:18px}
.post-card{border:1px solid var(--rule,rgba(11,47,35,.14));border-radius:10px;padding:18px 18px 16px;background:var(--surface,#fff)}
.post-card h3{margin:0 0 6px;font-size:1.06rem;line-height:1.3}
.post-card h3 a{text-decoration:none}
.post-card h3 a:hover{text-decoration:underline}
.post-card__meta{margin:0 0 8px;font-size:.78rem;letter-spacing:.04em;text-transform:uppercase;opacity:.6}
.post-card p{margin:0;font-size:.93rem;opacity:.86}
.hub-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px 20px}
.hub-list li{margin:0}
.tagfooter{margin-top:28px;font-size:.9rem}
.tagfooter a{margin-right:10px;white-space:nowrap}
.takeaways{border-left:3px solid var(--gold,#B08D3F);padding:4px 0 4px 18px;margin:0 0 24px}
.takeaways__title{margin:0 0 6px;font-size:.8rem;letter-spacing:.09em;text-transform:uppercase;opacity:.7}
.takeaways ul{margin:0;padding-left:18px}
.faq-section{margin-top:40px}
.faq{border-top:1px solid var(--rule,rgba(11,47,35,.14));padding:12px 0}
.faq summary{cursor:pointer;font-weight:600}
.faq__a{padding-top:8px}
.faq__a p:first-child{margin-top:0}
.doc-note{font-size:.9rem;opacity:.75}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:20px 0}
.table-scroll table{margin:0;min-width:min(560px,100%)}
.prose table{width:100%;border-collapse:collapse;margin:20px 0;font-size:.94rem}
.prose th,.prose td{border:1px solid var(--rule,rgba(11,47,35,.14));padding:8px 10px;text-align:left;vertical-align:top}
.prose img{max-width:100%;height:auto;border-radius:8px}
aside.cta-inline{display:flex;align-items:center;justify-content:space-between;gap:18px 26px;flex-wrap:wrap;border:1px solid #D9DED4;border-left:3px solid #8C6D2F;border-radius:3px;background:#F1F2EC;padding:20px 24px;margin:6px 0 30px}
.cta-band__title{font-family:Besley,serif;font-weight:700;font-size:1.12rem;color:#08251C;margin:0 0 4px}
.cta-band__sub{font-size:.92rem;color:#3D463F;margin:0}
aside.cta-inline .cta-band__actions{display:flex;align-items:center;gap:14px;margin:0;flex-wrap:wrap;justify-content:flex-start}
aside.cta-inline .cta-band__phone{margin:0;font-family:"IBM Plex Mono",monospace;font-size:.88rem;color:#145C43;text-decoration:underline;text-underline-offset:3px}
.cta-band .container.cta-band__inner{position:relative;text-align:center;max-width:760px}
.cta-band__inner .display-l{color:#fff;max-width:820px;margin:0 auto}
.cta-band__inner .lede{margin:18px auto 0;max-width:560px}
.cta-band__inner .cta-band__actions{margin-top:34px}
.cta-band__phone{margin-top:22px;font-family:"IBM Plex Mono",monospace;font-size:.88rem;color:#9DC3AF}
.cta-band__phone a{color:#fff;text-decoration:underline;text-underline-offset:3px}
.calc__title{margin:0 0 12px;font-size:.82rem;letter-spacing:.09em;text-transform:uppercase;opacity:.7}
/* Seeded inputs mean the amortization schedule now renders on load (360 rows on a 30-year
   amortization). Cap the viewport it occupies so the table is browsable instead of burying
   the rest of the page. Promotion candidate for kit/cre. */
.calc__schedule{max-height:min(58vh,480px);overflow:auto;overscroll-behavior:contain}
/* Calculator input grid. apartment.loans ships
   .calc__fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr))}
   and this site shipped only the mobile override, so every calculator rendered its fields
   in a single full-width column at every breakpoint while the rest of the family laid them
   out two and three across. The mobile 1fr rule further down still wins under its media
   query, so this only changes the desktop layout. Promotion candidate for kit/cre. */
.calc__fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0 18px;align-content:start}
/* Testimonial quote cards. Deliberately 2-up, not the 3-up .exec-grid: these sit inside
   .container--text, so three columns gave each card about 250px and broke the quotes to
   two or three words a line. Promotion candidate for kit/cre. */
.quote-grid{display:grid;grid-template-columns:1fr 1fr;gap:22px;align-items:stretch}
/* Calculator output rows - ported from apartment.loans' site layer. Without these the
   engine's "Label<strong>value</strong>" writes render as run-on text
   ("Interest-Only Payment$27,083.33"). Same engine, missing presentation contract. */
.calc__out{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:6px 18px;padding:10px 0;border-bottom:1px solid var(--line)}
.calc__out:last-child{border-bottom:0}
.calc__out strong{font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums;font-size:1.3rem;font-weight:500;margin-left:auto}
.calc__out span{flex-basis:100%;display:flex;justify-content:space-between;align-items:baseline;gap:18px}
.calc__out span strong{margin-left:auto}
@media (max-width:720px){.quote-grid{grid-template-columns:1fr}}
