/* Investor portal: header, pages, charts. Tokens: the iD8 design system, builder register (block below). */
/* id8-theme:start · iD8 design system, builder register (id8-design-system/colors_and_type.css). Dark on every page. */
@font-face{font-family:"Departure Mono";src:url("/fonts/DepartureMono-Regular.woff2") format("woff2"),url("/fonts/DepartureMono-Regular.woff") format("woff");font-weight:400;font-style:normal;font-display:swap}
:root{
  color-scheme:dark;
  --font-sans:"Inter",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"Departure Mono","JetBrains Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --font-code:"JetBrains Mono","Departure Mono",ui-monospace,Menlo,monospace;
  --font-arcade:"Press Start 2P","Departure Mono",monospace;
  --font-display:"Jersey 10","Press Start 2P","Departure Mono",sans-serif;
  --ground:#0B0B12; --panel:#14141A; --panel-2:#1D1D26; --ink:#E8E8F2; --ink-2:#B4B4C8; --ink-3:#9A9AB5;
  --rule:#26263A; --rule-soft:#1E1E2C; --rule-strong:#3A3A55; --empty:#1A1A24;
  --h1:#0E3A42; --h2:#0F6B78; --h3:#12A3B5; --h4:#33D6E8; --h5:#7FEFFA; --h6:#C8F9FF; --h7:#FFFFFF;
  --heat1:#03464C; --heat2:#047781; --heat3:#01ACBA; --heat4:#51DEEC; --heat5:#DFFCFF;
  --accent:#00F0FF; --accent-fg:#07070A; --accent-ink:#00F0FF; --accent-glow:0 0 0 1px #00F0FF,0 0 16px rgba(0,240,255,.45);
  --chip:#0F2A30; --chip-ink:#7FEFFA; --chip-mute:#1D1D26; --chip-mute-ink:#C2C2D6;
  --milestone:#FF2D9C; --milestone-ink:#FF6DBE; --good:#AAFF00; --good-ink:#AAFF00; --warn:#FFB020; --warn-ink:#FFB020;
  --counted:#AAFF00;
  --focus:#00F0FF; --bad:#FF7A8F; --bad-bg:#2A1218;
}
/* Dark everywhere, whatever the reader's device is set to (owner, 2026-09-22): id8.one and the stats pages are dark
   only, so every page of velocity.id8.one is too. The cream palette stays for an explicit data-theme="light" only. */
:root[data-theme="light"]{
    color-scheme:light;
    --ground:#F6F5F2; --panel:#FFFFFF; --panel-2:#ECEBE5; --ink:#141419; --ink-2:#5A5A6A; --ink-3:#66667A;
    --rule:#D5D3CA; --rule-soft:#E6E4DC; --rule-strong:#B8B6AB; --empty:#E9E7E0;
    --h1:#CDEFF4; --h2:#8ADCE8; --h3:#2FB8CC; --h4:#0F8A9C; --h5:#0A5E6B; --h6:#063A44; --h7:#141419;
    --heat1:#93D8E0; --heat2:#27AFBC; --heat3:#017E88; --heat4:#024C52; --heat5:#071F21;
    --accent:#00F0FF; --accent-fg:#07070A; --accent-ink:#00707C; --accent-glow:none;
    --chip:#D9F7FA; --chip-ink:#0B5560; --chip-mute:#ECEBE5; --chip-mute-ink:#3F3F4C;
    --milestone:#C2187A; --milestone-ink:#B0106C; --good:#3D7A00; --good-ink:#3D7A00; --warn:#8A6B00; --warn-ink:#8A6B00;
    --counted:#3D7A00;
    --focus:#00707C; --bad:#C8102E; --bad-bg:#FDE8EC;
}
/* The cabinet: the dark palette on one element and everything in it, whatever the reader's theme. id8.one itself is
   dark only; the guide's worked example uses this so its charts look like the product in daylight too. */
.id8-cabinet{
  color-scheme:dark;
  --ground:#0B0B12; --panel:#14141A; --panel-2:#1D1D26; --ink:#E8E8F2; --ink-2:#B4B4C8; --ink-3:#9A9AB5;
  --rule:#26263A; --rule-soft:#1E1E2C; --rule-strong:#3A3A55; --empty:#1A1A24;
  --h1:#0E3A42; --h2:#0F6B78; --h3:#12A3B5; --h4:#33D6E8; --h5:#7FEFFA; --h6:#C8F9FF; --h7:#FFFFFF;
  --heat1:#03464C; --heat2:#047781; --heat3:#01ACBA; --heat4:#51DEEC; --heat5:#DFFCFF;
  --accent:#00F0FF; --accent-fg:#07070A; --accent-ink:#00F0FF; --accent-glow:0 0 0 1px #00F0FF,0 0 16px rgba(0,240,255,.45);
  --chip:#0F2A30; --chip-ink:#7FEFFA; --chip-mute:#1D1D26; --chip-mute-ink:#C2C2D6;
  --milestone:#FF2D9C; --milestone-ink:#FF6DBE; --good:#AAFF00; --good-ink:#AAFF00; --warn:#FFB020; --warn-ink:#FFB020;
  --counted:#AAFF00;
  --focus:#00F0FF; --bad:#FF7A8F; --bad-bg:#2A1218;
}
/* id8-theme:end */
/* the marquee stripe along the top of every page, as on the stats pages; not inside the portal's frame */
html:not(.embed) body::before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:linear-gradient(90deg,var(--accent),var(--milestone));z-index:60;pointer-events:none}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;background:var(--ground);color:var(--ink);font-family:var(--font-sans);font-size:16px;line-height:1.5;min-height:100vh;display:flex;flex-direction:column}
a{color:var(--accent-ink);text-decoration-thickness:1px;text-underline-offset:2px}
a:focus-visible,button:focus-visible,input:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip{position:absolute;left:12px;top:-120px;z-index:100;padding:12px 16px;border-radius:4px;background:var(--accent);color:var(--accent-fg);font:400 12px/1 var(--font-arcade);text-transform:uppercase;letter-spacing:.04em;text-decoration:none}
.skip:focus{top:12px}

/* type, measured from id8.one: Jersey 10 for the big heading (uppercase, one key phrase in cyan, a soft glow on dark),
   Press Start 2P for button labels, Departure Mono for eyebrows, pills and small uppercase labels, Inter for
   everything read: h2/h3, body, card titles and every number. Departure Mono never carries a number a VC has to read. */
h1,h2,h3{text-wrap:balance;margin:0}
h1{font-family:var(--font-display);font-size:clamp(40px,7vw,64px);font-weight:400;line-height:.95;letter-spacing:.01em;text-transform:uppercase;color:var(--ink);margin-top:6px}
h1 .hi{color:var(--accent-ink)}
:root:not([data-theme="light"]) h1 .hi{text-shadow:0 0 18px rgba(0,240,255,.35)}
:root[data-theme="dark"] h1 .hi{text-shadow:0 0 18px rgba(0,240,255,.35)}
h2{font-family:var(--font-display);font-size:clamp(28px,3.6vw,40px);font-weight:400;line-height:1;letter-spacing:.02em;text-transform:uppercase;margin:0 0 6px}
h3{font-family:var(--font-sans);font-size:17px;font-weight:600;letter-spacing:-.01em}
p{margin:0 0 12px;max-width:68ch}
.lede{font-size:18px;color:var(--ink-2);margin-top:10px;max-width:62ch}
.eyebrow{font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-3)}
.mono{font-family:var(--font-mono)}
/* The counted mark is a font-independent check drawn from an inline SVG mask. */
.ck {
  display:inline-block;
  width:.8em;
  height:.8em;
  margin-left:.18em;
  background:var(--counted);
  vertical-align:.02em;
  --ck-shape:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg'\
 viewBox='0 0 10 10'%3E%3Cpath d='m1 5 3 3 5-7' fill='none' stroke='black'\
 stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  -webkit-mask:var(--ck-shape) center/contain no-repeat;
  mask:var(--ck-shape) center/contain no-repeat
}
.read{font-size:15px;color:var(--ink-2);max-width:68ch}
ul,ol{padding-left:20px;margin:0 0 12px}
li{margin-bottom:8px;max-width:68ch}
li b{font-weight:600}

/* header: one row on desktop; on phones row 1 = brand, status, sign out and row 2 = nav (scrolls sideways) + lookup */
.top{position:sticky;top:0;z-index:20;background:var(--panel);border-bottom:1px solid var(--rule)}
.bar{max-width:1120px;margin:0 auto;padding:6px 16px;display:flex;align-items:center;gap:4px 12px}
.brand{display:inline-flex;align-items:center;gap:10px;min-height:44px;color:var(--ink);text-decoration:none;white-space:nowrap}
.brand .mark{font-family:var(--font-arcade);font-size:12px;line-height:1.4;letter-spacing:0.02em;text-transform:uppercase;color:var(--accent-ink)}
.brand .by{font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-3)}
.brand .by::before{content:"· "}
.top nav{display:flex;gap:2px;min-width:0}
.top nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 8px;font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--ink-2);text-decoration:none;border-bottom:2px solid transparent;white-space:nowrap}
.top nav a:hover{color:var(--ink)}
.top nav a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--accent)}
.top details{position:relative}
.top summary{list-style:none;display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:12px 16px;border:1px solid var(--rule-strong);border-radius:4px;background:transparent;color:var(--ink);font-family:var(--font-arcade);font-size:12px;font-weight:400;line-height:1;letter-spacing:.04em;text-transform:uppercase;cursor:pointer;white-space:nowrap;user-select:none}
.top summary::-webkit-details-marker{display:none}
.top summary:hover,.top details[open] summary{border-color:var(--accent);color:var(--accent-ink)}
.top .panel{position:absolute;right:0;top:calc(100% + 6px);z-index:30;padding:12px;background:var(--panel);border:1px solid var(--rule);border-radius:8px;display:grid;gap:8px}
.lookup{margin-left:auto}
.lookup summary svg{width:16px;height:16px;flex:none}
.lookup .panel{width:min(340px,calc(100vw - 32px))}
.lookup label{font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-3)}
.lookup input{font-family:var(--font-mono);font-size:16px;padding:10px 12px;border:1px solid var(--rule);border-radius:4px;background:var(--ground);color:var(--ink);width:100%;min-width:0}
.lookup button{min-height:44px;padding:12px 16px;border:0;border-radius:4px;background:var(--accent);color:var(--accent-fg);font:400 12px/1 var(--font-arcade);letter-spacing:.04em;text-transform:uppercase;cursor:pointer}
.lookup button:hover{filter:brightness(0.95)}
.pill{font-family:var(--font-mono);font-size:12px;letter-spacing:0.08em;text-transform:uppercase;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
@media (min-width:961px) and (max-width:1100px){.pill .pp{display:none}}  /* one row: the arcade lookup label needs the room the prefix took */
.out{display:inline-flex;align-items:center;min-height:44px;padding:0 6px;font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--ink-2);text-decoration:none;white-space:nowrap}
.out:hover{color:var(--ink);text-decoration:underline}
@media (max-width:960px){
  .bar{flex-wrap:wrap;gap:0 10px;padding:4px 16px 6px}
  .brand{order:1;flex:none}
  .pill{order:2;flex:1 1 0;min-width:0;text-align:right}
  .out{order:3;flex:none;padding:0 4px}
  .top nav{order:4;flex:1 1 calc(100% - 170px);min-width:0;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 28px),transparent)}
  .top nav::-webkit-scrollbar{display:none}
  .top nav a{padding:0 6px}
  .top nav a:last-child{margin-right:24px}
  .lookup{order:5;flex:none;margin-left:auto}
  .lookup summary{padding:12px 10px}
}
@media (max-width:480px){
  .brand{flex-direction:column;align-items:flex-start;justify-content:center;gap:3px}
  .brand .by::before{content:none}
  .pill .pp{display:none}
}
/* research frame: always one row; the research app fills #frame-status */
.top.frame .bar{flex-wrap:nowrap}
.top.frame .brand{order:0}
.top.frame .status{flex:1 1 auto;min-width:0;font-family:var(--font-sans);font-size:13px;color:var(--ink-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top.frame .lookup{order:0;margin-left:0}
.menu .panel{min-width:220px;padding:8px;gap:0}
.menu .panel a{display:flex;align-items:center;min-height:44px;padding:0 10px;border-radius:4px;font-family:var(--font-sans);font-size:14px;font-weight:500;color:var(--ink-2);text-decoration:none;white-space:nowrap}
.menu .panel a:hover{background:var(--panel-2);color:var(--ink)}
.menu .panel a[aria-current="page"]{color:var(--ink)}
.menu .panel .pill{padding:10px;margin-top:4px;border-top:1px solid var(--rule-soft);white-space:normal;text-align:left}
.menu .panel .pill .pp{display:inline}
@media (max-width:480px){
  /* icon-only lookup on narrow phones in both headers, so the three nav links fit on their row uncut */
  .top .lookup summary span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
  .top .lookup summary{padding:12px 13px;gap:0}
}

/* page */
main{flex:1 1 auto}
.frame-main{display:flex;flex-direction:column;min-height:0}
.wrap{max-width:900px;margin:0 auto;padding:30px 16px 64px}
.flash{margin:0 0 18px;padding:10px 12px;border-radius:4px;background:var(--bad-bg);color:var(--bad);font-size:14px;max-width:none}
.section{margin-top:44px}
.section > .eyebrow{display:block;margin-bottom:6px}
.card{background:var(--panel);border:1px solid var(--rule);border-radius:8px;padding:18px 20px}
@media (max-width:480px){.card{padding:14px}}
.card + .card{margin-top:12px}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
@media (max-width:720px){.grid2{grid-template-columns:1fr}}

/* lookup card */
.lookupcard{display:grid;grid-template-columns:1.1fr 1fr;gap:18px 28px;align-items:center;margin-top:18px}
.lookupcard > *{min-width:0}
@media (max-width:720px){.lookupcard{grid-template-columns:1fr}}
.lookupcard label{display:block;font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-3);margin-bottom:6px}
.lookupcard form{display:flex;gap:8px;flex-wrap:wrap}
.lookupcard input{flex:1 1 150px;min-width:0;font-family:var(--font-mono);font-size:16px;padding:11px 12px;border:1px solid var(--rule);border-radius:4px;background:var(--ground);color:var(--ink)}
.lookupcard button{min-height:44px;padding:12px 16px;border:0;border-radius:4px;background:var(--accent);color:var(--accent-fg);font:400 12px/1 var(--font-arcade);letter-spacing:.04em;text-transform:uppercase;cursor:pointer;white-space:nowrap;box-shadow:var(--accent-glow)}
.lookupcard button:hover{filter:brightness(0.95)}
.lookupcard button:active{transform:translateY(1px)}
.lookupcard .hint{font-size:14px;color:var(--ink-2);margin:0}

/* tiles */
.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:12px;margin-top:14px}
.tile{background:var(--panel);border:1px solid var(--rule);border-radius:8px;padding:14px 16px}
.tile .v{font-family:var(--font-display);font-size:40px;font-weight:400;letter-spacing:.02em;line-height:1;font-variant-numeric:tabular-nums}
.tile .v .sub{font-family:var(--font-sans);font-size:14px;font-weight:400;letter-spacing:0;color:var(--ink-2)}
@media (max-width:480px){.tile .v{font-size:34px}}
.tile .l{font-size:13px;color:var(--ink-2);margin-top:5px;line-height:1.35}
.prov{display:inline-block;font-family:var(--font-mono);font-size:12px;line-height:1.4;letter-spacing:0.04em;padding:2px 6px;border-radius:4px;border:1px solid var(--rule);color:var(--ink-3);margin-top:8px}
.tiles.six{grid-template-columns:repeat(3,1fr)}
@media (max-width:640px){.tiles.six{grid-template-columns:repeat(2,1fr)}}
@media (max-width:360px){.tiles.six{grid-template-columns:1fr}}
details.how{margin-top:12px}
details.how summary,details.snippet summary{cursor:pointer;font-weight:600;font-size:14px;min-height:44px;display:flex;align-items:center;gap:8px;list-style:none}
details.how summary::-webkit-details-marker,details.snippet summary::-webkit-details-marker{display:none}
details.how summary::before,details.snippet summary::before{content:"▸";color:var(--accent-ink);font-family:var(--font-mono);font-size:14px;line-height:1}
details.how[open] summary::before,details.snippet[open] summary::before{content:"▾"}
details.how ul{margin:4px 0 0}
details.how li{font-size:14px;color:var(--ink-2)}
details.how li b{color:var(--ink);font-weight:600;font-variant-numeric:tabular-nums}

/* charts: series in the cyan ramp, the operator in magenta, floors and baselines in ink-3, grid in rule-soft */
.chart{margin-top:14px}
.chart > svg{width:100%;height:auto;display:block}
.chart text{font-family:var(--font-sans);font-size:11px;fill:var(--ink-3)}
.chart text.dec{font-size:12px;fill:var(--ink-2)}
.chart text.lb{fill:var(--ink);font-size:12px;font-weight:600;paint-order:stroke fill;stroke:var(--panel);stroke-width:3px;stroke-linejoin:round}
.chart line.axis{stroke:var(--rule);stroke-width:1}
.chart line.grid{stroke:var(--rule-soft);stroke-width:1}
.chart line.q{stroke:var(--ink-3);stroke-width:1;stroke-dasharray:2 3}
.chart line.lead{stroke:var(--ink-3);stroke-width:1}
.chart .hint{font-size:11px}
.chart .hit,.spark .hit{fill:transparent;pointer-events:all}
.legend{display:flex;align-items:center;gap:8px 16px;margin-top:10px;font-family:var(--font-sans);font-size:12px;color:var(--ink-3);flex-wrap:wrap}
.legend .sw{display:inline-flex;align-items:center;gap:6px}
.legend svg{width:14px;height:14px;flex:none}
.bars{margin-top:10px}
.bars .row{display:grid;grid-template-columns:minmax(88px,130px) 1fr;align-items:center;gap:10px;padding:3px 0;font-size:14px}
.bars .k{color:var(--ink-2)}
.bars .track{display:flex;align-items:center;gap:8px;border-left:1px solid var(--rule);min-height:12px}
.bars .fill{height:10px;background:var(--h3);border-radius:0 3px 3px 0;flex:none}
.bars .n{font-family:var(--font-sans);font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;color:var(--ink);line-height:1}
.bars .row.hot .fill{background:var(--h4)}
.spark svg{width:100%;height:auto;display:block;max-width:640px}
.spark path.area{fill:var(--h1);opacity:.7}
.spark path.line{fill:none;stroke:var(--h4);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.spark circle.end{fill:var(--h5);stroke:var(--panel);stroke-width:2}
.spark circle.pt{fill:var(--h4);stroke:var(--panel);stroke-width:2}
.spark text{font-family:var(--font-sans);font-size:11px;fill:var(--ink-3)}
.spark text.val{fill:var(--ink);font-size:12px;font-weight:600}
.spark line.base{stroke:var(--ink-3);stroke-width:1}
.spark line.grid{stroke:var(--rule-soft);stroke-width:1}
.scatter,.strip,.spark{overflow-x:auto}
.scatter > svg{min-width:720px}
@media (max-width:720px){.strip > svg{min-width:820px}.spark > svg{min-width:640px}}
.scatter text.tick,.scatter text.axis{fill:var(--ink-3);font-variant-numeric:tabular-nums}

/* tables */
.tablewrap{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14px;margin-top:10px}
th,td{padding:9px 6px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--rule-soft);vertical-align:top}
th{font-family:var(--font-mono);font-size:12px;letter-spacing:0.12em;text-transform:uppercase;color:var(--ink-3);font-weight:400}
th:first-child,td:first-child{text-align:left;padding-left:0;white-space:normal}
th:last-child,td:last-child{padding-right:0}
td.num{font-family:var(--font-sans);font-variant-numeric:tabular-nums;color:var(--ink-2)}
td.num.me{color:var(--ink)}
td .note{display:block;font-family:var(--font-sans);font-size:12px;color:var(--ink-3);white-space:normal;max-width:34ch}

/* people cards */
.people{display:grid;grid-template-columns:1fr;gap:12px;margin-top:14px}
.person{display:grid;grid-template-columns:minmax(220px,340px) 1fr;gap:16px 22px;align-items:center}
@media (max-width:720px){.person{grid-template-columns:1fr}}
.person img{width:100%;height:auto;border-radius:8px;border:1px solid var(--rule);display:block}
.person .stats{display:flex;gap:18px;flex-wrap:wrap;margin:8px 0 10px}
.person .stats div{font-family:var(--font-sans);font-size:13px;color:var(--ink-2)}
.person .stats b{display:block;font-size:20px;color:var(--ink);font-weight:700;letter-spacing:-.01em;font-variant-numeric:tabular-nums}
.person .links{font-size:14px}
.person .links a + a{margin-left:14px}
details.snippet{margin-top:14px}
pre{overflow-x:auto;background:var(--ground);border:1px solid var(--rule);border-radius:8px;padding:12px 14px;margin:10px 0 0;max-width:100%}
code{font-family:var(--font-code);font-size:12px;line-height:1.6;color:var(--ink-2);white-space:pre}

/* operator page */
.graph{display:block;margin:18px 0 6px}
.graph picture,.graph img{display:block;width:100%;max-width:720px;height:auto;border-radius:8px;border:1px solid var(--rule)}

/* method page */
nav.toc{margin:18px 0 0;padding:14px 18px;background:var(--panel);border:1px solid var(--rule);border-radius:8px}
nav.toc .eyebrow{display:block;margin-bottom:2px}
nav.toc ol{margin:0;padding-left:22px;font-size:15px}
nav.toc li{margin:0}
nav.toc a{display:inline-block;padding:10px 0}
h2[id]{scroll-margin-top:120px}

/* about strip */
.about{margin-top:44px;padding:18px 20px;border:1px solid var(--rule);border-radius:8px;background:var(--panel);display:grid;grid-template-columns:1fr auto;gap:12px 24px;align-items:center}
@media (max-width:720px){.about{grid-template-columns:1fr}}
.about p{margin:4px 0 0;max-width:none}
.about .cta{display:inline-flex;align-items:center;gap:1ch;min-height:44px;font:400 12px/1 var(--font-arcade);letter-spacing:.04em;text-transform:uppercase;padding:12px 16px;border-radius:4px;background:var(--accent);color:var(--accent-fg);text-decoration:none;white-space:nowrap}
.about .cta:hover{filter:brightness(0.95)}

/* tooltip */
.tip{position:fixed;pointer-events:none;background:var(--ink);color:var(--ground);font-family:var(--font-sans);font-size:13px;line-height:1.4;padding:6px 9px;border-radius:4px;transform:translate(-50%,-130%);white-space:pre-wrap;text-align:left;opacity:0;transition:opacity .08s;z-index:30;max-width:320px}
.tip.on{opacity:1}
@media (prefers-reduced-motion: reduce){.tip{transition:none}}

footer.site{border-top:1px solid var(--rule);padding:16px 16px 28px;font-size:13px;color:var(--ink-3)}
footer.site .bar{max-width:900px;display:block;padding:0}
footer.site p{max-width:80ch;margin:0 0 6px}

/* research iframe shell */
.radar-frame{flex:1 1 auto;width:100%;border:none;min-height:0}
