:root {
  color-scheme: light;
  --background: #fcf8f5;
  --surface: #ffffff;
  --ink: #103d47;
  --muted: #637477;
  --line: #eadfd7;
  --line-strong: #d9cabe;
  --accent: #ff8b52;
  --accent-halo: #ffe2d3;
  --focus: #103d47;
}
* { box-sizing: border-box; }
[hidden] { display: none !important; }
/* Reserved until the Wasm search is ready, so the table never jumps down when it appears. */
.controls.pending { visibility: hidden; opacity: 0; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--background);
  color: var(--ink);
  /* The same type as the home page: the reader's own system font, so nothing to download. */
  font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Inter, Roboto, "Helvetica Neue", Arial, sans-serif;
  font-size: 15px;
  line-height: 1.45;
  -webkit-font-smoothing: antialiased;
}
a { color: inherit; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
a:hover { text-decoration-color: var(--accent); }
:focus-visible { outline: 2px solid var(--focus); outline-offset: 2px; border-radius: 2px; }
.visually-hidden {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* As wide as the home page, so the header doesn't shift moving between them. */
.site, main, footer { width: 100%; max-width: 1228px; margin: 0 auto; padding-inline: 24px; }
/* The header (firm_index::nav, the same on every page): the wordmark, the six sections in a
   pill, and the way in. On narrow screens the sections take their own row and scroll sideways. */
.site { padding-block: 22px 0; display: flex; align-items: center; gap: 12px 14px; flex-wrap: wrap; }
.site .wordmark { margin-right: auto; }
.site-nav { display: flex; align-items: center; gap: 2px; padding: 4px; border: 1px solid rgba(217, 202, 190, .6); border-radius: 999px; background: rgba(255, 255, 255, .7); box-shadow: 0 1px 2px rgba(16, 61, 71, .04); }
.site-nav a { padding: 7px 13px; border-radius: 999px; font-size: 14px; font-weight: 500; text-decoration: none; color: #4d6164; white-space: nowrap; }
.site-nav a:hover { color: var(--ink); background: #f3ebe4; }
.site-nav a[aria-current] { color: var(--ink); background: var(--surface); box-shadow: inset 0 0 0 1px var(--line-strong); }
.account { display: flex; align-items: center; gap: 4px; }
.account a { padding: 8px 14px; border-radius: 999px; font-size: 14px; font-weight: 600; text-decoration: none; white-space: nowrap; color: var(--ink); }
.account .signin:hover { background: #f3ebe4; }
.account .join { background: var(--ink); color: #fff; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .1), 0 6px 14px -8px rgba(16, 61, 71, .7); }
.account .join:hover { background: #0b2f37; }
/* A section's pages, at the top of its main pages. */
.subnav { display: flex; gap: 2px 4px; margin: 18px 0 0; overflow-x: auto; scrollbar-width: none; border-bottom: 1px solid var(--line); }
.subnav::-webkit-scrollbar { display: none; }
.subnav a { flex: none; margin-bottom: -1px; padding: 9px 10px 10px; border-bottom: 2px solid transparent; font-size: 14px; color: var(--muted); text-decoration: none; white-space: nowrap; }
.subnav a:hover { color: var(--ink); }
.subnav a[aria-current] { color: var(--ink); border-bottom-color: var(--accent); font-weight: 600; }
/* The Research overview's cards. */
.hub { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px; margin: 0 0 28px; padding: 0; list-style: none; }
.hub a { display: grid; align-content: start; gap: 6px; height: 100%; padding: 20px 22px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; text-decoration: none; }
.hub a:hover { border-color: #f1c9b4; box-shadow: 0 1px 2px rgba(16, 61, 71, .05), 0 18px 36px -26px rgba(16, 61, 71, .3); }
.hub strong { font-size: 17px; letter-spacing: -.2px; }
.hub span { color: var(--muted); font-size: 14px; line-height: 1.5; }
/* Three by three, so no row is left short; the source and how often it's read sit above each title. */
.hub.three { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
.hub.three a { gap: 8px; padding: 22px 24px 24px; }
.hub em { font-style: normal; color: #c2541c; font-size: 12px; font-weight: 650; letter-spacing: .02em; }
.hub.three li.wide { grid-column: 1 / -1; }
@media (max-width: 760px) { .hub.three { grid-template-columns: minmax(0, 1fr); } }
.wordmark {
  display: inline-flex; align-items: center; gap: 11px;
  font-size: 17px; letter-spacing: -0.4px; text-decoration: none;
}
.wordmark strong { font-weight: 750; }
.brand-dot {
  width: 10px; height: 10px; border-radius: 50%;
  background: var(--accent); box-shadow: 0 0 0 3px var(--accent-halo);
}

.intro { padding-block: 48px 32px; max-width: 720px; }
h1 {
  margin: 0; font-size: clamp(30px, 5vw, 46px); font-weight: 750;
  line-height: 1.08; letter-spacing: -1.1px; text-wrap: balance;
}
/* Headings break into lines of even length, never one word left on the last. */
h2, h3 { text-wrap: balance; }
.intro p { margin: 16px 0 0; color: var(--muted); font-size: 16px; }
/* A directory's or report's opening: the promise (what the reader gets, and the ways in) beside the
   proof (a headline figure over the chart), two columns of the same weight, centered on each other. */
.intro.opening { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px 56px; align-items: start; max-width: none; }
.intro .lead { margin-top: 14px; color: var(--ink); font-size: clamp(17px, 1.7vw, 20px); line-height: 1.45; text-wrap: pretty; }
.benefits { display: grid; gap: 12px; margin: 22px 0 0; padding: 0; list-style: none; }
.benefits li { position: relative; padding-left: 32px; color: var(--muted); font-size: 15px; line-height: 1.5; text-wrap: pretty; }
.benefits li::before { content: ""; position: absolute; left: 0; top: 1px; width: 21px; height: 21px; border-radius: 50%; background: var(--accent-halo); }
.benefits li::after { content: ""; position: absolute; left: 7px; top: 7.5px; width: 7px; height: 4px; border-left: 2px solid #c2541c; border-bottom: 2px solid #c2541c; transform: rotate(-45deg); }
.benefits strong { color: var(--ink); }
/* The ways in: two buttons of the same size, the main one filled. */
.intro .actions { display: flex; flex-wrap: wrap; gap: 10px; margin: 24px 0 0; }
.go { display: inline-flex; align-items: center; min-height: 44px; padding: 0 18px; border: 1px solid var(--ink); border-radius: 10px; background: var(--ink); color: #fff; font-size: 15px; font-weight: 650; text-decoration: none; box-shadow: 0 8px 18px -10px rgba(16, 61, 71, .7); }
.go:hover { background: #0b2f37; }
.go.alt { border-color: var(--line-strong); background: var(--surface); color: var(--ink); box-shadow: none; }
.go.alt:hover { border-color: var(--ink); background: var(--surface); }
/* The proof: the figure that matters, the chart, and its numbers and images. */
.proof { padding: 20px 22px 14px; background: var(--surface); border: 1px solid var(--line); border-radius: 16px; box-shadow: 0 1px 2px rgba(16, 61, 71, .04), 0 22px 44px -32px rgba(16, 61, 71, .3); }
.intro .proof-figure { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 10px; margin: 0 0 16px; padding-bottom: 14px; border-bottom: 1px solid var(--line); color: var(--muted); font-size: 14px; }
.proof-figure strong { color: var(--ink); font-size: 34px; font-weight: 750; letter-spacing: -1px; line-height: 1; font-variant-numeric: tabular-nums; }
.proof .chart { margin: 0; }
.proof-foot { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 16px; margin-top: 6px; }
.intro .proof-foot .share { margin: 0; font-size: 12.5px; }
.proof-foot .chart-data { margin: 0; }
.proof-foot .chart-data[open] { flex-basis: 100%; }
/* The numbers scroll inside their own box, so opening them never stretches the page. */
.chart-data .numbers { max-height: 248px; overflow: auto; margin-top: 8px; border-top: 1px solid var(--line); }
.chart-data .numbers table { margin-top: 0; width: 100%; }
.chart-data .numbers thead th { position: sticky; top: 0; background: var(--surface); }
/* A profile's opening (firm, adviser, LP): its figures sit two by two in the card, the chart under them. */
.intro.opening.profile { padding-top: 18px; }
.profile.opening h1 { font-size: clamp(30px, 4vw, 44px); }
.opening .aka { margin: 8px 0 0; color: var(--muted); }
.proof .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; margin: 0 0 14px; }
.proof .tile:nth-last-child(-n + 2) { border-bottom: 0; }
.proof-foot:empty { display: none; }
.proof .tile { padding: 12px 0; background: none; border: 0; border-bottom: 1px solid var(--line); border-radius: 0; }
.proof .tile span { font-size: 13px; }
.proof .tiles + .chart { margin-top: 4px; }
/* The offer to a listing that hasn't claimed its page. */
.offer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; margin: 0 0 28px; padding: 16px 20px; background: var(--accent-halo); border-radius: 14px; }
.offer p { flex: 1 1 420px; margin: 0; color: var(--ink); font-size: 15px; }
/* A listing's updates, filled in by the browser module from its profile on Hottub. */
.updates .feed { display: grid; gap: 12px; margin: 12px 0; }
.updates .post { padding: 14px 18px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; }
.updates .post p { margin: 0; }
.updates .post-head { margin-bottom: 6px; color: var(--muted); font-size: 13.5px; }
.updates .byline { color: var(--ink); font-weight: 600; }
.updates .post p.small { margin-top: 6px; font-size: 13.5px; }
/* A username under a page's name (hottub.vc/@name). */
.profile .handle { margin: -6px 0 8px; color: var(--muted); font-size: 15px; }
.profile .handle a { color: inherit; text-decoration: none; }
/* How matching works (hottub.vc/matching/, src/matches.rs): the worked example, the calculators
   (live through app/web/src/calculator.rs), and each model's factors. */
.score-ring { display: block; flex: none; }
.calc-score { display: flex; align-items: center; gap: 14px; margin: 0 0 8px; }
.calc-label { margin: 0; font-size: 18px; }
table.factors { border-collapse: collapse; margin: 4px 0 8px; font-size: 14px; }
table.factors th, table.factors td { padding: 4px 12px 4px 0; text-align: left; font-weight: 400; white-space: nowrap; vertical-align: middle; }
table.factors td.points { color: var(--muted); font-variant-numeric: tabular-nums; }
.factor-bar { display: block; }
.gate { padding: 0 6px; border-radius: 999px; border: 1px solid var(--line-strong); color: var(--muted); font-size: 11px; }
ul.fit-reasons, ul.fit-concerns { margin: 4px 0 0; padding-left: 18px; font-size: 14px; line-height: 1.5; }
ul.fit-concerns { color: var(--muted); }
.calculators { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 520px), 1fr)); gap: 18px; margin: 12px 0 8px; }
.calculator { display: grid; gap: 12px; align-content: start; padding: 20px 22px; background: var(--surface); border: 1px solid var(--line); border-radius: 16px; }
.calculator h3 { margin: 0; font-size: 17px; }
.calc-sides { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.calc-side { display: grid; gap: 10px; align-content: start; }
.calc-title { margin: 0; color: var(--muted); font-size: 13px; font-weight: 600; }
.calculator .field { display: grid; gap: 4px; font-size: 13.5px; }
.calculator input[type="number"], .calculator input[type="text"], .calculator select { width: 100%; min-width: 0; height: 36px; padding: 0 10px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface); color: var(--ink); font: inherit; font-size: 14px; }
.calculator .pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.calculator select { padding-right: 30px; }
/* Checkboxes keep their own size (the site's inputs are full-width fields), on a compact grid. */
.calculator input[type="checkbox"] { flex: none; width: 16px; height: 16px; margin: 1px 0 0; padding: 0; border-radius: 4px; accent-color: var(--ink); box-shadow: none; }
.calculator fieldset.boxes { display: grid; grid-template-columns: repeat(auto-fill, minmax(118px, 1fr)); gap: 6px 12px; margin: 0; padding: 0; border: 0; font-size: 13px; }
.calculator fieldset.boxes legend { margin-bottom: 6px; padding: 0; font-size: 13.5px; }
.calculator label.check { display: flex; align-items: flex-start; gap: 7px; font-size: 13px; line-height: 1.3; cursor: pointer; }
.calc-result { padding-top: 12px; border-top: 1px solid var(--line); }
.example-match { margin-top: 4px; }
.model .table-wrap { overflow-x: auto; }
.model-factors td { white-space: normal; }
ol.rules-list { max-width: 820px; padding-left: 20px; line-height: 1.6; }
@media (max-width: 700px) { .calc-sides { grid-template-columns: minmax(0, 1fr); } }
/* A directory's kinds: the name and its count on one line, what it is under them. */
.kind-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 0 28px; margin: 4px 0 0; padding: 0; list-style: none; }
.kind-grid li { padding: 12px 0 14px; border-top: 1px solid var(--line); }
.kind-grid a { font-weight: 600; }
.kind-grid .meta { margin-left: 4px; color: var(--muted); font-size: 13.5px; font-variant-numeric: tabular-nums; }
.kind-grid p { margin: 4px 0 0; color: var(--muted); font-size: 14px; line-height: 1.45; }
/* A page's share image, shown as an image so search engines and language models index it. */
.share-image { display: grid; grid-template-columns: minmax(0, 520px) minmax(0, 1fr); gap: 8px 28px; align-items: end; margin: 8px 0 32px; }
.share-image h2 { grid-column: 1 / -1; margin: 0 0 4px; font-size: 18px; letter-spacing: -.2px; }
.share-card { display: block; }
.share-card img { display: block; width: 100%; height: auto; border: 1px solid var(--line); border-radius: 12px; }
.share-image p { max-width: 360px; margin: 0; }
@media (max-width: 700px) { .share-image { grid-template-columns: 1fr; } }

/* What else the page offers, under both columns. */
.intro .also { grid-column: 1 / -1; margin: 0; font-size: 14px; }
.intro .ask { margin-top: 14px; color: var(--muted); font-size: 15px; line-height: 1.5; text-wrap: pretty; }
@media (max-width: 900px) {
  .intro.opening { grid-template-columns: minmax(0, 1fr); }
}

.controls.offices { grid-template-columns: minmax(220px, 1fr) repeat(2, auto) auto; }
.controls {
  position: sticky; top: 0; z-index: 2;
  display: grid; grid-template-columns: minmax(220px, 1fr) repeat(3, auto) auto;
  gap: 10px 12px; align-items: end;
  padding-block: 10px 12px; margin-bottom: 4px;
  background: var(--background);
  transition: opacity 180ms ease-out;
}
.controls label { display: grid; gap: 4px; min-width: 0; }
.controls label > span { color: var(--muted); font-size: 12.5px; }
input, select {
  width: 100%; height: 40px; min-width: 0;
  border: 1px solid var(--line-strong); border-radius: 10px;
  background: var(--surface); color: var(--ink);
  font: inherit; font-size: 15px;
}
input { padding: 0 38px 0 12px; }
input::placeholder { color: #8a979a; }
select { padding: 0 30px 0 10px; appearance: none; cursor: pointer;
  background-image: linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);
  background-position: right 15px top 18px, right 10px top 18px;
  background-size: 5px 5px; background-repeat: no-repeat; }
input:focus, select:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px var(--accent-halo); }
.search { position: relative; align-self: end; }
.search kbd {
  position: absolute; right: 10px; bottom: 10px;
  min-width: 20px; padding: 1px 5px; border: 1px solid var(--line-strong); border-radius: 4px;
  color: var(--muted); font-size: 12px; line-height: 16px; text-align: center;
}
.search input:focus + kbd, .search input:not(:placeholder-shown) + kbd { display: none; }
.count { align-self: center; padding-top: 16px; color: var(--muted); font-size: 13px; white-space: nowrap; font-variant-numeric: tabular-nums; }

/* A directory: one white card. A table clips nothing, so its corner cells carry the corners. */
.index { width: 100%; border-collapse: separate; border-spacing: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; font-variant-numeric: tabular-nums; }
.index th, .index td { padding: 14px 16px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.index thead th { padding-block: 12px; color: var(--muted); font-size: 12.5px; font-weight: 400; }
.index thead th:first-child { border-top-left-radius: 13px; }
.index thead th:last-child { border-top-right-radius: 13px; }
.index tbody tr:last-child > * { border-bottom: 0; }
.index tbody tr:last-child > :first-child { border-bottom-left-radius: 13px; }
.index tbody tr:last-child > :last-child { border-bottom-right-radius: 13px; }
.index tbody tr:hover > * { background: #fff8f3; }
.index tbody tr:target > * { background: var(--accent-halo); }
.index .rank { width: 44px; color: var(--muted); font-size: 13px; }
.index .firm { font-weight: 700; font-size: 15px; }
.index .firm a { text-decoration: none; }
.index .firm a:hover { text-decoration: underline; text-decoration-color: var(--accent); }
.index .aka, .index .meta { display: block; margin-top: 2px; color: var(--muted); font-size: 13px; font-weight: 400; }
.index .hq { width: 17%; }
.index .fund { width: 34%; }
.index .num { text-align: right; white-space: nowrap; }
.index td.size { font-weight: 700; font-size: 16px; }
.index td.aum { color: var(--muted); }

.empty { padding: 48px 0; color: var(--muted); text-align: center; }
.elsewhere { margin: 12px 0 4px; padding: 10px 14px; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; color: var(--muted); font-size: 14px; }
.elsewhere a { color: var(--ink); }
.elsewhere a.all { white-space: nowrap; }

/* Profile pages */
.crumbs { padding-top: 40px; color: var(--muted); font-size: 13px; }
.crumbs a { color: var(--muted); }
.profile { padding-block: 14px 24px; max-width: 820px; }
.profile h1 { font-size: clamp(28px, 4.4vw, 42px); }
.profile .aka { margin: 8px 0 0; color: var(--muted); }
.facts-line { margin: 12px 0 0; font-size: 15px; }
.facts-line span[aria-hidden] { color: var(--line-strong); padding-inline: 4px; }
.claim { margin: 14px 0 0; color: var(--muted); font-size: 14px; }
.tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 14px 0 0; padding: 0; list-style: none; }
.tags li { padding: 3px 10px; border-radius: 999px; background: var(--surface); border: 1px solid var(--line); font-size: 12px; color: var(--muted); }
/* A chip that leads to its stage's or sector's page: the whole pill is the link. */
.tags a { display: block; margin: -3px -10px; padding: 3px 10px; border-radius: inherit; color: inherit; text-decoration: none; }
.tags li:has(> a):hover { border-color: #f1c9b4; background: #fff7f2; color: var(--ink); }
.tags .n { margin-left: 3px; color: var(--muted); font-variant-numeric: tabular-nums; }
.browse .tags { margin: 0 0 6px; }
.browse .subhead { margin: 20px 0 10px; font-size: 15px; }
.tiles { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; margin-bottom: 32px; }
.tile { display: grid; gap: 2px; align-content: start; padding: 16px 18px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; min-width: 0; }
.tile span { color: var(--muted); font-size: 13px; }
.tile strong { font-size: 24px; letter-spacing: -.5px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.tile em { font-style: normal; color: var(--muted); font-size: 13px; }
.block { margin-bottom: 40px; }
.block p { max-width: 820px; }
.subhead { margin: 20px 0 8px; color: var(--muted); font-size: 13px; font-weight: 400; }
.tags.plain { margin: 0; }
.tags.plain li { color: var(--ink); font-size: 13px; }
ol.sources { margin: 12px 0 0; padding-left: 22px; color: var(--muted); font-size: 12px; columns: 2 360px; column-gap: 32px; }
ol.sources a { overflow-wrap: anywhere; }
ol.sources li { break-inside: avoid; margin-bottom: 3px; }
ul.link-list { display: grid; gap: 6px; margin: 0; padding: 0; list-style: none; }
ul.link-list .meta { color: var(--muted); font-size: 13px; }
.index.programs .kind { width: 18%; font-size: 14px; }
.index.programs .fund { width: 20%; }
.block h2, .method h2 { margin: 0 0 12px; font-size: 20px; letter-spacing: -.3px; }
.block .lede, .block .muted { max-width: 760px; color: var(--muted); font-size: 14px; }
.muted { color: var(--muted); }
/* A table of data: one white card, its scrolling kept inside it. */
.table-scroll { position: relative; overflow-x: auto; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; }
table.data { width: 100%; border-collapse: collapse; font-size: 14px; font-variant-numeric: tabular-nums; }
table.data:not(.table-scroll > table) { background: var(--surface); border: 1px solid var(--line); }
.data th, .data td { padding: 13px 16px; text-align: left; vertical-align: top; border-bottom: 1px solid var(--line); }
.data thead th { padding-block: 11px; color: var(--muted); font-size: 12.5px; font-weight: 400; white-space: nowrap; }
.data tbody th { font-weight: 600; }
.data tbody tr:last-child > * { border-bottom: 0; }
.data .num { text-align: right; white-space: nowrap; }
.data .meta { display: block; color: var(--muted); font-size: 12px; font-weight: 400; }
.badge { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 11px; font-weight: 600; background: var(--accent-halo); color: #8f3a0f; white-space: nowrap; }
.badge.q1 { background: #e0f2e9; color: #1f7a52; }
.badge.q2 { background: #e8f0e3; color: #4c6b2a; }
.badge.q3 { background: #fbefd6; color: #8a5a00; }
.badge.q4 { background: #fbe3e1; color: #b3261e; }
.standing { display: grid; gap: 4px; min-width: 170px; }
.standing .meta { display: inline; }
.strip { width: 120px; height: 12px; }
.strip line { stroke: var(--line-strong); stroke-width: 2; }
.strip line.median { stroke: var(--muted); stroke-width: 1.5; }
.strip circle { fill: var(--ink); }
.standing.q1 .strip circle { fill: #1f7a52; }
.standing.q4 .strip circle { fill: #b3261e; }
.valuebar { display: block; width: 140px; height: 14px; }
.valuebar .paid, .key.paid { fill: #b9c7c9; background: #b9c7c9; }
.valuebar .dist, .key.dist { fill: #1f7a52; background: #1f7a52; }
.valuebar .nav, .key.nav { fill: #8cc7a9; background: #8cc7a9; }
.key { display: inline-block; width: 10px; height: 10px; border-radius: 2px; margin: 0 4px 0 10px; vertical-align: -1px; }
.key:first-child { margin-left: 0; }
.peerchart { margin: 4px 0 12px; max-width: 760px; }
.peerchart svg { display: block; width: 100%; height: auto; }
.peerchart .axis { stroke: var(--line-strong); stroke-width: 1.5; }
.peerchart .zero { stroke: var(--muted); stroke-dasharray: 2 3; }
.peerchart circle.peer { fill: #b9c7c9; fill-opacity: .85; }
.peerchart circle.this { fill: var(--accent); stroke: var(--ink); stroke-width: 2; }
.peerchart text { fill: var(--muted); font-family: inherit; font-size: 11px; }
.data tr.this > * { background: var(--accent-halo); }
.data.peers { max-width: 760px; }
/* Buttons, filters, and tabs (directories rendered by the app Worker) */
.button {
  display: inline-flex; align-items: center; min-height: 40px; padding: 0 16px; border: 1px solid var(--line-strong); border-radius: 10px;
  background: var(--surface); color: var(--ink); font: inherit; font-size: 14px; font-weight: 600; text-decoration: none; cursor: pointer; white-space: nowrap;
}
.button:hover { border-color: var(--ink); }
.button.primary { background: var(--ink); border-color: var(--ink); color: #fff; }
.actions-row { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 18px; }
/* A directory's filters: its tabs on their own row, then search and selects together on one. */
.filters { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-bottom: 16px; }
.filters input[type="search"], .filters select { height: 40px; min-width: 0; font-size: 14px; }
.filters input[type="search"] { flex: 1 1 240px; width: auto; padding: 0 12px; }
.filters select { flex: 0 1 auto; width: auto; max-width: 260px; padding: 0 30px 0 12px; }
.tabs { flex: 0 0 100%; display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 2px; }
.tabs a { padding: 7px 13px; border-radius: 999px; font-size: 14px; text-decoration: none; color: var(--muted); }
.tabs a:hover { color: var(--ink); background: #f3ebe4; }
.tabs a[aria-current="page"] { background: var(--ink); color: #fff; }
/* Figures or charts side by side, each on its own card. */
.panels { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; margin-bottom: 40px; }
.panel-card { min-width: 0; padding: 20px 22px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; }
.panel-card h2, .panel-card h3 { margin: 0 0 4px; font-size: 16px; letter-spacing: -.1px; }
.panel-card > p { margin: 0 0 12px; color: var(--muted); font-size: 13.5px; }
.panel-card .chart { margin: 0; }
.panel-card .hbars { margin-bottom: 0; }
@media (max-width: 900px) { .panels { grid-template-columns: minmax(0, 1fr); } }
/* Steps that really are in order. */
ol.steps { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; counter-reset: step; }
ol.steps li { padding: 18px 20px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; color: var(--muted); font-size: 14px; line-height: 1.5; counter-increment: step; }
ol.steps li::before { content: counter(step); display: block; margin-bottom: 8px; color: #c2541c; font-size: 13px; font-weight: 700; }
ol.steps strong { display: block; margin-bottom: 2px; color: var(--ink); font-size: 15px; }
.nowrap { white-space: nowrap; }
.data .partial { color: var(--muted); }

/* Daily report */
.two-col { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.two-col h3 { margin: 0 0 10px; font-size: 15px; font-weight: 650; color: var(--ink); }
ol.highlights { list-style: none; margin: 0; padding: 0; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; }
ol.highlights li { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; padding: 13px 16px; border-top: 1px solid var(--line); }
ol.highlights li:first-child { border-top: 0; }
ol.highlights .name { font-weight: 700; text-decoration: none; overflow-wrap: anywhere; }
ol.highlights a.name:hover { text-decoration: underline; text-decoration-color: var(--accent); }
ol.highlights .amount { font-weight: 700; font-variant-numeric: tabular-nums; }
ol.highlights .meta { grid-column: 1 / -1; color: var(--muted); font-size: 12px; }
.status { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; white-space: nowrap; color: var(--muted); font-variant-numeric: tabular-nums; }
.status.done { color: #1f7a52; font-weight: 600; }
.status.done::before { content: "✓"; }
.status.live { color: #b4461f; font-weight: 600; }
.status.live::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 3px var(--accent-halo); }
.meter { width: 64px; height: 6px; border-radius: 3px; }
.meter .track { fill: #efe6de; }
.meter .fill { fill: var(--accent); }
details.log, details.spvs { margin: 8px 0 24px; }
details.log > summary, details.spvs > summary { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; cursor: pointer; list-style: none; padding: 12px 0; border-top: 1px solid var(--line); }
details.log > summary::-webkit-details-marker, details.spvs > summary::-webkit-details-marker { display: none; }
details.log > summary h2, details.spvs > summary h2 { margin: 0; font-size: 18px; }
details.log > summary h2::before, details.spvs > summary h2::before { content: "▸ "; color: var(--muted); }
details[open].log > summary h2::before, details[open].spvs > summary h2::before { content: "▾ "; }
details.log > summary .meta, details.spvs > summary .meta { color: var(--muted); font-size: 13px; }
details.log p { max-width: 760px; color: var(--muted); font-size: 14px; }
.data.compact th, .data.compact td { padding-block: 8px; font-size: 13px; }
.data.filings td:last-child a { font-size: 13px; }
.feed-url input { width: 100%; max-width: 560px; height: 40px; padding: 0 12px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface); font: inherit; color: var(--ink); }
.feed-url + .actions-row a { font-size: 14px; }
ul.feed-items { list-style: none; margin: 0; padding: 0; }
ul.feed-items li { padding: 12px 0; border-top: 1px solid var(--line); }
ul.feed-items p { margin: 4px 0 0; color: var(--muted); font-size: 14px; max-width: 820px; }

/* Venture Ecosystem Index */
.data.eco .rank { width: 36px; color: var(--muted); font-size: 13px; }
.data.eco td.score { font-weight: 700; }
.data.eco td.score .meter { display: block; margin: 5px 0 0 auto; }
/* Charts drawn by firm_index::chart (colors are in the SVG, so the files work on their own). */
.chart { margin: 0 0 6px; max-width: 900px; }
.chart figcaption { margin-bottom: 8px; color: var(--ink); font-size: 14px; font-weight: 650; line-height: 1.35; }
/* The numbers behind a chart, folded under it: what a screen reader, a search engine, or a reader
   who wants the figures gets. */
.chart-data { margin: 0 0 18px; font-size: 13px; }
.chart-data summary { width: fit-content; color: var(--muted); cursor: pointer; }
.chart-data summary:hover { color: var(--ink); }
.chart-data table { margin-top: 8px; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.chart-data th, .chart-data td { padding: 4px 16px 4px 0; text-align: left; font-weight: 400; border-bottom: 1px solid var(--line); }
.chart-data thead th { color: var(--muted); font-size: 12px; }
.chart-data .num { text-align: right; }
.chart svg { display: block; width: 100%; height: auto; }
/* On the page a chart's words match the page's; its image files keep the font they carry. */
.chart svg text { font-family: inherit; }
/* A chart of its own in a section: on a card, like every other figure. */
.block > .chart { max-width: none; margin-bottom: 10px; padding: 18px 22px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; }
.block > .chart svg { max-width: 940px; margin-inline: auto; }
.proof .tiles.three { flex: 0 0 auto; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 16px; }
.proof .tiles.three .tile { padding: 0; border: 0; }
.share { margin: 0 0 22px; color: var(--muted); font-size: 12px; }
.cta-band { padding: 22px 24px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; }
.cta-band h2 { margin-bottom: 6px; }
.cta-band .lede { margin: 0; }
.index.advisers .hq, .index.lps .hq { width: 20%; }
.index.capital .hq { width: 20%; }
.index.capital .fund { width: 46%; font-size: 14px; }
.index.capital tr[id] { scroll-margin-top: 84px; }
dl.kinds { margin: 0; max-width: 820px; font-size: 14px; }
dl.kinds dt { margin-top: 12px; font-weight: 700; }
dl.kinds dt:first-child { margin-top: 0; }
dl.kinds dt .meta { margin-left: 4px; color: var(--muted); font-size: 13px; font-weight: 400; }
dl.kinds dd { margin: 2px 0 0; color: var(--muted); }
.index .firm .badge { margin-left: 6px; vertical-align: 1px; }
.index.lps td.size .meta { color: #1f7a52; font-size: 12px; }
h3.subhead { margin: 20px 0 8px; font-size: 14px; }
.qchart { margin: 0 0 16px; }
.qchart figcaption { margin-bottom: 6px; color: var(--muted); font-size: 13px; }
.qchart svg { display: block; width: 100%; height: auto; }
.qchart .bar { fill: var(--accent); }
.qchart .bar:hover { fill: var(--ink); }
.qchart .axis { stroke: var(--line-strong); stroke-width: 1; }
.qchart text { fill: var(--muted); font-family: inherit; font-size: 11px; }

/* Company pages */
ul.people-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 8px; }
ul.people-list li { padding: 10px 14px; background: var(--surface); border: 1px solid var(--line); border-radius: 10px; }
ul.people-list .meta { display: block; color: var(--muted); font-size: 12px; margin-top: 2px; }
.filing-links { font-size: 13px; white-space: nowrap; }
.cta { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin: 8px 0 32px; padding: 18px 20px; background: var(--accent-halo); border-radius: 14px; }
.cta p { margin: 0; max-width: 680px; }

/* Pricing, legal, newsletter, sponsors (pages rendered by the app Worker) */
.plans { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin: 8px 0 32px; }
.plan { display: grid; grid-row: span 7; grid-template-rows: subgrid; row-gap: 8px; align-content: start; padding: 22px; background: var(--surface); border: 1px solid var(--line); border-radius: 12px; }
.plan.featured { border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-halo); }
.plan h2 { margin: 0; font-size: 18px; }
.plan .price { margin: 0; }
.plan .price strong { font-size: 30px; letter-spacing: -.8px; }
.plan .price span { color: var(--muted); font-size: 13px; }
/* A plan: what it does for you, the price with the way to start right under it, then what's in it.
   Every card keeps the annual line, empty or not, so prices and buttons line up across a row. */
.plan .summary { margin: 0; color: var(--ink); font-size: 15px; font-weight: 600; line-height: 1.4; }
.plan ul { flex: 1; margin: 10px 0 8px; padding: 14px 0 0 18px; border-top: 1px solid var(--line); font-size: 14px; line-height: 1.5; }
.plan .button { justify-self: start; align-self: start; margin-top: 6px; }
.plan-note { margin: 4px 0 0; color: var(--muted); font-size: 11px; }
.plans.three { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.plans.two { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.plans-head { margin: 28px 0 6px; font-size: 20px; letter-spacing: -.2px; }
.plans-lede { margin: 0 0 4px; max-width: 72ch; color: var(--muted); font-size: 15px; }
.plan-annual { margin: 0; color: var(--muted); font-size: 13px; }
/* Pricing's opening: what joining costs, beside what stays free. */
.pricing-head .proof .benefits { margin-top: 4px; }
.disclaimer { color: var(--muted); font-size: 12px; max-width: 900px; }
.site-footer .disclaimer { margin: 0; }
.legal { max-width: 760px; }
.legal h2 { margin: 28px 0 8px; font-size: 17px; }
/* Terms and privacy: what each says in short, then its sections, with the list of them beside the text. */
.legal-layout { display: grid; grid-template-columns: 220px minmax(0, 760px); gap: 44px; align-items: start; margin-bottom: 40px; }
.legal-toc { position: sticky; top: 20px; font-size: 14px; }
.legal-toc .toc-title { margin: 0 0 8px; color: var(--muted); font-size: 13px; font-weight: 600; }
.legal-toc ol { display: grid; gap: 1px; margin: 0; padding: 0; list-style: none; }
.legal-toc a { display: block; padding: 5px 0 5px 12px; border-left: 2px solid var(--line); color: var(--muted); line-height: 1.35; text-decoration: none; }
.legal-toc a:hover, .legal-toc a:focus-visible { border-left-color: var(--accent); color: var(--ink); }
.in-short { margin: 0 0 8px; padding: 18px 22px 16px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; }
.in-short h2 { margin: 0 0 8px; }
.in-short ul { margin: 0; padding-left: 18px; line-height: 1.55; }
.in-short li + li { margin-top: 5px; }
.legal section { scroll-margin-top: 16px; }
@media (max-width: 900px) {
  .legal-layout { grid-template-columns: minmax(0, 1fr); gap: 16px; }
  .legal-toc { position: static; }
  .legal-toc ol { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); }
}
.legal p { line-height: 1.6; }
.legal pre { overflow-x: auto; padding: 12px 14px; background: var(--surface); border: 1px solid var(--line); border-radius: 8px; font-size: 13px; }
code { font-family: ui-monospace, Menlo, monospace; font-size: 13px; }
form.request { display: grid; gap: 14px; max-width: 560px; margin: 8px 0 18px; }
form.request label { display: grid; gap: 6px; font-size: 14px; font-weight: 600; }
form.request input, form.request textarea, form.signup input[type="email"], .feed-url input {
  width: 100%; min-height: 40px; padding: 8px 12px; border: 1px solid var(--line-strong); border-radius: 8px; background: var(--surface); color: var(--ink); font: inherit; font-weight: 400;
}
form.request .button { justify-self: start; }
.error-box { padding: 10px 14px; border-radius: 8px; background: #fbe3e1; color: #b3261e; }
.hp { position: absolute !important; left: -10000px; width: 1px; height: 1px; opacity: 0; }
form.signup { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(200px, 280px) auto; gap: 10px 14px; align-items: center; margin: 8px 0 32px; padding: 18px 22px; background: var(--surface); border: 1px solid var(--line); border-radius: 14px; }
form.signup p { margin: 2px 0 0; color: var(--muted); font-size: 13px; }
.sponsor { margin: 0 0 24px; padding: 12px 16px; background: var(--accent-halo); border-radius: 10px; font-size: 14px; }
.sponsor .label { display: block; margin-bottom: 2px; color: #8f3a0f; font-size: 12.5px; }
.sponsor p { margin: 0; }

.day-nav { display: flex; justify-content: space-between; gap: 12px; margin: 8px 0 24px; font-size: 14px; }
.source-note { margin: 10px 0 0; color: var(--muted); font-size: 12px; max-width: 900px; }
dl.facts { display: grid; grid-template-columns: max-content 1fr; gap: 8px 18px; margin: 0 0 12px; font-size: 14px; }
dl.facts dt { color: var(--muted); }
dl.facts dd { margin: 0; overflow-wrap: anywhere; }

.method { max-width: 720px; padding-block: 48px 8px; color: var(--muted); font-size: 14px; }
.method h2 { margin: 0 0 8px; color: var(--ink); font-size: 15px; }
.method p { margin: 0 0 10px; }
/* Pricing's questions in two columns on a wide screen, so the page ends as balanced as it starts. */
.method.faq { max-width: none; column-count: 2; column-gap: 48px; }
.faq h2, .faq .disclaimer { column-span: all; }
.faq .disclaimer { margin-top: 14px; }
.faq p { break-inside: avoid; }
@media (max-width: 900px) { .method.faq { column-count: 1; } }
footer { padding-block: 32px; color: var(--muted); font-size: 11px; }
/* The footer: the brand, the sections as columns, the disclaimer. */
.site-footer { display: grid; gap: 22px; margin-top: 48px; padding-block: 36px 40px; border-top: 1px solid var(--line); }
.foot-brand { display: flex; align-items: center; gap: 10px; color: var(--ink); font-size: 16px; }
.foot-brand strong { font-weight: 750; }
.foot-brand small { margin-left: 4px; color: var(--muted); font-size: 13px; }
.foot-groups { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 22px 20px; }
.foot-group h2 { margin: 0 0 10px; color: var(--ink); font-size: 13px; font-weight: 700; }
.foot-group ul { display: grid; gap: 7px; margin: 0; padding: 0; list-style: none; font-size: 13px; }
.foot-group a { color: var(--ink); text-decoration: none; }
.foot-group a:hover { text-decoration: underline; text-decoration-color: var(--accent); }
.site-footer p { margin: 0; font-size: 12px; }

@media (max-width: 1040px) {
  .foot-groups { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  /* The sections move to their own row and scroll sideways, so every one stays reachable. */
  .site-nav { order: 3; flex: 1 1 100%; overflow-x: auto; scrollbar-width: none; }
  .site-nav::-webkit-scrollbar { display: none; }
  .tiles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .two-col { grid-template-columns: minmax(0, 1fr); }
  .plans, .plans.three { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  form.signup { grid-template-columns: minmax(0, 1fr); }
  .controls.offices { grid-template-columns: 1fr 1fr; }
  .controls.offices { grid-template-columns: minmax(220px, 1fr) repeat(2, auto) auto; }
.controls { grid-template-columns: 1fr 1fr 1fr; }
  .controls .search { grid-column: 1 / -1; }
  .count { grid-column: 1 / -1; padding-top: 0; }
  .index .hq { width: auto; }
}

@media (max-width: 680px) {
  .site, main, footer { padding-inline: 16px; }
  .site { padding-block: 14px 0; }
  .account a { padding: 7px 11px; font-size: 13.5px; }
  /* The six sections fit a phone's width without scrolling. */
  .site-nav { justify-content: space-between; gap: 0; }
  .site-nav a { padding: 7px 7px; font-size: 13px; }
  .foot-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .intro { padding-block: 36px 20px; }
  .crumbs { padding-top: 24px; }
  .tile strong { font-size: 20px; }
  .plans, .plans.three, .plans.two { grid-template-columns: minmax(0, 1fr); }
  .controls.offices { grid-template-columns: minmax(220px, 1fr) repeat(2, auto) auto; }
.controls { position: static; grid-template-columns: 1fr 1fr; }
  .controls label:has(select[name="sort"]) { grid-column: 1 / -1; }
  .index thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .index, .index tbody { display: block; }
  .index tr {
    display: grid; grid-template-columns: 28px minmax(0, 1fr) auto;
    grid-template-areas: "rank firm size" ". fund fund" ". hq aum";
    gap: 4px 10px; padding: 14px 16px; border-bottom: 1px solid var(--line);
  }
  .index tbody tr:last-child { border-bottom: 0; }
  .index th, .index td { display: block; padding: 0; border: 0; width: auto !important; }
  .index .rank { grid-area: rank; padding: 2px 0 0; }
  .index .firm { grid-area: firm; }
  .index .size { grid-area: size; }
  .index .fund { grid-area: fund; font-size: 14px; }
  .index .hq { grid-area: hq; font-size: 13px; color: var(--muted); }
  .index .hq .meta { display: inline; }
  .index .hq .meta::before { content: ", "; }
  .index .aum { grid-area: aum; font-size: 13px; }
  .index td.aum::before { content: "AUM "; }
  .index td.aum.na { visibility: hidden; }
  .index.programs tr { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "firm size" "kind kind" "fund fund" "hq aum"; }
  .index .kind { grid-area: kind; font-size: 13px; color: var(--muted); }
  .index .kind .meta { display: inline; }
  .index .kind .meta:not(:empty)::before { content: " · "; }
  .index.programs td.aum::before { content: "Since "; }
  .index.capital tr { grid-template-columns: minmax(0, 1fr); grid-template-areas: "firm" "fund" "hq"; }
  .index.em-programs tr { grid-template-columns: minmax(0, 1fr); grid-template-areas: "firm" "fund" "scope" "submit"; }
  .index .scope { grid-area: scope; font-size: 14px; }
  .index .submit { grid-area: submit; font-size: 14px; }
  .index.advisers .vc { grid-area: fund; text-align: left; font-size: 13px; color: var(--muted); }
  .index.advisers .vc::before { content: "Venture funds "; }
  .index.advisers td.aum::before { content: "Registered "; }
  .index.raising tr { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "firm size" "fund target" "hq filed"; }
  .index.raising .target { grid-area: target; font-size: 13px; color: var(--muted); }
  .index.raising .filed { grid-area: filed; font-size: 13px; color: var(--muted); text-align: right; }
  .index.raising .size::before { content: "Raised "; color: var(--muted); font-size: 12px; font-weight: 400; }
  .index.raising .target::before { content: "Target "; }
  .index.raising .hq::before { content: "Started "; }
  .index tbody tr:hover > * { background: none; }
}

/* Page transitions: the header and a section's row stay still while the content changes under them.
   The old page fades out before the new one comes in, so two pages of text never show on top of each
   other. The scrollbar's room is always kept, so a short page and a long one line up. */
html { scrollbar-gutter: stable; }
@view-transition { navigation: auto; }
.site { view-transition-name: site-header; }
.subnav { view-transition-name: site-subnav; }
::view-transition { background: #fcf8f5; }
::view-transition-old(root), ::view-transition-new(root) { mix-blend-mode: normal; }
::view-transition-old(root) { animation: 110ms ease-out both page-out; }
::view-transition-new(root) { animation: 170ms ease-out 50ms both page-in; }
::view-transition-group(site-header), ::view-transition-group(site-subnav) { animation-duration: 170ms; }
::view-transition-old(site-header), ::view-transition-new(site-header), ::view-transition-old(site-subnav), ::view-transition-new(site-subnav) { animation-duration: 170ms; }
@keyframes page-out { to { opacity: 0; } }
@keyframes page-in { from { opacity: 0; } }
/* A large directory's table foot: where these rows fall, and links to the neighbouring pages
   (readers without JavaScript); with search, a button that draws the next matches instead. */
.pager { margin: 16px 0 0; color: var(--muted); font-size: 14px; font-variant-numeric: tabular-nums; }
.pager a { color: var(--ink); font-weight: 600; }
.more {
  display: block; margin: 20px auto 0; padding: 10px 20px;
  border: 1px solid var(--line-strong); border-radius: 999px; background: var(--surface);
  color: var(--ink); font: inherit; font-size: 14px; font-weight: 600; cursor: pointer;
}
.more:hover { border-color: var(--ink); }
.more:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
@media (prefers-reduced-motion: reduce) {
  @view-transition { navigation: none; }
}
