/* Layout: workbench. Data strip on top, method index on the left, analysis sheet on the right. */
:root{
  --bg:#f2f4f6; --surface:#ffffff; --sunk:#eceff3; --ink:#15202b; --muted:#59666f; --line:#d9dfe5;
  --accent:#1c5ac0; --accent-ink:#ffffff; --accent-soft:#e4ecfa;
  --good:#17794a; --good-soft:#e1f2e8; --warn:#94570a; --warn-soft:#fbefda; --bad:#ad2a20; --bad-soft:#fbe5e2;
  --s0:#1c5ac0; --s1:#cf6a1d; --s2:#1f8f7e; --s3:#8551c2; --s4:#c13a69; --s5:#6a7a14;
  --f-display:"Bricolage Grotesque","Segoe UI",system-ui,sans-serif;
  --f-body:"Public Sans","Segoe UI",system-ui,sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Consolas,monospace;
  --r:10px;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#0e1318; --surface:#151c23; --sunk:#1b232b; --ink:#e4e9ee; --muted:#93a0ab; --line:#28323c;
  --accent:#6fa3ff; --accent-ink:#0b1424; --accent-soft:#1a2942;
  --good:#5fd49a; --good-soft:#123222; --warn:#f0a648; --warn-soft:#33270f; --bad:#ff7d73; --bad-soft:#3a1a18;
  --s0:#6fa3ff; --s1:#f09d58; --s2:#4cc6b3; --s3:#b591f0; --s4:#f07aa3; --s5:#b6c75a; color-scheme:dark }}
:root[data-theme="dark"]{
  --bg:#0e1318; --surface:#151c23; --sunk:#1b232b; --ink:#e4e9ee; --muted:#93a0ab; --line:#28323c;
  --accent:#6fa3ff; --accent-ink:#0b1424; --accent-soft:#1a2942;
  --good:#5fd49a; --good-soft:#123222; --warn:#f0a648; --warn-soft:#33270f; --bad:#ff7d73; --bad-soft:#3a1a18;
  --s0:#6fa3ff; --s1:#f09d58; --s2:#4cc6b3; --s3:#b591f0; --s4:#f07aa3; --s5:#b6c75a; color-scheme:dark }

*{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 var(--f-body);
  padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 48px}
.wrap{max-width:1240px;margin:0 auto;display:grid;gap:20px}
h1,h2,h3{font-family:var(--f-display);text-wrap:balance;margin:0;line-height:1.2}
button,select,input,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

.top{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 20px;padding-block:22px 4px}
.brand{display:flex;align-items:baseline;gap:12px}
.brand h1{font-size:26px;letter-spacing:-.01em}
.brand .glyph{font-family:var(--f-mono);font-size:15px;color:var(--accent);border:1.5px solid var(--accent);border-radius:6px;padding:0 6px;line-height:24px;align-self:center}
.brand p{margin:0;color:var(--muted);font-size:14px}
.privacy{font-size:13px;color:var(--muted)}
.privacy.down{color:var(--bad)}

.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:18px;min-width:0}
.eyebrow{font:600 11px var(--f-body);letter-spacing:.09em;text-transform:uppercase;color:var(--muted);margin:0 0 6px}

.data-head{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-start;justify-content:space-between}
.data-title h2{font-size:19px}
.data-meta{font-size:13px;color:var(--muted);margin-top:2px}
.actions{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.btn{border:1px solid var(--line);background:var(--surface);border-radius:8px;padding:7px 12px;cursor:pointer;font-weight:500;font-size:14px}
.btn:hover{border-color:var(--accent);color:var(--accent)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}
.btn.primary:hover{filter:brightness(1.08);color:var(--accent-ink)}
.btn:disabled{opacity:.6;cursor:progress}
.drop{margin-top:14px;border:1.5px dashed var(--line);border-radius:8px;padding:12px 14px;display:flex;flex-wrap:wrap;gap:6px 16px;align-items:center;justify-content:space-between;font-size:13px;color:var(--muted)}
.drop.over{border-color:var(--accent);background:var(--accent-soft);color:var(--ink)}
.drop .fmts{font-family:var(--f-mono);font-size:12px}
.opts{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;font-size:13px}
.opts label{display:flex;gap:6px;align-items:center;cursor:pointer}
.paste{margin-top:12px;display:grid;gap:8px}
.paste textarea{width:100%;min-height:120px;font:13px/1.45 var(--f-mono);border:1px solid var(--line);border-radius:8px;background:var(--sunk);padding:10px;resize:vertical}
.msg{margin-top:10px;font-size:14px;padding:8px 12px;border-radius:8px}
.msg.err{background:var(--bad-soft);color:var(--bad)}
.msg.info{background:var(--accent-soft)}

.tw{overflow-x:auto;max-width:100%;border:1px solid var(--line);border-radius:8px}
table{border-collapse:collapse;width:100%;font-size:13.5px}
th,td{padding:6px 10px;border-bottom:1px solid var(--line);text-align:left;white-space:nowrap}
tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}
thead th{background:var(--sunk);font-weight:600;font-size:12.5px;vertical-align:bottom}
td.n,th.n{text-align:right;font-family:var(--f-mono);font-variant-numeric:tabular-nums}
td.sig{color:var(--accent);font-weight:600}
tbody th{font-weight:500}
tr.total th,tr.total td{font-weight:600;background:var(--sunk)}
caption{caption-side:bottom;text-align:left;font-size:12px;color:var(--muted);padding:6px 10px;white-space:normal}
.tblock{display:grid;gap:6px}
.tblock h4{margin:0;font:600 13px var(--f-body)}
.preview{margin-top:14px}
.preview td{font-family:var(--f-mono);font-size:12.5px}
.preview td.miss{color:var(--muted)}
.colhead{display:grid;gap:3px}
.ty{border:1px solid var(--line);border-radius:999px;font:500 10.5px var(--f-body);letter-spacing:.03em;padding:1px 7px;cursor:pointer;background:var(--surface);justify-self:start}
.ty.num{color:var(--s0);border-color:color-mix(in srgb,var(--s0) 45%,transparent)}
.ty.cat{color:var(--s1);border-color:color-mix(in srgb,var(--s1) 45%,transparent)}
.ty:disabled{cursor:default;opacity:.85}
.colhead small{font-weight:400;color:var(--muted);font-size:11px}

.work{display:grid;grid-template-columns:250px minmax(0,1fr);gap:20px;align-items:start}
.nav{position:sticky;top:12px;display:grid;gap:6px;padding:12px;max-height:calc(100vh - 24px);overflow-y:auto;align-content:start}
.nav input[type=search]{width:100%;border:1px solid var(--line);border-radius:7px;padding:7px 9px;background:var(--sunk);font-size:14px}
.navcount{margin:0 0 4px 4px;font-size:12px;color:var(--muted)}
.nav details{border-top:1px solid var(--line);padding-top:4px}
.nav summary{display:flex;justify-content:space-between;gap:8px;cursor:pointer;padding:6px 6px;border-radius:6px;font:600 11.5px var(--f-body);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);list-style:none}
.nav summary::-webkit-details-marker{display:none}
.nav summary::before{content:"▸";margin-right:6px;transition:transform .15s;display:inline-block}
.nav details[open] summary::before{transform:rotate(90deg)}
.nav summary span:first-child{flex:1}
.nav summary:hover{background:var(--sunk);color:var(--ink)}
.nav .cnt{font:500 11px var(--f-mono);letter-spacing:0;text-transform:none}
.nav ul{padding-bottom:6px!important}
.mlinks{margin:0;padding-left:18px;display:grid;gap:6px}.mlinks a{color:var(--accent);font-weight:600}
.pre{margin:0;padding:12px 14px;background:var(--sunk);border-radius:8px;font:13px/1.5 var(--f-mono);overflow-x:auto;white-space:pre}
.nav ul{list-style:none;margin:0;padding:0;display:grid;gap:1px}
.nav li a{display:block;padding:6px 8px;border-radius:7px;font-size:14px;color:inherit;text-decoration:none}
.nav li a:hover{background:var(--sunk)}
.nav li a[aria-current="true"]{background:var(--accent-soft);color:var(--accent);font-weight:600}
.nav .back{font-size:13px;color:var(--muted);text-decoration:none;padding:2px 4px}
.nav .back:hover{color:var(--accent)}
.navtitle{font-size:17px;padding:2px 4px 4px}
.nav li.soon{padding:4px 8px;font-size:13.5px;color:var(--muted);display:flex;justify-content:space-between;gap:8px}
.tag{font:500 10px var(--f-body);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);border-radius:999px;padding:0 6px;align-self:center;white-space:nowrap}
.msel{display:none}

.sheet{display:grid;gap:18px;min-width:0}
.sheet-body{display:grid;gap:16px}
.mhead h2{font-size:24px}
.mhead p{margin:6px 0 0;max-width:68ch;color:var(--muted)}
.layout{font-size:13px;margin-top:10px;display:flex;gap:8px;align-items:baseline}
.layout b{font:600 11px var(--f-body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.form{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px 18px;padding:16px;background:var(--sunk);border-radius:8px}
.field{display:grid;gap:5px;align-content:start;min-width:0}
.field.wide{grid-column:1/-1}
.field>label,.field>.lab{font-weight:600;font-size:13px}
.field small{color:var(--muted);font-size:12px}
.field select,.field input[type=text],.field input[type=number]{width:100%;border:1px solid var(--line);border-radius:7px;padding:6px 8px;background:var(--surface)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface);border-radius:999px;padding:3px 10px 3px 8px;font-size:13px;cursor:pointer}
.chip:has(input:checked){border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}
.chip input{margin:0;accent-color:var(--accent)}

.results{display:grid;gap:16px;min-width:0}
.results.busy{opacity:.55;transition:opacity .15s}
.results h3{font-size:16px;margin-top:4px}
.rhead{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}
.note{font-size:13px;color:var(--muted);margin:0;max-width:80ch}
.warnbox{font-size:13.5px;margin:0;background:var(--warn-soft);color:var(--warn);padding:8px 12px;border-radius:8px}
.errbox{background:var(--bad-soft);color:var(--bad);padding:12px 14px;border-radius:8px}
.verdict{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border-radius:8px;background:var(--sunk)}
.verdict p{margin:0}
.pill{font:600 11px var(--f-body);letter-spacing:.06em;text-transform:uppercase;padding:3px 9px;border-radius:999px;white-space:nowrap;margin-top:2px}
.verdict.sig .pill{background:var(--good-soft);color:var(--good)}
.verdict.ns .pill{background:var(--surface);color:var(--muted);border:1px solid var(--line)}
.apa{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;align-items:start;border:1px solid var(--line);border-radius:8px;padding:10px 12px}
.apa .lab{font:600 11px var(--f-body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-top:3px}
.apa p{margin:0;font-size:14px}
.apa button{padding:3px 10px;font-size:13px}
@media (max-width:560px){ .apa{grid-template-columns:minmax(0,1fr)} }

.chart{margin:0;border:1px solid var(--line);border-radius:8px;padding:10px 8px 4px;background:var(--surface)}
.chart svg{width:100%;height:auto;display:block}
.chart figcaption{font-size:12px;color:var(--muted);padding:4px 6px 6px}
.chart .grid{stroke:var(--line);stroke-width:1}
.chart .axis{stroke:var(--muted);stroke-width:1}
.chart .tk{fill:var(--muted);font:11px var(--f-mono)}
.chart .al{fill:var(--ink);font:500 12px var(--f-body)}
.chart .lg{fill:var(--ink);font:12px var(--f-body)}
.chart .curve{fill:none;stroke:var(--ink);stroke-width:1.6;stroke-dasharray:5 4;opacity:.75}
.chart .vline{stroke:var(--s1);stroke-width:1.6;stroke-dasharray:3 3}
.chart .vl{fill:var(--s1);font:500 11px var(--f-body)}
.chart .step{fill:none;stroke-width:2}
.chart .step:not([class*=" k"]){stroke:var(--s0)}
.chart .pm{fill:var(--s1)}
.chart .whisk{stroke:var(--ink);stroke-width:1.2}
.chart .med{stroke:var(--ink);stroke-width:2.2}
.chart .out{fill:none;stroke:var(--ink);stroke-width:1.1}
.chart .mean{fill:var(--surface);stroke:var(--ink);stroke-width:1.4}
.chart .ln{fill:none;stroke-width:2.2}
.chart .arrow{stroke:var(--s1);stroke-width:1.6}
.chart .ahead{fill:var(--s1)}
.chart .ptl{fill:var(--muted);font:10px var(--f-mono)}
.chart .dline{fill:none;stroke:var(--s0);stroke-width:1.4}
.chart .band{fill:color-mix(in srgb,var(--s2) 22%,transparent);stroke:none}
.chart .tsf{fill:none;stroke:var(--muted);stroke-width:1.2;opacity:.55}
.chart .ln.dash{stroke-dasharray:5 3;stroke-width:1.6}
.chart .zero{stroke:var(--muted)}
.samplepick{display:inline-flex;gap:0}
.samplepick .btn:first-child{border-top-right-radius:0;border-bottom-right-radius:0}
.samplepick select{border:1px solid var(--line);border-left:0;border-radius:0 8px 8px 0;background:var(--surface);padding:6px 8px;font-size:14px}
.f0{fill:var(--s0)}.f1{fill:var(--s1)}.f2{fill:var(--s2)}.f3{fill:var(--s3)}.f4{fill:var(--s4)}.f5{fill:var(--s5)}
.k0{stroke:var(--s0)}.k1{stroke:var(--s1)}.k2{stroke:var(--s2)}.k3{stroke:var(--s3)}.k4{stroke:var(--s4)}.k5{stroke:var(--s5)}
.box0{fill:color-mix(in srgb,var(--s0) 28%,var(--surface));stroke:var(--s0)}
.box1{fill:color-mix(in srgb,var(--s1) 28%,var(--surface));stroke:var(--s1)}
.box2{fill:color-mix(in srgb,var(--s2) 28%,var(--surface));stroke:var(--s2)}
.box3{fill:color-mix(in srgb,var(--s3) 28%,var(--surface));stroke:var(--s3)}
.box4{fill:color-mix(in srgb,var(--s4) 28%,var(--surface));stroke:var(--s4)}
.box5{fill:color-mix(in srgb,var(--s5) 28%,var(--surface));stroke:var(--s5)}

@media (max-width:860px){
  .work{grid-template-columns:minmax(0,1fr)}
  .nav{display:none}
  .msel{display:block;width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-weight:600}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---------- pages ---------- */
.brand{color:inherit;text-decoration:none}
.topnav{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:center;font-size:14px}
.topnav a{color:var(--muted);text-decoration:none;font-weight:500;padding:4px 2px;border-bottom:2px solid transparent}
.topnav a:hover{color:var(--ink)}
.topnav a[aria-current="true"]{color:var(--accent);border-bottom-color:var(--accent)}
.topnav select{border:1px solid var(--line);border-radius:7px;background:var(--surface);padding:4px 8px;font-size:14px;max-width:220px}
.crumbs a{color:inherit;text-decoration:none}
.crumbs a:hover{color:var(--accent)}
#home{display:grid;gap:16px}
.home-head{display:flex;flex-wrap:wrap;gap:12px 24px;align-items:flex-end;justify-content:space-between}
.home-head h2{font-size:22px}
.bigsearch{width:min(360px,100%);border:1px solid var(--line);border-radius:8px;padding:9px 12px;background:var(--surface);font-size:15px}
.hits{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px}
.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.card{display:grid;gap:6px;align-content:start;background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px;color:inherit;text-decoration:none;transition:border-color .15s,transform .15s}
.card:hover{border-color:var(--accent);transform:translateY(-1px)}
.card-top{display:flex;justify-content:space-between;align-items:baseline;gap:10px}
.card-top b{font:600 16px var(--f-display)}
.card .cnt{font:500 12px var(--f-mono);color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 8px}
.card-txt{font-size:13.5px;color:var(--muted)}
.card.alt{background:var(--accent-soft);border-color:color-mix(in srgb,var(--accent) 35%,var(--line))}

/* ---------- downloads ---------- */
.mini{border:1px solid var(--line);background:var(--surface);border-radius:6px;padding:1px 8px;font:500 11.5px var(--f-body);cursor:pointer;color:var(--muted)}
.mini:hover{border-color:var(--accent);color:var(--accent)}
.thead{display:flex;justify-content:space-between;align-items:end;gap:10px;min-height:20px}
.chart{position:relative}
.figtools{position:absolute;top:6px;right:6px;display:flex;gap:4px;opacity:.35;transition:opacity .15s}
.chart:hover .figtools,.figtools:focus-within{opacity:1}
@media (hover:none){.figtools{opacity:1}}

/* ---------- run several methods ---------- */
.pick details{border-top:1px solid var(--line);padding-top:4px}
.pick summary{display:flex;justify-content:space-between;gap:8px;cursor:pointer;padding:6px;border-radius:6px;font:600 11.5px var(--f-body);letter-spacing:.07em;text-transform:uppercase;color:var(--muted);list-style:none}
.pick summary::-webkit-details-marker{display:none}
.pick summary::before{content:"▸";margin-right:6px;transition:transform .15s;display:inline-block}
.pick details[open] summary::before{transform:rotate(90deg)}
.pick summary span:first-child{flex:1}
.pickall{display:flex;gap:6px;padding:2px 6px 6px}
.pk{display:flex;gap:8px;align-items:flex-start;padding:4px 8px;border-radius:7px;font-size:13.5px;cursor:pointer}
.pk:hover{background:var(--sunk)}
.pk input{margin-top:3px;accent-color:var(--accent)}
.pk:has(input:checked){color:var(--accent);font-weight:500}
.runbar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between;padding:12px 14px;background:var(--sunk);border-radius:8px}
.toc{display:flex;flex-wrap:wrap;gap:6px}
.mres{display:grid;gap:14px;border-top:2px solid var(--line);padding-top:16px;scroll-margin-top:12px}
.mres-head{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:end;gap:8px 16px}
.mres-head .eyebrow{margin:0}
.mres-head .btn{text-decoration:none}
.mres-body{display:grid;gap:16px;min-width:0}
.mtitle{font-size:18px}
.stale{color:var(--warn);font-weight:600}

/* ---------- typed data grid ---------- */
.gridbox{margin-top:12px;display:grid;gap:10px}
.gridtop{display:flex;flex-wrap:wrap;gap:8px 18px;align-items:center;justify-content:space-between}
.gname{display:flex;gap:8px;align-items:center;font-weight:600;font-size:13px}
.gname input{border:1px solid var(--line);border-radius:7px;padding:5px 8px;background:var(--surface);font-weight:400;width:220px;max-width:60vw}
.gridwrap{max-height:420px;overflow:auto}
.egrid{width:auto;border-collapse:separate;border-spacing:0}
.egrid th,.egrid td{padding:0;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}
.egrid thead th{position:sticky;top:0;z-index:1}
.egrid .rn{min-width:38px;padding:0 8px;text-align:right;color:var(--muted);font:500 11.5px var(--f-mono);background:var(--sunk)}
.egrid input{border:0;background:transparent;width:120px;padding:6px 8px;font:13px var(--f-mono)}
.egrid thead input{font:600 12.5px var(--f-body);background:var(--sunk)}
.egrid input:focus{outline:2px solid var(--accent);outline-offset:-2px;background:var(--accent-soft)}
@media (max-width:860px){ .nav.pick{display:grid;position:static;max-height:none} }
