/* minelab.money — app shell + components. Every page links this file and nothing else.
   Theme "graphite": dark by default, light on [data-theme=light]. IBM Plex Sans/Mono, teal accent.
   Token --gold is the historical name of the ACCENT (teal); the diagrams in svg.py use it. */
:root{
  --bg:#0A0C0F; --side-bg:#0D1014; --surface:#111418; --surface-2:#171B20; --surface-3:#1E232A;
  --ink:#DDE3EA; --muted:#9AA4B1; --faint:#6A7380; --line:#20252C; --line-strong:#2D333C;
  --gold:#2DD4BF; --gold-soft:#0F2E2A; --on-accent:#04201C;
  --ok:#74D98A; --ok-soft:#12291A; --bad:#F2766B; --bad-soft:#2B1517; --warn:#F5C451;
  --code-bg:#07090B; --code-ink:#CFD8E3; --code-dim:#65707D; --code-key:#5EEAD4; --code-str:#F5C451;
  --heat:#2DD4BF; --on-heat:#04201C;
  --nav-h:44px; --side-w:240px; --side-rail:56px; --r:4px;
  --sans:"IBM Plex Sans",system-ui,-apple-system,"Segoe UI",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
  --shadow:0 12px 32px rgba(0,0,0,.45);
  color-scheme:dark;
}
:root[data-theme="light"]{
  --bg:#F3F4F6; --side-bg:#FAFAFB; --surface:#FFFFFF; --surface-2:#F1F3F5; --surface-3:#E6E9ED;
  --ink:#14171C; --muted:#535C69; --faint:#848D99; --line:#E1E4E9; --line-strong:#C9CED6;
  --gold:#0F766E; --gold-soft:#DDF1EE; --on-accent:#FFFFFF;
  --ok:#15803D; --ok-soft:#E1F3E6; --bad:#BE3A2E; --bad-soft:#FBE7E4; --warn:#A16207;
  --code-bg:#12161B; --code-ink:#D6DEE8; --code-dim:#76818F; --code-key:#5EEAD4; --code-str:#F5C451;
  --heat:#14B8A6; --on-heat:#04201C;
  --shadow:0 10px 28px rgba(15,23,42,.14);
  color-scheme:light;
}

*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:13px;line-height:1.55;
  -webkit-font-smoothing:antialiased}
code,pre,.mono{font-family:var(--mono)}
a{color:var(--gold);text-decoration:none}
a:hover{text-decoration:underline}
:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
svg.i{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;
  stroke-linecap:round;stroke-linejoin:round}

/* ================================================================ app shell */
.shell{display:grid;grid-template-columns:var(--side-w) minmax(0,1fr);min-height:100vh}
.shell.rail{grid-template-columns:var(--side-rail) minmax(0,1fr)}

/* ---- sidebar */
.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;background:var(--side-bg);
  border-right:1px solid var(--line);z-index:80;min-width:0}
.side-head{height:var(--nav-h);display:flex;align-items:center;gap:8px;padding:0 12px 0 14px;
  border-bottom:1px solid var(--line);flex:none}
.brand{display:flex;align-items:center;gap:9px;color:var(--ink);font-weight:600;font-size:14px;
  letter-spacing:-.01em;text-decoration:none;min-width:0}
.brand:hover{text-decoration:none}
.logo{width:22px;height:22px;border-radius:var(--r);background:var(--gold);color:var(--on-accent);
  display:grid;place-items:center;flex:none;font-family:var(--mono);font-weight:700;font-size:12px}
.env{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--muted);
  border:1px solid var(--line-strong);border-radius:var(--r);padding:1px 6px;white-space:nowrap}

.side-search{position:relative;margin:10px 10px 4px;flex:none}
.side-search svg.i{position:absolute;left:8px;top:7px;width:14px;height:14px;color:var(--faint)}
.side-search input{width:100%;height:28px;font:inherit;font-size:12.5px;color:var(--ink);
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:0 28px 0 28px}
.side-search input::placeholder{color:var(--faint)}
.side-search input:focus{outline:none;border-color:var(--gold)}
.side-search kbd{position:absolute;right:6px;top:5px;font-family:var(--mono);font-size:10px;color:var(--faint);
  border:1px solid var(--line-strong);border-radius:3px;padding:0 5px;line-height:16px}

.side-nav{flex:1;overflow-y:auto;padding:6px 8px 12px;scrollbar-width:thin}
.nsec{margin-top:4px}
.nlink,.ngroup{display:flex;align-items:center;gap:10px;width:100%;height:30px;padding:0 8px;
  border-radius:var(--r);color:var(--muted);font:inherit;font-size:13px;font-weight:500;
  text-decoration:none;background:none;border:0;cursor:pointer;text-align:left;white-space:nowrap}
.nlink:hover,.ngroup:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}
.nlink[aria-current="page"]{background:var(--gold-soft);color:var(--gold);font-weight:600}
.ngroup .lbl,.nlink .lbl{flex:1;overflow:hidden;text-overflow:ellipsis}
.ngroup .chev{width:12px;height:12px;transition:transform .15s ease;color:var(--faint)}
.ngroup[aria-expanded="true"] .chev{transform:rotate(90deg)}
.ngroup.has-active{color:var(--ink)}
.nkids{margin:2px 0 6px 16px;padding-left:10px;border-left:1px solid var(--line)}
.nkids[hidden]{display:none}
.nkid{position:relative;display:flex;align-items:center;gap:8px;height:28px;padding:0 8px;border-radius:var(--r);
  color:var(--muted);font-size:12.5px;text-decoration:none;white-space:nowrap}
.nkid:hover{background:var(--surface-2);color:var(--ink);text-decoration:none}
.nkid[aria-current="page"]{color:var(--gold);font-weight:600;background:var(--gold-soft)}
.nkid[aria-current="page"]::before{content:"";position:absolute;left:-11px;top:6px;bottom:6px;width:2px;
  background:var(--gold);border-radius:2px}
.nkid .lbl{flex:1;overflow:hidden;text-overflow:ellipsis}
.nkid.soon{opacity:.45;pointer-events:none}
.nkid.hide,.nlink.hide,.nsec.hide{display:none}
.badge{font-family:var(--mono);font-size:9.5px;font-weight:500;color:var(--faint);
  border:1px solid var(--line-strong);border-radius:3px;padding:0 4px;line-height:15px;text-transform:lowercase}
.badge.acc{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 45%,transparent)}
.nhead{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);
  padding:12px 8px 4px}
.nempty{color:var(--faint);font-size:12px;padding:8px}

.side-foot{flex:none;border-top:1px solid var(--line);padding:8px;display:flex;align-items:center;gap:6px}
.side-foot .meta-s{flex:1;font-family:var(--mono);font-size:10.5px;color:var(--faint);padding-left:4px;
  overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.iconbtn{display:grid;place-items:center;width:28px;height:28px;border-radius:var(--r);border:1px solid transparent;
  background:none;color:var(--muted);cursor:pointer;flex:none}
.iconbtn:hover{background:var(--surface-2);color:var(--ink);border-color:var(--line)}

/* rail (collapsed) */
.shell.rail .side-head{padding:0;justify-content:center}
.shell.rail .brand .bname,.shell.rail .env,.shell.rail .side-search,.shell.rail .lbl,.shell.rail .chev,
.shell.rail .nkids,.shell.rail .nhead,.shell.rail .side-foot .meta-s,.shell.rail .badge{display:none}
.shell.rail .nlink,.shell.rail .ngroup{justify-content:center;padding:0}
.shell.rail .side-foot{justify-content:center}
.shell.rail .collapse svg{transform:scaleX(-1)}

/* ---- top app bar */
.main{min-width:0;display:flex;flex-direction:column}
.appbar{position:sticky;top:0;z-index:60;height:var(--nav-h);display:flex;align-items:center;gap:10px;
  padding:0 16px 0 20px;background:color-mix(in srgb,var(--bg) 88%,transparent);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.crumbs{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--faint);min-width:0;white-space:nowrap;overflow:hidden}
.crumbs a{color:var(--muted)}
.crumbs .sep{color:var(--line-strong)}
.crumbs .cur{color:var(--ink);font-weight:500;overflow:hidden;text-overflow:ellipsis}
.navspacer{flex:1}
.seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r);overflow:hidden;flex:none}
.seg button{display:flex;align-items:center;gap:5px;height:26px;padding:0 9px;font:inherit;font-size:12px;
  color:var(--muted);background:var(--surface);border:0;cursor:pointer}
.seg button+button{border-left:1px solid var(--line-strong)}
.seg button svg.i{width:13px;height:13px}
.seg button:hover{color:var(--ink)}
.seg button[aria-pressed="true"]{background:var(--surface-3);color:var(--ink)}
.burger{display:none}
.scrim{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:75}
.scrim[hidden]{display:none}

@media (max-width:900px){
  .shell,.shell.rail{grid-template-columns:minmax(0,1fr)}
  .side{position:fixed;left:0;top:0;bottom:0;width:min(280px,86vw);transform:translateX(-100%);
    transition:transform .18s ease;box-shadow:var(--shadow)}
  .side.open{transform:none}
  .shell.rail .side .lbl,.shell.rail .side .nkids:not([hidden]){display:revert}
  .side .collapse{display:none}
  .burger{display:grid}
  .appbar{padding:0 12px}
  .seg .t{display:none}
}

/* ================================================================ page */
.wrap{max-width:1120px;padding:22px 28px 64px}
.wrap.wide{max-width:none}
.mast{padding:0 0 16px;margin-bottom:20px;border-bottom:1px solid var(--line)}
.eyebrow{font-family:var(--mono);font-size:11px;color:var(--faint);margin:0 0 6px;letter-spacing:.02em}
h1,h2,h3,h4{font-family:var(--sans)}
h1{font-size:20px;font-weight:600;line-height:1.3;letter-spacing:-.01em;margin:0 0 4px}
.standfirst{font-size:13.5px;color:var(--muted);margin:0;max-width:100ch}
.meta{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.meta span{font-family:var(--mono);font-size:11px;color:var(--muted);background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r);padding:2px 8px}
.meta b{color:var(--faint);font-weight:500;margin-right:4px}
section{margin-block:28px}
h2{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--ink);
  margin:0 0 10px;padding:0 0 8px;border-bottom:1px solid var(--line);letter-spacing:0}
h2 .n{font-family:var(--mono);font-size:10.5px;font-weight:500;color:var(--gold);
  background:var(--gold-soft);border-radius:3px;padding:1px 6px}
h3{font-size:15px;font-weight:600;margin:22px 0 6px}
h4{font-size:13px;font-weight:600;margin:16px 0 4px}
p{margin:0 0 10px;max-width:100ch}
.lede{font-size:13px;color:var(--muted);margin-top:8px}
strong{font-weight:600}
code.inl{background:var(--surface-2);border:1px solid var(--line);padding:0 4px;border-radius:3px;
  font-size:.88em;color:var(--ink)}

/* ================================================================ blocks */
.codewrap{overflow-x:auto;margin:12px 0;background:var(--code-bg);border:1px solid var(--line);border-radius:var(--r)}
pre{margin:0;padding:12px 14px;font-size:12px;line-height:1.6;color:var(--code-ink);white-space:pre}
pre .k{color:var(--code-key)} pre .s{color:var(--code-str)} pre .c{color:var(--code-dim);font-style:italic}
.rule{background:var(--surface);border:1px solid var(--line);border-left:2px solid var(--gold);
  border-radius:var(--r);padding:10px 14px;margin:12px 0}
.rule p:last-child{margin-bottom:0}
.rule .lab{display:block;font-family:var(--mono);font-size:11px;font-weight:500;color:var(--gold);margin-bottom:4px}
.warnbox{border-left-color:var(--bad)} .warnbox .lab{color:var(--bad)}
.okbox{border-left-color:var(--ok)} .okbox .lab{color:var(--ok)}
.tablewrap{overflow-x:auto;margin:12px 0;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
table{border-collapse:collapse;width:100%;background:var(--surface)}
th,td{text-align:left;padding:6px 12px;border-bottom:1px solid var(--line);font-size:12.5px;vertical-align:top}
th{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;
  background:var(--surface-2);position:sticky;top:var(--nav-h);z-index:2}
tr:last-child td{border-bottom:none}
tbody tr:hover td{background:var(--surface-2)}
td.mono,th.mono{font-family:var(--mono);font-size:12px}
.pill{display:inline-block;font-family:var(--mono);font-size:10.5px;font-weight:500;
  padding:0 6px;border-radius:3px;white-space:nowrap;line-height:17px}
.p-bin{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}
.p-grad{background:var(--gold-soft);color:var(--gold)}
.p-ev{background:var(--bad-soft);color:var(--bad)}
.p-ok{background:var(--ok-soft);color:var(--ok)}
ol.steps{counter-reset:s;list-style:none;margin:10px 0 0;padding:0;border:1px solid var(--line);
  border-radius:var(--r);background:var(--surface)}
ol.steps li{counter-increment:s;position:relative;padding:8px 12px 8px 42px;border-bottom:1px solid var(--line)}
ol.steps li:last-child{border-bottom:0}
ol.steps li::before{content:counter(s);position:absolute;left:12px;top:9px;width:20px;height:18px;
  display:grid;place-items:center;border-radius:3px;background:var(--surface-3);color:var(--muted);
  font-family:var(--mono);font-size:11px;font-weight:500}
.verdictline{margin-top:10px;padding:8px 12px;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);font-size:12.5px}
.verdictline b{font-family:var(--mono);font-size:10.5px;font-weight:500;color:var(--faint);display:block;margin-bottom:2px}

/* ---- tabs (segmented, tool style) */
.tabbar{display:flex;gap:2px;overflow-x:auto;margin-top:14px;padding:3px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r);scrollbar-width:none;position:sticky;
  top:calc(var(--nav-h) + 6px);z-index:10;width:max-content;max-width:100%}
.tabbar::-webkit-scrollbar{display:none}
.tabbtn{appearance:none;background:none;border:0;border-radius:3px;font:inherit;font-size:12.5px;font-weight:500;
  color:var(--muted);padding:5px 12px;cursor:pointer;white-space:nowrap;line-height:1.3}
.tabbtn:hover{color:var(--ink);background:var(--surface-2)}
.tabbtn[aria-selected="true"]{color:var(--on-accent);background:var(--gold);font-weight:600}
.tabpanel[hidden]{display:none}
.tabpanel{padding-top:4px}

.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:14px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px;
  text-decoration:none;color:inherit;display:block}
.card:hover{border-color:var(--gold);text-decoration:none}
.card h4{margin:0 0 4px;font-size:13px;color:var(--ink)}
.card p{margin:0;font-size:12.5px;color:var(--muted)}

.foot{margin-top:36px;padding-top:12px;border-top:1px solid var(--line);font-size:11.5px;color:var(--faint)}
.foot p{max-width:110ch;margin:0 0 6px}

/* ================================================================ figures */
.figure{margin:12px 0;overflow-x:auto;background:var(--surface);border:1px solid var(--line);
  border-radius:var(--r);padding:12px}
.figure svg{display:block;width:100%;min-width:600px;height:auto}
.figcap{font-size:11.5px;color:var(--faint);margin:6px 0 0}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin:12px 0}
.facts div{background:var(--surface);padding:8px 12px}
.facts dt{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin:0 0 2px}
.facts dd{margin:0;font-size:13px;line-height:1.45}
.facts dd code{font-size:12px}
ol.steps.tight li{font-size:13px;line-height:1.5}
.lede.tight{font-size:13px;margin-top:8px}

.matrix td.c{text-align:center;font-family:var(--mono);font-size:11.5px}
.matrix td.c.yes{color:var(--ok)}
.matrix td.c.no{color:var(--faint)}
.matrix td.c.warn{color:var(--bad)}
.matrix th:first-child,.matrix td:first-child{position:sticky;left:0;background:var(--surface);z-index:1}
.matrix th:first-child{background:var(--surface-2);z-index:3}

/* ---- sequential heat (from --heat, works in both themes) */
.heat th{position:static}
.heat td.h,.heat th.h{text-align:center;font-family:var(--mono);font-size:12px;
  font-variant-numeric:tabular-nums;padding:7px 6px;border-bottom:1px solid var(--line)}
.heat td.h{color:var(--ink)}
.h0{background:color-mix(in srgb,var(--heat) 6%,var(--surface))}
.h1{background:color-mix(in srgb,var(--heat) 16%,var(--surface))}
.h2{background:color-mix(in srgb,var(--heat) 28%,var(--surface))}
.h3{background:color-mix(in srgb,var(--heat) 42%,var(--surface))}
.heat td.h4,.h4{background:color-mix(in srgb,var(--heat) 62%,var(--surface));color:var(--on-heat)}
.heat td.h5,.h5{background:color-mix(in srgb,var(--heat) 85%,var(--surface));color:var(--on-heat)}
.hna{background:var(--surface-2);color:var(--faint)}
.heat td.agent{white-space:nowrap;font-size:12.5px}
.heat td.agent small{display:block;color:var(--faint);font-size:10.5px}
.heat tbody tr:first-child td{border-top:0}
.legend{display:flex;align-items:center;gap:6px;margin:8px 0 0;font-size:11px;color:var(--faint);flex-wrap:wrap}
.legend i{width:24px;height:12px;display:inline-block;border:1px solid var(--line);border-radius:2px}

/* ---- diverging (worse / better) */
.dv td.d{text-align:center;font-family:var(--mono);font-size:12px;font-variant-numeric:tabular-nums;
  padding:7px 6px;color:var(--ink)}
.dv td.d small{display:block;font-size:9.5px;opacity:.7;margin-top:1px}
.dn3{background:color-mix(in srgb,var(--bad) 55%,var(--surface))}
.dn2{background:color-mix(in srgb,var(--bad) 30%,var(--surface))}
.dn1{background:color-mix(in srgb,var(--bad) 13%,var(--surface))}
.dz{background:var(--surface-2)}
.dp1{background:color-mix(in srgb,var(--ok) 13%,var(--surface))}
.dp2{background:color-mix(in srgb,var(--ok) 30%,var(--surface))}
.dp3{background:color-mix(in srgb,var(--ok) 55%,var(--surface))}
.dna{background:var(--surface-2);color:var(--faint)}

/* ---- bars */
.bars{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:8px;margin:12px 0}
.barcard{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}
.barcard h4{margin:0 0 2px;font-size:13px}
.barcard .sub{font-size:11px;color:var(--faint);margin:0 0 10px}
.bar{display:grid;grid-template-columns:96px 1fr 44px;align-items:center;gap:8px;margin-bottom:5px}
.bar .nm{font-size:11.5px;color:var(--muted);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bar .tr{background:var(--surface-3);height:12px;border-radius:2px;overflow:hidden}
.bar .fl{height:100%;background:var(--gold);opacity:.75}
.bar .vl{font-family:var(--mono);font-size:11px;color:var(--ink);font-variant-numeric:tabular-nums}
.bar.best .nm{color:var(--ink);font-weight:600}
.bar.best .fl{background:var(--gold);opacity:1}

.pickrow{display:inline-flex;flex-wrap:wrap;gap:2px;margin:12px 0 4px;padding:3px;background:var(--surface);
  border:1px solid var(--line);border-radius:var(--r)}
.pick{font:inherit;font-size:12px;border:0;background:none;color:var(--muted);padding:4px 10px;border-radius:3px;cursor:pointer}
.pick:hover{color:var(--ink);background:var(--surface-2)}
.pick[aria-pressed="true"]{background:var(--gold);color:var(--on-accent);font-weight:600}

.racepanel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin:12px 0;padding:12px 14px}
.racepanel h4{margin:0 0 2px;font-size:13px}
.racepanel .sub{font-size:11px;color:var(--faint);margin:0 0 10px}
.racepanel table{border:1px solid var(--line)}
.warnstrip{background:var(--bad-soft);border:1px solid color-mix(in srgb,var(--bad) 40%,transparent);
  border-radius:var(--r);padding:10px 14px;margin:12px 0;font-size:12.5px;color:var(--ink)}
.warnstrip b{font-family:var(--mono);font-size:11px;font-weight:500;color:var(--bad);display:block;margin-bottom:3px}

/* ================================================================ scoring gates */
.gatechain{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:6px;margin:12px 0 8px}
.gate{position:relative;background:var(--surface);border:1px solid var(--line);border-top:2px solid var(--line-strong);
  border-radius:var(--r);padding:10px 12px;display:flex;flex-direction:column;gap:5px;min-width:0}
.gate .gnum{font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.gate .gname{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--ink);word-break:break-word;line-height:1.3}
.gate .gcond{font-size:11.5px;color:var(--muted);line-height:1.45}
.gate .gcond code{font-size:10.5px;word-break:break-word}
.gate .gfail{margin-top:auto;padding-top:6px;font-family:var(--mono);font-size:10.5px;color:var(--bad);
  border-top:1px dashed var(--line);line-height:1.3;word-break:break-word}
.gate.own{border-top-color:var(--gold)} .gate.own .gname{color:var(--gold)}
.gate.own .own{color:var(--gold);font-weight:600}
.gate .shared{color:var(--faint)}
.gate.pay{border-top-color:var(--ok);background:var(--ok-soft)}
.gate.pay .gname{color:var(--ok)} .gate.pay .gcond{color:var(--ink);font-weight:600}
.gate.pay .gfail{color:var(--ok);border-top-color:var(--ok);text-transform:uppercase;letter-spacing:.06em}
.gnote{font-size:12.5px;color:var(--muted);margin:0 0 4px}
.muted-p{color:var(--faint);font-size:12px}
@media (max-width:560px){.gatechain{grid-template-columns:1fr}}

.oplist{list-style:none;counter-reset:op;padding:0;margin:12px 0 22px;border:1px solid var(--line);
  border-radius:var(--r);background:var(--surface)}
.oplist li{counter-increment:op;display:grid;grid-template-columns:30px minmax(150px,.9fr) 1.6fr;
  gap:4px 16px;padding:8px 12px;border-bottom:1px solid var(--line);align-items:baseline}
.oplist li:last-child{border-bottom:0}
.oplist li::before{content:counter(op);font-family:var(--mono);font-size:11px;color:var(--faint)}
.stepwhat{font-size:12.5px;color:var(--ink);line-height:1.45;word-break:break-word}
.stepwhat code{font-size:11.5px}
.stepwhy{font-size:12px;color:var(--muted);line-height:1.5}
@media (max-width:640px){.oplist li{grid-template-columns:24px 1fr}.stepwhy{grid-column:2}}
.gdetail{border:1px solid var(--line);border-left:2px solid var(--line-strong);border-radius:var(--r);
  background:var(--surface);padding:12px 16px;margin:10px 0}
.gdetail.own{border-left-color:var(--gold)}
.gdetail.shared{border-left-color:var(--line-strong)}
.ghead{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;margin-bottom:6px}
.ghead h3{margin:0;font-family:var(--mono);font-size:14px}
.gtag{font-family:var(--mono);font-size:10px;color:var(--faint)}
.gfailtag{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--bad);
  background:var(--bad-soft);border-radius:3px;padding:1px 6px}
.gwhat{font-size:13px;color:var(--ink);margin:2px 0 8px;font-weight:500}
.gfacts{margin:0 0 8px}
.gwhy{font-size:12.5px;color:var(--muted);line-height:1.55;margin:0}
@media (max-width:560px){.gfailtag{margin-left:0}}

/* ================================================================ data tools */
.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;padding:8px 10px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);margin:0 0 10px}
.field{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11px;color:var(--faint)}
.field.grow{flex:1 1 220px}
.field select,.field input{font-family:var(--sans);font-size:12.5px;color:var(--ink);background:var(--bg);
  border:1px solid var(--line-strong);border-radius:var(--r);height:28px;padding:0 9px}
.field select{padding-right:26px;min-width:120px;cursor:pointer;appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);
  background-position:calc(100% - 13px) 11px,calc(100% - 9px) 11px;background-size:4px 4px;background-repeat:no-repeat}
.field input{width:100%;min-width:0}
.field select:focus,.field input:focus{outline:none;border-color:var(--gold)}
.check{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);cursor:pointer;user-select:none}
.check input{accent-color:var(--gold);margin:0}
.tb-spacer{flex:1}
.count{font-family:var(--mono);font-size:11px;color:var(--faint);white-space:nowrap}
.btn{display:inline-flex;align-items:center;gap:6px;font:inherit;font-size:12px;font-weight:500;color:var(--on-accent);
  background:var(--gold);border:1px solid var(--gold);border-radius:var(--r);height:28px;padding:0 12px;cursor:pointer}
.btn:hover{filter:brightness(1.08)}

.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin:0 0 10px}
.kpi{background:var(--surface);padding:7px 12px;min-width:0}
.kpi span{display:block;font-family:var(--mono);font-size:10.5px;color:var(--faint);white-space:nowrap}
.kpi b{display:block;font-size:14px;font-weight:600;font-variant-numeric:tabular-nums;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.grid-wrap{margin:0;max-height:calc(100vh - var(--nav-h) - 20px);overflow:auto}
.grid{font-variant-numeric:tabular-nums}
.grid th,.grid td{padding:4px 8px;font-size:12px;white-space:nowrap;vertical-align:middle}
.grid thead th{position:sticky;top:0;z-index:3;padding:0;border-bottom:1px solid var(--line-strong)}
.grid th button{all:unset;box-sizing:border-box;display:flex;align-items:center;gap:5px;width:100%;
  padding:7px 14px 7px 8px;cursor:pointer;font-size:10.5px;font-weight:600;letter-spacing:.03em;color:var(--faint)}
.grid th button:hover{color:var(--ink);background:var(--surface-3)}
.grid th button:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.grid th[aria-sort="ascending"] button,.grid th[aria-sort="descending"] button{color:var(--gold)}
.grid th.c-num button,.grid th.c-rank button{justify-content:flex-end}
.grid th button{position:relative}
/* arrow sits in the button's right padding: showing it never changes column width */
.sortind{position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:8px;line-height:1;visibility:hidden;pointer-events:none}
.grid th button:hover .sortind{visibility:visible;opacity:.4}
.grid th[aria-sort="ascending"] .sortind,.grid th[aria-sort="descending"] .sortind{visibility:visible;opacity:1}
.grid td.c-num,.grid td.c-rank{text-align:right;font-family:var(--mono);font-size:11.5px}
.grid td.c-rank{color:var(--faint);width:1%}
.grid td.c-score{font-weight:600}
.grid td.c-dim{color:var(--faint)}
.grid td.c-agent .an{font-weight:600}
.grid td.c-agent .av{font-family:var(--mono);color:var(--faint);font-size:10.5px}
.grid td.c-hk{font-family:var(--mono);font-size:11px;color:var(--faint)}
.grid td.tint{background:color-mix(in srgb,var(--heat) calc(var(--v) * 30%),var(--surface))}
.grid tbody tr:hover td{background:var(--surface-3)}
.grid tbody tr:hover td.tint{background:color-mix(in srgb,var(--heat) calc(var(--v) * 30% + 6%),var(--surface-3))}
.grid td.is-best{font-weight:700;color:var(--gold)}
.grid td.empty{text-align:center;color:var(--faint);padding:24px}
.grid tfoot td,.grid tfoot th{background:var(--surface-2);font-family:var(--mono);font-size:11px;color:var(--muted);
  border-top:1px solid var(--line);border-bottom:0;text-align:right;text-transform:none;letter-spacing:0;position:static}
.grid tfoot th{text-align:left;font-weight:500;font-family:var(--sans)}
.grid tfoot tr:first-child td,.grid tfoot tr:first-child th{border-top:1px solid var(--line-strong)}
.tag{display:inline-block;font-family:var(--mono);font-size:10.5px;padding:0 6px;border-radius:3px;line-height:17px;
  border:1px solid var(--line-strong);color:var(--muted)}
.tag.t-scored{color:var(--ok);border-color:transparent;background:var(--ok-soft)}
.tag.t-eliminated,.tag.t-discarded{color:var(--bad);border-color:transparent;background:var(--bad-soft)}

@media (max-width:640px){
  .wrap{padding:16px 16px 48px}
  pre{font-size:11.5px}
  th{position:static}
  .toolbar{padding:8px}.tb-spacer{display:none}.field.grow{flex-basis:100%}
}

/* race picker: button + popover (scales to any number of races) */
.picker{position:relative}
.pickbtn{display:inline-flex;align-items:center;gap:8px;height:28px;min-width:180px;max-width:320px;padding:0 8px 0 10px;
  font:inherit;font-family:var(--sans);font-size:12.5px;color:var(--ink);background:var(--bg);
  border:1px solid var(--line-strong);border-radius:var(--r);cursor:pointer}
.pickbtn:hover{border-color:var(--faint)}
.pickbtn[aria-expanded="true"]{border-color:var(--gold)}
.pickbtn .plbl{flex:1;text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pickbtn .cnt{font-family:var(--mono);font-size:10.5px;color:var(--on-accent);background:var(--gold);border-radius:3px;padding:0 5px;line-height:16px}
.pickbtn svg.i{width:14px;height:14px;color:var(--faint)}
.pop{position:absolute;top:calc(100% + 6px);left:0;z-index:90;width:380px;max-width:calc(100vw - 32px);
  background:var(--surface);border:1px solid var(--line-strong);border-radius:6px;box-shadow:var(--shadow);
  font-family:var(--sans);color:var(--ink)}
.pop[hidden]{display:none}
.pop-sec{padding:10px 12px;border-bottom:1px solid var(--line)}
.pop-h{display:flex;align-items:center;gap:8px;font-family:var(--mono);font-size:10.5px;color:var(--faint);
  text-transform:uppercase;letter-spacing:.05em;margin-bottom:8px}
.pop-h .pm{text-transform:none;letter-spacing:0}
.pop-links{margin-left:auto;display:flex;gap:10px}
.lnk{font:inherit;font-family:var(--sans);font-size:11.5px;text-transform:none;letter-spacing:0;color:var(--gold);background:none;border:0;padding:0;cursor:pointer}
.lnk:hover{text-decoration:underline}
.pp-row{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}
.pp{font:inherit;font-size:12px;color:var(--muted);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);
  height:26px;cursor:pointer;white-space:nowrap}
.pp:hover:not(:disabled){color:var(--ink);border-color:var(--faint)}
.pp[aria-pressed="true"]{background:var(--gold-soft);border-color:var(--gold);color:var(--gold);font-weight:600}
.pp:disabled{opacity:.4;cursor:default}
.pop-search input{width:100%;height:28px;font:inherit;font-size:12.5px;color:var(--ink);background:var(--bg);
  border:1px solid var(--line-strong);border-radius:var(--r);padding:0 9px;margin-bottom:6px}
.pop-search input:focus{outline:none;border-color:var(--gold)}
.plist{max-height:248px;overflow-y:auto;margin:0 -6px;scrollbar-width:thin}
.prow{display:grid;grid-template-columns:16px 64px 44px 1fr auto;align-items:center;gap:8px;height:30px;padding:0 6px;
  border-radius:var(--r);cursor:pointer;font-size:12.5px}
.prow:hover{background:var(--surface-2)}
.prow input{accent-color:var(--gold);margin:0}
.prow .pn{font-weight:500;white-space:nowrap}
.prow .pd,.prow .pc{font-family:var(--mono);font-size:11px;color:var(--faint)}
.prow .pw{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow.qrow{grid-template-columns:16px auto 1fr;margin:0 -6px}
.prow .pm,.pop .pm{font-family:var(--mono);font-size:11px;color:var(--faint)}
.pempty{padding:10px 6px;color:var(--faint);font-size:12px}
.pop-foot{display:flex;align-items:center;gap:6px;padding:8px 12px}
.pop-foot .pm{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.btn.ghost{background:none;color:var(--muted);border-color:var(--line-strong)}
.btn.ghost:hover{color:var(--ink);filter:none;background:var(--surface-2)}
.btn:disabled{opacity:.45;cursor:default;filter:none}
.grid td.c-agent a.an{color:var(--ink);font-weight:600;display:inline-flex;align-items:center;gap:4px}
.grid td.c-agent a.an:hover{color:var(--gold);text-decoration:none}
.grid td.c-agent a.an .av{font-weight:400}
.grid td.c-agent a.av{margin-left:4px;font-family:var(--mono);font-size:10.5px;color:var(--faint);
  border:1px solid var(--line-strong);border-radius:3px;padding:0 4px}
.grid td.c-agent a.av:hover{color:var(--gold);border-color:var(--gold);text-decoration:none}
svg.ext{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;opacity:0;flex:none}
.grid tr:hover svg.ext,.grid a.an:focus-visible svg.ext{opacity:.7}
.grid td.c-ranks{font-size:11px}
.kpi b small{font-family:var(--mono);font-size:11px;font-weight:400;color:var(--faint);margin-left:2px}

/* header actions + "Fetch new races" progress (race history) */
.mast-split{display:flex;align-items:flex-end;justify-content:space-between;gap:12px 24px;flex-wrap:wrap}
.mast-main{min-width:0;flex:1 1 480px}
.mast-actions{display:flex;align-items:center;gap:12px;flex:none}
.rf-when{text-align:right;line-height:1.35}
.rf-when span{display:block;font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.rf-when b{font-family:var(--mono);font-size:12px;font-weight:500;color:var(--muted)}
#rf-btn{min-width:172px;justify-content:center}
#rf-btn svg.i{width:14px;height:14px}
#rf-btn.spinning svg.i{animation:rfspin .9s linear infinite}
@keyframes rfspin{to{transform:rotate(360deg)}}
@media (prefers-reduced-motion:reduce){#rf-btn.spinning svg.i{animation:none}}
.rf-panel{margin:-8px 0 14px;padding:9px 12px;background:var(--surface);border:1px solid var(--line);
  border-left:2px solid var(--gold);border-radius:var(--r)}
.rf-panel[data-kind="done"]{border-left-color:var(--ok)}
.rf-panel[data-kind="error"]{border-left-color:var(--bad);background:var(--bad-soft)}
.rf-panel[data-kind="info"]{border-left-color:var(--line-strong)}
.rf-top{display:flex;justify-content:space-between;gap:12px;font-size:12.5px}
.rf-top #rf-msg{color:var(--ink)}
.rf-pct{font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.rf-track{height:6px;margin-top:7px;background:var(--surface-3);border-radius:3px;overflow:hidden}
.rf-track[hidden]{display:none}
.rf-fill{height:100%;width:0;background:var(--gold);border-radius:3px;transition:width .6s ease}
.rf-panel[data-kind="done"] .rf-fill{background:var(--ok)}
@media (max-width:640px){.mast-actions{width:100%;justify-content:space-between}.rf-when{text-align:left}}
.rf-panel[data-wait="1"]{border-left-color:var(--warn)}
.rf-panel[data-wait="1"] .rf-fill{background:var(--warn)}

/* our-team filter + row highlight (race history) */
.teambtn{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 8px 0 9px;font:inherit;font-size:12.5px;
  color:var(--muted);background:var(--bg);border:1px solid var(--line-strong);border-radius:var(--r);cursor:pointer;white-space:nowrap}
.teambtn:hover{color:var(--ink);border-color:var(--faint)}
.teambtn svg.i{width:14px;height:14px}
.teambtn .cnt{font-family:var(--mono);font-size:10.5px;color:var(--muted);background:var(--surface-3);border-radius:3px;padding:0 5px;line-height:16px}
.teambtn[aria-pressed="true"]{color:var(--warn);border-color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,var(--bg))}
.teambtn[aria-pressed="true"] svg.i{fill:currentColor}
.teambtn[aria-pressed="true"] .cnt{background:var(--warn);color:#1A1405}
.grid tr.is-team td{background:color-mix(in srgb,var(--warn) 7%,var(--surface))}
.grid tr.is-team td:first-child{box-shadow:inset 3px 0 0 var(--warn);color:var(--warn);font-weight:600}
.grid tr.is-team td.tint{background:color-mix(in srgb,var(--heat) calc(var(--v) * 30%),color-mix(in srgb,var(--warn) 7%,var(--surface)))}
.teamtag{margin-left:6px;font-family:var(--mono);font-size:9.5px;color:var(--warn);border:1px solid color-mix(in srgb,var(--warn) 50%,transparent);
  border-radius:3px;padding:0 4px;line-height:15px;vertical-align:1px}
.prow .pw.pend{color:var(--warn);font-style:italic}

/* ================================================================ task analysis (/tasks/) */
.benchsel{display:inline-flex;align-items:center;gap:6px}
.benchsel select{font:inherit;font-family:var(--mono);font-size:11px;color:var(--muted);background:var(--surface);
  border:1px solid var(--line-strong);border-radius:var(--r);height:22px;padding:0 6px;cursor:pointer}
.ta-split{display:grid;grid-template-columns:minmax(420px,40%) minmax(0,1fr);gap:12px;align-items:start}
@media (max-width:1100px){.ta-split{grid-template-columns:minmax(0,1fr)}}
.ta-list .grid-wrap{max-height:calc(100vh - var(--nav-h) - 24px)}
.ta-list td.c-q{max-width:240px;overflow:hidden;text-overflow:ellipsis;color:var(--muted)}
.ta-list th.c-q{width:100%}
.ta-row{cursor:pointer}
.ta-row.sel td{background:var(--gold-soft)!important}
.ta-row.sel td:first-child{box-shadow:inset 3px 0 0 var(--gold)}
.pbar{display:inline-block;width:46px;height:6px;margin-right:7px;vertical-align:1px;background:var(--surface-3);border-radius:3px;overflow:hidden}
.pbar i{display:block;height:100%;background:var(--gold)}
.teamrate{color:var(--warn);font-weight:600}
.dim{color:var(--faint)}
.ok{color:var(--ok)} .bad{color:var(--bad)}
.ta-detail{position:sticky;top:calc(var(--nav-h) + 8px);max-height:calc(100vh - var(--nav-h) - 16px);overflow:auto;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r);min-height:240px}
@media (max-width:1100px){.ta-detail{position:static;max-height:none}}
.ta-empty{padding:40px;text-align:center;color:var(--faint)}
.td-h{padding:12px 14px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface);z-index:2}
.td-id{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted)}
.td-q{font-size:14px;line-height:1.5;margin:6px 0 8px;color:var(--ink);max-width:none}
.td-stats{display:flex;flex-wrap:wrap;gap:6px 16px;font-size:12px;color:var(--muted)}
.td-stats b{color:var(--ink)}
.td-fail{margin-top:8px;display:flex;flex-wrap:wrap;gap:4px 6px;align-items:center;font-size:11.5px}
.fchip{font-family:var(--mono);font-size:10.5px;color:var(--bad);background:var(--bad-soft);border-radius:3px;padding:0 6px;line-height:18px}
.fchip b{font-weight:600;margin-left:3px}
.ta-cols{display:grid;grid-template-columns:1fr 1fr;gap:0}
@media (max-width:760px){.ta-cols{grid-template-columns:1fr}}
.ta-col{padding:10px 12px;min-width:0}
.ta-col+.ta-col{border-left:1px solid var(--line)}
.ta-col h3{display:flex;align-items:center;gap:8px;margin:0 0 8px;font-size:12.5px;text-transform:uppercase;letter-spacing:.05em}
.ta-col.ok h3{color:var(--ok)} .ta-col.bad h3{color:var(--bad)}
.ta-col h3 .cnt{font-family:var(--mono);font-size:11px;color:var(--muted);background:var(--surface-3);border-radius:3px;padding:0 6px}
.pg{border:1px solid var(--line);border-radius:var(--r);margin:0 0 8px;background:var(--bg)}
.pg-h{padding:7px 9px;border-bottom:1px solid var(--line)}
.pg-seq{display:flex;flex-wrap:wrap;align-items:center;gap:3px;line-height:1.9}
.pg-n{font-size:11px;color:var(--faint);margin-top:2px}
.pg-n b{color:var(--muted);font-weight:600}
.tsep{color:var(--faint);font-size:10px}
.tchip{font-family:var(--mono);font-size:10.5px;padding:0 5px;border-radius:3px;line-height:17px;white-space:nowrap;
  background:var(--surface-3);color:var(--muted)}
.tchip.t-find{background:color-mix(in srgb,var(--gold) 16%,var(--surface));color:var(--gold)}
.tchip.t-inspect{background:color-mix(in srgb,#8B9CF7 18%,var(--surface));color:#9AA8FA}
:root[data-theme="light"] .tchip.t-inspect{color:#3F51C4}
.tchip.t-ask{background:color-mix(in srgb,var(--warn) 16%,var(--surface));color:var(--warn)}
.tchip.t-cart{background:color-mix(in srgb,#D98CE0 16%,var(--surface));color:#D98CE0}
:root[data-theme="light"] .tchip.t-cart{color:#8E3A96}
.tchip.t-order{background:var(--ok-soft);color:var(--ok)}
ul.eps{list-style:none;margin:0;padding:0}
li.ep{border-top:1px solid var(--line)}
li.ep:first-child{border-top:0}
li.ep.is-team{box-shadow:inset 3px 0 0 var(--warn)}
.ep-h{all:unset;box-sizing:border-box;display:grid;grid-template-columns:minmax(0,1.2fr) auto;gap:2px 8px;width:100%;padding:6px 9px;cursor:pointer;font-size:12px}
.ep-h:hover{background:var(--surface-2)}
.ep-h:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.ep-agent{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ep-agent .av{font-family:var(--mono);font-weight:400;color:var(--faint);font-size:10.5px}
.ep-meta{font-family:var(--mono);font-size:10.5px;color:var(--faint);text-align:right;white-space:nowrap}
.ep-why{grid-column:1/-1;font-family:var(--mono);font-size:10.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ep-h[aria-expanded="true"]{background:var(--surface-2)}
.more{margin:4px 9px 7px;font-size:11.5px}
.ep-log{padding:8px 9px 10px;border-top:1px dashed var(--line);background:var(--surface);font-size:12px}
.lg-sum{display:flex;flex-wrap:wrap;gap:4px 12px;align-items:center;font-family:var(--mono);font-size:11px;color:var(--muted);margin-bottom:6px}
.lg-sum .ok,.lg-sum .bad{font-weight:700}
.lg-issues{margin:0 0 8px;padding-left:18px;color:var(--bad);font-size:11.5px}
.lg-step{border-left:2px solid var(--line-strong);padding:2px 0 6px 10px;margin:0 0 6px}
.lg-turn{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-bottom:3px}
.lg-shop{background:color-mix(in srgb,var(--warn) 9%,var(--surface));border-radius:3px;padding:4px 7px;margin:0 0 4px;font-size:12px}
.lg-shop b{color:var(--warn);font-weight:600;margin-right:4px}
.lg-call{margin:0 0 5px}
.lg-call.err .lg-c1{color:var(--bad)}
.lg-c1{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px}
.lg-args{font-size:11px;color:var(--muted);word-break:break-all}
.lg-obs{margin:2px 0 0 4px;font-size:11px;color:var(--faint)}
.lg-obs code{font-size:10.5px;word-break:break-all}
.obs-h{font-family:var(--mono);font-size:10.5px}
table.obs-t{width:auto;background:none;margin-top:2px}
table.obs-t td{padding:1px 8px 1px 0;border:0;font-size:11px;color:var(--muted);background:none!important}
pre.obs-full{white-space:pre-wrap;word-break:break-all;font-size:10.5px;color:var(--muted);background:var(--bg);padding:6px;border-radius:3px;max-height:320px;overflow:auto}
.refnote{display:flex;gap:10px;align-items:flex-start;background:color-mix(in srgb,var(--warn) 9%,var(--surface));
  border:1px solid color-mix(in srgb,var(--warn) 35%,transparent);border-radius:var(--r);padding:9px 12px;margin:0 0 14px;font-size:12.5px}
.refnote b{color:var(--warn)}

/* task facts: hidden requirements, events, ground truth (/tasks/) */
.tf{border-bottom:1px solid var(--line);padding:10px 14px 12px}
.tf-h{font-size:12.5px;font-weight:600;margin-bottom:8px}
.tf-h .dim{font-weight:400;font-size:11.5px}
.tf-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:900px){.tf-grid{grid-template-columns:1fr}}
.tf-sec{background:var(--bg);border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;min-width:0}
.tf-sec.tf-wide{grid-column:1/-1}
.tf-sec h4{margin:0 0 6px;font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--gold)}
.tf-sec h4 small{text-transform:none;letter-spacing:0;color:var(--faint);font-weight:400;margin-left:4px}
ul.tf-said,ul.tf-ev{list-style:none;margin:0;padding:0}
ul.tf-said li,ul.tf-ev li{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;padding:4px 0;border-top:1px solid var(--line);font-size:12.5px}
ul.tf-said li:first-child,ul.tf-ev li:first-child{border-top:0}
.tf-said q{quotes:"\201C" "\201D";color:var(--ink)}
.tf-n{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--faint);white-space:nowrap}
.tf-std{font-size:11px;color:var(--faint);margin:6px 0 0}
.tf-std q{quotes:"\201C" "\201D"}
ul.tf-ev{margin-top:6px}
ul.tf-ev b{color:var(--warn);font-weight:600}
.tf-title{display:inline-block;max-width:380px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.tf-sku{display:block;font-family:var(--mono);font-size:10.5px;color:var(--faint)}
table.tf-t{background:none;margin:2px 0 8px}
table.tf-t th{position:static;background:none;padding:3px 8px 3px 0;font-size:10px}
table.tf-t td{padding:4px 8px 4px 0;border-bottom:1px solid var(--line);background:none!important;font-size:12px;vertical-align:top}
table.tf-t tr:last-child td{border-bottom:0}
table.tf-t td.ok{font-weight:600}
.tf-gt{display:grid;grid-template-columns:1fr;gap:12px}
.tf-gt>div+div{border-top:1px dashed var(--line);padding-top:8px}
.tf-gt h5{margin:2px 0 4px;font-size:12px;font-weight:600;color:var(--ink)}
.tf-gt h5 small{font-weight:400;color:var(--faint);margin-left:4px}
.tf-gt .tf-title{max-width:330px}
td.tf-then>span{display:block;font-size:11.5px;line-height:1.5;white-space:nowrap}
td.tf-then .tf-sku{display:inline}
td.tf-then b{color:var(--muted);font-weight:600}
.tf-sec{overflow-x:auto}
/* /tasks/ best search keywords (keywords.json) */
.ta-list td.c-kw{max-width:200px;font-size:12px}
.kw-cell{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.kw-cell.ok{color:var(--ok)}
.kw-grid{display:grid;grid-template-columns:1fr;gap:10px}
table.kw-t td{font-size:12px}
table.kw-t td:nth-child(2){min-width:170px}
table.kw-t td:nth-child(4){min-width:150px;max-width:220px}
.kw-j{display:block;white-space:nowrap;font-size:11.5px;color:var(--muted)}
.kw-t .tf-sku{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.kw-q{font-family:var(--mono);font-size:12px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:3px;padding:0 5px}
.kw-arg,.kw-tool,.kw-ext,.kw-gold{display:inline-block;margin-left:5px;font-family:var(--mono);font-size:10.5px;padding:0 4px;border-radius:3px;vertical-align:1px}
.kw-arg{color:var(--muted);border:1px solid var(--line)}
.kw-tool{color:var(--faint)}
.kw-ext{color:var(--warn);border:1px solid var(--warn)}
.kw-gold{color:var(--gold);border:1px solid var(--gold)}
tr.kw-pop td{background:var(--surface-2)!important;border-top:1px dashed var(--line-strong)}
tr.kw-pop td:first-child{font-size:10.5px;color:var(--faint);white-space:nowrap}
.kw-valid{margin-top:4px;font-size:12px}
.kw-valid ul.tf-said li{font-size:12px}
.kw-csv{float:right;font-size:11.5px;font-weight:400}
details.kw-all{margin-top:6px;border-top:1px dashed var(--line);padding-top:6px}
details.kw-all>summary{cursor:pointer;font-size:12px;color:var(--ink)}
details.kw-all>summary b{color:var(--ok)}
.kw-all-tools{display:flex;gap:8px;align-items:center;margin:8px 0 6px}
.kw-all-tools input{flex:1;min-width:0;max-width:280px;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:var(--r);padding:3px 8px;font-size:12px}
.kw-all-wrap{max-height:460px;overflow:auto;border:1px solid var(--line);border-radius:var(--r)}
table.kw-all-t th{position:sticky;top:0;background:var(--surface-2)!important;padding-left:6px}
table.kw-all-t td:first-child{padding-left:6px}
td.kw-jc{white-space:nowrap;font-size:12.5px}
.kw-none{font-size:12px;margin:6px 0 0}
.kw-easy{display:inline-block;margin-left:5px;font-family:var(--mono);font-size:10.5px;padding:0 5px;border-radius:3px;vertical-align:1px;color:var(--on-accent);background:var(--ok);font-weight:600}
b.kw-e{color:var(--ok);font-weight:700}
.kw-cell b.kw-e{font-size:10.5px}
.kw-turn{font-family:var(--mono);font-size:12px}
.kw-turn.t1{color:var(--ok)} .kw-turn.t2{color:var(--gold)} .kw-turn.t3{color:var(--warn)}
.kw-easy-only{display:flex;align-items:center;gap:5px;font-size:12px;white-space:nowrap;cursor:pointer}

/* ================================================================ behaviour analysis (/behaviour/) */
/* chart colours validated with the dataviz palette checker (lightness band, chroma, CVD, contrast) per theme */
:root{--c-good:#14A38E;--c-bad:#E0604F}
:root[data-theme="light"]{--c-good:#0A9583;--c-bad:#C9402E}
.seg2{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r);overflow:hidden}
.seg2 button{font:inherit;font-size:12px;color:var(--muted);background:var(--bg);border:0;padding:0 12px;height:28px;cursor:pointer}
.seg2 button+button{border-left:1px solid var(--line-strong)}
.seg2 button[aria-pressed="true"]{background:var(--gold);color:var(--on-accent);font-weight:600}
.ba-sec{margin-block:22px}
table.ba-t th{position:static}
table.ba-t td{vertical-align:top;padding:9px 10px}
td.ba-name{max-width:340px;min-width:220px}
td.ba-name b{font-size:13px}
td.ba-name p{margin:2px 0 4px;font-size:12px;color:var(--muted)}
td.ba-name q{display:block;font-size:11.5px;color:var(--faint);font-style:italic;quotes:"\201C" "\201D"}
.ba-subs{margin-top:5px;display:flex;flex-wrap:wrap;gap:3px}
td.ba-where{min-width:240px;width:26%}
td.ba-rates{min-width:230px;width:24%}
td.ba-rule{font-size:12px;color:var(--muted);max-width:260px}
td.ba-rule div{margin-top:5px;display:flex;flex-wrap:wrap;gap:3px}
td.ba-delta{font-family:var(--mono);font-weight:600}
/* pass-rate bar: number always printed beside the mark */
.rb{display:grid;grid-template-columns:90px 38px 1fr;align-items:center;gap:2px 7px;margin-bottom:4px}
.rb-t{height:8px;background:var(--surface-3);border-radius:2px;overflow:hidden}
.rb-t i,.hb-t i{display:block;height:100%;border-radius:0 4px 4px 0}
i.good{background:var(--c-good)} i.bad{background:var(--c-bad)} i.mute{background:var(--faint)}
.rb b{font-family:var(--mono);font-size:12px;text-align:right}
.rb small{font-size:10.5px;color:var(--faint);white-space:nowrap}
/* ordered stack (one hue, light -> dark) with a 2px surface gap */
.stk{display:flex;height:10px;gap:2px;border-radius:2px;overflow:hidden;background:var(--surface-3)}
.stk i{display:block;height:100%}
.s0{background:color-mix(in srgb,var(--c-good) 35%,var(--surface))}
.s1{background:color-mix(in srgb,var(--c-good) 68%,var(--surface))}
.s2{background:var(--c-good)}
.stk-l{display:flex;flex-wrap:wrap;gap:2px 10px;margin:4px 0 6px;font-size:11px;color:var(--muted)}
.stk-l b.k{display:inline-block;width:9px;height:9px;border-radius:2px;margin-right:4px;vertical-align:-1px}
.hist{display:flex;align-items:flex-end;gap:2px;height:34px;padding-top:2px;border-bottom:1px solid var(--line)}
.hist i{flex:1;min-width:2px;background:color-mix(in srgb,var(--c-good) 70%,var(--surface));border-radius:2px 2px 0 0}
.hist i:hover{background:var(--c-good)}
.hist-l{display:flex;justify-content:space-between;font-family:var(--mono);font-size:10px;color:var(--faint);margin-top:2px}
.ba-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
@media (max-width:1100px){.ba-3{grid-template-columns:1fr}}
.ba-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.ba-card h4{margin:0 0 2px;font-size:12.5px}
.ba-card p{font-size:11.5px;margin:0 0 8px}
.hb{display:grid;grid-template-columns:minmax(120px,1.2fr) 1fr 38px 56px;align-items:center;gap:7px;margin-bottom:6px;font-size:12px}
.hb-l{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hb-t{height:12px;background:var(--surface-3);border-radius:2px;overflow:hidden}
.hb b{font-family:var(--mono);text-align:right}
.hb small{font-size:10.5px;color:var(--faint)}
table.ba-x td.c-num{background:color-mix(in srgb,var(--c-bad) calc(var(--v) * 28%),var(--surface))}
table.ba-x tr.ba-base td{background:var(--surface-2)!important;border-bottom:2px solid var(--line-strong)}
table.ba-x td.lift{font-weight:700;color:var(--ink);box-shadow:inset 0 -2px 0 var(--c-bad)}
.ba-2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 12px}
@media (max-width:1100px){.ba-2{grid-template-columns:1fr}}
.ba-2b{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:10px;margin-top:12px;align-items:start}
@media (max-width:1100px){.ba-2b{grid-template-columns:1fr}}
.ba-2b .tablewrap{margin:0}
table.ba-in{background:none}
table.ba-in td{background:none!important;padding:8px 6px;border-bottom:1px solid var(--line)}
table.ba-in tr:last-child td{border-bottom:0}
.ba-turns{font-size:11px;color:var(--muted);margin-top:2px}
.ba-turns b{font-family:var(--mono);color:var(--ink)}
td.ba-links a{margin-right:8px;font-size:11.5px}

/* task list: hidden-requirement marks + event tags (/tasks/) */
@media (min-width:1101px){.ta-split{grid-template-columns:minmax(620px,50%) minmax(0,1fr)}}
.ta-list td.c-q{max-width:150px}
td.c-marks{white-space:nowrap;min-width:60px}
td.c-tags{white-space:normal;min-width:150px;max-width:215px}
.hmark{display:inline-grid;place-items:center;width:23px;height:17px;margin:1px 2px 1px 0;border-radius:3px;
  font-family:var(--mono);font-size:9.5px;font-weight:600;color:var(--warn);
  border:1px solid color-mix(in srgb,var(--warn) 55%,transparent);
  background:linear-gradient(to top,color-mix(in srgb,var(--warn) 32%,transparent) calc(var(--u) * 100%),transparent 0)}
.etag{display:inline-flex;align-items:baseline;gap:3px;margin:1px 3px 1px 0;padding:0 5px;border-radius:3px;
  font-size:10.5px;line-height:17px;white-space:nowrap;background:var(--gold-soft);color:var(--gold)}
.etag small{font-family:var(--mono);font-size:9.5px;opacity:.8}
.etag.e-price_rise,.etag.e-stockout,.etag.e-price_change{background:color-mix(in srgb,var(--c-bad) 16%,var(--surface));color:var(--c-bad)}
.ta-row.sel td .hmark{background-color:var(--surface)}
/* shopper prods about a market event: same colour family, outlined */
.etag.e-availability_check,.etag.e-price_prod{background:none;color:var(--c-bad);
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--c-bad) 55%,transparent)}

/* login page */
.login-body{min-height:100vh;display:grid;place-items:center;padding:24px 16px}
.login{width:100%;max-width:360px}
.login-brand{display:flex;align-items:center;gap:9px;font-weight:600;font-size:15px;margin-bottom:14px}
.login-brand .env{margin-left:auto}
.login-card{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:20px 20px 18px;
  display:flex;flex-direction:column;gap:12px;box-shadow:var(--shadow)}
.login-card h1{font-size:18px;margin:0 0 2px}
.lf{display:flex;flex-direction:column;gap:5px;font-size:12px;color:var(--muted)}
.lf input{font:inherit;font-size:14px;color:var(--ink);background:var(--bg);border:1px solid var(--line-strong);
  border-radius:var(--r);height:36px;padding:0 10px}
.lf input:focus{outline:none;border-color:var(--gold)}
.login-err{margin:0;font-size:12.5px;color:var(--bad)}
.login-btn{height:36px;justify-content:center;font-size:13.5px}
.login-btn:disabled{opacity:.6}
.login-foot{font-size:11.5px;color:var(--faint);margin:12px 0 0;text-align:center}
.appbar .signout{margin-left:6px}

/* download popover (/tasks/) */
.dl-wrap{position:relative}
.dl-pop{left:auto;right:0;width:560px;max-width:calc(100vw - 32px)}
a.dl-row{display:grid;grid-template-columns:auto 1fr;gap:1px 10px;padding:8px 10px;margin:0 -4px 4px;border:1px solid var(--line);
  border-radius:var(--r);color:var(--ink);background:var(--bg)}
a.dl-row:hover{border-color:var(--gold);text-decoration:none}
a.dl-row b{font-size:13px;color:var(--gold)}
.dl-meta{font-family:var(--mono);font-size:11px;color:var(--muted);text-align:right}
.dl-what{grid-column:1/-1;font-size:11.5px;color:var(--faint)}
.dl-sha{grid-column:1/-1;font-size:10.5px;color:var(--faint)}
pre.dl-cmd{background:var(--code-bg);color:var(--code-ink);font-size:11px;line-height:1.55;padding:10px 12px;border-radius:var(--r);
  white-space:pre;margin:0 0 8px;max-height:260px;overflow:auto}
.dl-actions{display:flex;align-items:center;gap:10px;font-size:12px}

/* /tasks/: when events fire (fixed turn vs add-to-cart) */
.etag small.tturn{font-weight:600;opacity:1;padding:0 3px;margin-left:2px;border-radius:2px;
  background:color-mix(in srgb,currentColor 18%,transparent)}
.es-ruler{display:flex;gap:3px;margin:2px 0 6px;overflow-x:auto}
.es-cell{flex:1 1 0;min-width:20px;display:flex;flex-direction:column;align-items:center;gap:3px;padding:4px 2px;border:1px solid var(--line);
  border-radius:3px;font-family:var(--mono);font-size:10.5px;color:var(--faint);background:var(--bg)}
.es-cell b{font-weight:500}
.es-cell.on{flex:0 0 auto;padding:4px 6px;border-color:var(--gold);background:var(--gold-soft);color:var(--ink)}
.es-cell.on b{font-weight:700;color:var(--gold)}
.es-cell .etag{margin:0;white-space:nowrap}
.es-note{font-size:11.5px;color:var(--faint);margin:0 0 8px;line-height:1.45}
.es-t td{vertical-align:top}
.es-turn{color:var(--gold);font-family:var(--mono)}
.es-miss{display:block;font-size:10.5px;color:var(--faint)}
.es-pos{display:inline-block;margin:0 8px 0 0;font-family:var(--mono);font-size:10.5px;white-space:nowrap;color:var(--muted)}
.es-pos.es-before{color:var(--ink)}
.etag small.tsilent{font-weight:600;opacity:1;padding:0 3px;margin-left:2px;border-radius:2px;border:1px dashed currentColor}
.es-sub{font-size:11px;color:var(--muted);margin-top:2px;line-height:1.4}
.es-sub q{quotes:"\201C" "\201D";color:var(--ink)}
.es-silent,.es-ann{display:inline-block;font-family:var(--mono);font-size:9.5px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;
  padding:0 4px;margin-right:4px;border-radius:2px}
.es-silent{color:var(--warn);border:1px dashed var(--warn)}
.es-ann{color:var(--gold);border:1px solid var(--gold)}
/* /behaviour/ 01: how each event is triggered */
table.ba-rules td{vertical-align:top}
table.ba-rules td.ba-rule{font-size:12px;line-height:1.45;color:var(--ink)}
table.ba-rules{table-layout:fixed;width:100%}
table.ba-rules col.w-ev{width:9%} table.ba-rules col.w-fire{width:25%} table.ba-rules col.w-tk{width:17%}
table.ba-rules col.w-held{width:19%} table.ba-rules col.w-not{width:20%} table.ba-rules col.w-bf{width:10%}
table.ba-rules th{white-space:normal}
table.ba-rules td.ba-tk,table.ba-rules td.ba-held{font-size:11.5px;line-height:1.6}
table.ba-rules td.ba-not{color:var(--muted)}
@media (max-width:900px){
  table.ba-rules,table.ba-rules tbody,table.ba-rules tr,table.ba-rules td{display:block;width:auto}
  table.ba-rules colgroup,table.ba-rules thead{display:none}
  table.ba-rules tr{border:1px solid var(--line);border-radius:var(--r);margin:0 0 10px;padding:4px 0;background:var(--surface)}
  table.ba-rules td{border:0!important;padding:4px 12px;max-width:none}
  table.ba-rules td:not(.ba-name)::before{content:attr(data-l);display:block;font-family:var(--mono);font-size:10px;
    text-transform:uppercase;letter-spacing:.06em;color:var(--faint);margin-bottom:1px}
}
table.ba-rules td.ba-held b,table.ba-rules td.ba-tk b{font-family:var(--mono)}
table.ba-rules td.ba-held small,table.ba-rules td.ba-tk small{color:var(--faint)}
table.ba-rules .etag{margin-bottom:3px}
.etag.e-hidden{background:color-mix(in srgb,var(--warn) 16%,var(--surface));color:var(--warn)}
.nw{white-space:nowrap}

/* /races/: skill columns (points versus other agents on the same tasks) */
.grid td.c-skill{font-family:var(--mono);white-space:nowrap}
.grid td.c-skill sup{font-size:9px;margin-left:1px;color:var(--faint)}
.grid td.sk-tint.sk-pos{background:color-mix(in srgb,var(--c-good) calc(var(--m) * 32%),var(--surface))}
.grid td.sk-tint.sk-neg{background:color-mix(in srgb,var(--c-bad) calc(var(--m) * 32%),var(--surface))}
.grid td.sk-prov{opacity:.62}
.sk-note{font-size:12px;line-height:1.5;color:var(--muted);margin:0 0 10px;max-width:1100px}
.sk-note b{color:var(--ink)}

/* /behaviour/ 02: what the shopper changes */
.ch-kpis{margin-bottom:10px}
table.ch-t td{vertical-align:top}
td.ch-exs{line-height:1.9}
a.ch-ex{display:inline-block;margin:0 6px 2px 0;padding:0 6px;border:1px solid var(--line);border-radius:3px;font-family:var(--mono);
  font-size:11px;color:var(--ink);background:var(--bg);white-space:nowrap}
a.ch-ex:hover{border-color:var(--gold);text-decoration:none}
.ch-arrow{color:var(--gold);margin:0 2px}
.ch-add{color:var(--gold);font-weight:700}
table.ch-t{table-layout:fixed;width:100%}
table.ch-t td.ba-tk{white-space:normal}
td.ch-paid b{font-family:var(--mono);margin-right:6px}
td.ch-paid .rb-t{display:inline-block;width:60px;height:8px;vertical-align:middle;margin-right:6px}
td.ch-paid small{display:block;color:var(--faint);font-size:10.5px}
@media (max-width:900px){table.ch-t{table-layout:auto}table.ch-t colgroup{display:none}}

/* ================================================================ log analysis (/analysis/) */
/* static page (analysis_page.py); bars reuse .rb with the validated --c-good / --c-bad pair */
.la-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.la-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:520px){.la-kpis{grid-template-columns:1fr}}
.la-kpis .kpi span{white-space:normal}
table.la-t th.num,table.la-t td.num{text-align:right;font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap}
table.la-t th[colspan]{text-align:center;border-left:1px solid var(--line)}
table.la-t td{vertical-align:middle}
table.la-t td.la-k{min-width:150px}
table.la-t td.la-k b{font-size:13px}
table.la-t td.la-k p{margin:2px 0 0;font-size:12px;color:var(--muted)}
table.la-t tr.la-sum td{background:var(--surface-2);font-weight:600;border-top:1px solid var(--line-strong)}
td.la-rates{min-width:330px;width:34%}
td.la-rates .rb{grid-template-columns:110px 38px 1fr}
td.la-rates .rb small{white-space:normal}
.la-q{font-size:14px;color:var(--ink);max-width:100ch;margin:4px 0 10px}
.la-verdict{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px;margin:12px 0 0}
.la-v{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.la-v .pill{margin-bottom:6px}
.la-v h4{margin:0 0 4px;font-size:13px}
.la-v p{margin:0;font-size:12px;color:var(--muted)}

/* ---- /packs/ Task packs: race columns grouped by task pack ---- */
table.pk-t{font-size:12.5px}
table.pk-t td:first-child{min-width:230px}
table.pk-t th.pk{text-align:center;border-left:1px solid var(--line-strong)}
table.pk-t .pk1,table.pk-t .pk3{background:var(--surface-2)}
table.pk-t th.pk0+th,table.pk-t td.pk0+td.pk1,table.pk-t td.pk1+td.pk2,table.pk-t td.pk2+td.pk3,
table.pk-t th.pk0+th.pk1,table.pk-t th.pk1+th.pk2,table.pk-t th.pk2+th.pk3{border-left:1px solid var(--line-strong)}
table.pk-t tr.grp td{background:var(--surface-3);color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:6px 10px}
ul.pk-find li{margin-bottom:8px}
ul.pk-find li b{color:var(--ink)}
@media (max-width:720px){table.pk-t td:first-child{min-width:170px}}

/* ---- /races/ operators bar: one segment per operator (one user = one coldkey, or coldkeys linked by transfers or the bubblemap) ---- */
.opsec{position:relative;margin:4px 0 14px}
.ophead{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap;margin-bottom:8px}
.optitle{font-weight:600;font-size:14px;color:var(--ink)}
.opsum{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--muted)}
.opfilter{font-size:12.5px;color:var(--muted)}
.opfilter b{color:var(--ink);font-weight:600}
.opfilter button{margin-left:6px;font:inherit;font-size:11.5px;color:var(--gold);background:none;border:1px solid var(--line-strong);border-radius:var(--r);padding:1px 7px;cursor:pointer}
.mbar{display:flex;gap:2px;height:40px;cursor:pointer;user-select:none;-webkit-user-select:none;touch-action:pan-y}
.mseg{display:flex;flex-direction:column;gap:3px;min-width:3px;flex-basis:0;transition:opacity .14s ease-out}
.mblock{flex:1;min-height:0;border-radius:3px;background:var(--c);display:flex;align-items:center;overflow:hidden;
  transition:filter .14s ease-out,box-shadow .14s ease-out;filter:saturate(.85)}
.mlabel{padding:0 7px;font-family:var(--mono);font-size:11px;color:var(--ink2,inherit);white-space:nowrap;overflow:hidden;text-overflow:clip}
.mseg[data-slot] .mlabel{color:var(--lab)}
.mseg.tail .mblock{background:var(--surface-3)}
.mseg.group .mblock{background:var(--surface-2);border:1px dashed var(--line-strong)}
.mseg.group .mlabel{color:var(--muted)}
.mstrip{height:5px;display:flex;flex:none;border-radius:1px;overflow:hidden;gap:1px}
.mstrip i{flex:1;display:block;background:var(--line)}
.mstrip i.t1{background:var(--gold)}
.mstrip i.t2{background:var(--faint)}
.mseg.hover .mblock{filter:brightness(1.18)}
.mseg.hl .mblock{filter:brightness(1.3);box-shadow:inset 0 0 0 2px var(--ink)}
.mseg.on .mblock{box-shadow:inset 0 0 0 2px var(--ink)}
.mseg.dim{opacity:.28}
.mseg:focus-visible .mblock{outline:2px solid var(--gold);outline-offset:1px}
.opcard{position:absolute;z-index:30;top:66px;min-width:220px;max-width:320px;background:var(--surface);border:1px solid var(--line-strong);
  border-radius:6px;box-shadow:var(--shadow);padding:10px 12px;font-size:12.5px;pointer-events:none}
.opcard h4{margin:0 0 6px;font-size:13px;font-family:var(--mono)}
.opcard .row{display:flex;justify-content:space-between;gap:12px;color:var(--muted);margin:2px 0}
.opcard .row b{color:var(--ink);font-weight:600;font-family:var(--mono)}
.opcard .cks{font-family:var(--mono);font-size:11px;color:var(--muted);margin:4px 0 6px;word-break:break-all}
.opcard .hint{margin-top:6px;font-size:11px;color:var(--faint)}
.opcard .why{margin:6px 0 2px;font-size:11.5px;color:var(--muted);line-height:1.45}
.opcard .why a{color:var(--ink);text-decoration:none;font-family:var(--mono)}
.opcard .why i{display:block;font-style:normal;color:var(--faint);font-family:var(--mono);font-size:11px}
.opfilter button.ckmore{margin-left:4px;color:var(--muted);border-style:dashed}
.oplinks{margin-top:8px;font-size:12.5px;color:var(--muted)}
.oplinks summary{cursor:pointer;color:var(--ink);font-weight:500}
.oplinks summary:hover{color:var(--gold)}
.oplinks ul{list-style:none;margin:6px 0 0;padding:0}
.oplinks li{padding:4px 0;border-top:1px solid var(--line);line-height:1.5}
.oplinks .lk{display:inline-block;min-width:96px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}
.oplinks a{color:var(--ink);font-family:var(--mono);font-size:12px;text-decoration:none;border-bottom:1px dotted var(--line-strong)}
.oplinks a:hover{color:var(--gold);border-bottom-color:var(--gold)}
.oplinks i{font-style:normal;color:var(--faint);font-family:var(--mono);font-size:11.5px;margin-left:6px}
.oplinks .more{margin:6px 0 2px;font-size:11.5px;color:var(--muted)}
.oplinks .more b{color:var(--ink)}
.oplinks .only{display:inline-block;margin-left:4px;padding:0 5px;border:1px solid var(--line-strong);border-radius:3px;font-size:10.5px;color:var(--warn,var(--gold));white-space:nowrap}
@media (max-width:720px){.oplinks .lk{display:block;min-width:0}.oplinks i{display:block;margin-left:0}}
table.grid tbody.op-focus tr:not(.op-hl){opacity:.32}
table.grid tbody.op-focus tr.op-hl td{background:color-mix(in srgb,var(--op,var(--gold)) 14%,transparent)}
@media (max-width:720px){.mbar{height:34px}.opsum{margin-left:0}}

/* ---- /races/ hotkey + coldkey cells: taomarketcap link and copy button ---- */
.addr{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.addr a{color:inherit;text-decoration:none;border-bottom:1px dotted var(--line-strong)}
.addr a:hover{color:var(--gold);border-bottom-color:var(--gold)}
.copy-btn{display:inline-flex;align-items:center;justify-content:center;line-height:0;color:var(--faint);background:none;border:1px solid transparent;border-radius:3px;
  padding:2px;cursor:pointer;transition:color .14s ease-out,border-color .14s ease-out}
.copy-btn:hover{color:var(--ink);border-color:var(--line-strong)}
.copy-btn.copied{color:var(--ok);border-color:var(--ok)}
.opcks{display:inline-flex;flex-wrap:wrap;gap:4px 10px;align-items:center;margin-left:10px;font-family:var(--mono);font-size:11.5px}

/* ---- /agents/ agent algorithms: flowcharts (Graphviz SVG coloured by class, see agents_flow.py), tabs, fit table, cards ---- */
.fc{width:100%;height:auto;display:block;margin:0 auto}
.fc text{fill:var(--ink);font-family:var(--sans)}
.fc .graph>polygon{fill:none;stroke:none}
.fc .node path,.fc .node polygon,.fc .node ellipse{fill:var(--surface-2);stroke:var(--line-strong)}
.fc .node.k-start path,.fc .node.k-end path{fill:var(--surface-3);stroke:var(--muted)}
.fc .node.k-llm path{fill:var(--gold-soft);stroke:var(--gold)}
.fc .node.k-tool path{fill:var(--surface-2);stroke:var(--muted)}
.fc .node.k-decision polygon{fill:var(--surface);stroke:var(--warn)}
.fc .node.k-loop path{fill:var(--surface);stroke:var(--muted)}
.fc .edge path{fill:none;stroke:var(--muted)}
.fc .edge polygon{fill:var(--muted);stroke:var(--muted)}
.fc .edge text{fill:var(--faint);font-family:var(--mono)}
.fc .edge.e-loop path{stroke:var(--faint)}
.fc .edge.e-loop polygon{fill:var(--faint);stroke:var(--faint)}
.fc .edge.e-fallback path{stroke:var(--bad)}
.fc .edge.e-fallback polygon{fill:var(--bad);stroke:var(--bad)}
.fc a:hover path,.fc a:hover polygon{stroke:var(--gold);stroke-width:2}
.ag-tabs{display:flex;flex-wrap:wrap;gap:0;margin-top:10px}
.ag-r{position:absolute;opacity:0;pointer-events:none}
.ag-tab{order:0;padding:7px 14px;border:1px solid var(--line);border-bottom:0;border-radius:var(--r) var(--r) 0 0;margin-right:4px;
  cursor:pointer;color:var(--muted);font-weight:500;background:var(--surface-2)}
.ag-tab:hover{color:var(--ink)}
.ag-r:checked+.ag-tab{color:var(--ink);background:var(--surface);border-color:var(--line-strong);box-shadow:inset 0 2px 0 var(--gold)}
.ag-r:focus-visible+.ag-tab{outline:2px solid var(--gold);outline-offset:1px}
.ag-panel{order:1;width:100%;display:none;border:1px solid var(--line-strong);border-radius:0 var(--r) var(--r) var(--r);background:var(--surface);padding:14px}
#agtab-tengen:checked~#agp-tengen,#agtab-meepo:checked~#agp-meepo,#agtab-tera:checked~#agp-tera{display:block}
.ag-flowhead{margin-bottom:10px;color:var(--muted)}
.ag-flowhead b{color:var(--ink)}
.ag-svg{overflow-x:auto}
.ag-legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:11.5px;color:var(--muted);margin:0 0 10px}
.ag-legend i{display:inline-block;width:14px;height:10px;border-radius:3px;margin-right:5px;vertical-align:-1px;border:1px solid var(--line-strong);background:var(--surface-2)}
.ag-legend i.k-llm{background:var(--gold-soft);border-color:var(--gold)}
.ag-legend i.k-decision{background:var(--surface);border-color:var(--warn);transform:rotate(45deg) scale(.8)}
.ag-legend i.k-end{background:var(--surface-3);border-color:var(--muted)}
.ag-legend i.e-loop{height:0;border:0;border-top:1px dashed var(--faint);border-radius:0;background:none}
.ag-legend i.e-fallback{height:0;border:0;border-top:1px dashed var(--bad);border-radius:0;background:none}
.ag-stages{margin-top:12px}
.ag-stages summary{cursor:pointer;color:var(--ink);font-weight:500}
.ag-stages summary:hover{color:var(--gold)}
.ag-stages li div{color:var(--muted);font-size:12.5px;margin-top:2px}
.pill.ag-k{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}
.pill.ag-k.k-llm{background:var(--gold-soft);color:var(--gold);border-color:transparent}
.pill.ag-k.k-decision{color:var(--warn)}
table.ag-t td.ag-c{background:color-mix(in srgb,var(--gold) calc(var(--h,0)*22%),transparent)}
table.ag-t td.ag-best{font-weight:600;color:var(--ink)}
table.ag-t td .dim,table.ag-p td .dim{color:var(--faint);font-size:11px}
table.ag-t td.ag-race{font-size:11px;color:var(--faint);font-family:var(--mono);min-width:200px}
table.ag-t tr.grp td{background:var(--surface-3);color:var(--muted);font-size:11px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;padding:6px 10px}
table.ag-p th[scope=row]{color:var(--muted);font-weight:500;white-space:nowrap;vertical-align:top;padding:9px 10px}
table.ag-p td{vertical-align:top;padding:9px 10px;min-width:220px;font-size:12.5px}
.ag-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:10px}
.ag-card{border:1px solid var(--line);border-radius:var(--r);background:var(--surface);padding:14px}
.ag-card h3{margin:0 0 4px;font-size:15px}
.ag-card h4{margin:12px 0 4px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}
.ag-card ul{margin:0;padding-left:18px}
.ag-card li{margin:4px 0;font-size:12.5px;line-height:1.5}
.ag-card p.dim{color:var(--muted);margin:0;font-size:12.5px}
.p-warn{background:color-mix(in srgb,var(--warn) 14%,transparent);color:var(--warn)}
.p-dim{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}
@media (max-width:1000px){.ag-cards{grid-template-columns:1fr}}
@media (max-width:640px){.ag-panel{padding:10px}.ag-tab{padding:6px 10px}.ag-svg .fc{min-width:var(--minw,0)}}

/* ---- /agents/ two-level flowcharts: overview blocks (k-phase) open a phase's chart (agents.js); k-stub links phases ---- */
.fc text.sub{fill:var(--muted)}
.ag-ov{margin:4px 0 6px}
.fc .node.k-phase path,.fc .node.k-phase polygon{fill:var(--surface-2);stroke:var(--line-strong);stroke-width:1.2}
.fc .node.k-phase,.fc .node.k-stub{cursor:pointer}
.fc .node.k-phase:hover path,.fc .node.k-phase:focus path{stroke:var(--gold);stroke-width:2}
.fc .node.k-phase.sel path{fill:var(--gold-soft);stroke:var(--gold);stroke-width:2}
.fc .node.k-phase:focus,.fc .node.k-stub:focus{outline:none}
.fc .node.k-phase:focus-visible path,.fc .node.k-stub:focus-visible path{stroke:var(--gold);stroke-width:2.5}
.fc .node.k-stub path{fill:none;stroke:var(--faint);stroke-dasharray:4 3}
.fc .node.k-stub text{fill:var(--muted)}
.fc .node.k-stub:hover path{stroke:var(--gold)}
.fc .node.k-stub:hover text{fill:var(--gold)}
.fc .edge.e-stub path{stroke:var(--faint)}
.fc .edge.e-stub polygon{fill:var(--faint);stroke:var(--faint)}
.ag-hint{margin:6px 0 0;color:var(--muted);font-size:12.5px;text-align:center}
.ag-phases{margin-top:8px}
.ag-phase{border-top:1px solid var(--line);padding-top:12px;margin-top:12px}
.ag-phhead{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ag-phhead b{font-size:14px;color:var(--ink)}
.ag-phn{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;border-radius:4px;
  background:var(--gold-soft);color:var(--gold);font-family:var(--mono);font-size:11.5px;font-weight:600}
.ag-phsum{margin:4px 0 10px;color:var(--muted);font-size:12.5px;max-width:100ch}
.ag-legend i.k-stub{background:none;border:1px dashed var(--faint)}
.ag-whole{margin-top:16px;border-top:1px solid var(--line);padding-top:10px}
.ag-ovlist{display:none;list-style:none;margin:6px 0 0;padding:0}
.ag-ovlist li{margin:0 0 6px}
.ag-ovbtn{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;width:100%;text-align:left;font:inherit;color:var(--ink);cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line-strong);border-radius:6px;padding:9px 11px}
.ag-ovbtn .ag-phn{grid-row:span 3;align-self:start}
.ag-ovbtn b{font-size:13.5px}
.ag-ovbtn .ag-ovsum{color:var(--muted);font-size:12px;line-height:1.45}
.ag-ovbtn .dim{color:var(--faint);font-size:11.5px;font-family:var(--mono)}
.ag-ovbtn:hover{border-color:var(--gold)}
.ag-ovbtn.sel{border-color:var(--gold);background:var(--gold-soft)}
.ag-ovbtn:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
@media (max-width:640px){.ag-ov{display:none}.ag-ovlist{display:block}}

/* ---- /agents/ phase modal (agents.js moves .ag-phases into a <dialog>) ---- */
.ag-modal{padding:0;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink);
  width:min(1120px,94vw);max-width:94vw;max-height:90vh;box-shadow:var(--shadow);overflow:hidden}
.ag-modal::backdrop{background:rgba(0,0,0,.6)}
:root[data-theme="light"] .ag-modal::backdrop{background:rgba(15,23,42,.38)}
.ag-modal[open]{display:flex}
.ag-mbox{display:flex;flex-direction:column;width:100%;max-height:90vh;min-height:0}
.ag-mhead{display:flex;align-items:flex-start;gap:16px;padding:14px 18px 12px;border-bottom:1px solid var(--line);background:var(--surface)}
.ag-mtitle{flex:1;min-width:0}
.ag-mmeta{display:flex;gap:10px;font-family:var(--mono);font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}
.ag-mhead h3{margin:4px 0 2px;font-size:17px;display:flex;align-items:center;gap:10px}
.ag-msum{margin:2px 0 0;color:var(--muted);font-size:13px;max-width:100ch}
.ag-mcount{margin:4px 0 0;color:var(--faint);font-family:var(--mono);font-size:11.5px}
.ag-mnav{display:flex;gap:6px;flex:none}
.ag-mbtn{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;font:inherit;font-size:20px;line-height:1;
  color:var(--muted);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:6px;cursor:pointer}
.ag-mbtn:hover:not(:disabled){color:var(--ink);border-color:var(--gold)}
.ag-mbtn:disabled{opacity:.35;cursor:default}
.ag-mbtn:focus-visible{outline:2px solid var(--gold);outline-offset:1px}
.ag-mbody{overflow:auto;padding:12px 18px 18px;min-height:0;flex:1}
.ag-modal .ag-phases{margin:0}
.ag-modal .ag-phase{border-top:0;margin:0;padding:0}
.ag-modal .ag-phhead,.ag-modal .ag-phsum{display:none}
.ag-modal .ag-legend{margin:0 0 8px}
html.ag-modal-open{overflow:hidden}
@media (max-width:640px){
  .ag-modal{width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;margin:0;border-radius:0;border:0}
  .ag-mbox{max-height:100dvh;height:100dvh}
  .ag-mhead{padding:10px 12px}
  .ag-mhead h3{font-size:15px}
  .ag-mbody{padding:10px 12px 16px}
}

/* ---- /replay/ Episode replay (replay_page.py + assets/replay.js) ---- */
.rp-split{display:grid;grid-template-columns:minmax(240px,290px) minmax(0,1fr);gap:14px;align-items:start}
@media (max-width:1900px){.rp-split{grid-template-columns:minmax(0,1fr)}}
.rp-list{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);min-width:0;position:sticky;top:calc(var(--nav-h) + 12px);
  max-height:calc(100vh - var(--nav-h) - 24px);display:flex;flex-direction:column}
@media (max-width:1900px){.rp-list{position:static;max-height:300px}}
.rp-filters{display:flex;flex-wrap:wrap;gap:6px 8px;padding:10px;border-bottom:1px solid var(--line)}
.rp-f{display:flex;flex-direction:column;gap:2px;font-size:11px;color:var(--faint);text-align:left;flex:1 1 110px;min-width:0}
.rp-f.grow{flex:2 1 180px}
.rp-f select,.rp-f input{width:100%}
.rp-filters select,.rp-filters input{font:inherit;font-size:12.5px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--r);padding:4px 6px}
.rp-count{padding:6px 10px;font-family:var(--mono);font-size:11px;color:var(--faint);border-bottom:1px solid var(--line)}
#rp-tasks{list-style:none;margin:0;padding:0;overflow-y:auto}
#rp-tasks button{width:100%;text-align:left;border:0;border-bottom:1px solid var(--line);background:none;font:inherit;color:var(--ink);padding:7px 10px;
  display:grid;grid-template-columns:auto 1fr;gap:1px 8px;cursor:pointer}
#rp-tasks button:hover{background:var(--surface-2)}
#rp-tasks button[aria-current="true"]{background:var(--gold-soft);box-shadow:inset 2px 0 0 var(--gold)}
.rp-tid{font-family:var(--mono);font-size:11px;color:var(--muted)}
.rp-tty{font-size:11px;color:var(--faint);text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-tcat{grid-column:1/-1;font-weight:500;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-tbars{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:2px}
.rp-tb{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:3px;font-size:10px;color:var(--faint)}
.rp-tb b{font-weight:500}
.rp-tb i{display:block;height:5px;border-radius:2px;background:linear-gradient(90deg,var(--muted) var(--w),var(--line) var(--w))}
.rp-tb.top i{background:linear-gradient(90deg,var(--gold) var(--w),var(--line) var(--w))}
.rp-tb em{font-style:normal;font-family:var(--mono)}
.rp-main{min-width:0}
.rp-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.rp-chead{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}
.rp-chead h2{margin:2px 0 0;font-size:17px}
.rp-meta{font-family:var(--mono);font-size:11px;color:var(--faint)}
.rp-links a{font-size:12px}
.rp-query{margin:8px 0 10px;color:var(--ink);font-size:13.5px;line-height:1.55}
.rp-facts,.rp-pfacts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;margin:8px 0}
.rp-facts div,.rp-pfacts div{background:var(--surface-2);padding:6px 10px}
.rp-facts span,.rp-pfacts span{display:block;font-size:10.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.05em}
.rp-facts b,.rp-pfacts b{font-size:12.5px}
.rp-reqs{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:6px}
@media (max-width:700px){.rp-reqs{grid-template-columns:1fr}}
.rp-reqs h4,.rp-gold h4,#rp-prod-body h4{margin:6px 0 4px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}
.rp-reqs ul{margin:0;padding-left:18px;font-size:12.5px}
.rp-chips{display:flex;flex-wrap:wrap;gap:4px}
.rp-runbar{display:flex;align-items:center;gap:6px;margin:12px 0 8px;font-size:12.5px;color:var(--muted)}
.rp-runbar button{font:inherit;min-width:32px;padding:3px 9px;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--ink);border-radius:var(--r);cursor:pointer}
.rp-runbar button[aria-pressed="true"]{background:var(--gold-soft);border-color:var(--gold);color:var(--gold);font-weight:600}
.rp-sums{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
@media (max-width:800px){.rp-sums{grid-template-columns:1fr}}
.rp-sum{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:9px 11px;min-width:0}
.rp-sumh{display:flex;justify-content:space-between;align-items:baseline}
.rp-rw{font-family:var(--mono);font-weight:600}
.rp-rw.ok{color:var(--ok)}.rp-rw.bad{color:var(--bad)}
.rp-sumr{font-size:12px;color:var(--muted);margin-top:3px}
.rp-path{display:flex;flex-wrap:wrap;align-items:center;gap:2px;margin-top:6px}
.rp-path span{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;border-radius:3px;background:var(--gold-soft);color:var(--gold);
  font-family:var(--mono);font-size:10.5px;font-weight:600}
.rp-path i{font-style:normal;color:var(--faint);font-size:11px}
.rp-hint{margin:10px 0 6px}
.rp-gridwrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--surface)}
table.rp-grid{border-collapse:collapse;width:100%;min-width:820px;table-layout:fixed}
table.rp-grid th{position:sticky;top:0;background:var(--surface-3);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:7px 10px;text-align:left;z-index:1}
table.rp-grid th.rp-turn{width:46px;text-align:center}
table.rp-grid tbody th.rp-turn{position:static;background:var(--surface-2);font-family:var(--mono);font-size:12px;color:var(--muted);vertical-align:top;padding-top:9px}
table.rp-grid td{vertical-align:top;padding:7px 9px;border-top:1px solid var(--line);border-left:1px solid var(--line);font-size:12px;min-width:0;overflow-wrap:anywhere}
table.rp-grid td.rp-none{background:repeating-linear-gradient(45deg,transparent 0 6px,var(--surface-2) 6px 7px)}
.rp-steps{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:5px}
.rp-step{display:inline-flex;align-items:center;gap:5px;font:inherit;font-size:11px;padding:2px 7px 2px 3px;border-radius:4px;cursor:pointer;
  background:var(--surface-2);border:1px solid var(--line-strong);color:var(--ink);text-align:left}
.rp-step .ph{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;border-radius:3px;background:var(--gold-soft);color:var(--gold);font-family:var(--mono);font-size:10px;font-weight:600}
.rp-step.k-decision{border-color:var(--warn)}
.rp-step.k-end{border-color:var(--muted)}
.rp-step.k-loop{border-style:dashed}
.rp-step:hover{border-color:var(--gold)}
.rp-act{display:grid;grid-template-columns:auto 1fr;gap:4px 6px;margin:3px 0;align-items:start}
.rp-act>div{display:flex;flex-wrap:wrap;gap:3px;min-width:0}
.lab{display:inline-block;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--faint);margin-right:6px;white-space:nowrap}
.rp-q{margin:3px 0;color:var(--ink);font-weight:500}
.rp-say{margin:3px 0;color:var(--ink)}
.rp-reply{margin:3px 0 5px;padding:4px 8px;border-left:2px solid var(--line-strong);color:var(--muted);background:var(--surface-2);border-radius:0 3px 3px 0}
.rp-reply.k-reveal{border-left-color:var(--ok);color:var(--ink)}
.rp-reply.k-event{border-left-color:var(--warn);color:var(--ink)}
.rp-text{display:block!important;color:var(--muted);font-size:11.5px;line-height:1.5}
.rp-sq{display:inline;color:var(--muted)}
.rp-sq+.rp-sq::before,.rp-more .rp-sq::before{content:" · ";color:var(--faint)}
.rp-sq em{font-style:normal;font-family:var(--mono);color:var(--faint);font-size:10px;margin-left:3px}
.rp-text .rp-more{display:inline}
.rp-text .rp-more summary{display:inline;margin-left:4px}
.rp-pid{display:inline-flex;align-items:center;gap:5px;max-width:100%;font:inherit;font-size:11px;padding:1px 6px;border-radius:3px;cursor:pointer;
  background:var(--surface);border:1px solid var(--line-strong);color:var(--ink);text-align:left;white-space:nowrap;overflow:hidden;line-height:18px}
.rp-pid .id{flex:none}
.rp-pid .tt{flex:1 1 auto;min-width:0}
.rp-pid .tier{flex:none}
.rp-pid.sm{padding:0 5px}
.rp-pid .id{font-family:var(--mono);color:var(--gold)}
.rp-pid .tt{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:190px}
.rp-pid .tier{font-family:var(--mono);font-size:10px;color:var(--faint)}
.rp-pid:hover{border-color:var(--gold)}
.rp-pid.gold-verified,.rp-pid.gold-firm{border-color:var(--ok);box-shadow:inset 0 0 0 1px var(--ok)}
.rp-pid.gold-likely{border-color:var(--ok);border-style:dashed}
.rp-more summary{cursor:pointer;font-size:11px;color:var(--muted)}
.rp-act>div>.rp-more[open]{display:flex;flex-wrap:wrap;gap:3px}
.rp-cart .lab{color:var(--gold)}
.rp-order{margin-top:5px;padding:5px 7px;border:1px solid var(--gold);border-radius:4px;background:var(--gold-soft)}
.rp-order.abst{border-color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent)}
.rp-claims{margin-top:3px;font-family:var(--mono);font-size:10.5px;color:var(--muted)}
.rp-mkt{margin-top:3px;font-size:11px;color:var(--warn)}
.rp-note{margin-top:14px;font-size:12px}
.rp-badges{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}
table.rp-vt td.over{color:var(--bad)}
table.rp-vt td.mono,b.mono{font-family:var(--mono);font-size:11.5px}
table.rp-ft th[scope=row]{color:var(--muted);font-weight:500;text-align:left;width:34%;padding:5px 10px}
table.rp-ft td{padding:5px 10px}
#rp-prod-body .bad{color:var(--bad)}
.ag-mbtn.copied{color:var(--ok);border-color:var(--ok)}
.fc g.node.hl path,.fc g.node.hl polygon{stroke:var(--gold);stroke-width:3;fill:var(--gold-soft)}

/* ---- /replay/ flowchart replay (turn player): .cur = this turn's steps, .seen = done earlier, .walk/.walked = travelled arrows ---- */
.rp-views{display:flex;gap:4px;margin:14px 0 4px;border-bottom:1px solid var(--line)}
.rp-views button{font:inherit;font-weight:500;padding:7px 14px;border:1px solid transparent;border-bottom:0;border-radius:var(--r) var(--r) 0 0;background:none;color:var(--muted);cursor:pointer}
.rp-views button[aria-selected="true"]{color:var(--ink);background:var(--surface);border-color:var(--line);box-shadow:inset 0 2px 0 var(--gold);margin-bottom:-1px}
.rp-ctl{position:sticky;top:var(--nav-h);z-index:5;display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;padding:8px 10px;margin:8px 0;
  background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r);box-shadow:var(--shadow)}
.rp-btns{display:flex;gap:4px}
.rp-btns button{display:inline-flex;align-items:center;justify-content:center;gap:6px;font:inherit;font-size:13px;min-width:34px;height:30px;padding:0 9px;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface-2);color:var(--ink);cursor:pointer}
.rp-btns button:hover{border-color:var(--gold)}
.rp-btns .rp-play{min-width:86px;color:var(--gold);border-color:var(--gold);font-weight:600}
#rp-slider{flex:1 1 220px;accent-color:var(--gold)}
.rp-tl{font-family:var(--mono);font-size:12px;color:var(--muted);min-width:110px}
.rp-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;align-items:start}
@media (max-width:1100px){.rp-cols{grid-template-columns:minmax(0,1fr)}}
.rp-col{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px;min-width:0}
.rp-colh{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.rp-colh b{font-size:14px}
.rp-colh .dim{font-size:11.5px;color:var(--faint)}
.rp-phs{display:flex;flex-wrap:wrap;gap:3px;margin:8px 0 4px}
.rp-ph{font:inherit;font-family:var(--mono);font-size:11px;min-width:24px;height:22px;border-radius:4px;border:1px solid var(--line-strong);background:var(--surface-2);color:var(--faint);cursor:pointer}
.rp-ph.done{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 45%,var(--line-strong))}
.rp-ph.now{background:var(--gold);color:var(--on-accent);border-color:var(--gold);font-weight:600}
.rp-ph.shown{box-shadow:0 0 0 2px var(--surface),0 0 0 3px var(--ink)}
.rp-where{font-size:12.5px;margin:4px 0 6px;min-height:20px}
.rp-where .dim{font-size:11.5px;color:var(--faint);margin-top:3px}
.rp-unpin{font:inherit;font-size:11px;margin-left:6px;padding:0 6px;border:1px dashed var(--line-strong);border-radius:3px;background:none;color:var(--gold);cursor:pointer}
.rp-chart{cursor:zoom-in;border:1px solid var(--line);border-radius:var(--r);background:var(--bg);padding:6px;min-height:120px}
.rp-chart .fc{max-width:100%!important}
.rp-turnbox{margin-top:8px;font-size:12px;border-top:1px solid var(--line);padding-top:8px;overflow-wrap:anywhere}
.rp-tbh{font-family:var(--mono);font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;margin-bottom:4px}
.fc g.node.seen path,.fc g.node.seen polygon{stroke:var(--gold);stroke-dasharray:4 2;stroke-width:1.6}
.fc g.node.cur path,.fc g.node.cur polygon{stroke:var(--gold);stroke-width:3;fill:var(--gold-soft);filter:drop-shadow(0 0 4px color-mix(in srgb,var(--gold) 70%,transparent))}
.fc g.node.cur text{font-weight:600}
.fc g.edge.walked path{stroke:color-mix(in srgb,var(--gold) 55%,var(--muted));stroke-width:1.6}
.fc g.edge.walked polygon{fill:color-mix(in srgb,var(--gold) 55%,var(--muted));stroke:color-mix(in srgb,var(--gold) 55%,var(--muted))}
.fc g.edge.walk path{stroke:var(--gold);stroke-width:2.6}
.fc g.edge.walk polygon{fill:var(--gold);stroke:var(--gold)}
.fc text.vc{fill:var(--gold);font-family:var(--mono);font-size:10px;font-weight:600}

/* ---- /replay/ one agent on its full flowchart ---- */
.rp-sum[data-agent]{cursor:pointer}
.rp-sum.sel{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.rp-agtabs{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}
.rp-agtabs button{display:flex;align-items:baseline;gap:8px;font:inherit;padding:7px 12px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface-2);color:var(--muted);cursor:pointer}
.rp-agtabs button b{color:var(--ink);font-size:13.5px}
.rp-agtabs button .dim{font-size:11px;color:var(--faint)}
.rp-agtabs button[aria-selected="true"]{background:var(--gold-soft);border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold)}
.rp-zoom{display:flex;gap:3px;margin-left:auto}
.rp-zoom button{font:inherit;font-size:12px;min-width:30px;height:28px;padding:0 8px;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface-2);color:var(--ink);cursor:pointer}
.rp-zoom button:hover{border-color:var(--gold)}
.rp-solo{display:grid;grid-template-columns:minmax(0,1fr) minmax(300px,380px);gap:12px;align-items:start}
@media (max-width:1100px){.rp-solo{grid-template-columns:minmax(0,1fr)}}
.rp-fullwrap{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:8px;min-width:0}
.rp-solo .rp-phs{margin:0 0 8px}
.rp-solo .rp-ph{display:inline-flex;align-items:center;gap:5px;width:auto;padding:0 8px;height:24px}
.rp-solo .rp-ph span{font-family:var(--sans);font-size:11px;font-weight:400;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-full{height:calc(100vh - var(--nav-h) - 150px);min-height:420px;overflow:auto;border:1px solid var(--line);border-radius:var(--r);background:var(--bg);padding:8px}
@media (max-width:1100px){.rp-full{height:62vh}}
.rp-full svg.fc{margin:0 auto}
.rp-side{position:sticky;top:calc(var(--nav-h) + 64px);background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;min-width:0;
  max-height:calc(100vh - var(--nav-h) - 76px);overflow:auto}
@media (max-width:1100px){.rp-side{position:static;max-height:none}}
.rp-side h4{margin:12px 0 4px;font-size:11px;color:var(--faint);text-transform:uppercase;letter-spacing:.06em}
.rp-wph{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;margin:6px 0}
.rp-wph b{font-size:13px}
.rp-wph p{grid-column:2;margin:0;color:var(--muted);font-size:12px}
.rp-side .rp-turnbox{border-top:1px solid var(--line);margin-top:8px}
.rp-turnlist{list-style:none;margin:0;padding:0;max-height:300px;overflow:auto;border:1px solid var(--line);border-radius:var(--r)}
.rp-turnlist button{width:100%;display:grid;grid-template-columns:28px minmax(0,1fr) auto auto;gap:6px;align-items:center;text-align:left;font:inherit;font-size:11.5px;
  padding:4px 8px;border:0;border-bottom:1px solid var(--line);background:none;color:var(--muted);cursor:pointer}
.rp-turnlist button:hover{background:var(--surface-2);color:var(--ink)}
.rp-turnlist button.on{background:var(--gold-soft);color:var(--ink);box-shadow:inset 2px 0 0 var(--gold)}
.rp-turnlist .n{font-family:var(--mono);color:var(--faint)}
.rp-turnlist .l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-turnlist .g{font-family:var(--mono);font-size:10px;padding:0 5px;border-radius:3px;background:var(--surface-3);color:var(--muted)}
.rp-turnlist .g-ask{color:var(--gold)}
.rp-turnlist .g-cart{color:var(--warn)}
.rp-turnlist .g-order,.rp-turnlist .g-abstain{background:var(--gold);color:var(--on-accent)}
.rp-turnlist .g-reply{color:var(--ok)}

/* ---- /replay/ colours: this turn's logged steps amber (.cur), inferred model calls teal (.llmcur, by certainty), done earlier grey (.seen) ---- */
.fc g.node.cur path,.fc g.node.cur polygon{stroke:var(--warn);stroke-width:3;stroke-dasharray:none;fill:color-mix(in srgb,var(--warn) 20%,var(--surface));
  filter:drop-shadow(0 0 5px color-mix(in srgb,var(--warn) 70%,transparent))}
.fc g.node.llmcur path,.fc g.node.llmcur polygon{stroke:var(--gold);stroke-width:3;fill:var(--gold-soft);filter:drop-shadow(0 0 5px color-mix(in srgb,var(--gold) 75%,transparent))}
.fc g.node.llmcur.s-likely path,.fc g.node.llmcur.s-likely polygon{stroke-dasharray:6 3}
.fc g.node.llmcur.s-may path,.fc g.node.llmcur.s-may polygon{stroke-dasharray:2 3}
.fc g.node.llmcur text{font-weight:600}
.fc g.node.seen path,.fc g.node.seen polygon{stroke:var(--muted);stroke-dasharray:4 2;stroke-width:1.6;filter:none}
.fc g.edge.walk path{stroke:var(--warn);stroke-width:2.6}
.fc g.edge.walk polygon{fill:var(--warn);stroke:var(--warn)}
.fc g.edge.walked path{stroke:color-mix(in srgb,var(--warn) 45%,var(--muted));stroke-width:1.6}
.fc g.edge.walked polygon{fill:color-mix(in srgb,var(--warn) 45%,var(--muted));stroke:color-mix(in srgb,var(--warn) 45%,var(--muted))}
.fc text.vc{fill:var(--warn)}
.rp-llms{display:grid;grid-template-columns:auto 1fr;gap:3px 6px;margin:3px 0 5px;align-items:start}
.rp-llms>div{display:flex;flex-wrap:wrap;gap:3px}
.rp-llms .lab{color:var(--gold)}
.rp-step.rp-llm{border-color:var(--gold);background:var(--gold-soft)}
.rp-step.rp-llm.s-likely{border-style:dashed}
.rp-step.rp-llm.s-may{border-style:dotted}
.rp-step .sure{font-family:var(--mono);font-size:9.5px;color:var(--gold);margin-left:4px;text-transform:uppercase;letter-spacing:.04em}
.rp-step:not(.rp-llm) .ph{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}
.rp-turnlist .g-llm{color:var(--gold);background:var(--gold-soft)}
.rp-llmnote{margin:6px 0 0;font-size:11px;color:var(--faint)}

/* ---- /replay/ task picker in the page header; turn explorer (left) beside the full flowchart; the process of a turn as a timeline ---- */
.rp-pick{display:flex;flex-wrap:wrap;align-items:flex-end;gap:8px 10px;margin-top:12px;padding:10px 12px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
.rp-pick .rp-f{flex:0 1 130px}
.rp-pick .rp-find{flex:1 1 190px}
.rp-pick .rp-taskf{flex:3 1 360px}
.rp-pick select,.rp-pick input{font:inherit;font-size:12.5px;color:var(--ink);background:var(--surface-2);border:1px solid var(--line-strong);border-radius:var(--r);padding:0 6px;height:30px}
.rp-f>span em{font-style:normal;font-family:var(--mono);color:var(--faint);margin-left:4px}
.rp-tsel{display:flex;gap:4px;min-width:0}
.rp-tnav{flex:none;width:30px;height:30px;font:inherit;font-size:17px;line-height:1;border:1px solid var(--line-strong);border-radius:var(--r);background:var(--surface-2);color:var(--ink);cursor:pointer}
.rp-tnav:hover{border-color:var(--gold)}
.rp-drop{position:relative;flex:1 1 auto;min-width:0}
.rp-drop>summary{list-style:none;display:flex;align-items:center;gap:8px;height:30px;padding:0 28px 0 8px;border:1px solid var(--line-strong);border-radius:var(--r);
  background:var(--surface-2);color:var(--ink);cursor:pointer;overflow:hidden;white-space:nowrap;position:relative;font-size:12.5px}
.rp-drop>summary::-webkit-details-marker{display:none}
.rp-drop>summary::after{content:"";position:absolute;right:11px;top:50%;width:7px;height:7px;border-right:1.5px solid var(--muted);border-bottom:1.5px solid var(--muted);transform:translateY(-70%) rotate(45deg)}
.rp-drop[open]>summary{border-color:var(--gold)}
.rp-drop>summary .rp-tid{flex:none}
.rp-ccat{font-weight:500;overflow:hidden;text-overflow:ellipsis;min-width:0}
.rp-cty{margin-left:auto;font-size:11px;color:var(--faint);flex:none;padding-left:6px}
@media (max-width:600px){.rp-cty{display:none}}
.rp-pop{position:absolute;z-index:30;left:0;right:0;top:calc(100% + 4px);max-height:min(62vh,540px);overflow:auto;background:var(--surface);border:1px solid var(--line-strong);
  border-radius:var(--r);box-shadow:var(--shadow)}
#rp-tasks .rp-empty{padding:10px 12px;color:var(--faint)}
.rp-solo{display:grid;grid-template-columns:minmax(320px,430px) minmax(0,1fr);gap:12px;align-items:start}
@media (max-width:1000px){.rp-solo{grid-template-columns:minmax(0,1fr)}}
.rp-exp{position:sticky;top:calc(var(--nav-h) + 58px);display:flex;flex-direction:column;min-width:0;max-height:calc(100vh - var(--nav-h) - 70px);
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
@media (max-width:1000px){.rp-exp{position:static;max-height:72vh}}
.rp-exph{display:flex;justify-content:space-between;align-items:baseline;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line)}
.rp-exph span{font-size:11.5px;color:var(--faint)}
.rp-legend{display:flex;flex-wrap:wrap;gap:5px;padding:6px 12px;border-bottom:1px solid var(--line)}
.rp-legend span,.rp-ps .ic,.rp-wk{display:inline-block;font-family:var(--mono);font-size:9.5px;line-height:15px;text-transform:uppercase;letter-spacing:.05em;padding:0 5px;
  border-radius:3px;border:1px solid var(--line-strong);color:var(--muted);background:var(--surface-2);white-space:nowrap}
.rp-legend .k-llm,.rp-ps.k-llm .ic,.rp-wk.k-llm{color:var(--gold);border-color:var(--gold);background:var(--gold-soft)}
.rp-legend .k-queue,.rp-ps.k-queue .ic,.rp-wk.k-queue{color:var(--gold);border-color:var(--gold);border-style:dashed;background:none}
.rp-legend .k-tool,.rp-ps.k-tool .ic,.rp-wk.k-tool{color:var(--warn);border-color:var(--warn)}
.rp-turns{list-style:none;margin:0;padding:0;overflow:auto;flex:1 1 auto;min-height:0}
.rp-tih{width:100%;display:grid;grid-template-columns:26px minmax(0,1fr) auto auto;gap:6px;align-items:center;text-align:left;font:inherit;font-size:12px;
  padding:5px 10px;border:0;border-bottom:1px solid var(--line);background:none;color:var(--muted);cursor:pointer}
.rp-tih:hover{background:var(--surface-2);color:var(--ink)}
.rp-ti.on>.rp-tih{background:var(--gold-soft);color:var(--ink);box-shadow:inset 2px 0 0 var(--gold);font-weight:500}
.rp-tih .n{font-family:var(--mono);color:var(--faint)}
.rp-tih .l{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp-tih .g{font-family:var(--mono);font-size:10px;font-weight:400;padding:0 5px;border-radius:3px;background:var(--surface-3);color:var(--muted);white-space:nowrap}
.rp-tih .g-llm{color:var(--gold);background:var(--gold-soft)}
.rp-tih .g-ask{color:var(--gold)}
.rp-tih .g-cart{color:var(--warn)}
.rp-tih .g-order,.rp-tih .g-abstain{background:var(--gold);color:var(--on-accent)}
.rp-tih .g-reply{color:var(--ok)}
.rp-tib{padding:8px 10px 10px 12px;border-bottom:1px solid var(--line-strong)}
.rp-proc{list-style:none;margin:0 0 10px 5px;padding:0;border-left:2px solid var(--line-strong)}
.rp-ps{position:relative;padding:3px 4px 4px 13px;border-radius:0 4px 4px 0}
.rp-ps::before{content:"";position:absolute;left:-7px;top:7px;width:8px;height:8px;border-radius:50%;background:var(--surface);border:2px solid var(--muted)}
.rp-ps.k-llm::before{border-color:var(--gold);background:var(--gold-soft)}
.rp-ps.k-queue::before{border-color:var(--gold);border-style:dashed}
.rp-ps.k-tool::before{border-color:var(--warn);background:var(--warn)}
.rp-ps.on{background:var(--surface-2)}
.rp-ps.on::before{box-shadow:0 0 0 3px color-mix(in srgb,var(--warn) 45%,transparent)}
.rp-ps.k-llm.on::before{box-shadow:0 0 0 3px color-mix(in srgb,var(--gold) 50%,transparent)}
.rp-psh{display:flex;gap:6px;align-items:baseline;width:100%;text-align:left;font:inherit;font-size:12px;border:0;background:none;color:var(--ink);padding:0;cursor:pointer}
.rp-psh .lb{flex:1 1 auto;min-width:0;font-weight:500}
.rp-psh .su{flex:none;font-family:var(--mono);font-size:9.5px;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}
.rp-ps.k-llm.s-always .su,.rp-ps.k-llm.s-seen .su{color:var(--gold)}
.rp-ps.s-may .lb{color:var(--muted);font-weight:400}
.rp-pst{margin:1px 0 0;font-size:11.5px;color:var(--muted);line-height:1.45}
.rp-psd{margin-top:5px;padding:6px 8px;background:var(--surface);border:1px solid var(--line);border-radius:4px;font-size:11.5px}
.rp-site{display:grid;grid-template-columns:auto minmax(0,1fr);gap:2px 8px;margin:0 0 5px}
.rp-site dt{font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);padding-top:2px}
.rp-site dd{margin:0;color:var(--ink)}
.rp-psx{margin:3px 0 5px;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.rp-psm code{font-family:var(--mono);font-size:11px;color:var(--gold)}
.rp-psm .dim{font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.rp-why{display:block;color:var(--faint);margin-top:2px}
.rp-step-open,.rp-tjump{font:inherit;font-size:11px;border:1px dashed var(--line-strong);border-radius:3px;background:none;color:var(--gold);cursor:pointer;padding:0 5px;margin-top:3px}
.rp-step-open:hover,.rp-tjump:hover{border-color:var(--gold)}
.rp-tcalls{border-top:1px solid var(--line);padding-top:6px;font-size:12px;overflow-wrap:anywhere}
.rp-tcalls .rp-text .rp-sq{display:block;padding:1px 0}
.rp-tcalls .rp-sq+.rp-sq::before,.rp-tcalls .rp-more .rp-sq::before{content:none}
.rp-src{font-style:normal;font-family:var(--mono);font-size:9.5px;margin-left:6px;padding:0 4px;border-radius:3px;background:var(--surface-3);color:var(--muted);white-space:nowrap}
.rp-src.k-llm{background:var(--gold-soft);color:var(--gold)}
.rp-src.s-may{border:1px dotted var(--line-strong)}
.rp-solo .rp-where{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 6px;margin:0 0 6px;font-size:12.5px;min-height:20px}
.rp-solo .rp-where .dim{font-size:11.5px;color:var(--faint);margin:0}
.rp-full{height:calc(100vh - var(--nav-h) - 170px)}
@media (max-width:1000px){.rp-full{height:64vh}}
.fc g.node.focus path,.fc g.node.focus polygon{stroke-width:4.5;stroke-dasharray:none!important;animation:rp-pulse 1.1s ease-in-out infinite}
@keyframes rp-pulse{50%{stroke-opacity:.45}}
@media (prefers-reduced-motion:reduce){.fc g.node.focus path,.fc g.node.focus polygon{animation:none}}
.rp kbd{font-family:var(--mono);font-size:10.5px;padding:0 4px;border:1px solid var(--line-strong);border-bottom-width:2px;border-radius:3px;background:var(--surface-2);color:var(--ink)}
details.rp-card>summary{list-style:none;cursor:pointer}
details.rp-card>summary::-webkit-details-marker{display:none}
.rp-qline{display:none;margin:3px 0 0;color:var(--muted);font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
details.rp-card:not([open])>summary .rp-qline{display:block}
details.rp-card>summary>div:first-child{min-width:0;flex:1 1 auto}
.rp-links{display:flex;align-items:center;gap:10px;flex:none}
.rp-cardtog::after{content:"hide task";font-size:11.5px;color:var(--faint);border:1px solid var(--line-strong);border-radius:3px;padding:1px 6px}
details.rp-card:not([open]) .rp-cardtog::after{content:"show task"}
.rp-src.via{box-shadow:inset 2px 0 0 var(--gold)}

/* ---- /replay/ call replay: every search, filter, compare, cart and order call as the agent saw it ---- */
button.rp-sq,button.rp-oplab{font:inherit;border:0;background:none;padding:0;margin:0;color:inherit;text-align:left;cursor:pointer}
button.rp-sq{color:var(--muted)}
button.rp-sq:hover{color:var(--ink);text-decoration:underline;text-decoration-color:var(--gold);text-underline-offset:2px}
button.rp-oplab{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--gold);white-space:nowrap}
button.rp-oplab:hover{text-decoration:underline}
.rp-replaybtn{font:inherit;font-size:10.5px;font-family:var(--mono);text-transform:none;letter-spacing:0;margin-left:6px;padding:0 6px;border:1px solid var(--gold);border-radius:3px;
  background:var(--gold-soft);color:var(--gold);cursor:pointer;vertical-align:1px}
.rp-replaybtn:hover{background:var(--gold);color:var(--on-accent)}
td>.rp-replaybtn{display:block;margin:6px 0 0}
.rp-calldlg{width:min(1180px,96vw);max-width:96vw}
@media (max-width:640px){.rp-calldlg{width:100vw;max-width:100vw}.rp-pages{grid-template-columns:minmax(0,1fr)}}
.rp-cstrip{display:flex;flex-wrap:wrap;align-items:center;gap:4px;padding:8px 18px;border-bottom:1px solid var(--line);background:var(--surface-2)}
.rp-cchip{font:inherit;font-family:var(--mono);font-size:10.5px;padding:1px 6px;border:1px solid var(--line-strong);border-radius:3px;background:var(--surface);color:var(--muted);cursor:pointer}
.rp-cchip:hover{border-color:var(--gold);color:var(--ink)}
.rp-cchip.on{background:var(--gold);border-color:var(--gold);color:var(--on-accent);font-weight:600}
.rp-cchip.t-compare,.rp-cchip.t-view{border-style:dashed}
.rp-cchip.t-add_to_cart,.rp-cchip.t-remove_from_cart,.rp-cchip.t-inspect_stock{color:var(--warn)}
.rp-cchip.t-place_test_order{color:var(--ok)}
.rp-cturns{margin-left:auto;display:flex;gap:4px}
.rp-cturns button{font:inherit;font-size:11px;padding:1px 7px;border:1px solid var(--line-strong);border-radius:3px;background:var(--surface);color:var(--ink);cursor:pointer}
.rp-cturns button:hover{border-color:var(--gold)}
#rp-call-sub .dim{display:block;margin-top:2px;color:var(--faint);font-size:12px}
.rp-cargs{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px}
.rp-arg{display:inline-flex;align-items:center;gap:5px;font-size:12px;padding:2px 7px;border:1px solid var(--line);border-radius:4px;background:var(--surface-2)}
.rp-arg b{font-family:var(--mono);font-size:10px;font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--faint)}
.rp-csum{margin:4px 0 8px;font-size:12.5px;color:var(--muted)}
.rp-csum b{color:var(--ink)}
.rp-cerr{color:var(--bad);font-size:12.5px}
table.rp-ct td,table.rp-ct th{padding:5px 8px;vertical-align:top}
table.rp-ct td.over,table.rp-vt td.over{color:var(--bad)}
table.rp-ct td.mono,.rp-page td.mono{font-family:var(--mono);font-size:11px;color:var(--muted);white-space:nowrap}
.rp-ctitle{color:var(--ink);font-size:12px}
.rp-mk{display:inline-block;font-family:var(--mono);font-size:9.5px;padding:0 5px;margin:1px 3px 1px 0;border-radius:3px;background:var(--surface-3);color:var(--muted);white-space:nowrap}
.rp-mk.new{background:var(--gold-soft);color:var(--gold)}
.rp-mk.go{color:var(--ink);box-shadow:inset 0 0 0 1px var(--line-strong)}
.rp-mk.ok{background:var(--ok-soft);color:var(--ok)}
.rp-mk.cart{color:var(--warn);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--warn) 50%,transparent)}
.rp-mk.ord{background:var(--gold);color:var(--on-accent)}
.rp-pages{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:10px}
.rp-page{border:1px solid var(--line);border-radius:6px;padding:9px 11px;background:var(--surface-2);min-width:0;overflow-wrap:anywhere}
.rp-pageh{display:flex;gap:6px;align-items:flex-start}
.rp-pageh b{font-size:12.5px;line-height:1.4}
.rp-pagem{font-size:11.5px;color:var(--faint);margin:3px 0}
.rp-pagek{margin:2px 0 6px}
.rp-page table{width:100%;margin:4px 0;font-size:12px}
.rp-page table.rp-ft th[scope=row]{width:40%}
.rp-pageh .rp-pid{flex:none}
.rp-page table.rp-vt th,table.rp-ct th{white-space:nowrap}
table.rp-ct td:nth-child(5),table.rp-vt td:nth-child(4){white-space:nowrap}

/* ---- /races/ Subsystems: points lost per 90-task run by subsystem (subsystems.py); click a cell for the agent's table ---- */
.grid td.c-sub{font-family:var(--mono);white-space:nowrap;cursor:pointer}
.grid td.c-sub:hover{outline:1px solid var(--gold);outline-offset:-1px}
.grid td.ss-tint{background:color-mix(in srgb,var(--c-bad) calc(var(--m) * 38%),var(--surface))}
.sub-dlg{width:min(980px,96vw)}
table.sub-t{width:100%}
table.sub-t td,table.sub-t th{padding:6px 9px;vertical-align:top}
table.sub-t td.num,table.sub-t th.num{text-align:right;white-space:nowrap;font-family:var(--mono)}
table.sub-t tr.on td{background:var(--gold-soft)}
table.sub-t tr.tot td{border-top:2px solid var(--line-strong)}
table.sub-t td.dim{color:var(--faint)}
.sub-foot{margin:8px 0 0;font-size:12px}
@media (max-width:640px){.sub-dlg{width:100vw}}
table.sub-t td:nth-child(6){min-width:190px}
table.sub-t td:nth-child(2){white-space:nowrap}

/* ================================================================ /lab/ Backend lab (assets/lab.js) */
.lb .mono{font-family:var(--mono)}
.lb-health{flex-wrap:wrap;gap:6px;justify-content:flex-end}
.lb-in{font:inherit;font-size:12.5px;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);
  border-radius:var(--r);padding:5px 8px;min-width:0;width:100%}
.lb-in:focus{outline:none;border-color:var(--gold)}
.lb-in.mono{font-family:var(--mono);font-size:12px}
select.lb-in{padding:4px 6px}
textarea.lb-in{resize:vertical;line-height:1.45}
.lb-lab{display:flex;flex-direction:column;gap:3px;font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.04em}
.lb-lab .lb-hint{text-transform:none;letter-spacing:0;font-weight:400}
.lb-lab.grow,.lb-in.grow{flex:1 1 260px}
.lb-hint{font-size:11.5px;color:var(--faint);margin:3px 0 0;max-width:none}
.lb-empty{color:var(--faint);padding:14px;margin:0;list-style:none}
.lb-chk{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);cursor:pointer}
.lb-chk input{accent-color:var(--gold);margin:0}
.lb-row{display:flex;flex-direction:column;gap:3px}
.lb-tag{font-family:var(--mono);font-size:10.5px;color:var(--gold);background:var(--gold-soft);border-radius:3px;padding:1px 6px}
.lb-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:14px 0 8px}
.lb-pager{display:flex;align-items:center;gap:10px;justify-content:center;margin:8px 0}
.lb-btnrow{display:flex;align-items:center;gap:6px;margin-top:10px;flex-wrap:wrap}
.lb-kbd{font-family:var(--mono);font-size:10.5px;color:var(--faint);border:1px solid var(--line-strong);border-radius:3px;padding:0 5px;margin-left:auto}
.lb-ul{margin:0 0 12px;padding-left:18px;max-width:110ch}
.lb-ul li{margin:4px 0}
.lb-about h2{margin-top:22px}

/* task picker */
.lb-start{display:grid;grid-template-columns:minmax(260px,380px) 1fr;gap:14px;margin-top:14px}
.lb-tasks{display:flex;flex-direction:column;gap:8px;min-width:0}
.lb-tlist{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--r);background:var(--surface);
  max-height:min(62vh,640px);overflow:auto}
.lb-tlist li+li{border-top:1px solid var(--line)}
.lb-titem{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;background:none;border:0;padding:8px 10px;cursor:pointer;font:inherit;color:var(--ink)}
.lb-titem:hover{background:var(--surface-2)}
.lb-titem.on{background:var(--gold-soft);box-shadow:inset 2px 0 0 var(--gold)}
.lb-tid{font-family:var(--mono);font-size:11px;color:var(--gold)}
.lb-tsn{font-size:12px;color:var(--muted);line-height:1.4}
.lb-tdetail{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;min-width:0;align-self:start}
.lb-h3{margin:4px 0 8px}
.lb-req{margin:0 0 14px;padding:10px 14px;border-left:2px solid var(--gold);background:var(--surface-2);border-radius:0 var(--r) var(--r) 0;
  font-size:13.5px;line-height:1.6;white-space:pre-wrap}
.lb-startrow{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.lb-startrow .lb-lab{flex:0 1 260px}

/* episode */
.lb-epbar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;margin:14px 0 10px;padding:8px 10px;
  background:var(--surface);border:1px solid var(--line);border-radius:var(--r)}
.lb-epmeta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}
.lb-epact{display:flex;gap:6px;flex-wrap:wrap}
.lb-grid{display:grid;grid-template-columns:260px minmax(0,1fr) 360px;gap:12px;align-items:start}
.lb-left,.lb-right{position:sticky;top:calc(var(--nav-h) + 10px);max-height:calc(100vh - var(--nav-h) - 20px);overflow:auto;display:flex;flex-direction:column;gap:10px}
.lb-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px}
.lb-box>summary{cursor:pointer;font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.05em}
.lb-boxh{font-size:11px;font-weight:600;color:var(--faint);text-transform:uppercase;letter-spacing:.05em;margin:0 0 6px}
.lb-boxh.sub{margin:10px 0 4px;font-size:10.5px}
.lb-reqs{margin:8px 0 0;font-size:12.5px;line-height:1.55;white-space:pre-wrap}
.lb-mh{display:flex;justify-content:space-between;gap:8px;font-size:12px;margin-top:6px}
.lb-bar{height:5px;border-radius:3px;background:var(--surface-3);overflow:hidden;margin-top:3px}
.lb-bar i{display:block;height:100%;background:var(--gold);border-radius:3px}
.lb-bar i.full{background:var(--bad)}
.lb-meter+.lb-meter{margin-top:8px}
.lb-list{list-style:none;margin:0;padding:0}
.lb-list li{padding:4px 0;border-bottom:1px solid var(--line);font-size:12px}
.lb-list li:last-child{border-bottom:0}
.lb-state{margin:0}
.lb-verdict{display:flex;flex-direction:column;gap:2px;margin-top:10px;padding:10px 12px;border-radius:var(--r);border:1px solid}
.lb-verdict b{font-family:var(--mono);font-size:18px;letter-spacing:.06em}
.lb-verdict.pass{background:var(--ok-soft);border-color:color-mix(in srgb,var(--ok) 40%,transparent);color:var(--ok)}
.lb-verdict.fail{background:var(--bad-soft);border-color:color-mix(in srgb,var(--bad) 40%,transparent);color:var(--bad)}
.lb-verdict span{color:var(--ink);font-size:12.5px}

/* timeline */
.lb-tl{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.lb-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);min-width:0}
.lb-card.bad{border-color:color-mix(in srgb,var(--bad) 45%,var(--line))}
.lb-card.stop{border-style:dashed}
.lb-card.grade.pass{border-color:color-mix(in srgb,var(--ok) 50%,var(--line))}
.lb-card.grade.fail{border-color:color-mix(in srgb,var(--bad) 50%,var(--line))}
.lb-ch{display:flex;align-items:center;gap:8px;padding:7px 10px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.lb-n{display:grid;place-items:center;min-width:22px;height:20px;padding:0 4px;border-radius:3px;background:var(--surface-3);
  font-family:var(--mono);font-size:11px;color:var(--muted)}
.lb-tool{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--gold)}
.lb-raw{font-family:var(--mono);font-size:11px;background:none;border:1px solid var(--line-strong);border-radius:3px;color:var(--muted);cursor:pointer;padding:0 5px}
.lb-raw:hover{color:var(--ink)}
.lb-cb{padding:8px 10px 10px;min-width:0}
.lb-args{display:flex;flex-wrap:wrap;gap:4px 10px;margin-bottom:8px}
.lb-arg{display:inline-flex;gap:5px;align-items:baseline;font-size:12px}
.lb-arg b{font-family:var(--mono);font-size:11px;font-weight:500;color:var(--faint)}
.lb-arg code{font-family:var(--mono);font-size:11.5px}
.lb-obs{min-width:0}
.lb-null{color:var(--faint);font-family:var(--mono);font-size:11.5px}
.lb-num{color:var(--code-str)}
:root[data-theme="light"] .lb-num{color:var(--warn)}
.lb-str{white-space:pre-wrap;word-break:break-word}
.lb-more{background:none;border:0;color:var(--gold);cursor:pointer;font:inherit;font-size:11.5px;padding:0 2px}
.lb-kv{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:0;font-size:12.5px}
.lb-kv dt{font-family:var(--mono);font-size:11px;color:var(--faint);padding-top:1px}
.lb-kv dd{margin:0;min-width:0}
.lb-arr{margin:0;padding-left:18px}
.lb-tw{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r);margin:2px 0}
table.lb-ot{background:none;width:100%}
table.lb-ot th{position:static;padding:4px 8px;font-size:10px;white-space:nowrap}
table.lb-ot td{padding:4px 8px;font-size:12px;max-width:340px}
.lb-nest{margin:4px 0}
.lb-nest>summary{cursor:pointer;color:var(--muted);font-size:11.5px}
.lb-err{padding:8px 10px;border-radius:var(--r);background:var(--bad-soft);color:var(--ink);border-left:2px solid var(--bad);font-size:12.5px}
.lb-err b{color:var(--bad)}
.lb-refusal{padding:8px 10px;border-radius:var(--r);background:color-mix(in srgb,var(--warn) 12%,var(--surface));border-left:2px solid var(--warn);margin-bottom:6px}
.lb-refusal .lb-boxh{color:var(--warn)}
.lb-recs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:4px}
.lb-r{font-size:12px;padding:4px 8px;border-radius:var(--r);background:var(--surface-2);min-width:0}
.lb-r.dim{background:none;color:var(--faint);padding:2px 8px}
.lb-r.warn{background:var(--bad-soft)}
.lb-r.ev{background:color-mix(in srgb,var(--warn) 12%,var(--surface));border-left:2px solid var(--warn)}
.lb-r.fin{border-left:2px solid var(--gold)}
.lb-rk{display:inline-block;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);margin-right:8px}
.lb-r .lb-kv{margin-top:4px}
.lb-bub{padding:6px 10px;border-radius:8px;max-width:92%;white-space:pre-wrap}
.lb-bub .lb-rk{display:block;margin-bottom:2px}
.lb-bub.out{background:var(--gold-soft);margin-left:auto}
.lb-bub.in{background:var(--surface-3)}
.lb-r:has(.lb-bub){background:none;padding:0;display:flex}
.lb-two{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.lb-models{display:flex;flex-wrap:wrap;gap:4px;margin-top:8px}
.lb-mc{font-family:var(--mono);font-size:10.5px;color:var(--muted);border:1px solid var(--line);border-radius:3px;padding:0 6px}
.lb-mc.bad{color:var(--bad);border-color:color-mix(in srgb,var(--bad) 45%,transparent)}
.lb-pre{margin:4px 0;padding:8px 10px;background:var(--code-bg);color:var(--code-ink);border-radius:var(--r);font-size:11.5px;
  white-space:pre-wrap;word-break:break-word;max-height:420px;overflow:auto}
.lb-id{font-family:var(--mono);font-size:11.5px;color:var(--gold);background:var(--gold-soft);border:0;border-radius:3px;padding:0 5px;cursor:pointer;line-height:18px}
.lb-id:hover{outline:1px solid var(--gold)}
.lb-menu{position:absolute;z-index:200;display:flex;flex-direction:column;min-width:220px;background:var(--surface);border:1px solid var(--line-strong);
  border-radius:var(--r);box-shadow:var(--shadow);padding:4px}
.lb-menu button{text-align:left;background:none;border:0;color:var(--ink);font:inherit;font-size:12.5px;padding:6px 8px;border-radius:3px;cursor:pointer}
.lb-menu button:hover{background:var(--surface-2)}
.lb-menu b{font-family:var(--mono);font-weight:600;color:var(--gold)}

/* composer */
.lb-tools{display:flex;flex-wrap:wrap;gap:4px}
.lb-tb{font-family:var(--mono);font-size:11.5px;background:var(--surface-2);color:var(--ink);border:1px solid var(--line-strong);border-radius:3px;padding:3px 7px;cursor:pointer}
.lb-tb:hover{border-color:var(--gold)}
.lb-tb.on{background:var(--gold);color:var(--on-accent);border-color:var(--gold)}
.lb-tdesc{font-size:12.5px;color:var(--muted);margin:8px 0}
.lb-seg{display:inline-flex;border:1px solid var(--line-strong);border-radius:var(--r);overflow:hidden;margin-bottom:8px}
.lb-seg button{background:none;border:0;color:var(--muted);font:inherit;font-size:12px;padding:3px 10px;cursor:pointer}
.lb-seg button+button{border-left:1px solid var(--line-strong)}
.lb-seg button[aria-pressed="true"]{background:var(--surface-3);color:var(--ink)}
.lb-form{display:flex;flex-direction:column;gap:9px;margin-bottom:8px}
.lb-field label{display:flex;align-items:baseline;gap:6px;margin-bottom:3px;font-size:12px}
.lb-req-m{color:var(--bad);font-weight:700}
.lb-type{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.lb-steprow{display:flex;align-items:center;gap:8px;margin:8px 0}
.lb-stepin{width:80px}
.lb-batch ol{margin:0;padding-left:18px;font-size:12px}
.lb-x{background:none;border:0;color:var(--bad);cursor:pointer;font-size:14px;line-height:1}
.lb-msg{min-height:16px;font-size:12px;margin:8px 0 0;color:var(--muted)}
.lb-msg.bad{color:var(--bad)}
.lb-msg.busy::before{content:"";display:inline-block;width:9px;height:9px;margin-right:6px;border:2px solid var(--gold);border-right-color:transparent;
  border-radius:50%;animation:lbspin .8s linear infinite;vertical-align:-1px}
@keyframes lbspin{to{transform:rotate(360deg)}}
.lb-edges{margin-top:10px}
.lb-btnrow.wrap .btn{height:24px;font-size:11.5px;padding:0 8px}
.lb-rawta{min-height:220px}

/* catalogue, search, pack */
table.lb-ct td{font-size:12px}
table.lb-ct td.num,table.lb-ct th.num,table.lb-ot td.num,table.lb-ot th.num{text-align:right}
.lb-sform{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap;margin:10px 0}
.lb-sform .lb-lab:not(.grow){flex:0 1 240px}
table.lb-ft{background:none;width:auto;min-width:min(100%,520px);margin:4px 0}
table.lb-ft th{position:static;padding:4px 10px 4px 0;background:none;font-size:10px}
table.lb-ft td{padding:4px 10px 4px 0;font-size:12px;background:none!important}
.lb-toolgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:10px}
.lb-toolspec{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;min-width:0;overflow-x:auto}
.lb-tsh{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap}
.lb-toolspec p{margin:6px 0;font-size:12.5px;color:var(--muted)}
.lb-code{max-height:70vh;overflow:auto}
.lb-code pre{counter-reset:ln;white-space:pre}
.lb-code .ln{counter-increment:ln}
.lb-code .ln::before{content:counter(ln);display:inline-block;width:3.2em;margin-right:10px;text-align:right;color:var(--code-dim)}
.lb-code .ln.hit{background:color-mix(in srgb,var(--warn) 28%,transparent)}
.lb-dlg{width:min(900px,94vw)}
.lb-dlg[open]{flex-direction:column}
.lb-dlgh{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line)}
.lb-dlgh h3{margin:0;font-size:14px;min-width:0;overflow-wrap:anywhere}
.lb-dlgb{padding:12px 16px 16px;overflow:auto}
.lb-desc{white-space:pre-wrap;font-size:12.5px;color:var(--muted)}

@media (max-width:1280px){.lb-grid{grid-template-columns:240px minmax(0,1fr) 320px}}
@media (max-width:1100px){
  .lb-grid{grid-template-columns:minmax(0,1fr) 320px}
  .lb-left{grid-column:1/-1;position:static;max-height:none;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
}
@media (max-width:820px){
  .lb-start{grid-template-columns:1fr}
  .lb-tlist{max-height:40vh}
  .lb-grid{grid-template-columns:1fr}
  .lb-right{position:static;max-height:none;order:-1}
  .lb-two{grid-template-columns:1fr}
  .lb-toolgrid{grid-template-columns:1fr}
}
.lb-start[hidden],.lb-ep[hidden]{display:none}
table.lb-ot td.sh{white-space:nowrap}
table.lb-ot td{min-width:90px}
table.lb-ot td.long{min-width:260px;max-width:380px}
table.lb-ot td.mid{min-width:170px}
table.lb-ot td.num{min-width:0}
.ta-list td.c-q.dim,.td-q.dim{color:var(--faint);font-style:italic}
.oldbench{margin:0 0 14px}

/* ================================================================ /replay/ runtime 4.0 (assets/replay.js) */
.r4 .mono{font-family:var(--mono)}
.r4-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 10px;padding:8px 10px;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);position:sticky;top:var(--nav-h);z-index:20}
.r4-pick{position:relative}
.r4-pop{width:min(560px,92vw);padding:10px;display:flex;flex-direction:column;gap:8px}
.r4-pop[hidden]{display:none}
.r4-in{font:inherit;font-size:12.5px;color:var(--ink);background:var(--surface);border:1px solid var(--line-strong);border-radius:var(--r);padding:5px 8px;width:100%}
.r4-in:focus{outline:none;border-color:var(--gold)}
.r4-chips{display:flex;flex-wrap:wrap;gap:4px}
.r4-chip{font:inherit;font-size:11.5px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line-strong);border-radius:3px;padding:2px 7px;cursor:pointer}
.r4-chip span{font-family:var(--mono);color:var(--faint)}
.r4-chip.on{background:var(--gold-soft);color:var(--gold);border-color:var(--gold)}
.r4-tlist{list-style:none;margin:0;padding:0;max-height:min(60vh,520px);overflow:auto;border:1px solid var(--line);border-radius:var(--r)}
.r4-tlist li+li{border-top:1px solid var(--line)}
.r4-titem{display:flex;align-items:center;gap:6px;flex-wrap:wrap;width:100%;text-align:left;background:none;border:0;padding:6px 8px;font:inherit;font-size:12px;color:var(--ink);cursor:pointer}
.r4-titem:hover{background:var(--surface-2)}
.r4-titem.on{background:var(--gold-soft)}
.r4-titem .count{margin-left:auto}
.r4-tev{display:inline-flex;flex-wrap:wrap}
.r4-empty{color:var(--faint);padding:12px;margin:0}
.r4-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:3px;vertical-align:1px}
.r4-dot.ok{background:var(--ok)} .r4-dot.bad{background:var(--bad)}
.r4-player{display:flex;align-items:center;gap:4px;flex:1 1 320px;min-width:0}
.r4-player input[type=range]{flex:1;min-width:80px;accent-color:var(--gold)}
.r4-player .iconbtn{min-width:28px;height:28px;font-size:15px;line-height:1}
.r4-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:8px 12px;margin-bottom:10px}
.r4-card>summary{cursor:pointer;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.r4-note{font-size:12px;color:var(--muted);margin:8px 0}
.r4-kv{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0}
.r4-kv span{font-size:12px;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);padding:2px 8px}
.r4-kv b{font-family:var(--mono);font-size:10.5px;color:var(--faint);font-weight:500;margin-right:6px}
.r4-evt td q{color:var(--muted)}
.r4-strip{display:flex;gap:3px;overflow-x:auto;padding:2px 0 8px;margin-bottom:6px}
.r4-sc{flex:none;min-width:28px;height:24px;font:inherit;font-family:var(--mono);font-size:10.5px;background:var(--surface-2);color:var(--muted);border:1px solid var(--line-strong);border-radius:3px;cursor:pointer;position:relative}
.r4-sc.r-msg{background:var(--gold-soft);color:var(--gold);border-color:transparent}
.r4-sc.r-cart{color:var(--ink);border-color:var(--ink)}
.r4-sc.r-order{color:var(--warn);border-color:var(--warn)}
.r4-sc.r-err{color:var(--bad);border-color:var(--bad)}
.r4-sc.r-end{display:inline-grid;place-items:center;cursor:default;color:var(--faint)}
.r4-sc.ev::after{content:"";position:absolute;top:-3px;right:-3px;width:7px;height:7px;border-radius:50%;background:var(--warn)}
.r4-sc.on{outline:2px solid var(--gold);outline-offset:1px;color:var(--ink)}
.r4-main{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);gap:12px;align-items:start}
.r4-chart{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;position:sticky;top:calc(var(--nav-h) + 62px)}
.r4-ch{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.r4-svg{max-height:calc(100vh - var(--nav-h) - 150px);overflow:auto}
.r4-svg svg{max-width:100%;height:auto}
.r4-svg g.node{cursor:pointer}
.r4-legend{font-size:11px;color:var(--faint);margin:6px 0 0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.r4-legend .k{display:inline-block;width:14px;height:10px;border-radius:2px;border:2px solid var(--warn)}
.r4-legend .k.seen{border:1.5px dashed var(--muted)}
.r4-side{display:flex;flex-direction:column;gap:10px;min-width:0}
.r4-box{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;min-width:0}
.r4-bh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.r4-plist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}
.r4-p{border:1px solid var(--line);border-left:3px solid var(--line-strong);border-radius:var(--r);padding:6px 9px;background:var(--surface)}
.r4-p.k-llm{border-left-color:var(--gold);background:color-mix(in srgb,var(--gold) 6%,var(--surface))}
.r4-p.k-tool{border-left-color:var(--ink)}
.r4-p p{margin:4px 0 0;font-size:12.5px}
.r4-ph{display:flex;align-items:center;gap:7px;font-size:12.5px}
.r4-pk{font-family:var(--mono);font-size:9.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);min-width:38px}
.r4-p.k-llm .r4-pk{color:var(--gold)}
.r4-pm{font-size:11px;color:var(--faint);margin-top:3px}
.r4-pm code{font-family:var(--mono);font-size:11px;color:var(--muted)}
.r4-p details{margin-top:4px}
.r4-p summary{cursor:pointer;font-size:11.5px;color:var(--muted)}
.r4-site{display:grid;grid-template-columns:max-content 1fr;gap:3px 10px;margin:6px 0;font-size:12px}
.r4-site dt{font-family:var(--mono);font-size:10.5px;color:var(--faint)}
.r4-site dd{margin:0}
.r4-why{font-size:11.5px;color:var(--faint);margin:4px 0 0}
.r4-sure{font-family:var(--mono);font-size:10px;padding:0 5px;border-radius:3px;border:1px solid var(--line-strong);color:var(--muted)}
.r4-sure.s-seen{color:var(--ok);border-color:color-mix(in srgb,var(--ok) 50%,transparent)}
.r4-sure.s-always{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 50%,transparent)}
.r4-sure.s-may{border-style:dashed}
.r4-tool{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--gold)}
.r4-tool.r-err{color:var(--bad)}
.r4-raw{font-family:var(--mono);font-size:11px;background:none;border:1px solid var(--line-strong);border-radius:3px;color:var(--muted);cursor:pointer;padding:0 5px}
.r4-args{display:flex;flex-wrap:wrap;gap:4px 10px;margin-bottom:8px;font-size:12px}
.r4-arg b{font-family:var(--mono);font-size:11px;font-weight:500;color:var(--faint);margin-right:5px}
.r4-ev{border-left:2px solid var(--warn);background:color-mix(in srgb,var(--warn) 12%,var(--surface));padding:6px 9px;border-radius:0 var(--r) var(--r) 0;margin-bottom:8px;font-size:12.5px}
.r4-ev q{display:block;margin-top:4px;font-style:italic}
.r4-ev.refuse{border-left-color:var(--bad);background:var(--bad-soft)}
.r4-err{border-left:2px solid var(--bad);background:var(--bad-soft);padding:6px 9px;margin-bottom:8px;font-size:12.5px}
.r4-bub{background:var(--surface-3);border-radius:8px;padding:6px 10px;white-space:pre-wrap;font-size:13px;max-width:92%}
.r4-bub span{display:block;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--faint);margin-bottom:2px}
.r4-res{min-width:0}
.r4-null{color:var(--faint);font-family:var(--mono);font-size:11.5px}
.r4-str{white-space:pre-wrap;word-break:break-word}
.r4-more{background:none;border:0;color:var(--gold);cursor:pointer;font:inherit;font-size:11.5px}
.r4-dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:0;font-size:12.5px}
.r4-dl dt{font-family:var(--mono);font-size:11px;color:var(--faint)}
.r4-dl dd{margin:0;min-width:0}
.r4-arr{margin:0;padding-left:18px}
.r4-tw{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r)}
table.r4-ot{background:none}
table.r4-ot th{position:static;padding:4px 8px;font-size:10px;white-space:nowrap}
table.r4-ot td{padding:4px 8px;font-size:12px;min-width:80px;max-width:320px}
@media (max-width:1100px){.r4-main{grid-template-columns:1fr}.r4-chart{position:static}.r4-svg{max-height:60vh}}
@media (max-width:640px){.r4-bar{position:static}.r4-player{flex-basis:100%}}
.td-q-src{font-size:11.5px;color:var(--faint);margin:-4px 0 8px}
.r4-req{margin:8px 0 4px;padding:8px 12px;border-left:2px solid var(--gold);background:var(--surface-2);border-radius:0 var(--r) var(--r) 0;font-size:13px;line-height:1.55}
.r4-treq{flex-basis:100%;font-size:11.5px;color:var(--muted);line-height:1.4}
.r4-how{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:8px 12px;margin:0 0 10px}
.r4-how>summary{cursor:pointer}
.r4-how h3{font-size:13.5px;margin:16px 0 6px}
.r4-md{max-width:110ch;font-size:13px}
.r4-md h3,.r4-md h4{margin:16px 0 6px}
.r4-md p,.r4-md li{line-height:1.55}
.r4-md code{font-family:var(--mono);font-size:.9em;background:var(--surface-2);padding:0 3px;border-radius:3px}
.r4-codeln{font-family:var(--mono);font-size:11px;background:none;border:0;border-bottom:1px dashed var(--gold);color:var(--gold);cursor:pointer;padding:0 1px}
.r4-codeln:hover{background:var(--gold-soft)}
.r4-pr{font-family:var(--mono);font-size:10.5px;background:var(--gold-soft);color:var(--gold);border:0;border-radius:3px;padding:0 5px;margin-left:4px;cursor:pointer}
.r4-acts{white-space:nowrap}
.r4-prompts{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:8px}
.r4-prbig{display:flex;flex-direction:column;gap:3px;text-align:left;background:var(--surface-2);border:1px solid var(--line);border-radius:var(--r);padding:8px 10px;cursor:pointer;font:inherit;color:var(--ink)}
.r4-prbig:hover{border-color:var(--gold)}
.r4-prbig span{font-size:11.5px;color:var(--faint)}
.r4-prbig .r4-prsn{color:var(--muted);font-size:12px;line-height:1.4}
.r4-code{max-height:62vh;overflow:auto}
.r4-code pre{white-space:pre;font-size:12px}
.r4-code .ln{display:inline-block;min-width:100%}
.r4-code .ln::before{content:attr(data-l);display:inline-block;width:3.4em;margin-right:12px;text-align:right;color:var(--code-dim)}
.r4-code .ln.on{background:color-mix(in srgb,var(--gold) 16%,transparent)}
.r4-prompt{max-height:62vh;white-space:pre-wrap}
.r4-phs+.r4-phs{border-top:1px dashed var(--line-strong);margin-top:8px;padding-top:8px}
.r4-phl{display:flex;align-items:center;gap:6px;font-size:11.5px;font-weight:600;color:var(--muted);margin-bottom:4px}
.r4-phl span{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:50%;background:var(--surface-3);font-family:var(--mono);font-size:10px;color:var(--ink)}
.fc rect.r4-badge{fill:var(--warn);stroke:none}
.fc text.r4-badget{fill:var(--on-accent);font-family:var(--mono);font-size:9.5px;font-weight:600}
.fc g.node.pulse path,.fc g.node.pulse polygon{animation:r4pulse 1.5s ease-out}
@keyframes r4pulse{0%{stroke-width:7}100%{stroke-width:3}}
.r4-pn{display:inline-grid;place-items:center;min-width:18px;height:16px;border-radius:8px;background:var(--surface-3);font-family:var(--mono);font-size:10px;color:var(--muted)}
.r4-p.k-llm .r4-pn,.r4-p[data-node]:not([data-node=""]) .r4-pn{background:color-mix(in srgb,var(--warn) 30%,var(--surface))}
.r4-p[data-node]:not([data-node=""]){cursor:pointer}
.r4-svg svg{max-width:none;height:auto}
.r4-svg{overflow:auto}
.r4-review{margin:8px 0 0;padding:6px 10px;border-left:2px solid var(--warn);background:color-mix(in srgb,var(--warn) 10%,var(--surface));font-size:12.5px;max-width:110ch}

/* ================================================================ /worlds/ Race worlds (worlds_page.py) */
.wd .mono{font-family:var(--mono)}
.wd-note{font-size:12.5px;color:var(--muted);max-width:110ch}
table.wd-t{width:auto;min-width:100%}
table.wd-t th,table.wd-t td{font-size:12px;vertical-align:top;padding:5px 10px}
table.wd-t tbody th{position:static;text-transform:none;letter-spacing:0;font-size:11.5px;color:var(--muted);background:var(--surface-2);white-space:nowrap}
table.wd-t thead th a{color:var(--gold)}
table.wd-t code{font-family:var(--mono);font-size:11.5px}
.wd-tools{display:grid;grid-template-columns:repeat(auto-fill,minmax(520px,1fr));gap:10px}
.wd-tool{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:10px 12px;min-width:0;overflow-x:auto}
.wd-th{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:6px}
.wd-tn{font-family:var(--mono);font-size:13px;font-weight:600;color:var(--gold)}
.wd-tool table.tf-t{width:100%}
.wd-v{display:inline-block;margin:0 8px 2px 0;white-space:nowrap}
.wd-sub{font-size:12px;margin:6px 0 0}
.wd-sub b{font-family:var(--mono);font-size:10.5px;font-weight:500;color:var(--faint);margin-right:6px;text-transform:uppercase}
.wd-sub ul{margin:2px 0 4px;padding-left:18px}
.wd-cats{font-size:12px;color:var(--muted);line-height:1.7}
.wd-ex{max-width:420px;overflow:hidden;text-overflow:ellipsis;font-size:11.5px;color:var(--muted)}
.wd-replies{font-size:12.5px;columns:2;column-gap:24px}
.wd-req{margin:6px 0;padding:6px 10px;border-left:2px solid var(--gold);background:var(--surface-2);font-size:12.5px}
@media (max-width:820px){.wd-tools{grid-template-columns:1fr}.wd-replies{columns:1}}
