  /* layout + nav + header band come from site.css — page-specific styles only below.
     The screener grid lives INSIDE the same 1120px column as everything else; when the
     visible columns need more width it scrolls HORIZONTALLY inside the column
     (.headwrap/.bodywrap, scroll-synced). Vertical scrolling stays on the window —
     the virtualizer depends on that. */
  :root { --rowalt:#0c0f14; --rowh:36px; }
  .stats { color:var(--muted); font-size:var(--type-sm); }
  .stats b { color:var(--text); font-weight:var(--weight-medium); }
  .controls { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; padding: 8px var(--pad); background: var(--panel); }
  .controls.r1 { padding-bottom: 2px; }
  .controls.r2 { padding-top: 2px; }
  .controls.rf { padding-top: 2px; border-bottom: 1px solid var(--line); }
  .frow { display: flex; gap: 7px; align-items: center; flex-wrap: wrap; }
  .frow .flbl { font-size: 10px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--muted); }
  #fval { width: 128px; min-width: 0; }
  #fval.is-invalid { border-color:var(--negative); }
  .faddbtn { min-height:var(--control-height); background:var(--bg); color:var(--text); border:1px solid var(--line); border-radius:var(--control-radius); padding:6px 10px; font-size:var(--type-sm); cursor:pointer; }
  .faddbtn:hover { border-color: var(--accent); color: var(--accent); }
  .frules { display: flex; gap: 6px; flex-wrap: wrap; }
  .frule { display: inline-flex; align-items: center; gap: 6px; background: #1b2530; border: 1px solid var(--line); border-radius: 7px; padding: 3px 5px 3px 10px; font-size: 12px; color: var(--text); }
  .frule b { color: var(--accent); font-weight: 600; }
  .frule .fx { cursor: pointer; color: var(--muted); font-weight: 700; padding: 0 3px; }
  .frule .fx:hover { color: #f85149; }
  /* quick-filter chips: one-click top chains + top categories (wrap the chain/sector selects) */
  .qbar { display: flex; flex-direction: column; gap: 6px; padding: 10px var(--pad) 4px; background: var(--panel); }
  .qrow { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
  .qlbl { flex: 0 0 58px; font-size: 10px; font-weight: 700; letter-spacing: .5px; text-transform: uppercase; color: var(--muted); }
  .qchips { display: flex; gap: 6px; flex-wrap: wrap; }
  .qf { min-height:30px; background:var(--bg); border:1px solid var(--line); color:var(--muted); font:inherit; font-size:var(--type-sm); font-weight:var(--weight-medium); padding:4px 11px; border-radius:var(--control-radius); cursor:pointer; }
  .qf:hover { color: var(--text); border-color: var(--accent); }
  .qf.on { background: #1b2530; border-color: var(--accent); color: var(--text); }
  /* Searchable chain picker: preserves the full chain catalogue without opening a 240-row native menu. */
  .chainpick { position:relative; display:inline-flex; min-width:220px; }
  .chainbtn {
    width:100%; min-height:var(--control-height); display:flex; align-items:center; justify-content:space-between; gap:10px;
    border:1px solid var(--line); border-radius:var(--control-radius); background:var(--surface-deep); color:var(--text);
    padding:0 var(--control-pad-x); font:var(--type-sm)/1.2 var(--font-sans); cursor:pointer;
  }
  .chainbtn:hover { border-color:var(--muted); }
  .chainbtn[aria-expanded="true"] { border-color:var(--accent); }
  .chainpanel {
    position:absolute; top:calc(100% + 6px); left:0; z-index:30; width:min(360px, calc(100vw - 32px));
    border:1px solid var(--line); border-radius:8px; background:var(--panel); padding:10px;
  }
  .chainpanel > label { display:block; margin-bottom:5px; color:var(--muted); font-size:10px; font-weight:700; letter-spacing:.5px; text-transform:uppercase; }
  .chainpanel #chainsearch { width:100%; min-width:0; }
  .chainpick-meta { display:block; padding:7px 2px 5px; color:var(--muted); font-size:10px; }
  .chainoptions { display:block; max-height:268px; overflow-y:auto; border-top:1px solid var(--line); }
  .chainoption {
    width:100%; min-height:32px; display:flex; align-items:center; border:0; border-bottom:1px solid #1b2129;
    background:transparent; color:var(--text); padding:5px 8px; font:var(--type-sm)/1.3 var(--font-sans); text-align:left; cursor:pointer;
  }
  .chainoption:hover, .chainoption:focus-visible { background:#1b2530; color:var(--accent); }
  .chainoption[aria-selected="true"] { color:var(--accent); font-weight:var(--weight-bold); }
  .chainempty { display:block; padding:12px 8px 4px; color:var(--muted); font-size:var(--type-sm); }
  input[type=search] { min-width: 240px; }
  label.chk { color: var(--muted); display: inline-flex; gap: 5px; align-items: center; cursor: pointer; user-select: none; }
  /* summary strip: choose one population, then refine it with risk/age chips */
  .summary { margin-top: 10px; }
  .scopeband { padding-bottom: 11px; margin-bottom: 12px; border-bottom: 1px solid var(--line); }
  .scopeband .sumlbl { gap: 8px; flex-wrap: wrap; }
  .scopechips { display: flex; gap: 6px; flex-wrap: wrap; }
  .scopechip {
    display: inline-flex; align-items: baseline; gap: 7px; min-height: 30px; padding: 5px 10px;
    border: 1px solid var(--line); border-radius: 7px; background: var(--bg); color: var(--muted);
    font-size: 12px; cursor: pointer; white-space: nowrap;
  }
  .scopechip:hover, .scopechip:focus-visible { border-color: var(--accent); color: var(--text); }
  .scopechip:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
  .scopechip.on { border-color: var(--accent); background: #1b2530; color: var(--text); }
  .scopechip b { color: var(--text); font-weight: 650; }
  .scopechip[data-population="alive"] span { color: var(--positive); }
  .scopechip[data-population="dead"] span { color: var(--negative); }
  .scopechip[data-population="evidence"] span { color: var(--warning); }
  .scopechip[data-population="archive"] span { color: var(--neutral); }
  .scopechip[data-population="alive"].on { border-color: var(--positive); background: #102619; }
  .scopechip[data-population="dead"].on { border-color: var(--negative); background: #2a1417; }
  .scopechip[data-population="evidence"].on { border-color: var(--warning); background: #28210f; }
  .scopechip[data-population="archive"].on { border-color: var(--neutral); }
  .archivebar { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
  .archivebar .axis-archive { min-width: 82px; color: var(--neutral); }
  .archivechip.on { border-color: var(--neutral); }
  /* hybrid band: KPI 2x2 (left) beside the danger cells (right); stacks on narrow */
  .sumband { display: grid; grid-template-columns: minmax(230px, 0.82fr) 1.55fr; gap: 12px; align-items: start; }
  @media (max-width: 820px) { .sumband { grid-template-columns: 1fr; } }
  .sumlbl { font-size: 10px; letter-spacing: .5px; color: var(--muted); margin-bottom: 6px; display: flex; justify-content: space-between; }
  .sumlbl .hint { color: #6e7681; font-weight: 400; }
  .kpigrid { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
  .card { background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 7px 11px; }
  .card .k { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: .4px; }
  .card .v { color: var(--text); font-size: 17px; font-weight: 650; margin-top: 2px; }
  .card .v.warn { color:var(--warning); }
  .card .s { color: var(--muted); font-size: 10px; margin-top: 1px; }
  /* graduated danger levels + per-axis inverse (the complement) */
  .dstack { display: flex; flex-direction: column; gap: 6px; }
  .daxis { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
  .daxlbl { font-size: 10px; text-transform: uppercase; letter-spacing: .4px; font-weight: 700; min-width: 62px; }
  .dchips { display: flex; gap: 6px; flex-wrap: wrap; }
  .lchip { display: inline-flex; align-items: baseline; gap: 6px; background: var(--bg); color: inherit; border: 1px solid var(--line); border-radius: 7px; padding: 4px 9px; font-size: 12px; cursor: pointer; user-select: none; white-space: nowrap; }
  .lchip:hover, .lchip:focus-visible { border-color: var(--accent); }
  .lchip:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
  .lchip.on { border-color: var(--accent); background: #1b2530; }
  .lchip .ll { color: var(--muted); }
  .lchip.on .ll { color: var(--text); }
  .lchip .ln { color: var(--text); font-weight: 600; }
  .lchip.inv { border-style: dashed; }                    /* paired positive selectors read distinctly */
  .lchip.hot .ll { color: #3fb950; font-weight: 650; }    /* positive survivor selectors (not crushed / 4yr+) */
  .lchip.hot:hover, .lchip.hot.on { border-color: #3fb950; }
  .lchip.hot.on { background: #102619; }
  .daxnote { color: var(--muted); font-size: 10px; font-style: italic; }
  .dscanfoot { color: var(--muted); font-size: 10.5px; margin-top: 8px; line-height: 1.4; }
  .sumxrow { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 9px; }
  @media (max-width: 820px) { .sumxrow { grid-template-columns: 1fr; } }
  .sumex { background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 7px 12px; font-size: 12px; color: var(--text); }
  .sumex .k { color: var(--muted); font-size: 10px; text-transform: uppercase; letter-spacing: .4px; display: block; margin-bottom: 2px; }
  .sumex b { color: var(--text); font-weight: 650; }
  .row > div.dead-sym { color:#f85149; font-weight:700; }

  /* grid-template-columns is set dynamically (setGrid → a created <style> element) from the VISIBLE
     columns so the header and every row stay aligned as columns are toggled. Default = the original 16.
     Side padding = --pad minus the cell's own 8px, so column TEXT lands on the shell gutter (24px) like
     every other page while the row background still spans border-to-border (the rank column is too
     narrow to carry a 24px cell gutter itself). setGrid adds this 2×16px to the min-width. */
  .grid-cols {
    display: grid;
    grid-template-columns: var(--token-grid-columns, 1fr);
    min-width: var(--token-grid-min-width, 100%);
    padding: 0 16px;
  }
  /* two-container pattern: sticky header strip + horizontally scrollable body, scroll-synced by JS.
     The header strip carries the horizontal scrollbar (always visible while pinned); the body has no
     vertical overflow of its own, so vertical scrolling — and the virtualizer — stay on the window. */
  .headwrap { position: sticky; top: 0; z-index: 2; overflow-x:auto; overflow-y:clip; background: #1b212b; }
  .bodywrap { overflow-x:auto; overflow-y:clip; scrollbar-width:none; }
  .bodywrap::-webkit-scrollbar { display: none; } /* the headwrap scrollbar is THE scrollbar */

  /* Column picker */
  .colpick { position: relative; display: inline-flex; }
  .colbtn { min-height:var(--control-height); background:var(--bg); color:var(--text); border:1px solid var(--line); border-radius:var(--control-radius); padding:6px 10px; font-size:var(--type-sm); cursor:pointer; }
  .colbtn:hover { border-color: var(--accent); color: var(--accent); }
  .colpanel { position: absolute; top: calc(100% + 6px); right: 0; z-index: 20; width: 232px; max-height: 64vh; overflow: auto;
    background: var(--panel); border: 1px solid var(--line); border-radius: 8px; padding: 10px; }
  .colpanel-h { display: flex; justify-content: space-between; align-items: center; font-size: 11px; text-transform: uppercase; letter-spacing: .4px; color: var(--muted); margin-bottom: 8px; }
  .colreset { background: var(--bg); color: var(--text); border: 1px solid var(--line); border-radius: 5px; padding: 3px 8px; font-size: 11px; cursor: pointer; text-transform: none; letter-spacing: 0; }
  .colreset:hover { border-color: var(--accent); color: var(--accent); }
  .colpanel label { display: flex; gap: 8px; align-items: center; padding: 3px 2px; font-size: 13px; cursor: pointer; color: var(--text); }
  .colpanel label.added { color: var(--accent); }
  .colpanel label.forced { color: var(--neutral); cursor: default; }
  .colpanel-sep { margin: 8px 0 4px; font-size: 10px; text-transform: uppercase; letter-spacing: .4px; color: var(--muted); }
  .colpanel-note { margin-top: 8px; font-size: 11px; color: var(--muted); border-top: 1px solid var(--line); padding-top: 6px; }
  .head { background: #1b212b; border-bottom: 1px solid var(--line); }
  .head > div { padding:8px; font-size:var(--table-head-size); font-weight:var(--weight-bold); text-transform:uppercase; letter-spacing:.4px;
    color: var(--muted); cursor: pointer; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; user-select: none; }
  .head > div:hover { color: var(--text); }
  .head > div.sorted { color: var(--accent); }
  .num { text-align: right; }

  #scroller { position: relative; }
  #sizer { position: relative; width: 100%; }
  #rows { position: absolute; top: 0; left: 0; right: 0; }
  .row { height: var(--rowh); align-items: center; border-bottom: 1px solid #1b2129; }
  .row:nth-child(even) { background: var(--rowalt); }
  .row:nth-child(odd) { background: var(--row); }
  .row.dim { opacity: .5; }
  .row.provider-stale { box-shadow: inset 3px 0 #e3b341; }
  .row > div.provider-stale-key, .provider-stale-key { color:var(--warning); font-weight:var(--weight-bold); }
  .row > :where(div) { overflow:hidden; padding:0 8px; color:var(--neutral); font-family:var(--font-sans); font-size:var(--table-compact-size); font-weight:var(--weight-normal); text-overflow:ellipsis; white-space:nowrap; }
  .sym { color:var(--text); font-weight:var(--weight-bold); text-transform:uppercase; }
  .sym .table-row-action { color:inherit; font-weight:inherit; }
  .cg-link { cursor: pointer; }
  .cg-link:hover { color: var(--accent); text-decoration: underline; }
  .name { color:var(--neutral); font-weight:var(--weight-normal); }
  .market-status { color:var(--neutral); font-size:inherit; font-weight:var(--weight-normal); }
  .row .missing, .tm-rrow .missing { color:var(--dim); font-weight:var(--weight-normal); }
  /* left gap so the FFI (slow) heat bar is visually separated from FFI 365 (fast) */
  .sep { margin-left: 8px; }
  .empty { padding: 60px 18px; text-align: center; color: var(--muted); }
  .daxlbl.axis-crushed { color:#f0883e; }
  .daxlbl.axis-age { color:#56d4dd; }
  .young { color:#EF9F27; }

  /* Token desk: the market map adds context and drill-down; the original full
     screener remains intact inside its own view. */
  .tm-pagehead {
    display: flex; align-items: end; justify-content: space-between; gap: 28px;
    padding: 18px var(--pad) 14px; background: var(--bg);
  }
  .tm-pagecopy { min-width: 0; }
  .tm-pagehead h1 { margin:3px 0 0; color:var(--text); font-size:22px; font-weight:var(--weight-bold); line-height:1.15; }
  .tm-pagehead p { max-width:720px; margin:5px 0 0; color:var(--muted); font-size:var(--type-sm); }
  .tm-pageactions { display: flex; align-items: center; gap: 8px; }
  .explainbtn {
    min-height: 37px; padding: 7px 12px; border: 1px solid var(--line); background: var(--bg); color: var(--muted);
    font-size: 11px; font-weight: 700; letter-spacing: .35px; text-transform: uppercase; cursor: pointer;
  }
  .explainbtn:hover, .explainbtn[aria-expanded="true"] { border-color: var(--accent); color: var(--text); }
  .explainbtn:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
  .explainbody { margin: 0 var(--pad) 14px; border: 1px solid var(--line); background: var(--line); color: var(--muted); }
  .explain-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; }
  .explain-group { min-width: 0; padding: 12px 14px; background: var(--bg); }
  .explain-group h2 { margin: 0 0 7px; color: var(--neutral); font-size: 10px; letter-spacing: .5px; text-transform: uppercase; }
  .explain-group p { margin: 5px 0 0; font-size: 11px; line-height: 1.55; }
  .explain-group b { color: var(--text); font-weight: 650; }
  .explain-group dl { margin: 0; }
  .explain-group dl > div { display: grid; grid-template-columns: 86px 1fr; gap: 9px; padding: 3px 0; }
  .explain-group dt { color: var(--text); font-size: 11px; font-weight: 650; }
  .explain-group dd { margin: 0; font-size: 11px; line-height: 1.5; }
  @media (max-width: 820px) { .explain-grid { grid-template-columns: 1fr; } }
  .tm-tabs { display: flex; gap: 4px; padding: 3px; border: 1px solid var(--line); background: var(--bg); }
  .tm-tab {
    border: 0; padding: 7px 13px; background: transparent; color: var(--muted);
    font-size: 11px; font-weight: 700; letter-spacing: .35px; text-transform: uppercase; cursor: pointer;
  }
  .tm-tab:hover { color: var(--text); }
  .tm-tab.on { background: #1b3a5d; color: #fff; }
  .tm-map { padding: 0 var(--pad) 42px; }
  .tm-kicker { color: var(--accent); font-size: 10px; font-weight: 750; letter-spacing: .55px; text-transform: uppercase; }
  .tm-metrics {
    display: grid; grid-template-columns: repeat(5, minmax(0, 1fr));
    border: 1px solid var(--line); background: var(--line); gap: 1px; margin-bottom: 14px;
  }
  .tm-metric {
    min-width: 0; border: 0; padding: 12px 13px; background: var(--bg); color: inherit; text-align: left;
  }
  button.tm-metric { cursor: pointer; }
  button.tm-metric:hover, button.tm-metric.on { background: #142235; box-shadow: inset 0 -2px var(--accent); }
  .tm-metric .k { display: block; color: var(--muted); font-size: 9px; font-weight: 700; letter-spacing: .45px; text-transform: uppercase; }
  .tm-metric .v { display: block; margin-top: 4px; color: var(--text); font-size: 20px; font-weight: 750; line-height: 1.05; }
  .tm-metric .s { display:block; margin-top:4px; overflow:hidden; color:var(--muted); font-size:var(--type-xs); text-overflow:ellipsis; white-space:nowrap; }
  .tm-metric.good .v { color: #3fb950; }
  .tm-core { display: grid; grid-template-columns: 1fr; gap: 14px; }
  .tm-panel { min-width: 0; border: 1px solid var(--line); background: var(--bg); }
  .tm-ph {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    min-height: 44px; padding: 10px 13px; border-bottom: 1px solid var(--line);
  }
  .tm-ph h2 { margin:0; font-size:13px; }
  .tm-ph small { color: var(--muted); font-size: 9px; text-align: right; }
  .tm-funnel { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 14px; }
  .tm-stage {
    display: grid; grid-template-columns: minmax(112px, 1fr) auto; gap: 10px; align-items: center;
    width: 100%; min-height: 50px; padding: 8px 11px; border: 1px solid var(--line);
    border-left: 3px solid var(--tone, var(--accent)); background: var(--panel); color: inherit; text-align: left; cursor: pointer;
  }
  .tm-stage:hover, .tm-stage.on { background: #142235; border-color: var(--accent); border-left-color: var(--tone, var(--accent)); }
  .tm-stage.cohort-universe, .tm-stage.cohort-alive { --tone:#58a6ff; }
  .tm-stage.cohort-notcrushed { --tone:#e3b341; }
  .tm-stage.cohort-proven { --tone:#3fb950; }
  .tm-stage .n { display: block; color: var(--text); font-size: 11px; font-weight: 750; text-transform: uppercase; }
  .tm-stage .rule { display: block; margin-top: 3px; color: var(--muted); font-size: 9px; }
  .tm-stage .count { color: var(--text); font-size: 18px; font-weight: 750; }
  .tm-stage .share { display: block; color: var(--muted); font-size: 9px; text-align: right; }
  .tm-cohort-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; padding: 11px 13px; border-bottom: 1px solid var(--line); }
  .tm-cohort-title { flex: 1 1 280px; margin-right: auto; }
  .tm-cohort-title strong { display: block; color: var(--text); font-size: 13px; }
  .tm-cohort-title span { display: block; margin-top: 2px; color: var(--muted); font-size: 9px; }
  .tm-cohort-filters { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
  input.tm-search, select.tm-filter { min-width:0; }
  .tm-search { width: 180px; }
  .tm-filter { width: 146px; }
  .tm-type { width: 128px; }
  .tm-results { padding: 0 13px; }
  .tm-rhead, .tm-rrow {
    display: grid;
    grid-template-columns:
      minmax(150px, 1.25fr)
      minmax(145px, 1.1fr)
      84px
      96px
      96px
      86px
      68px
      54px
      58px;
    gap: 9px; align-items: center;
  }
  .tm-rhead {
    min-height:36px; color:var(--muted); font-size:var(--table-head-size); font-weight:var(--weight-bold);
    letter-spacing: .4px; text-transform: uppercase;
  }
  .tm-rhead > span:nth-child(n + 3) { text-align: right; }
  .tm-sorthead {
    display: inline-flex; align-items: center; gap: 4px; width: 100%; padding: 8px 0;
    border: 0; background: transparent; color: inherit; font: inherit; font-weight: inherit;
    letter-spacing: inherit; text-align: left; text-transform: inherit; cursor: pointer;
  }
  .tm-rhead > span:nth-child(n + 3) .tm-sorthead { justify-content: flex-end; text-align: right; }
  .tm-sorthead:hover, .tm-sorthead:focus-visible, .tm-sorthead.on { color: var(--text); }
  .tm-sorthead:focus-visible { border-radius: 3px; outline: 1px solid var(--accent); outline-offset: 2px; }
  .tm-sortmark { width: 8px; color: var(--accent); font-style: normal; opacity: .45; }
  .tm-sorthead.on .tm-sortmark { opacity: 1; }
  .tm-rrow { min-height:var(--table-row-height); border-top:1px solid var(--line); color:var(--neutral); font-family:var(--font-sans); font-size:var(--table-compact-size); font-weight:var(--weight-normal); }
  .tm-rrow:hover { background: #111923; }
  .tm-asset {
    min-width: 0; overflow: hidden; padding: 0; border: 0; background: transparent;
    color:var(--text); font:inherit; font-weight:var(--weight-bold); text-align:left; text-overflow:ellipsis; white-space:nowrap;
  }
  .tm-asset b { color:var(--text); font-size:inherit; font-weight:var(--weight-bold); text-transform:uppercase; }
  .tm-asset span { margin-left:6px; color:var(--text); font-size:inherit; font-weight:var(--weight-bold); }
  .tm-asset .tm-status { color:var(--muted); font-size:inherit; font-weight:var(--weight-normal); letter-spacing:.2px; text-transform:uppercase; }
  button.tm-asset { cursor: pointer; }
  button.tm-asset:hover b, button.tm-asset:focus-visible b { color: var(--accent); text-decoration: underline; }
  button.tm-asset:focus-visible { outline: 1px solid var(--accent); outline-offset: 3px; }
  .tm-cell { color:var(--neutral); font-size:inherit; font-weight:var(--weight-normal); text-align:right; }
  .ffi-heat { border-radius:var(--control-radius); background:var(--heat); color:var(--heat-text,#fff); font-weight:var(--weight-normal); text-align:right; }
  /* UNPROVEN — loud "don't trust this line yet" treatment (short history, < 1 full cycle). */
  .row > div.unproven:not(.ffi-heat), .tm-cell.unproven:not(.ffi-heat) { color:var(--warning); font-weight:var(--weight-normal); }
  .ffi-heat.unproven { color:var(--heat-text,#fff); outline:2px dashed #ffae3b; outline-offset:-2px; }
  .tm-cell.ffi-heat { padding: 0 8px; }
  .tm-sector {
    min-width:0; overflow:hidden; color:var(--neutral); font-size:inherit; font-weight:var(--weight-normal);
    text-overflow:ellipsis; white-space:nowrap;
  }
  .tm-cohort-actions { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 11px 13px; border-top: 1px solid var(--line); }
  .tm-shown { color: var(--muted); font-size: 10px; }
  .tm-action {
    border: 1px solid var(--accent); border-radius: 5px; padding: 6px 10px; background: #12263d;
    color: var(--text); font-size: 10px; font-weight: 700; cursor: pointer;
  }
  .tm-action.secondary { border-color: var(--line); background: var(--panel); color: var(--muted); }
  .tm-action:hover { color: #fff; border-color: #79b8ff; }
  .tm-context { display: grid; grid-template-columns: 1.1fr .9fr .9fr; gap: 14px; margin: 0 0 14px; }
  .tm-bars { display: grid; gap: 9px; padding: 12px 13px; }
  .tm-bar { border: 0; padding: 0; background: transparent; color: inherit; text-align: left; cursor: pointer; }
  .tm-bar:hover .tm-bar-top b { color: var(--accent); }
  .tm-bar-top { display: flex; justify-content: space-between; gap: 10px; margin-bottom: 4px; font-size: 10px; }
  .tm-bar-top b { color: var(--text); }
  .tm-bar-top span { color: var(--muted); }
  .tm-track { display: block; height: 5px; background: #242c37; }
  .tm-fill { display: block; width: var(--w); height: 100%; background: var(--tone); }
  .tm-fill.cohort-destroyed90 { --tone:#f85149; }
  .tm-fill.cohort-crushed7090 { --tone:#f0883e; }
  .tm-fill.cohort-stressed5070 { --tone:#e3b341; }
  .tm-fill.cohort-notcrushed { --tone:#3fb950; }
  .tm-list { padding: 4px 13px 8px; }
  .tm-line { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; gap: 10px; align-items: center; min-height: 34px; border-bottom: 1px solid #1b2129; }
  .tm-line:last-child { border-bottom: 0; }
  .tm-line .asset { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
  .tm-line .asset b { color: var(--text); text-transform: uppercase; }
  .tm-line .asset span { margin-left: 5px; color: var(--muted); font-size: 9px; }
  .tm-line .mc { color: var(--text); font-size: 10px; font-weight: 650; }
  .tm-line .dd { min-width: 48px; color: var(--muted); font-size: 9px; text-align: right; }
  .tm-coverage { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; padding: 1px; background: var(--line); }
  .tm-cov { min-height: 79px; padding: 11px; background: var(--bg); }
  .tm-cov .k { color: var(--muted); font-size: 8px; font-weight: 700; text-transform: uppercase; }
  .tm-cov .v { display: block; margin: 5px 0 3px; color: var(--text); font-size: 17px; font-weight: 750; }
  .tm-cov .v.warn { color: #e3b341; }
  .tm-cov .s { color: var(--muted); font-size: 9px; }
  .tm-empty { padding: 34px 15px; color: var(--muted); text-align: center; }
  .tm-clear-filters { margin-left: 5px; padding: 0; border: 0; background: transparent; color: var(--accent); font: inherit; text-decoration: underline; cursor: pointer; }
  .tm-clear-filters:hover, .tm-clear-filters:focus-visible { color: var(--text); }
  @media (max-width: 980px) {
    .head > :first-child { position:sticky; left:0; z-index:3; background:#1b212b; }
    .row > .sym { position:sticky; left:0; z-index:1; }
    .row:nth-child(even) > .sym { background:var(--rowalt); }
    .row:nth-child(odd) > .sym { background:var(--row); }
    .tm-metrics { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .tm-core { grid-template-columns: 1fr; }
    .tm-funnel { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .tm-context { grid-template-columns: 1fr 1fr; }
    .tm-context > :last-child { grid-column: 1 / -1; }
    .tm-rhead, .tm-rrow {
      grid-template-columns: minmax(135px, 1.25fr) minmax(120px, 1fr) 76px 86px 72px 48px 52px;
      gap: 7px;
    }
    .tm-col-volume, .tm-cell.volume, .tm-col-ffi365, .tm-cell.ffi365 { display: none; }
  }
  @media (max-width: 700px) {
    .colpanel { left:0; right:auto; }
    .tm-pagehead { align-items: flex-start; flex-direction: column; }
    .tm-pageactions { width: 100%; align-items: stretch; }
    .tm-tabs { width: auto; flex: 1; }
    .tm-tab { flex: 1; }
    .tm-metrics { grid-template-columns: 1fr 1fr; }
    .tm-metric:last-child { grid-column: 1 / -1; }
    .tm-cohort-head { align-items: stretch; }
    .tm-cohort-title { flex: 1 0 100%; }
    .tm-cohort-filters { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); width: 100%; }
    .tm-search { grid-column: 1 / -1; }
    .tm-chain-filter { grid-column: 1 / -1; }
    .tm-cohort-actions { align-items:stretch; flex-direction:column; }
    .tm-cohort-actions > span:last-child { display:flex; flex-wrap:wrap; gap:8px; }
    .tm-action { flex:1 1 140px; }
    .tm-search, .tm-filter { width: 100%; }
    .tm-funnel { grid-template-columns: 1fr; }
    .tm-rhead { display: none; }
    .tm-rrow { grid-template-columns: 1fr auto auto; gap: 6px 10px; padding: 9px 0; }
    .tm-asset { grid-column: 1 / -1; }
    .tm-sector { max-width: 145px; }
    .tm-rrow > [data-label]::before {
      display:block; margin-bottom:2px; color:var(--muted); content:attr(data-label);
      font-size:var(--table-head-size); font-weight:var(--weight-bold); letter-spacing:.04em; text-transform:uppercase;
    }
    .tm-rrow > .tm-sector[data-label]::before { text-align:left; }
    .tm-rrow > .tm-cell[data-label]::before { text-align:right; }
    .tm-cell.price, .tm-cell.volume, .tm-cell.age,
    .tm-cell.ffi365, .tm-cell.ffi { display: none; }
    .tm-context { grid-template-columns: 1fr; }
    .tm-context > :last-child { grid-column: auto; }
  }
