/* ============================================================
   Venture Map — design system (slng.ai-derived)
   Warm paper + ink. Flat: no shadows anywhere — surfaces are
   separated by 1px lines and dashed dividers. Mono for data and
   labels, a coloured square before every heading, yellow primary.
   Tokens are semantic: components never reference a raw colour.
   ============================================================ */

:root{
  /* the warm neutral scale */
  --bg:#fbf8f7;            /* paper */
  --surface:#fbf8f7;       /* cards sit on paper, framed by lines */
  --surface-2:#f3f1ed;     /* tint: sidebar, table heads, panel bodies */
  --surface-3:#ebe8e2;     /* deeper tint: chips, hover */
  --tint:#f3f1ed;          /* section background behind catalogue cards */
  --card:#fbf8f7;          /* catalogue card on a tint */
  --border:#e6e3de;        /* soft hairline */
  --border-2:#cac9c4;      /* frames + dashed dividers */
  --border-3:#8a8783;      /* emphasised frame */
  /* text */
  --text:#15120d; --text-2:#3c3b3b; --text-3:#8a8783;
  /* brand + accents */
  --accent:#fbe566; --accent-hover:#fff1a2; --accent-fg:#15120d;
  --accent-soft:#fff6c2; --accent-text:#15120d;
  --o:#ef8547; --pu:#8173e8; --b:#2f75ff; --g:#2e9e5b; --y:#fbe566; --r:#e04a4d; --t:#009588; --m:#f99c00;
  /* tag palettes: fill / border / text */
  --o-bg:#ffdeca; --o-bd:#ef8547; --o-fg:#cf5a17;
  --pu-bg:#ddd8ff; --pu-bd:#8173e8; --pu-fg:#5d4fd6;
  --y-bg:#fff1a2; --y-bd:#e5c93a; --y-fg:#8a6414;
  --g-bg:#d8ffd9; --g-bd:#5fc27a; --g-fg:#1f7a3a;
  --b-bg:#cbeaff; --b-bd:#5a9cff; --b-fg:#1d55d8;
  --r-bg:#ffdcdc; --r-bd:#f08a8c; --r-fg:#c0393c;
  --n-bg:#f3f1ed; --n-bd:#cac9c4; --n-fg:#3c3b3b;
  /* semantics (kept for older markup) */
  --ok:var(--g-fg);   --ok-bg:var(--g-bg);
  --warn:var(--y-fg); --warn-bg:var(--y-bg);
  --danger:var(--r-fg); --danger-bg:var(--r-bg);
  --info:var(--b-fg); --info-bg:var(--b-bg);
  --sk-a:#ebe8e2; --sk-b:#f3f1ed;
  /* dark metric block (inverts in dark mode, like slng's alternating blocks) */
  --block:#3c3b3b; --block-fg:#fbf8f7; --block-muted:rgba(251,248,247,.7);
  /* type */
  --sans:"Geist",ui-sans-serif,system-ui,-apple-system,"Segoe UI Variable Text","Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:"Geist Mono",ui-monospace,"SF Mono","Cascadia Mono","Segoe UI Mono","Roboto Mono",Menlo,Consolas,monospace;
  /* geometry */
  --r:4px; --r-md:8px; --r-lg:12px; --r-full:9999px; --r-tag:2px;
  --sh-sm:none; --sh-md:none; --sh-lg:none;
  --sidebar-w:248px;
  --row-h:46px; --cell-px:16px;
  /* legacy aliases kept so older markup keeps working */
  --paper:var(--bg); --panel:var(--surface); --ink:var(--text); --ink-soft:var(--text-2);
  --hairline:var(--border-2); --line-soft:var(--border); --navy:var(--text); --link:var(--accent-text);
  --neutral-bg:var(--surface-3); --radius:var(--r);
  color-scheme:light;
}
:root[data-theme="dark"]{
  --bg:#15120d; --surface:#15120d; --surface-2:#1e1b17; --surface-3:#2a2621;
  --tint:#1a1714; --card:#221f1b;
  --border:#2a2621; --border-2:#3c3b3b; --border-3:#8a8783;
  --text:#fbf8f7; --text-2:#cac9c4; --text-3:#8a8783;
  --accent:#fbe566; --accent-hover:#fff1a2; --accent-fg:#15120d;
  --accent-soft:rgba(251,229,102,.14); --accent-text:#fbf8f7;
  --o-bg:rgba(239,133,71,.16); --o-bd:rgba(239,133,71,.6); --o-fg:#f4a375;
  --pu-bg:rgba(129,115,232,.18); --pu-bd:rgba(129,115,232,.6); --pu-fg:#aea6f2;
  --y-bg:rgba(251,229,102,.16); --y-bd:rgba(251,229,102,.55); --y-fg:#f3df80;
  --g-bg:rgba(95,194,122,.16); --g-bd:rgba(95,194,122,.55); --g-fg:#7fd699;
  --b-bg:rgba(90,156,255,.16); --b-bd:rgba(90,156,255,.55); --b-fg:#8cb8ff;
  --r-bg:rgba(240,138,140,.16); --r-bd:rgba(240,138,140,.55); --r-fg:#f4a3a5;
  --n-bg:#221f1b; --n-bd:#3c3b3b; --n-fg:#cac9c4;
  --sk-a:#1e1b17; --sk-b:#2a2621;
  --block:#fbf8f7; --block-fg:#15120d; --block-muted:rgba(21,18,13,.65);
  color-scheme:dark;
}
:root[data-density="compact"]{--row-h:36px; --cell-px:12px}

*{box-sizing:border-box}
html,body{height:100%}
body{
  margin:0;background-color:var(--bg);color:var(--text);
  font-family:var(--sans);font-size:14px;line-height:1.5;letter-spacing:-.004em;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;
}
/* Never transition background-color on themed surfaces: Chrome freezes the
   var() re-resolve when data-theme flips. Theme switching is instant by design. */
a{color:var(--accent-text);text-decoration:underline;text-decoration-color:var(--border-2);text-underline-offset:2px}
a:hover{text-decoration-color:var(--text)}
a.link-ink{color:var(--text);text-decoration:none}
a.link-ink:hover{text-decoration:underline;text-decoration-color:var(--text)}
h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.02em;line-height:1.1}
h1{font-size:30px;font-weight:700;letter-spacing:-.025em}
:focus-visible{outline:2px solid var(--text);outline-offset:2px;border-radius:2px}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.num,td.num,.mono,.metric,time{font-variant-numeric:tabular-nums lining-nums;font-feature-settings:"tnum" 1,"lnum" 1}
.muted{color:var(--text-3)}
.mono{font-family:var(--mono)}
.price{font-family:var(--mono);font-weight:500;font-size:13px;white-space:nowrap}

/* ---------- eyebrow: coloured square + mono label ---------- */
.eyebrow{
  display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:12px;
  color:var(--text);margin:0 0 12px;line-height:1.3;
}
.sq{width:10px;height:10px;border-radius:1px;background:var(--sqc,var(--text));flex:none;display:inline-block}
.c-o{--sqc:var(--o)} .c-pu{--sqc:var(--pu)} .c-b{--sqc:var(--b)} .c-g{--sqc:var(--g)}
.c-y{--sqc:var(--y)} .c-r{--sqc:var(--r)} .c-t{--sqc:var(--t)} .c-m{--sqc:var(--m)} .c-k{--sqc:var(--text)}

/* ---------- shell ---------- */
.app{display:flex;min-height:100vh}
.sidebar{
  width:var(--sidebar-w);flex:none;background:var(--surface-2);
  border-right:1px solid var(--border-2);position:sticky;top:0;height:100vh;
  display:flex;flex-direction:column;
}
.side-brand{display:flex;align-items:center;gap:10px;padding:14px 14px;border-bottom:1px dashed var(--border-2);text-decoration:none!important}
/* The primary logo mark (templates/_icons.html): an ink V that follows the
   text colour, with the brand-orange pin. No tile behind it. */
.brand-mark{width:32px;height:32px;display:grid;place-items:center;flex:none;color:var(--text)}
.brand-mark .logo-mark{display:block}
.side-brand .name{font-size:15px;font-weight:600;color:var(--text);line-height:1.2;display:block;letter-spacing:-.015em}
.side-brand .tagline{font-family:var(--mono);font-size:10.5px;color:var(--text-3);display:block;margin-top:1px}
.side-search{
  margin:12px 12px 4px;height:34px;border-radius:var(--r);background:var(--surface);
  border:1px solid var(--border-2);display:flex;align-items:center;gap:8px;padding:0 10px;
  color:var(--text-3);font-size:13px;cursor:pointer;width:calc(100% - 24px);
  font-family:inherit;text-align:left;
}
.side-search:hover{border-color:var(--text)}
.side-search kbd{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--text-3)}
.side-seg{display:flex;gap:2px;margin:10px 12px;padding:3px;border:1px solid var(--border-2);border-radius:var(--r)}
.side-seg button{
  flex:1;height:26px;border:0;border-radius:2px;background:transparent;color:var(--text-2);
  font-size:12px;font-weight:500;font-family:var(--mono);cursor:pointer;
}
.side-seg button.on{background:var(--text);color:var(--bg)}
.side-nav{padding:2px 8px;flex:1;overflow-y:auto}
.side-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:16px 9px 6px}
.side-nav a{
  display:flex;align-items:center;gap:9px;height:32px;padding:0 9px;border-radius:var(--r);
  color:var(--text-2);font-size:13.5px;text-decoration:none!important;
}
.side-nav a:hover{background:var(--surface-3);color:var(--text)}
.side-nav a.active{background:var(--text);color:var(--bg);font-weight:500}
.side-nav a .ic{width:16px;height:16px;display:grid;place-items:center;opacity:.8;flex:none}
.side-nav a.active .ic{opacity:1}
.svg-ic{display:block}
.side-nav a .ct{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--text-3)}
.side-nav a.active .ct{color:inherit;opacity:.7}
.side-nav a.side-home{margin-top:6px}
.side-nav a .nb{margin-left:auto;background:var(--accent);color:var(--accent-fg);font-family:var(--mono);font-size:10.5px;font-weight:600;border-radius:var(--r-tag);padding:1px 6px}
.side-foot{padding:10px 12px;border-top:1px dashed var(--border-2);display:flex;align-items:center;gap:8px}
.side-foot .who{font-size:12.5px;font-weight:500;color:var(--text-2);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.avatar{width:24px;height:24px;border-radius:3.5px;background:var(--surface-3);border:1px solid var(--border-2);display:grid;place-items:center;font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text-2);flex:none}
.theme-btn{margin-left:auto;cursor:pointer;color:var(--text-3);font-size:15px;padding:4px 6px;border-radius:var(--r);border:0;background:transparent;line-height:1}
.theme-btn:hover{background:var(--surface-3);color:var(--text)}

.content{flex:1;min-width:0;display:flex;flex-direction:column}
main{padding:30px 40px 72px;flex:1}
h1+.page-sub{margin-top:8px}
.page-sub{color:var(--text-2);font-size:15px;line-height:1.45;max-width:66ch;margin:0 0 22px}
h2{
  font-size:19px;font-weight:600;letter-spacing:-.018em;color:var(--text);text-transform:none;
  margin:34px 0 12px;display:flex;align-items:center;gap:10px;line-height:1.2;
}
h2::before{content:"";width:10px;height:10px;border-radius:1px;background:var(--sqc,var(--text));flex:none}
h1+h2{margin-top:22px}
.count-pill{
  display:inline-flex;align-items:center;height:20px;padding:0 7px;border-radius:var(--r-tag);
  background:var(--n-bg);border:1px solid var(--n-bd);color:var(--n-fg);font-family:var(--mono);
  font-size:11px;font-weight:500;letter-spacing:0;text-transform:none;font-variant-numeric:tabular-nums;
}

/* ---------- surfaces ---------- */
.panel{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--r-md);padding:16px 18px;margin-bottom:14px}
.panel:has(>.table-scroll){padding:0;overflow:hidden}
.panel.tint{background:var(--tint);border-color:transparent;padding:12px}
.empty{color:var(--text-3);font-size:13.5px;padding:24px 4px;text-align:center}
.grid{display:grid;gap:12px}
.grid.cols-2{grid-template-columns:1.5fr 1fr}
.grid.cols-3{grid-template-columns:repeat(3,1fr)}
.grid.cols-4{grid-template-columns:repeat(4,1fr)}
.grid.even{grid-template-columns:repeat(2,1fr)}
@media(max-width:1150px){.grid.cols-2,.grid.cols-3,.grid.even{grid-template-columns:1fr}.grid.cols-4{grid-template-columns:repeat(2,1fr)}}

/* card = framed panel with a paper header strip over a tinted body (slng pricing panel) */
.card{background:var(--surface-2);border:1px solid var(--border-2);border-radius:var(--r-md);overflow:hidden;display:flex;flex-direction:column}
.card-head{display:flex;align-items:center;gap:10px;padding:14px 18px;background:var(--surface);border-bottom:1px solid var(--border-2)}
.card-head h3{font-size:16px;letter-spacing:-.015em}
.card-head .sub{font-family:var(--mono);font-size:11.5px;color:var(--text-3)}
.card-head .lk{margin-left:auto;font-size:12.5px;font-weight:500;white-space:nowrap}
.card-body{padding:6px 18px 12px}
.card-body.flush{padding:0}
.card .empty{padding:22px 8px}

/* catalogue grid: paper cards on a tint (slng model catalogue) */
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(232px,1fr));gap:10px}
.cat-card{
  background:var(--card);border:1px solid var(--border-2);border-radius:var(--r-md);padding:16px;
  display:flex;flex-direction:column;gap:12px;color:var(--text);text-decoration:none!important;min-width:0;
}
.panel.tint .cat-card{border-color:transparent}
/* An investor not in the directory: same card, a whisper quieter — faint dashed
   edge and a lighter fill, so it reads as "mentioned, not on the platform". */
.panel.tint .cat-card.off-dir{border:1px dashed var(--border-2);background:color-mix(in srgb,var(--card) 55%,transparent)}
a.cat-card:hover,.cat-card.row-link:hover{border-color:var(--text);text-decoration:none}
.cat-card.row-link{cursor:pointer}
.cat-top{display:flex;align-items:center;gap:11px;min-width:0}
.cat-logo{
  width:40px;height:40px;border-radius:3.5px;background:var(--text);color:var(--bg);flex:none;
  display:grid;place-items:center;font-weight:600;font-size:15px;letter-spacing:-.02em;
}
.cat-logo.soft{background:var(--surface-3);color:var(--text)}
/* A real logo sits on white inside the same frame; the initial hides behind it. */
.prof-logo.has-logo,.cat-logo.has-logo{background:#fff;border:1px solid var(--border-2);padding:4px}
.prof-logo img,.cat-logo img{width:100%;height:100%;object-fit:contain;border-radius:2px;display:block}
.has-logo>span{display:none}
/* Table-sized mark: sits before the name cell's text block. */
.t-id{display:flex;align-items:center;gap:10px;min-width:0}
.t-id>a{overflow:hidden;text-overflow:ellipsis}
.t-logo{
  width:22px;height:22px;border-radius:2px;background:var(--text);color:var(--bg);flex:none;
  display:inline-grid;place-items:center;font-family:var(--mono);font-size:10px;font-weight:600;
}
.t-logo.has-logo{background:#fff;border:1px solid var(--border-2);padding:2px}
.t-logo img{width:100%;height:100%;object-fit:contain;display:block}
.cat-name{font-size:15.5px;font-weight:600;letter-spacing:-.015em;line-height:1.2;min-width:0;overflow:hidden;text-overflow:ellipsis}
.cat-sub{font-family:var(--mono);font-size:11px;color:var(--text-3);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cat-tags{display:flex;gap:6px;flex-wrap:wrap}
.cat-desc{font-size:13px;color:var(--text-2);line-height:1.4}
.cat-foot{margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px;padding-top:4px;flex-wrap:wrap}
.cat-price{font-family:var(--mono);font-size:13px;color:var(--text-3)}

/* entity profile header: hero on paper, stats as tinted metric cards */
.prof{padding:4px 0 22px;margin-bottom:8px;border-bottom:1px dashed var(--border-2)}
.prof-top{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap}
.prof-logo{
  width:52px;height:52px;border-radius:3.5px;background:var(--text);color:var(--bg);
  display:grid;place-items:center;font-size:22px;font-weight:600;flex:none;letter-spacing:-.02em;
}
.prof-id{flex:1;min-width:220px}
.prof-id .eyebrow{margin-bottom:8px}
.prof-id h1{font-size:32px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.prof-meta{font-family:var(--mono);font-size:12.5px;color:var(--text-3);margin-top:8px;display:flex;gap:9px;align-items:center;flex-wrap:wrap}
.prof-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.prof-desc{font-size:15px;color:var(--text-2);line-height:1.5;margin:18px 0 0;max-width:74ch}
/* Wide screens: the description keeps a readable measure and the metric cards
   take the room beside it, instead of a half-empty header. */
@media(min-width:1380px){
  .prof{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(360px,1fr);column-gap:36px;align-items:start}
  .prof-top,.prof>.tag-row,.prof>p.muted,.prof>.prof-stats:not(.prof-desc + .prof-stats){grid-column:1/-1}
  .prof-desc{grid-column:1;max-width:none}
  .prof-desc+.prof-stats{grid-column:2;margin-top:18px;grid-template-columns:repeat(3,1fr)}
}
.prof-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px;margin-top:20px}
.prof-stats>div{
  display:flex;flex-direction:column-reverse;gap:22px;background:var(--surface-2);
  border-radius:var(--r-md);padding:14px 16px;
}
.prof-stats .k{font-size:13px;color:var(--text-2)}
.prof-stats .v{font-size:24px;font-weight:600;letter-spacing:-.025em;font-variant-numeric:tabular-nums;line-height:1}
.notice{background:var(--surface-2);border:1px dashed var(--border-3);border-radius:var(--r-md);padding:14px 16px;margin-bottom:16px;font-size:13.5px}
.notice.accent{background:var(--accent-soft);border-color:var(--y-bd)}
.notice.bad{background:var(--r-bg);border-color:var(--r-bd)}

/* page hero (dashboard / home) */
.hero{margin-bottom:24px}
.hero h1{font-size:36px}
.hero p{margin:8px 0 0;color:var(--text-2);font-size:15.5px;max-width:66ch}
.page-head{display:flex;align-items:flex-end;gap:16px;margin-bottom:22px;flex-wrap:wrap}
.page-head .grow{flex:1;min-width:260px}
.page-head .page-sub{margin-bottom:0}
.page-head .head-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-bottom:2px}

/* ---------- buttons ---------- */
.btn{
  height:34px;padding:0 15px;border-radius:var(--r);border:1px solid transparent;
  background:var(--accent);color:var(--accent-fg);font-size:13.5px;font-weight:500;font-family:inherit;
  cursor:pointer;display:inline-flex;align-items:center;gap:6px;text-decoration:none!important;
  white-space:nowrap;transition:transform 120ms;line-height:1;
}
.btn:hover{background:var(--accent-hover)}
.btn:active{transform:scale(.97)}
.btn:disabled{opacity:.5;cursor:default;transform:none}
.btn.secondary{background:transparent;color:var(--text);border-color:var(--border-2)}
.btn.secondary:hover{background:var(--surface-2);border-color:var(--text)}
.btn.dark{background:var(--text);color:var(--bg)}
.btn.dark:hover{background:var(--text-2)}
.btn.ghost{background:transparent;color:var(--text-2)}
.btn.ghost:hover{background:var(--surface-2);color:var(--text)}
.btn.ok{background:var(--g-bg);color:var(--g-fg);border-color:var(--g-bd)}
.btn.ok:hover{background:var(--g-bg);border-color:var(--g-fg)}
.btn.danger{background:transparent;color:var(--r-fg);border-color:var(--border-2)}
.btn.danger:hover{background:var(--r-bg);border-color:var(--r-bd)}
.btn.small{height:30px;padding:0 12px;font-size:12.5px}
.btn.tiny{height:26px;padding:0 9px;font-size:12px}
.inline{display:inline-flex;vertical-align:middle}
.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}

/* ---------- badges / tags: mono, 2px radius, tinted fill + coloured frame ---------- */
.badge{
  display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--r-tag);
  border:1px solid var(--n-bd);background:var(--n-bg);color:var(--n-fg);
  font-family:var(--mono);font-size:11px;font-weight:500;white-space:nowrap;line-height:1;
}
.badge.o{background:var(--o-bg);border-color:var(--o-bd);color:var(--o-fg)}
.badge.pu{background:var(--pu-bg);border-color:var(--pu-bd);color:var(--pu-fg)}
.badge.y{background:var(--y-bg);border-color:var(--y-bd);color:var(--y-fg)}
.badge.g{background:var(--g-bg);border-color:var(--g-bd);color:var(--g-fg)}
.badge.b{background:var(--b-bg);border-color:var(--b-bd);color:var(--b-fg)}
.badge.r{background:var(--r-bg);border-color:var(--r-bd);color:var(--r-fg)}
.badge.Offer,.badge.Applied{background:var(--g-bg);border-color:var(--g-bd);color:var(--g-fg)}
.badge.Rejected,.badge.Withdrawn,.badge.bad{background:var(--r-bg);border-color:var(--r-bd);color:var(--r-fg)}
.badge.Not-Applied{background:var(--y-bg);border-color:var(--y-bd);color:var(--y-fg)}
.badge.Screening,.badge.Interview{background:var(--b-bg);border-color:var(--b-bd);color:var(--b-fg)}
.tag-row{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0 0}
.tag{
  display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 9px;border-radius:var(--r);
  background:var(--surface);border:1px solid var(--border-2);font-size:12.5px;color:var(--text);
}
.tag .k{font-family:var(--mono);font-size:10.5px;letter-spacing:.02em;text-transform:uppercase;color:var(--text-3)}
/* A tag that navigates — used for the market-map position on a start-up page. */
.tag-link{text-decoration:none!important}
.tag-link:hover{border-color:var(--text);text-decoration:none}
.tag-link .sep{color:var(--text-3);margin:0 1px}
.tag.muted{color:var(--text-3)}

/* ---------- tables: dashed row dividers, mono data ---------- */
.table-scroll{overflow-x:auto}
table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}
th{
  font-family:var(--mono);font-size:11px;font-weight:500;color:var(--text-3);text-align:left;letter-spacing:.01em;
  padding:0 var(--cell-px);height:36px;background:var(--surface-2);
  border-bottom:1px solid var(--border-2);white-space:nowrap;
}
th.num{text-align:right}
td{
  padding:0 var(--cell-px);height:var(--row-h);border-bottom:1px dashed var(--border-2);
  vertical-align:middle;font-size:13.5px;overflow-wrap:anywhere;
}
td.num{text-align:right;font-family:var(--mono);font-size:12.5px}
td.muted{font-family:var(--mono);font-size:12.5px}
td div.muted{font-family:var(--mono);font-size:11px;margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
/* Fixed-layout columns don't grow to fit a control, so keep it inside its cell */
td select{max-width:100%}

/* ---------- directory tables: one shared grid, sort arrows in the headers ---------- */
/* One grid shared by VC Investors and Start-ups: same slots, same widths
   (PortCo/Founded and Team/Founders share a slot). Every share is sized so
   that at the table's min-width, and at each breakpoint's narrowest table,
   each column still holds its content: the priority select (137px with
   padding), the widest stage badge (113), a 12-character city (114),
   "Founded"/"Founders" plus the sort arrow (90/96), "Jobs" (67) and the
   "couldn't load" badge (127). Name takes the rest and gets most of the
   extra room on wider screens. Below min-width the table scrolls sideways. */
.dir-table{min-width:930px}
.dir-table th,.dir-table td{padding-left:12px;padding-right:12px}
.dir-table th{padding-right:8px}
.dir-table td[data-col="name"],.dir-table td[data-col="city"]{overflow-wrap:anywhere}
.dir-table th[data-col="name"]{width:19.9%}
.dir-table th[data-col="priority"]{width:14.7%}
.dir-table th[data-col="stage"]{width:12.2%}
.dir-table th[data-col="city"]{width:12.3%}
.dir-table th[data-col="portco"],.dir-table th[data-col="founded"]{width:9.7%}
.dir-table th[data-col="team"]{width:10.3%}
.dir-table th[data-col="jobs"]{width:7.2%}
.dir-table th[data-col="status"]{width:13.7%}
@media (min-width:1440px){
  .dir-table th[data-col="name"]{width:30%}
  .dir-table th[data-col="priority"]{width:13%}
  .dir-table th[data-col="stage"]{width:10.8%}
  .dir-table th[data-col="city"]{width:10.6%}
  .dir-table th[data-col="portco"],.dir-table th[data-col="founded"]{width:8.3%}
  .dir-table th[data-col="team"]{width:8.8%}
  .dir-table th[data-col="jobs"]{width:6.4%}
  .dir-table th[data-col="status"]{width:12.1%}
}
@media (min-width:1700px){
  .dir-table th[data-col="name"]{width:38%}
  .dir-table th[data-col="priority"]{width:11.5%}
  .dir-table th[data-col="stage"]{width:9.55%}
  .dir-table th[data-col="city"]{width:9.4%}
  .dir-table th[data-col="portco"],.dir-table th[data-col="founded"]{width:7.35%}
  .dir-table th[data-col="team"]{width:7.85%}
  .dir-table th[data-col="jobs"]{width:5.65%}
  .dir-table th[data-col="status"]{width:10.7%}
}
/* Public site: five columns, the same slots without priority, jobs and status */
.dir-table.is-public{min-width:640px}
.dir-table.is-public th[data-col="name"]{width:35.8%}
.dir-table.is-public th[data-col="stage"]{width:17.7%}
.dir-table.is-public th[data-col="city"]{width:17.5%}
.dir-table.is-public th[data-col="portco"],.dir-table.is-public th[data-col="founded"]{width:14%}
.dir-table.is-public th[data-col="team"]{width:15%}
@media (min-width:1440px){
  .dir-table.is-public th[data-col="name"]{width:50%}
  .dir-table.is-public th[data-col="stage"]{width:14%}
  .dir-table.is-public th[data-col="city"]{width:13.8%}
  .dir-table.is-public th[data-col="portco"],.dir-table.is-public th[data-col="founded"]{width:10.7%}
  .dir-table.is-public th[data-col="team"]{width:11.5%}
}
.th-in{display:flex;align-items:center;gap:4px;min-width:0}
.th-label{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis}
th.num .th-label{text-align:right}
.th-sort{
  flex:none;width:16px;height:18px;display:inline-grid;place-items:center;border-radius:var(--r-tag);
  color:var(--text-3);text-decoration:none!important;font-size:12px;line-height:1;opacity:.55;cursor:pointer;
}
.dir-table th:hover .th-sort,.list-table th:hover .th-sort{opacity:1}
.th-sort:hover{background:var(--surface-3);color:var(--text)}
th.is-sorted{color:var(--text)}
th.is-sorted .th-sort{opacity:1;color:var(--text);background:var(--surface-3)}
tbody tr:hover td{background:var(--surface-2)}
tbody tr:last-child td{border-bottom:0}
tr.row-link{cursor:pointer}
.t-name{font-weight:600}
.t-meta{font-family:var(--mono);font-size:11px;color:var(--text-3);margin-top:2px}

/* ---------- filters / inputs ---------- */
.filter-bar{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;margin-bottom:14px}
.filter-field{display:flex;flex-direction:column;gap:5px}
.filter-field>span{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3)}
.filter-field select,.filter-field input,input[type=search],input[type=text],input[type=url],input[type=date],input[type=number],select,textarea{
  height:34px;padding:0 10px;border-radius:var(--r);border:1px solid var(--border-2);
  background:var(--surface);color:var(--text);font-size:13.5px;font-family:inherit;
}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--text)}
textarea{height:auto;padding:9px 11px;line-height:1.5;resize:vertical}
select{cursor:pointer;padding-right:6px}
input::placeholder{color:var(--text-3)}
.filter-tabs{display:flex;gap:2px;border-bottom:1px solid var(--border-2);margin-bottom:18px;flex-wrap:wrap}
.filter-tabs a{
  padding:8px 12px;font-size:13.5px;color:var(--text-3);border-bottom:2px solid transparent;
  margin-bottom:-1px;font-weight:500;text-decoration:none!important;
}
.filter-tabs a:hover{color:var(--text)}
.filter-tabs a.active{color:var(--text);border-bottom-color:var(--text);font-weight:600}
.priority-pick{
  height:26px;padding:0 6px;border-radius:var(--r-tag);border:1px solid var(--n-bd);
  background:var(--n-bg);color:var(--text-2);font-family:var(--mono);font-size:11px;font-weight:500;cursor:pointer;
}
.priority-pick.p-High{background:var(--g-bg);color:var(--g-fg);border-color:var(--g-bd)}
.priority-pick.p-Medium{background:var(--y-bg);color:var(--y-fg);border-color:var(--y-bd)}
.priority-pick.p-Low{background:var(--n-bg);color:var(--n-fg);border-color:var(--n-bd)}
.priority-pick.p-Notrelevant{background:transparent;color:var(--text-3);border-style:dashed}
/* ---------- investment memos ---------- */
.memo-row{display:flex;align-items:center;gap:10px}
.memo-row+.memo-row{margin-top:9px}

.pager{
  display:flex;align-items:center;gap:6px;justify-content:center;flex-wrap:wrap;
  margin:20px 0 4px;font-size:12.5px;
}
.pg-step,.pg-num{
  display:inline-flex;align-items:center;justify-content:center;height:28px;min-width:28px;
  padding:0 9px;border-radius:var(--r);color:var(--text-2);text-decoration:none!important;
  font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;
}
.pg-step:hover,.pg-num:hover{background:var(--surface-2);color:var(--text)}
.pg-num.is-on{background:var(--text);color:var(--bg);font-weight:600}
.pg-step.is-off{color:var(--text-3);opacity:.45;pointer-events:none}
.pg-nums{display:inline-flex;align-items:center;gap:2px;flex-wrap:wrap}
.pg-gap{color:var(--text-3);padding:0 3px;user-select:none}
.pg-jump{display:inline-flex;align-items:center;gap:6px;margin-left:10px;padding-left:14px;border-left:1px dashed var(--border-2)}
.pg-jump label{color:var(--text-3);font-size:12px;font-family:var(--mono)}
.pg-jump input{width:66px;height:28px;padding:0 8px;font-size:12.5px;text-align:center;font-family:var(--mono)}
@media(max-width:700px){.pg-jump{margin-left:0;padding-left:0;border-left:0;width:100%;justify-content:center;margin-top:8px}}

/* segmented tabs (in-page) */
.seg-tabs{display:inline-flex;gap:2px;background:var(--surface-2);padding:3px;border-radius:var(--r);margin-bottom:14px}
.seg-tabs a{
  display:inline-flex;align-items:center;gap:7px;padding:6px 13px;border-radius:2px;
  font-size:12.5px;font-weight:500;color:var(--text-2);text-decoration:none!important;
}
.seg-tabs a:hover{color:var(--text)}
.seg-tabs a.active{background:var(--surface);color:var(--text);outline:1px solid var(--border-2)}
.seg-tabs .count{
  font-family:var(--mono);font-size:10.5px;padding:2px 6px;border-radius:var(--r-tag);
  background:var(--surface);color:var(--text-3);font-variant-numeric:tabular-nums;
}
.seg-tabs a.active .count{background:var(--text);color:var(--bg)}

/* ---------- dashboard stats: dark metric blocks ---------- */
.stat{
  display:flex;flex-direction:column;gap:38px;background:var(--block);color:var(--block-fg);
  border-radius:var(--r-md);padding:20px 22px 18px;text-decoration:none!important;
}
.stat:hover{outline:1px solid var(--text);outline-offset:1px}
.stat.is-zero{opacity:.55}
.stat .n{font-size:30px;font-weight:600;letter-spacing:-.03em;color:inherit;font-variant-numeric:tabular-nums;line-height:1}
.stat .label{font-size:14px;color:var(--block-muted)}
.bucket-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);margin:18px 0 6px}
.bucket-label:first-child{margin-top:6px}
.bucket-label.overdue{color:var(--r-fg)}

/* ---------- list rows (next steps, news, investors) ---------- */
.next-step-item{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px dashed var(--border-2)}
.next-step-item:last-child{border-bottom:0}
.next-step-item .due{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--text-3);white-space:nowrap;font-variant-numeric:tabular-nums}
.next-step-item .due.overdue{color:var(--r-fg);font-weight:600}
.snooze{display:inline-flex;gap:4px}

/* ---------- interaction timeline ---------- */
.tl-item{display:flex;gap:16px;padding:12px 2px;border-bottom:1px dashed var(--border-2);align-items:flex-start}
.tl-item:last-child{border-bottom:0}
.tl-date{flex:none;width:84px;color:var(--text-3);font-family:var(--mono);font-size:12px;padding-top:3px;font-variant-numeric:tabular-nums}
.tl-main{flex:1;min-width:0}
.tl-head{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.tl-title{font-weight:600}
.tl-meta{color:var(--text-3);font-size:12px}
.tl-preview{color:var(--text-2);font-size:13px;margin-top:3px;white-space:pre-line;overflow:hidden}
.tl-next{font-size:12.5px;color:var(--text-3);margin-top:3px}
.tl-actions{flex:none;display:flex;gap:10px;align-items:center;padding-top:2px}
.dir-chip{
  font-family:var(--mono);font-size:10.5px;font-weight:500;letter-spacing:.02em;text-transform:uppercase;
  padding:2px 7px;border-radius:var(--r-tag);border:1px solid;white-space:nowrap;align-self:center;
}
.dir-in{background:var(--g-bg);color:var(--g-fg);border-color:var(--g-bd)}
.dir-out{background:var(--b-bg);color:var(--b-fg);border-color:var(--b-bd)}
button.linkish{
  background:none;border:0;padding:0;font-family:inherit;font-size:12px;
  color:var(--text-3);cursor:pointer;
}
button.linkish:hover{color:var(--text);text-decoration:underline}
button.linkish.danger:hover{color:var(--r-fg)}

/* ---------- contact icons ---------- */
.contact-icons{display:inline-flex;gap:10px;align-items:center}
.contact-icons a{color:var(--text-3);display:inline-flex}
.contact-icons a:hover{color:var(--text)}
.contact-icons svg{width:15px;height:15px}

/* ---------- forms ---------- */
.field-row{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.field{display:flex;flex-direction:column;gap:5px;flex:1;min-width:190px}
.field>label{font-family:var(--mono);font-size:10.5px;letter-spacing:.03em;text-transform:uppercase;color:var(--text-3)}
.add-bar{display:flex;gap:8px;align-items:center}
/* FAQ-style disclosure: dashed rule, plus sign on the right */
.log-form{border-top:1px dashed var(--border-2);border-bottom:1px dashed var(--border-2);padding:2px 0}
.log-form summary{
  cursor:pointer;color:var(--text);font-size:14px;font-weight:500;padding:10px 0;list-style:none;
  display:flex;align-items:center;justify-content:space-between;gap:10px;
}
.log-form summary::-webkit-details-marker{display:none}
.log-form summary::after{content:"+";font-family:var(--mono);font-size:16px;color:var(--text-3)}
.log-form[open] summary::after{content:"−"}
.log-form[open] summary{margin-bottom:12px}
.log-form form{padding-bottom:14px}
.date-chips{display:inline-flex;gap:6px;margin-top:6px}

/* ---------- chat ---------- */
.chat-log{display:flex;flex-direction:column;gap:10px;margin-bottom:14px}
.chat-msg{padding:12px 14px;border-radius:var(--r-md);font-size:13.5px;line-height:1.55;max-width:74ch}
.chat-msg.user{background:var(--accent-soft);color:var(--text);align-self:flex-end;border:1px solid var(--y-bd)}
.chat-msg.assistant{background:var(--surface-2);border:1px solid var(--border-2);white-space:pre-wrap}

/* ---------- flash ---------- */
.flash{
  background:var(--accent);color:var(--accent-fg);padding:10px 14px;border-radius:var(--r);
  font-size:13px;font-weight:500;margin-bottom:18px;
}
/* Confirmations float, so an action never shifts the page under the reader */
.toast-stack{position:fixed;right:22px;bottom:22px;z-index:60;display:flex;flex-direction:column;gap:8px;max-width:min(420px,calc(100vw - 44px))}
.toast-stack .flash{margin:0;box-shadow:0 6px 22px -8px rgba(0,0,0,.35)}
/* An action sent in the background: its button shows it's working */
html.is-pending,html.is-pending *{cursor:progress!important}
.btn[aria-busy="true"]{opacity:.55;pointer-events:none}

/* ---------- news category chips ---------- */
.cat-bar{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 16px}
.cat-chip{
  display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 11px;border-radius:var(--r);
  background:var(--surface);border:1px solid var(--border-2);font-size:12.5px;font-weight:500;color:var(--text-2);
  text-decoration:none!important;
}
.cat-chip:hover{color:var(--text);border-color:var(--text);text-decoration:none}
.cat-chip.on{background:var(--text);color:var(--bg);border-color:var(--text)}
.cat-chip .n{font-family:var(--mono);font-size:11px;opacity:.65;font-variant-numeric:tabular-nums}
.cat-chip.on .n{opacity:.8}
.cat-chip.roll{border-style:dashed}
.cat-chip.on.roll{border-style:solid}
.cat-chip.is-muted{background:transparent;border-color:transparent;color:var(--text-3);font-style:italic}
/* Row-level category label — same weight as the VC / Start-up tag next to it. */
.cat-tag{
  display:inline-flex;align-items:center;height:22px;padding:0 8px;border-radius:var(--r-tag);
  background:var(--n-bg);border:1px solid var(--n-bd);color:var(--n-fg);font-family:var(--mono);
  font-size:11px;font-weight:500;text-decoration:none!important;white-space:nowrap;max-width:100%;
  overflow:hidden;text-overflow:ellipsis;line-height:1;
}
.cat-tag:hover{border-color:var(--text);color:var(--text);text-decoration:none}

/* ---------- market map ----------
   Sector bands carry their own colour (8 rotating hues from the slng accent
   set) so the map reads as a poster, not a list. Each hue has a solid band +
   a tinted body surface. */
:root{
  --mm0:#ef8547; --mm1:#8173e8; --mm2:#2f75ff; --mm3:#2e9e5b;
  --mm4:#f99c00; --mm5:#e04a4d; --mm6:#009588; --mm7:#8a8783;
  --mm-tint:7%;
  --mm-band:22%;
  /* Priority frames read the same in every sector band, so the map can be
     scanned for interest independently of the hue it happens to sit on. */
  --prio-high:#2e9e5b; --prio-med:#ef8547; --prio-low:#e5c93a;
}
:root[data-theme="dark"]{
  --mm0:#f4a375; --mm1:#aea6f2; --mm2:#8cb8ff; --mm3:#7fd699;
  --mm4:#ffc457; --mm5:#f4a3a5; --mm6:#4fd1c5; --mm7:#a8a49e;
  --mm-tint:12%;
  --mm-band:26%;
  --prio-high:#7fd699; --prio-med:#f4a375; --prio-low:#f3df80;
}
.mm-intro{color:var(--text-2);font-size:14px;max-width:80ch;margin:0 0 22px}
.mm-columns{column-count:2;column-gap:14px;margin-top:12px}
.mm-segment{break-inside:avoid;margin:0 0 14px;border-radius:var(--r-md);overflow:hidden;border:1px solid var(--border-2)}
.mm-band{
  display:flex;align-items:center;gap:9px;padding:10px 13px;
  /* A tint, not a solid fill: the hue identifies the band without shouting. */
  background:color-mix(in srgb,var(--mm) var(--mm-band),var(--surface));
  border-bottom:1px solid color-mix(in srgb,var(--mm) 35%,transparent);
  color:var(--text);font-size:14px;font-weight:600;letter-spacing:-.015em;
}
.mm-num{
  width:20px;height:20px;border-radius:2px;flex:none;display:grid;place-items:center;
  background:color-mix(in srgb,var(--mm) 38%,var(--surface));font-family:var(--mono);font-size:11px;font-weight:600;font-variant-numeric:tabular-nums;
}
.mm-count{
  margin-left:auto;background:color-mix(in srgb,var(--mm) 14%,var(--surface));border-radius:var(--r-tag);color:var(--text-2);
  padding:1px 7px;font-family:var(--mono);font-size:11.5px;font-weight:500;font-variant-numeric:tabular-nums;
}
.mm-body{padding:11px 13px 13px;background:color-mix(in srgb,var(--mm) var(--mm-tint),var(--surface))}
/* Sub-segments are the map's real unit: a titled block per niche inside the
   sector band, so a sector reads as a shelf of niches rather than one heap. */
.mm-group{padding:9px 0 10px;border-top:1px dashed color-mix(in srgb,var(--mm) 40%,var(--border-2))}
.mm-group:first-child{padding-top:0;border-top:0}
.mm-group:last-child{padding-bottom:0}
.mm-sub{
  display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;letter-spacing:-.01em;
  color:var(--text);margin:0 0 2px;
}
.mm-sub::before{content:"";width:8px;height:8px;border-radius:1px;background:var(--mm);flex:none}
.mm-sub.muted{color:var(--text-3)}
.mm-sub.muted::before{background:var(--border-2)}
.mm-subn{
  font-family:var(--mono);color:var(--text-3);
  padding:0 5px;font-size:10.5px;font-variant-numeric:tabular-nums;
}
/* One line, always: the description labels the niche, it doesn't explain it.
   Anything longer is clipped and lives on the tooltip instead of pushing the
   tiles down. */
.mm-subdesc{
  font-size:11px;line-height:1.45;color:var(--text-3);margin:0 0 6px;padding-left:15px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}
.mm-tiles{display:flex;flex-wrap:wrap;gap:5px;margin-top:5px}
.mm-tile{
  display:inline-flex;align-items:baseline;gap:6px;padding:4px 9px;border-radius:var(--r);
  background:var(--surface);border:1px solid var(--border-2);font-size:12.5px;color:var(--text);
  text-decoration:none!important;
}
/* A prioritised tile keeps its own ring on hover — the sector hue only takes
   over for the tiles that carry no priority. */
.mm-tile:hover{border-color:var(--text);text-decoration:none}
.mm-tile .t-name{font-weight:500}
.mm-tile .t-stage{
  font-family:var(--mono);font-size:10px;color:var(--text-3);
  border-left:1px solid var(--border-2);padding-left:6px;
}
.mm-tile .t-over{font-size:10px;font-weight:700;color:var(--mm);opacity:.8;margin-left:-3px}
/* The frame carries the priority — the tile keeps the surface and type of
   every other tile, so the map reads as one material with coloured edges. */
.mm-tile.p-High{--prio:var(--prio-high)}
.mm-tile.p-Medium{--prio:var(--prio-med)}
.mm-tile.p-Low{--prio:var(--prio-low)}
.mm-tile.p-High,.mm-tile.p-Medium,.mm-tile.p-Low{border-color:var(--prio);box-shadow:inset 0 0 0 1px var(--prio)}
/* Not relevant recedes rather than shouting — dashed and faded, full strength
   on hover so it stays readable when you go looking for it. */
.mm-tile.p-Notrelevant{border-style:dashed;opacity:.6}
/* VC map HQ highlight: one region stays in full ink, the rest fall back, so
   the stage bands keep their shape and each count reads "match / total". */
.hq-bar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:0 0 14px}
.hq-label{font-family:var(--mono);font-size:10.5px;letter-spacing:.05em;text-transform:uppercase;color:var(--text-3)}
.hq-seg{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;border:1px solid var(--border-2);border-radius:var(--r);background:var(--surface)}
.hq-seg a{
  display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:2px;
  font-family:var(--mono);font-size:12px;font-weight:500;color:var(--text-2);text-decoration:none;white-space:nowrap;
}
.hq-seg a:hover{background:var(--surface-3);color:var(--text);text-decoration:none}
.hq-seg a.on{background:var(--text);color:var(--bg)}
.hq-seg .ct{font-size:10.5px;opacity:.6;font-variant-numeric:tabular-nums}
.mm-tile .t-cc{font-family:var(--mono);font-size:9.5px;font-weight:500;letter-spacing:.03em;color:var(--text-3)}
.mm-count .of,.mm-subn .of{opacity:.55}
/* VC map: spain / europe / intl. Start-up map: madrid / barcelona / spain (rest
   of Spain) / abroad. Each page's regions come from app.py (static/hq.js). */
.mm-columns[data-hq="spain"] .mm-tile:not([data-region="spain"]),
.mm-columns[data-hq="europe"] .mm-tile:not([data-region="europe"]),
.mm-columns[data-hq="intl"] .mm-tile:not([data-region="intl"]),
.mm-columns[data-hq="madrid"] .mm-tile:not([data-region="madrid"]),
.mm-columns[data-hq="barcelona"] .mm-tile:not([data-region="barcelona"]),
.mm-columns[data-hq="abroad"] .mm-tile:not([data-region="abroad"]){opacity:.22}
.mm-tile.p-Notrelevant:hover{opacity:1}
/* Key for the frame colours — without it the coding is a guessing game. */
.mm-legend{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin:-10px 0 18px;font-family:var(--mono);font-size:11.5px;color:var(--text-3)}
.mm-legend span{display:inline-flex;align-items:center;gap:6px}
.mm-legend i{
  width:13px;height:13px;border-radius:2px;border:1.5px solid var(--prio);
  background:var(--surface);
}
.mm-legend .l-high{--prio:var(--prio-high)} .mm-legend .l-med{--prio:var(--prio-med)}
.mm-legend .l-low{--prio:var(--prio-low)}
.mm-legend .l-out i{border:1px dashed var(--border-2)}
.mm-legend .l-out{opacity:.6}
.mm-waiting{
  margin-top:10px;padding-top:9px;border-top:1px dashed color-mix(in srgb,var(--mm) 40%,var(--border-2));
  font-size:11px;color:var(--text-3);
}
.mm-waiting span{color:var(--text-2)}
/* Arriving from a company page: the targeted box announces itself. */
.mm-segment{scroll-margin-top:74px}
.mm-group{scroll-margin-top:84px}
.mm-group:target{
  margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:var(--r);
  outline:1.5px solid var(--mm);
}
.mm-segment:target{outline:2px solid var(--mm)}
.mm-note{
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
  font-size:12.5px;color:var(--text-2);background:var(--surface-2);border-radius:var(--r-md);
  padding:9px 13px;margin:0 0 16px;border:1px dashed var(--border-3);
}
.mm-note.warn{color:var(--r-fg);background:var(--r-bg);border-color:var(--r-bd)}
.mm-c0{--mm:var(--mm0)} .mm-c1{--mm:var(--mm1)} .mm-c2{--mm:var(--mm2)} .mm-c3{--mm:var(--mm3)}
.mm-c4{--mm:var(--mm4)} .mm-c5{--mm:var(--mm5)} .mm-c6{--mm:var(--mm6)} .mm-c7{--mm:var(--mm7)}
@media(max-width:900px){.mm-columns{column-count:1}}

/* ---- market map spotlight: prioritised companies lead their niche as logo
   cards; everyone else stays a plain chip, so logos mark attention, not clutter. ---- */
.mm-mk{
  width:22px;height:22px;border-radius:2px;background:#fff;border:1px solid var(--border-2);flex:none;
  display:inline-grid;place-items:center;overflow:hidden;align-self:center;
  font-family:var(--mono);font-size:11px;font-weight:600;color:var(--text-3);
}
.mm-mk img{width:100%;height:100%;object-fit:contain;display:block;padding:1px}
.mm-feat{align-items:center;gap:8px;padding:4px 10px 4px 4px}
.mm-feat .t-name{font-weight:600}
/* Public maps: every chip carries a small mark; the name keeps its normal weight. */
.mm-marked{align-items:center;gap:7px;padding:3px 9px 3px 4px}
.mm-marked .mm-mk{width:16px;height:16px;font-size:9px}

/* ---------- command palette ---------- */
dialog.palette{border:0;padding:0;background:transparent;max-width:none;width:100%}
dialog.palette::backdrop{background:rgba(21,18,13,.55);backdrop-filter:blur(2px)}
.pal{
  width:min(92vw,620px);margin:14vh auto 0;background:var(--surface);
  border:1px solid var(--border-3);border-radius:var(--r-md);overflow:hidden;
}
.pal input{
  width:100%;height:52px;padding:0 18px;border:0;border-radius:0;background:transparent;color:var(--text);
  font-size:15px;font-family:inherit;border-bottom:1px dashed var(--border-2);
}
.pal input:focus{outline:none;border-color:var(--border-2)}
.pal-results{max-height:min(56vh,380px);overflow-y:auto;padding:7px}
.pal-group{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);padding:10px 11px 4px}
.pal-item{
  display:flex;align-items:center;gap:10px;min-height:36px;padding:6px 11px;border-radius:var(--r);
  font-size:13.5px;color:var(--text-2);cursor:pointer;text-decoration:none!important;
}
.pal-item:hover,.pal-item.sel{background:var(--surface-2);color:var(--text)}
.pal-item .ic{width:16px;text-align:center;color:var(--text-3);font-size:12px;flex:none}
.pal-item .hint{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--text-3);white-space:nowrap}
.pal-item .nm{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pal-empty{padding:22px 14px;text-align:center;color:var(--text-3);font-size:13px}
.pal-foot{
  display:flex;gap:14px;align-items:center;padding:8px 14px;border-top:1px solid var(--border-2);
  background:var(--surface-2);font-family:var(--mono);font-size:11px;color:var(--text-3);
}
.pal-foot kbd{font-family:var(--mono);font-size:10px;background:var(--surface);border:1px solid var(--border-2);border-radius:2px;padding:1px 5px}

/* ---------- utilities ---------- */
.nowrap{white-space:nowrap}
.right{text-align:right}
.skeleton{
  height:12px;border-radius:2px;
  background:linear-gradient(90deg,var(--sk-a) 0%,var(--sk-b) 50%,var(--sk-a) 100%);
  background-size:200% 100%;animation:shimmer 1.5s linear infinite;
}
@keyframes shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}

/* "Publish now" sits in the sidebar and reads like a nav row, not a CTA. */
.side-publish button{
  display:flex;align-items:center;gap:9px;width:100%;height:32px;padding:0 9px;border:0;border-radius:var(--r);
  background:transparent;color:var(--text-2);font:inherit;font-size:13.5px;cursor:pointer;text-align:left;
}
.side-publish button:hover{background:var(--surface-3);color:var(--text)}
.side-publish button:disabled{opacity:.6;cursor:default}
.side-publish .ic{width:16px;height:16px;display:grid;place-items:center;opacity:.8;flex:none}
.side-pub-status{font-family:var(--mono);font-size:10.5px;color:var(--text-3);padding:0 9px 4px 33px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-pub-status.bad{color:var(--r-fg)}

@media(max-width:1024px){
  .sidebar{width:72px}
  .side-brand .name,.side-brand .tagline,.side-nav a span:not(.ic),.side-label,.side-foot .who,.side-seg,
  .side-publish button span:not(.ic),.side-pub-status{display:none}
  .side-publish button{justify-content:center}
  .side-nav a{justify-content:center}
  .side-search{justify-content:center}
  .side-search span,.side-search kbd{display:none}
}
@media(max-width:768px){
  main{padding:18px 16px 40px}
  .mm-columns{column-count:1}
  h1{font-size:26px}
}

/* ---------- coverage: one article, several firms ----------
   The same piece is stored once per firm; the page shows it once with a
   stack of the firms it mentions. */
/* Overlapping marks separated by a paper ring, fanning out on hover */
.fp{display:inline-block;max-width:100%}
.fp summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none;min-width:0;padding:4px 0}
.fp summary::-webkit-details-marker{display:none}
.fp-pile{display:inline-flex;align-items:center;flex:none}
.fp-pile .t-logo{outline:2px solid var(--surface);transition:margin .28s cubic-bezier(.2,.8,.2,1),transform .28s cubic-bezier(.2,.8,.2,1)}
.fp-pile .t-logo+.t-logo{margin-left:-7px}
tbody tr:hover .fp-pile .t-logo{outline-color:var(--surface-2)}
.fp summary:hover .fp-pile .t-logo+.t-logo,.fp[open] .fp-pile .t-logo+.t-logo{margin-left:3px}
.fp summary:hover .fp-pile .t-logo:hover{transform:translateY(-2px)}
.fp-more{background:var(--surface-3)!important;color:var(--text-2)!important;font-size:9.5px!important}
.fp-lead{display:flex;align-items:baseline;gap:7px;min-width:0}
.fp-lead strong{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.fp-rest{font-family:var(--mono);font-size:11px;color:var(--text-3);flex:none}
.fp summary:hover .fp-rest,.fp[open] .fp-rest{color:var(--text)}
.fp-pop{
  position:fixed;z-index:60;width:300px;max-height:340px;overflow:auto;white-space:normal;
  background:var(--surface);border:1px solid var(--text);border-radius:var(--r-md);
  animation:fp-in .2s cubic-bezier(.2,.8,.2,1);
}
.fp-pop.up{animation-name:fp-in-up}
.fp-head{
  position:sticky;top:0;z-index:1;background:var(--surface);display:flex;justify-content:space-between;gap:10px;
  padding:10px 12px;border-bottom:1px dashed var(--border-2);font-family:var(--mono);font-size:11px;color:var(--text-3);
}
.fp-head>span:first-child{display:flex;align-items:center;gap:8px;color:var(--text)}
.fp-head .sq{width:8px;height:8px}
.fp-item{
  display:flex;align-items:center;gap:10px;padding:8px 12px;color:var(--text);text-decoration:none;
  border-bottom:1px dashed var(--border-2);animation:fp-item .3s both;animation-delay:calc(var(--i) * 22ms + 40ms);
}
.fp-item:last-child{border-bottom:0}
.fp-item:hover{background:var(--surface-2);text-decoration:none}
.fp-name{flex:1;min-width:0;font-size:13.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
@keyframes fp-in{from{opacity:0;transform:translateY(-4px)}}
@keyframes fp-in-up{from{opacity:0;transform:translateY(4px)}}
@keyframes fp-item{from{opacity:0;transform:translateX(-4px)}}

/* Sources stack: the headline's sub-line opens onto every report of the story */
.fp.src{display:block;margin-top:2px}
.fp.src summary{padding:0;gap:8px;font-family:var(--mono);font-size:11px;color:var(--text-3)}
.src-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.src-more{
  flex:none;display:inline-flex;align-items:center;height:17px;padding:0 5px;border-radius:var(--r-tag);
  border:1px dashed var(--border-3);color:var(--text-2);font-size:10.5px;
}
.fp.src summary:hover .src-more,.fp.src[open] .src-more{border-style:solid;border-color:var(--text);color:var(--text)}
.src-pop{width:440px}
.src-item{align-items:flex-start;gap:12px}
.src-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.src-title{font-size:13px;font-weight:500;line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.src-meta{font-family:var(--mono);font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.src-go{flex:none;color:var(--text-3);font-size:12px;line-height:1.35}
.src-item:hover .src-go{color:var(--text)}

/* ---------- market console (home.html): the Venture Map home ----------
   KPI strip, deal-flow chart, sector momentum -> investor league, deal
   tape, stage mix, hubs, coverage. Every number opens an existing page. */
.mc{--mc-gap:12px;padding-bottom:24px}
.mc [hidden]{display:none!important}
.mc .mc-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;
  padding-bottom:16px;border-bottom:1px dashed var(--border-2)}
.mc .mc-meta{margin-top:8px;font-family:var(--mono);font-size:12px;color:var(--text-3);display:flex;gap:6px 14px;flex-wrap:wrap}
.mc .mc-meta a{color:var(--text-2);text-decoration:none}
.mc .mc-meta a:hover{color:var(--text);text-decoration:underline}
.mc .mc-meta b{font-weight:500;color:var(--text)}
.mc .mc-winwrap{display:flex;align-items:center;gap:14px;flex:0 1 380px;min-width:260px}
/* The window: one notch per month, oldest on the left; the dark notches run to today. */
.mc .mc-win-v{flex:none;min-width:52px;text-align:right;font-size:15px;font-weight:600;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.mc .mc-notches{flex:1;height:24px;display:flex;align-items:center;gap:2px;cursor:ew-resize;
  user-select:none;-webkit-user-select:none;touch-action:none;outline:none}
.mc .mc-notches:focus-visible{outline:2px solid var(--text);outline-offset:6px;border-radius:2px}
.mc .mc-notches i{flex:1;height:10px;border-radius:1px;background:var(--border)}
.mc .mc-notches i.y{height:16px;background:var(--border-2)}
.mc .mc-notches i.on{background:var(--text)}
.mc .mc-notches i.edge{height:22px}
.mc .mc-notches:hover i:not(.on){background:var(--border-2)}
.mc .mc-notches:hover i.y:not(.on){background:var(--border-3)}
.mc.is-loading .mc-kpis,.mc.is-loading .mc-grid{opacity:.55}
@media(max-width:768px){.mc .mc-winwrap{flex-basis:100%}}
.mc .seg-tabs{margin:0}
.mc .seg-tabs button{display:inline-flex;align-items:center;padding:6px 13px;border-radius:2px;border:0;background:transparent;
  font:500 12.5px var(--sans);color:var(--text-2);cursor:pointer}
.mc .seg-tabs button:hover{color:var(--text)}
.mc .seg-tabs button.active{background:var(--surface);color:var(--text);outline:1px solid var(--border-2)}
.mc .seg-tabs.sm a,.mc .seg-tabs.sm button{padding:3px 10px;font-size:12px}

/* KPI strip: tinted tiles, one family */
.mc .mc-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px;margin-top:16px}
.mc .mc-kpi{display:flex;flex-direction:column;gap:6px;min-width:0;background:var(--surface-2);border-radius:var(--r-md);
  padding:14px 16px 12px;color:var(--text);text-decoration:none!important}
.mc .mc-kpi:hover{outline:1px solid var(--text);outline-offset:-1px}
.mc .mc-kpi .k{display:flex;align-items:center;gap:7px;font-family:var(--mono);font-size:11px;color:var(--text-2)}
.mc .mc-kpi .k .go{margin-left:auto;color:var(--text-3)}
.mc .mc-kpi:hover .k .go{color:var(--text)}
.mc .mc-kpi .v{font-size:26px;font-weight:600;letter-spacing:-.025em;line-height:1.05;font-variant-numeric:tabular-nums;margin-top:10px}
.mc .mc-kpi .d{font-family:var(--mono);font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc .mc-kpi .spark{width:100%;height:26px;color:var(--text-3);margin-top:auto}
.mc .mc-kpi:hover .spark{color:var(--text)}
.mc .mc-kpi .nospark{height:26px;margin-top:auto;border-bottom:1px dashed var(--border-2)}
.mc .up{color:var(--g-fg)} .mc .down{color:var(--r-fg)} .mc .flat{color:var(--text-3)}
.mc .mc-kpi .d .up,.mc .mc-kpi .d .down{font-weight:500}

/* 12-column console grid */
.mc .mc-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:var(--mc-gap);margin-top:var(--mc-gap)}
.mc .s8{grid-column:span 8} .mc .s7{grid-column:span 7} .mc .s5{grid-column:span 5} .mc .s4{grid-column:span 4}
.mc .mc-stackcol{display:flex;flex-direction:column;gap:var(--mc-gap);min-width:0}
@media(max-width:1100px){
  .mc .mc-grid{grid-template-columns:minmax(0,1fr)}
  .mc .mc-grid>*{grid-column:1/-1}
  .mc .o-chart{order:1} .mc .o-sect{order:2} .mc .o-inv{order:3} .mc .o-tape{order:4}
  .mc .o-side{order:5} .mc .o-news{order:6}
}

/* panels: 1px frame, paper head, dashed internal dividers */
.mc .mc-p{background:var(--surface);border:1px solid var(--border-2);border-radius:var(--r-md);min-width:0;display:flex;flex-direction:column;overflow:hidden}
.mc .mc-ph{display:flex;align-items:center;gap:10px;padding:11px 14px;border-bottom:1px solid var(--border-2);flex-wrap:wrap}
.mc .mc-ph h3{font-size:15px;letter-spacing:-.015em}
.mc .mc-ph h3 a{color:var(--text);text-decoration:none}
.mc .mc-ph h3 a:hover{text-decoration:underline}
.mc .mc-ph .sub{font-family:var(--mono);font-size:11px;color:var(--text-3)}
.mc .mc-ph .tools{margin-left:auto;display:flex;align-items:center;gap:12px}
.mc .mc-door{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--text-2);text-decoration:none;white-space:nowrap}
.mc .tools .mc-door{margin-left:0}
.mc .mc-door:hover{color:var(--text);text-decoration:underline}
.mc .mc-pb{padding:10px 14px 12px}
.mc .mc-pf{margin-top:auto;padding:8px 14px;border-top:1px dashed var(--border-2);font-family:var(--mono);font-size:10.5px;color:var(--text-3)}
.mc .mc-empty{padding:18px 4px;text-align:center;color:var(--text-3);font-size:13px}

/* deal flow chart */
.mc .o-chart .mc-pb{flex:1;display:flex;flex-direction:column;min-height:0}
.mc .mc-chart{position:relative;flex:1;min-height:210px;margin:4px 0 0}
.mc .mc-chart svg{display:block;width:100%;height:100%;overflow:visible}
.mc .mc-chart .grid line{stroke:var(--border);stroke-dasharray:3 3}
.mc .mc-chart .base{stroke:var(--border-3)}
.mc .mc-chart text{font-family:var(--mono);font-size:10.5px;fill:var(--text-3)}
.mc .mc-chart text.peak{fill:var(--text-2)}
.mc .mc-chart .bar{fill:var(--g)}
.mc .mc-chart .bar.out{fill:color-mix(in srgb,var(--g) 30%,var(--surface))}
.mc .mc-chart .bar.part{fill:color-mix(in srgb,var(--g) 18%,var(--surface));stroke:var(--g);stroke-dasharray:3 2}
.mc .mc-chart .hit{fill:transparent;cursor:pointer}
.mc .mc-chart g.m:hover .bar,.mc .mc-chart g.m:focus .bar{fill:var(--text);stroke:none}
.mc .mc-chart g.m:focus{outline:none}
.mc .mc-chart g.m:focus-visible .hit{stroke:var(--text);stroke-width:1.5}
.mc .mc-chart .win line{stroke:var(--text-3)}
.mc .mc-chart .win text{fill:var(--text-2)}
.mc .mc-tip{position:absolute;z-index:5;pointer-events:none;background:var(--surface);border:1px solid var(--text);border-radius:var(--r);
  padding:7px 9px;font-size:12px;line-height:1.35;white-space:nowrap;min-width:130px}
.mc .mc-tip b{display:block;font-weight:600;margin-bottom:3px}
.mc .mc-tip span{display:flex;justify-content:space-between;gap:14px;font-family:var(--mono);font-size:11px;color:var(--text-2)}
.mc .mc-tip span i{font-style:normal;color:var(--text)}
.mc .mc-legend{display:flex;gap:14px;flex-wrap:wrap;font-family:var(--mono);font-size:10.5px;color:var(--text-3);margin-top:6px}
.mc .mc-legend i{display:inline-block;width:10px;height:10px;border-radius:1px;vertical-align:-1px;margin-right:5px;background:var(--g)}
.mc .mc-legend i.out{background:color-mix(in srgb,var(--g) 30%,var(--surface))}
.mc .mc-legend i.part{background:color-mix(in srgb,var(--g) 18%,var(--surface));outline:1px dashed var(--g);outline-offset:-1px}

/* bar lists (coverage, stage legend) */
.mc .mc-bl{display:flex;flex-direction:column}
.mc .mc-br{display:grid;grid-template-columns:minmax(0,9.5em) minmax(0,1fr) 3.4em;align-items:center;gap:10px;padding:6px 4px;
  border-bottom:1px dashed var(--border-2);color:var(--text);text-decoration:none!important;font-size:13px}
.mc .mc-br:last-child{border-bottom:0}
.mc .mc-br:hover{background:var(--surface-2)}
.mc .mc-br .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc .mc-br .n{font-family:var(--mono);font-size:12px;text-align:right;font-variant-numeric:tabular-nums}
.mc .mc-track{height:8px;background:var(--surface-2);border-radius:1px;overflow:hidden}
.mc .mc-fill{display:block;height:100%;min-width:2px;background:var(--hue,var(--text-3));border-radius:0 2px 2px 0}
.mc .mc-br:hover .mc-fill{background:var(--text)}
.mc .cov{--hue:var(--b)}

/* stage mix: one 100% bar, one hue light -> dark up the ladder */
.mc .mc-stack{display:flex;gap:2px;height:28px;margin:6px 0 10px}
.mc .mc-stack a{display:block;min-width:3px;height:100%;border-radius:1px;background:var(--sw)}
.mc .mc-stack a:hover,.mc .mc-stack a:focus-visible{background:var(--text)}
.mc .sw{--sw:color-mix(in srgb,var(--g) var(--tone),var(--surface))}
.mc .sw.other{--sw:var(--border-2)}
.mc .mc-sl{display:grid;grid-template-columns:12px minmax(0,1fr) auto 3.4em;align-items:center;gap:8px;padding:5px 4px;
  border-bottom:1px dashed var(--border-2);color:var(--text);text-decoration:none!important;font-size:13px}
.mc .mc-sl:last-child{border-bottom:0}
.mc .mc-sl:hover{background:var(--surface-2)}
.mc .mc-sl i{width:10px;height:10px;border-radius:1px;background:var(--sw)}
.mc .mc-sl .n{font-family:var(--mono);font-size:12px;text-align:right}
.mc .mc-sl .pc{font-family:var(--mono);font-size:11px;color:var(--text-3);text-align:right}

/* tables */
.mc .mc-p .table-scroll{flex:1}
/* Deal tape sits beside Coverage pulse: its rows share out the panel's height, so both end level. */
.mc .o-tape .table-scroll{display:flex;flex-direction:column}
.mc .o-tape .table-scroll table{flex:1}
.mc .mc-scrollbox{position:relative;flex:1;min-height:420px}
.mc .mc-scrollbox>.table-scroll{position:absolute;inset:0;overflow:auto}
.mc .mc-scrollbox thead th{position:sticky;top:0;z-index:1;background:var(--surface)}
.mc .mc-p table{--row-h:40px;--cell-px:12px}
.mc .mc-p th{height:32px}
.mc .mc-p thead th{border-top:0}
.mc .mc-p tbody tr:last-child td{border-bottom:0}
.mc tr.row-link:focus-visible{outline:2px solid var(--text);outline-offset:-2px}
.mc tr.row-link:focus-visible td{background:var(--surface-2)}
.mc .t-strong{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.mc .t-sub{font-family:var(--mono);font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block;margin-top:1px}
.mc .t-id>div{min-width:0}
.mc th button{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:4px;border-radius:2px}
.mc th button:hover{color:var(--text)}
.mc th button:focus-visible{outline:2px solid var(--text);outline-offset:2px}
.mc th button::after{content:"↕";opacity:.35;font-size:10px}
.mc th[aria-sort="descending"] button::after{content:"↓";opacity:1}
.mc th[aria-sort="ascending"] button::after{content:"↑";opacity:1}
.mc th[aria-sort="descending"],.mc th[aria-sort="ascending"]{color:var(--text)}
.mc .hue{display:inline-block;width:10px;height:10px;border-radius:1px;background:var(--mm);flex:none}
.mc .sname{display:flex;align-items:center;gap:8px;min-width:0}
.mc .sname b{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc .mini{height:6px;background:var(--surface-2);border-radius:1px;overflow:hidden}
.mc .mini span{display:block;height:100%;background:var(--mm,var(--text-3));border-radius:0 2px 2px 0}
.mc td.dl{font-family:var(--mono);font-size:12.5px;text-align:right;white-space:nowrap}
.mc .rank{font-family:var(--mono);font-size:11px;color:var(--text-3);white-space:nowrap}
.mc a.badge{text-decoration:none!important;max-width:100%;overflow:hidden;text-overflow:ellipsis;display:inline-block;line-height:20px}
.mc a.badge:hover{border-color:var(--text)}
.mc td .link-ink{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.mc .mc-p .t-logo{width:20px;height:20px}
.mc .vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* the selected sector row, and the league it drives */
.mc tr.row-link[data-pick] td:first-child{box-shadow:inset 3px 0 0 transparent}
.mc tr.row-link.sel td{background:color-mix(in srgb,var(--mm) 12%,var(--surface))}
.mc tr.row-link.sel td:first-child{box-shadow:inset 3px 0 0 var(--text)}
.mc td .maplink{font-family:var(--mono);font-size:11px;color:var(--text-3);text-decoration:none;margin-left:auto;padding-left:8px;flex:none;opacity:0}
.mc tr:hover td .maplink,.mc tr.sel td .maplink,.mc td .maplink:focus-visible{opacity:1}
.mc td .maplink:hover{color:var(--text);text-decoration:underline}
.mc .mc-in{display:inline-flex;align-items:center;gap:6px;height:22px;padding:0 4px 0 8px;border-radius:var(--r-tag);
  font-family:var(--mono);font-size:11px;background:color-mix(in srgb,var(--mm) 22%,var(--surface));border:1px solid color-mix(in srgb,var(--mm) 50%,transparent);color:var(--text)}
.mc .mc-in a{color:var(--text-2);text-decoration:none;padding:0 4px;border-radius:2px}
.mc .mc-in a:hover{color:var(--text);background:var(--surface)}
.mc #mc-league.is-loading{opacity:.55}

@media(max-width:768px){
  .mc .mc-head{align-items:flex-start}
  .mc .mc-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}
  .mc .mc-kpi .v{font-size:22px}
  .mc .mc-kpi:last-child{grid-column:1/-1}
  .mc .mc-kpi{padding:12px 12px 10px}
  .mc .mc-chart{min-height:190px}
  .mc .mc-ph .sub{display:none}
}
.spark{display:block;color:var(--text)}

/* Console: the week's most-read stories */
.mc .mc-top{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.mc .mc-top li{display:grid;grid-template-columns:1.8em minmax(0,1fr);gap:8px;align-items:baseline;padding:7px 4px;border-bottom:1px dashed var(--border-2)}
.mc .mc-top li:last-child{border-bottom:0}
.mc .mc-top .rk{font-family:var(--mono);font-size:11.5px;color:var(--text-3);text-align:right;font-variant-numeric:tabular-nums}
.mc .mc-top .bd{display:flex;flex-direction:column;gap:2px;min-width:0}
.mc .mc-top .tt{font-size:13px;font-weight:500;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mc .mc-top .mt{font-family:var(--mono);font-size:11px;color:var(--text-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ---------- smart filter (directories): chips, "+ filter", editors ---------- */
.sf-bar{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:2px 0 0}
.sf-q{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:12px;line-height:1.3;border:1px solid var(--border-2);
  border-radius:var(--r-tag);padding:4px 4px 4px 9px;background:var(--surface-2);color:var(--text);cursor:pointer}
.sf-q:hover,.sf-q.open{border-color:var(--text)}
.sf-q.ent{background:var(--text);border-color:var(--text);color:var(--bg);padding-right:9px;cursor:default}
.sf-q.neg{background:var(--r-bg);border-color:var(--r-bd)}
.sf-q button{border:0;background:none;cursor:pointer;color:var(--text-3);font-size:13px;line-height:1;padding:0 3px}
.sf-q button:hover{color:var(--text)}
.sf-plus{border:1px dashed var(--border-3);background:transparent;font-family:var(--mono);font-size:12px;line-height:1.3;border-radius:var(--r-tag);
  padding:4px 9px;cursor:pointer;color:var(--text-2)}
.sf-plus:hover,.sf-plus.open{border-style:solid;border-color:var(--text);color:var(--text);background:var(--accent)}
.sf-over{border:0;background:none;font:inherit;font-size:12.5px;color:var(--text-2);cursor:pointer;padding:4px 6px}
.sf-over:hover{color:var(--text);text-decoration:underline;text-decoration-color:var(--border-2)}
.sf-read{margin:10px 0 0;font-size:14px;color:var(--text-2);max-width:90ch}
.sf-read b{color:var(--text);font-weight:600}
.sf-pop{position:fixed;z-index:80;background:var(--surface);border:1px solid var(--text);border-radius:var(--r-md);
  width:320px;max-height:min(520px,calc(100vh - 40px));overflow:auto;padding:12px}
.sf-pop h4{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);font-weight:500;margin:12px 0 6px}
.sf-pop h4:first-child{margin-top:0}
.sf-pop input[type=search],.sf-pop input[type=number],.sf-pop input[type=text]{width:100%;height:32px}
.sf-pop .sf-row input[type=number]{width:84px}
.sf-pop .foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:10px;border-top:1px dashed var(--border-2)}
.sf-pop .foot .live{font-family:var(--mono);font-size:11.5px;color:var(--text-3)}
.sf-note{margin:8px 0 0;font-size:12px;color:var(--text-3)}
.sf-opts{margin-top:8px;max-height:260px;overflow:auto}
.sf-opt{display:grid;grid-template-columns:16px 1fr auto;gap:8px;align-items:center;padding:6px 4px;border-bottom:1px dashed var(--border);cursor:pointer;font-size:13px;position:relative}
.sf-opt:last-child{border-bottom:0}
.sf-opt:hover{background:var(--surface-2)}
.sf-opt .box{width:14px;height:14px;border:1px solid var(--border-3);border-radius:2px;display:grid;place-items:center;font-size:10px;line-height:1}
.sf-opt.on .box{background:var(--text);border-color:var(--text);color:var(--bg)}
.sf-opt .ct{font-family:var(--mono);font-size:11px;color:var(--text-3)}
.sf-opt .bar{position:absolute;left:28px;bottom:2px;height:2px;background:var(--accent);border-radius:1px}
.sf-opt .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.sf-chips{display:flex;flex-wrap:wrap;gap:5px}
.sf-chip{font-family:var(--mono);font-size:11.5px;padding:3px 8px;border:1px solid var(--border-2);border-radius:var(--r-tag);background:transparent;color:var(--text-2);cursor:pointer;line-height:1.4}
.sf-chip:hover{border-color:var(--text);color:var(--text)}
.sf-chip.on{background:var(--text);border-color:var(--text);color:var(--bg)}
.sf-seg{display:inline-flex;gap:2px;background:var(--surface-2);padding:3px;border-radius:var(--r)}
.sf-seg button{border:0;background:transparent;font:inherit;font-size:12.5px;padding:4px 10px;border-radius:2px;color:var(--text-2);cursor:pointer}
.sf-seg button.on{background:var(--surface);color:var(--text);outline:1px solid var(--border-2)}
.sf-row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.sf-step{display:inline-flex;align-items:center;border:1px solid var(--border-2);border-radius:var(--r);height:32px}
.sf-step button{border:0;background:transparent;width:28px;height:100%;cursor:pointer;font-size:15px;color:var(--text-2)}
.sf-step button:hover{background:var(--surface-2);color:var(--text)}
.sf-step span{font-family:var(--mono);min-width:28px;text-align:center;font-size:13px}
.sf-picked{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}
.sf-toggle{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer;margin-top:10px}
.sf-toggle input{margin:0}
.sf-menu .grp{font-family:var(--mono);font-size:10.5px;letter-spacing:.04em;text-transform:uppercase;color:var(--text-3);margin:10px 0 4px}
.sf-menu button.fi{display:flex;width:100%;text-align:left;border:0;background:transparent;font:inherit;font-size:13.5px;padding:7px 8px;border-radius:var(--r);cursor:pointer;color:var(--text);gap:8px;align-items:baseline}
.sf-menu button.fi:hover{background:var(--surface-2)}
.sf-menu button.fi .eg{margin-left:auto;font-family:var(--mono);font-size:11px;color:var(--text-3);white-space:nowrap}
