/* Shared stylesheet for the altsci review site. Follows the system light/dark setting. */
:root{
  --bg:#e6e3da; --panel:#f4f2ec; --head:#ffffff; --ink:#1d2126; --muted:#5f6873; --line:#d3cfc4; --accent:#1f5f8b;
  --ok:#1e7a46; --ok-bg:#e2f3e8; --warn:#8a5a00; --warn-bg:#fbefd0; --bad:#a3271f; --bad-bg:#f9e0dd;
  --open:#0d6b73; --open-bg:#daf1f2; --neutral:#555e68; --neutral-bg:#e3e4e6; --odd:#6a3d9a; --odd-bg:#ece3f6;
  --cA:#c2570c; --cB:#2563a8; --cC:#0f7b6c; --cD:#7a4bb3;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#111317; --panel:#1b1f24; --head:#2c333c; --ink:#e6e8ea; --muted:#9aa3ad; --line:#343b44; --accent:#7db8e0;
    --ok:#7fd49e; --ok-bg:#173524; --warn:#f0c264; --warn-bg:#3a2e10; --bad:#f29a92; --bad-bg:#40201d;
    --open:#7fd3da; --open-bg:#12363a; --neutral:#b3bac2; --neutral-bg:#2b3138; --odd:#c9a7ee; --odd-bg:#31244a;
    --cA:#d9742b; --cB:#3d7fc9; --cC:#1f9a88; --cD:#9166cc;
  }
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.55 -apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif}
a{color:var(--accent)}
.mono,code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.88em}
.layout{display:grid;grid-template-columns:260px minmax(0,1fr);max-width:1600px;margin:0 auto}
nav.side{position:sticky;top:0;align-self:start;height:100vh;overflow-y:auto;padding:18px 14px;border-right:1px solid var(--line);font-size:14px}
nav.side .brand{margin:0 0 6px;font-weight:700}
nav.side .brand a{text-decoration:none;color:var(--ink)}
nav.side h2{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:16px 0 6px}
nav.side ol,nav.side ul{list-style:none;margin:0;padding:0}
nav.side ul ul{padding-left:12px;font-size:13px}
nav.side li a{display:flex;gap:8px;padding:3px 6px;border-radius:5px;text-decoration:none;color:var(--ink)}
nav.side li a:hover{background:var(--neutral-bg)}
nav.side .n{width:1.6em;flex:none;text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
main{padding:28px 36px 80px;min-width:0}
h1{font-size:30px;margin:0 0 4px}
.runtag{color:var(--muted);font-weight:400}
.sub{color:var(--muted);margin:0 0 20px}
h2.sec{font-size:22px;margin:40px 0 10px;padding-bottom:6px;border-bottom:2px solid var(--line)}
.intro{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}
.box{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:14px 18px}
.box h3{margin:0 0 6px;font-size:16px}
.box p,.box ul{margin:6px 0;font-size:14.5px}
.box ul{padding-left:18px}
.tw{overflow-x:auto}
table{border-collapse:collapse;width:100%;font-size:14.5px}
th,td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);white-space:nowrap}
table.sortable th{cursor:pointer}
table.sortable th[data-dir=asc]::after{content:" ▲"} table.sortable th[data-dir=desc]::after{content:" ▼"}
td.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}
.nowrap{white-space:nowrap}
.chip{display:inline-block;padding:1px 8px;border-radius:999px;font-size:12px;font-weight:600;white-space:nowrap;margin:1px 2px 1px 0}
.chip+.q{font-size:13px;color:var(--muted)}
.v-est{background:var(--ok-bg);color:var(--ok)} .v-pla{background:var(--open-bg);color:var(--open)}
.v-npt{background:var(--warn-bg);color:var(--warn)} .v-ref,.v-tns{background:var(--bad-bg);color:var(--bad)}
.v-ntt,.v-his{background:var(--neutral-bg);color:var(--neutral)} .v-inc{background:var(--odd-bg);color:var(--odd)}
.crit{border-radius:5px;color:#fff;font-weight:700;padding:1px 7px}
.cA{background:var(--cA)} .cB{background:var(--cB)} .cC{background:var(--cC)} .cD{background:var(--cD)}
.legend{font-size:13px;color:var(--muted);margin:8px 0 0}
.move{font-size:13px;font-weight:600;color:var(--muted);white-space:nowrap}
.move.up{color:var(--ok)} .move.down{color:var(--bad)} .move.new{color:var(--open)}
article.rank{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:0 26px 22px;margin:26px 0;scroll-margin-top:12px;overflow:hidden;box-shadow:0 1px 4px rgba(0,0,0,.08)}
article.rank>header{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;background:var(--head);border-bottom:3px solid var(--accent);margin:0 -26px 14px;padding:16px 26px}
article.rank h2{font-size:29px;margin:0;font-weight:750;letter-spacing:-.01em}
article.rank h2 .rk{display:inline-block;background:var(--accent);color:var(--head);font-size:18px;font-weight:700;padding:3px 12px;border-radius:6px;margin-right:12px;vertical-align:4px}
.glance{font-size:17px;margin:8px 0 10px}
.links{font-size:14px;margin-left:auto}
.upd{flex-basis:100%;text-align:right;font-size:12.5px;color:var(--muted);font-variant-numeric:tabular-nums}
article h3{font-size:16.5px;margin:20px 0 6px;color:var(--accent)}
article p{margin:6px 0}
.pair{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:8px}
.pair>div{border-radius:8px;padding:4px 16px 10px;border:1px solid var(--line);background:var(--head)}
.pair .for{border-top:4px solid var(--ok)} .pair .against{border-top:4px solid var(--bad)}
.pair h3{margin-top:10px} .pair .for h3{color:var(--ok)} .pair .against h3{color:var(--bad)}
.follow{border-radius:8px;padding:4px 16px 10px;margin-top:18px;border:1px solid var(--line);border-top:4px solid var(--open);background:var(--head)}
.follow h3{margin-top:10px;color:var(--open)} .follow .none{color:var(--muted);margin:4px 0 6px}
.follow ol.qa{list-style:none;padding:0;margin:4px 0} .follow ol.qa>li{padding:8px 0;border-bottom:1px solid var(--line)} .follow ol.qa>li:last-child{border-bottom:0}
.follow p{margin:2px 0} .follow b{color:var(--open);font-variant-numeric:tabular-nums;margin-right:6px}
.follow .a{background:var(--open-bg);border-radius:6px;padding:6px 10px;margin-top:6px} .follow .pending{color:var(--muted);font-style:italic}
.follow .q{font-size:16px} .follow .asked{color:var(--muted);font-size:13px}
.follow details.fu{margin:0;border-top:0;padding-top:0} .follow details.fu>summary{font-size:15.5px;font-weight:400;color:var(--ink,inherit);padding:2px 0;list-style-position:outside}
.follow details.fu>summary .st{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-right:6px}
.follow details.fu[open]>summary .gist{display:none} .follow details.fu[open]>summary{margin-bottom:4px}
.follow .ans{margin-top:10px;border-radius:8px;background:var(--open-bg);padding:10px 16px 12px}
.follow .short{font-size:16.5px;margin:4px 0 10px}
.kio{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.kio>div,.eqs{background:var(--head);border:1px solid var(--line);border-radius:6px;padding:6px 12px 8px}
.kio h4,.eqs h4{margin:4px 0;font-size:13px;text-transform:uppercase;letter-spacing:.06em}
.kio .k h4{color:var(--ok)} .kio .i h4{color:var(--warn)} .kio .o h4{color:var(--neutral)} .eqs h4{color:var(--accent)}
.kio ul,.point ul,.follow .foot ul{margin:0;padding-left:18px;font-size:14.5px} .kio li{margin:4px 0}
.eqs{margin-top:12px} .eqs table{width:100%;font-size:14.5px}
.proc{margin-top:12px;background:var(--head);border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:6px;padding:6px 14px 10px}
.proc h4{margin:4px 0;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--accent)} .proc p{margin:4px 0 8px;font-size:14.5px}
.proc .go{font-weight:600}
.onotes{margin-top:12px;background:var(--head);border:1px solid var(--line);border-radius:6px;padding:6px 14px 8px}
.onotes h4{margin:4px 0;font-size:13px;text-transform:uppercase;letter-spacing:.06em;color:var(--neutral)} .onotes ul{margin:0;padding-left:18px;font-size:14.5px} .onotes li{margin:4px 0}
.point{margin-top:14px} .point h4{margin:6px 0 4px;font-size:15px}
.point .pair{margin-top:4px;gap:12px} .point .pair>div{padding:2px 12px 8px}
.point h5{margin:8px 0 2px;font-size:12.5px;text-transform:uppercase;letter-spacing:.06em}
.point .for h5{color:var(--ok)} .point .against h5{color:var(--bad)}
.follow .foot{margin-top:12px;font-size:13px;color:var(--muted)} .follow .foot ul{font-size:13px;margin-top:4px}
ol.tight{padding-left:20px;margin:6px 0} ol.tight li{margin:6px 0}
.src{color:var(--muted);font-size:12.5px}
details{margin-top:14px;border-top:1px solid var(--line);padding-top:6px}
summary{cursor:pointer;font-size:16.5px;font-weight:600;color:var(--accent);padding:4px 0}
summary .count{color:var(--muted);font-weight:400;font-size:13px}
.role{display:inline-block;min-width:7em;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.stake{font-size:12px;color:var(--warn)}
td.nm{font-weight:600;white-space:nowrap}
.ainote{border-left:4px solid var(--odd);background:var(--odd-bg);padding:8px 14px;border-radius:0 6px 6px 0;font-size:14.5px;margin:14px 0 0}
.ainote b{color:var(--odd);font-size:12px;text-transform:uppercase;letter-spacing:.05em;margin-right:8px}
.arts{columns:2;column-gap:32px;margin-top:6px}
.arts h4{font-size:12px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:12px 0 3px;break-after:avoid;border-bottom:1px solid var(--line);padding-bottom:2px}
.arts h4:first-child{margin-top:0}
.arts ul{list-style:none;margin:0;padding:0}
.arts li{display:grid;grid-template-columns:12px 6em 1fr;gap:6px;font-size:13.5px;line-height:1.35;padding:2.5px 0;break-inside:avoid}
.arts li .mono{color:var(--muted)}
.d{display:inline-block;width:8px;height:8px;border-radius:50%;margin-top:5px;background:var(--neutral)}
.d.r{background:var(--ok)} .d.p{background:var(--warn)} .d.m{background:var(--bad)}
.st{white-space:nowrap} .st .d{margin:0 4px 0 0}
.cover{font-size:13px;color:var(--muted);margin:8px 0 0}
.toolbar{display:flex;gap:8px;margin:14px 0}
button{font:inherit;font-size:13px;padding:4px 10px;border-radius:6px;border:1px solid var(--line);background:var(--panel);color:var(--ink);cursor:pointer}
.changes li{margin:4px 0}
.foot{margin-top:30px;font-size:14px;color:var(--muted)}
/* Markdown document pages */
.tabs{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 18px;border-bottom:2px solid var(--line)}
.tabs a{padding:6px 12px;border-radius:6px 6px 0 0;text-decoration:none;color:var(--muted);font-size:14px;font-weight:600}
.tabs a:hover{background:var(--panel);color:var(--ink)}
.tabs a.on{background:var(--panel);color:var(--accent);box-shadow:inset 0 -3px 0 var(--accent)}
.doc{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:24px 34px;max-width:1150px}
.doc h1{font-size:28px;margin:0 0 12px}
.doc h2{font-size:22px;margin:32px 0 8px;padding-bottom:4px;border-bottom:1px solid var(--line);scroll-margin-top:12px}
.doc h3{font-size:18px;margin:22px 0 6px;color:var(--accent);scroll-margin-top:12px}
.doc h4{font-size:15.5px;margin:18px 0 4px}
.doc p,.doc li{max-width:78ch}
.doc table p,.doc table li{max-width:none}
.doc blockquote{margin:10px 0;padding:4px 14px;border-left:4px solid var(--line);color:var(--muted)}
.doc code{background:var(--neutral-bg);padding:1px 4px;border-radius:4px}
.doc pre{background:var(--head);border:1px solid var(--line);border-radius:6px;padding:12px;overflow-x:auto}
.doc pre code{background:none;padding:0}
pre.code{white-space:pre;line-height:1.45}
.doc a{word-break:break-word}
::-webkit-scrollbar{width:10px;height:10px} ::-webkit-scrollbar-thumb{background:var(--line);border-radius:5px}
@media (max-width:900px){
  .layout{grid-template-columns:1fr} nav.side{position:static;height:auto;border-right:none;border-bottom:1px solid var(--line)}
  body.rankings nav.side ol{columns:2}
  .pair{grid-template-columns:1fr} .arts{columns:1} main{padding:16px} .doc{padding:16px}
  article.rank{padding:0 16px 16px} article.rank>header{margin:0 -16px 12px;padding:12px 16px}
  .links{margin-left:0}
}
@media print{
  nav.side,.toolbar,.tabs{display:none} .layout{display:block} body{background:#fff}
  article.rank{break-inside:auto;box-shadow:none} details{display:block}
}
/* Theme cards: same layout as project cards, violet header rule and a verdict-spread bar. */
article.rank.theme>header{border-bottom-color:var(--cD)}
article.rank.theme h2 .rk{background:var(--cD);color:#fff}
.spread{margin:6px 0 12px} .spread .bar{display:flex;height:12px;border-radius:6px;overflow:hidden;border:1px solid var(--line)}
.spread .bar span{display:block;min-width:4px} .spread .key{font-size:13px;color:var(--muted);margin:6px 0 0}
.spread .key .q{margin-right:8px}
.spread .v-est{background:var(--ok)} .spread .v-pla{background:var(--open)} .spread .v-npt{background:var(--warn)}
.spread .v-ref,.spread .v-tns{background:var(--bad)} .spread .v-ntt,.spread .v-his{background:var(--neutral)} .spread .v-inc{background:var(--odd)}
.spread .key .chip.v-est{background:var(--ok-bg)} .spread .key .chip.v-pla{background:var(--open-bg)} .spread .key .chip.v-npt{background:var(--warn-bg)}
.spread .key .chip.v-ref,.spread .key .chip.v-tns{background:var(--bad-bg)} .spread .key .chip.v-ntt,.spread .key .chip.v-his{background:var(--neutral-bg)} .spread .key .chip.v-inc{background:var(--odd-bg)}
ul.lineage{padding-left:18px} .related{margin-top:14px;font-size:14.5px}
article.theme p.none{color:var(--muted);font-style:italic}
ul.arts{list-style:none;padding:0}
ul.arts.timeline{columns:1} ul.arts.timeline li{grid-template-columns:7em 1fr;font-size:14px}
/* Criteria key: medium chip, then its definition; wraps inside the box. */
ul.critkey{list-style:none;padding:0;margin:8px 0 0} ul.critkey li{margin:5px 0;font-size:14px;line-height:1.4}
ul.critkey .chip{margin-right:6px}
