@import url("/assets/tokens.css");

/* Crumbtrail components (design system, 2026-10-03). Tokens live in tokens.css.
   Fill shows certainty: solid = we know, hatched = could not tell, outline = not run yet.
   One blue button per view; destructive actions are outlined, never filled red. */

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ground);color:var(--ink);font:15px/1.47 var(--f-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
a{color:inherit;text-decoration:none}
button,input,select{font:inherit;color:inherit}
button{cursor:pointer}
p{margin:0;text-wrap:pretty}
h1,h2,h3{margin:0;text-wrap:balance;font-family:var(--f-display);color:var(--ink)}
h1{font-weight:700;font-size:36px;line-height:1.1;letter-spacing:-0.03em}
h2{font-weight:650;font-size:20px;line-height:1.27;letter-spacing:-0.01em}
h3{font-weight:650;font-size:15px;line-height:1.35;font-family:var(--f-body)}
code,.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
body{font-variant-numeric:tabular-nums}
.num{font-variant-numeric:tabular-nums}
.muted{color:var(--muted)}
.eyebrow{font:13px var(--f-mono);font-variant-numeric:tabular-nums;color:var(--muted)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
svg.i{width:16px;height:16px;flex:none;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--r-s)}
.hatch{background:var(--hatch)}

/* ── shell ───────────────────────────── */
.app{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}
.side{position:sticky;top:0;height:100vh;display:flex;flex-direction:column;gap:18px;padding:20px 14px 16px;border-right:1px solid var(--line);background:var(--ground)}
.brand{display:flex;align-items:center;gap:10px;padding:4px 10px}
.brand svg{flex:none}
.wm{font:700 19px/1 var(--f-display);letter-spacing:-0.03em;color:var(--ink);white-space:nowrap}
.project{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-height:52px;padding:10px 12px;border:1px solid var(--line-strong);border-radius:var(--r-m);background:var(--surface);box-shadow:var(--shadow-1);text-align:left}
.project:hover{border-color:var(--ink-2)}
.project b{display:block;font-weight:650;font-size:13px}
.project span{display:block;font-size:12px;color:var(--muted)}
.nav{display:flex;flex-direction:column;gap:2px}
.nav-title{font-size:14px;font-weight:650;color:var(--ink);padding:0 12px 6px}
.nav a{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 12px;border-radius:var(--r-nav);color:var(--ink-2);font-weight:500;font-size:15px}
.nav a:hover{background:var(--hover);color:var(--ink)}
.nav a[aria-current="page"]{background:var(--accent-soft);color:var(--accent-ink);font-weight:650}
.nav a[aria-current="page"] .count{color:var(--accent-ink)}
.nav .count{margin-left:auto;font:600 12px var(--f-body);font-variant-numeric:tabular-nums;color:var(--muted)}
.side .foot{margin-top:auto}
.main{padding:32px clamp(20px,4vw,56px) 96px;max-width:var(--docs-wrap);width:100%}

/* ── page header ─────────────────────── */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin-bottom:12px}
.crumbs a:hover{color:var(--ink);text-decoration:underline;text-underline-offset:3px}
.crumbs svg.i{width:12px;height:12px;stroke-width:2}
.crumbs [aria-current]{color:var(--ink-2)}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:32px}
.head .sub{color:var(--ink-2);font-size:var(--t-prose);line-height:1.6;margin-top:10px;max-width:var(--prose)}
.head .actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:flex-end}

/* ── buttons & inputs ────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:var(--control-h);padding:0 16px;border:1px solid transparent;border-radius:var(--r-m);font-weight:650;font-size:14px;line-height:1;white-space:nowrap;transition:background-color .12s ease,border-color .12s ease,color .12s ease}
.btn-primary{background:var(--accent);color:var(--on-accent);box-shadow:var(--press)}
.btn-primary:hover{background:var(--accent-ink)}
.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--line-strong);box-shadow:var(--shadow-1);font-weight:600}
.btn-secondary:hover{background:var(--sunken)}
.btn-ghost{background:transparent;color:var(--ink-2);font-weight:600}
.btn-ghost:hover{background:var(--hover);color:var(--ink)}
.btn-ink{background:var(--ink);color:var(--ground)}
.btn-danger{background:var(--surface);color:var(--broken);border-color:var(--broken-line);font-weight:600}
.btn-danger:hover{background:var(--broken-bg)}
.btn-lg{min-height:var(--control-h-lg);padding:0 20px;font-size:15px}
.btn-sm{min-height:var(--control-h-sm);padding:0 12px;font-size:13px;border-radius:var(--r-nav)}
.btn-icon{width:var(--control-h);padding:0;color:var(--ink-2)}
.btn:disabled,.btn[aria-disabled="true"]{background:var(--sunken);color:var(--muted);border-color:transparent;box-shadow:none;cursor:not-allowed}
.btn:active:not(:disabled){transform:translateY(1px)}
.field{display:flex;flex-direction:column;gap:6px}
.field label,.label{font-size:13px;font-weight:600;color:var(--ink-2)}
.field .help{font-size:12px;color:var(--muted)}
.input,.select{min-height:var(--control-h);padding:0 12px;border:1px solid var(--line-strong);border-radius:var(--r-m);background:var(--surface);color:var(--ink);font-size:15px;box-shadow:var(--shadow-1)}
.input::placeholder{color:var(--muted)}
.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:var(--focus-ring)}
.search{position:relative;display:flex;align-items:center}
.search svg{position:absolute;left:12px;color:var(--muted);pointer-events:none}
.search .input{padding-left:36px;width:300px}
.kbd{font:12px var(--f-mono);color:var(--muted);border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:2px 8px;background:var(--surface)}
.select{appearance:none;padding-right:32px;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 17px) 52%,calc(100% - 12px) 52%;background-size:5px 5px;background-repeat:no-repeat;cursor:pointer}
.seg{display:inline-flex;padding:3px;border-radius:var(--r-m);background:var(--sunken);gap:2px;flex-wrap:wrap}
.seg button{border:0;background:transparent;min-height:38px;padding:0 14px;border-radius:var(--r-nav);font-size:14px;font-weight:600;color:var(--ink-2)}
.seg button:hover{color:var(--ink)}
.seg button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-1)}
.seg .n{font:600 12px var(--f-body);font-variant-numeric:tabular-nums;color:var(--muted);margin-left:6px}
.switch{display:inline-flex;align-items:center;gap:10px;border:0;background:none;padding:4px 0;font-size:14px;color:var(--ink)}
.switch .track{position:relative;width:44px;height:26px;border-radius:var(--r-pill);background:var(--line-strong);transition:background-color .15s ease;flex:none}
.switch .track::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.25);transition:transform .15s ease}
.switch[aria-checked="true"] .track{background:var(--accent)}
.switch[aria-checked="true"] .track::after{transform:translateX(18px)}

/* ── filter chips ────────────────────── */
.chips{display:flex;gap:8px;flex-wrap:wrap}
.fchip{display:inline-flex;align-items:center;gap:8px;height:var(--control-h-sm);padding:0 14px;border:0;border-radius:var(--r-pill);background:var(--surface);box-shadow:inset 0 0 0 1px var(--line-strong);color:var(--ink-2);font-size:13px;font-weight:650}
.fchip .n{font:600 12px var(--f-body);font-variant-numeric:tabular-nums;opacity:.75}
.fchip[aria-pressed="true"]{background:var(--ink);color:var(--ground);box-shadow:none}

/* ── surfaces ────────────────────────── */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);overflow:hidden;box-shadow:var(--shadow-1)}
.panel.raised{box-shadow:var(--shadow-1)}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 24px;border-bottom:1px solid var(--line)}
.panel-head .muted{font-size:13px}
.split{display:grid;grid-template-columns:1fr 1fr}
.split > * + *{border-left:1px solid var(--line)}
.pad{padding:24px}
.section{margin-top:40px}
.section > h2{margin-bottom:16px}
.note-box{background:var(--sunken);border:1px solid var(--line);border-radius:var(--r-m);padding:16px 18px;display:flex;flex-direction:column;gap:10px;font-size:15px;line-height:1.6;color:var(--ink-2)}
.note-box h3{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink)}

/* ── request label ───────────────────── */
.req{display:inline-flex;align-items:baseline;gap:8px;min-width:0}
.method{font:600 12px/1 var(--f-mono);color:var(--ink-2);flex:none}
.path{font:13px var(--f-mono);color:var(--ink);overflow-wrap:anywhere}
.commit{font:13px var(--f-mono);color:var(--ink-2)}
.commit .sha{display:block;color:var(--muted);font-size:12px}

/* ── capsule pill: stack on the left, ID on the right ─ */
.capsule{display:inline-flex;align-items:stretch;border-radius:var(--r-pill);overflow:hidden;border:1px solid var(--line-strong);font:13px var(--f-mono);width:fit-content}
.capsule > :first-child{background:var(--ink);color:var(--ground);padding:5px 10px 5px 12px}
.capsule > :last-child{background:var(--surface);color:var(--ink);padding:5px 12px 5px 10px}
.capsule.accent > :first-child{background:var(--accent);color:var(--on-accent)}
.capsule.quiet > :first-child{background:var(--sunken);color:var(--ink-2)}

/* ── verdict badges: colour names the outcome, fill says how sure ─ */
.badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 9px;border:0;border-radius:var(--r-s);font-size:12px;font-weight:650;line-height:1;white-space:nowrap}
.panel .col > .badge{align-self:flex-start}
.badge small{font-weight:500;font-size:12px;opacity:.8}
.badge small::before{content:"· "}
.b-repro{background:var(--accent-soft);color:var(--accent-ink)}
.b-broken{background:var(--broken-bg);color:var(--broken)}
.b-verified{background:var(--fixed-bg);color:var(--fixed)}
.b-gone{background:var(--surface);color:var(--fixed);box-shadow:inset 0 0 0 1px var(--fixed-line)}
.b-unknown,.b-unstable{background:var(--hatch);color:var(--unsure);box-shadow:inset 0 0 0 1px var(--unsure-line)}
.b-none{background:transparent;color:var(--ink-2);box-shadow:inset 0 0 0 1.5px var(--line-strong);font-weight:600}
.b-failed{background:var(--sunken);color:var(--ink-2);font-weight:600}
.b-running{background:var(--accent-soft);color:var(--accent-ink)}
.b-live{background:var(--live-bg);color:var(--live-ink)}
/* Large pill form for headline verdicts. */
.verdict-pill{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px 0 8px;border-radius:var(--r-pill);font-size:13px;font-weight:650;white-space:nowrap}
.verdict-pill.fixed{background:var(--fixed);color:var(--on-verdict)}
.verdict-pill.broken{background:var(--broken);color:var(--on-verdict)}
.verdict-pill.repro{background:var(--accent);color:var(--on-accent)}
.verdict-pill.unsure{background:var(--hatch);color:var(--unsure);box-shadow:inset 0 0 0 1px var(--unsure-line)}
.verdict-pill.none{color:var(--ink-2);box-shadow:inset 0 0 0 1.5px var(--line-strong);font-weight:600}

/* ── run pips: one per replay, countable at a glance ─ */
.strip{display:inline-flex;flex-wrap:nowrap;gap:3px;vertical-align:middle}
.strip i{display:block;width:6px;height:12px;border-radius:2px;flex:none;background:var(--sunken)}
.strip i.e{background:var(--accent)}
.strip i.bad{background:var(--broken)}
.strip i.ok{background:var(--fixed)}
.strip i.u{background:var(--hatch-strong);box-shadow:inset 0 0 0 1px var(--unsure)}
.strip i.p{background:transparent;box-shadow:inset 0 0 0 1.5px var(--line-strong)}
.strip.lg i,.pip{width:9px;height:14px;border-radius:3px}
.pip{display:inline-block;flex:none}
.pip.ok{background:var(--fixed)}
.pip.bad{background:var(--broken)}
.pip.rep{background:var(--accent)}
.pip.unsure{background:var(--hatch-strong);box-shadow:inset 0 0 0 1px var(--unsure)}
.pip.none{box-shadow:inset 0 0 0 1.5px var(--line-strong)}
.result{display:flex;flex-direction:column;align-items:flex-start;gap:8px}
.coverage{display:flex;height:12px;gap:2px;border-radius:4px;overflow:hidden}
.coverage .ok{background:var(--fixed)}
.coverage .miss{background:repeating-linear-gradient(135deg,var(--unsure) 0 2px,var(--unsure-a) 2px 5px)}

/* ── tables ──────────────────────────── */
.table{width:100%;border-collapse:collapse}
.table th{text-align:left;font-size:13px;font-weight:600;color:var(--ink);padding:12px 16px;border-bottom:1px solid var(--line);background:var(--sunken);white-space:nowrap}
.table td{padding:14px 16px;border-bottom:1px solid var(--line);vertical-align:middle;font-size:14px}
.table td b,.table td strong{font-weight:650}
.table tr:last-child td{border-bottom:0}
.table .t-right{text-align:right}
.table tr[data-href]{cursor:pointer}
.table tr[data-href]:hover td{background:color-mix(in oklch,var(--sunken) 45%,var(--surface))}
.table tr[data-href]:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.table .why{color:var(--ink-2);font-size:13px;max-width:24ch}
.table .when{white-space:nowrap;color:var(--muted);font-size:12px}
.err{font:13px var(--f-mono);color:var(--ink);overflow-wrap:anywhere}
.empty-row td{padding:40px 16px;text-align:center;color:var(--ink-2);font-size:15px}

/* ── progress steps ──────────────────── */
.steps{display:flex;align-items:center;gap:14px;padding:20px;flex-wrap:wrap}
.step{display:flex;align-items:flex-start;gap:10px;min-width:0}
.step b{display:block;font-weight:650;font-size:14px}
.step span{display:block;font-size:13px;color:var(--muted)}
.mark{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:50%}
.mark svg.i{width:14px;height:14px;stroke-width:2.5}
.mark.done{background:var(--fixed);color:var(--on-verdict)}
.mark.now{box-shadow:inset 0 0 0 2px var(--accent)}
.mark.now::after{content:"";width:8px;height:8px;border-radius:50%;background:var(--accent)}
.mark.todo{box-shadow:inset 0 0 0 1.5px var(--line-strong)}
.step .mark{display:grid}
.steps .join{flex:1 1 24px;min-width:24px;height:2px;background-image:radial-gradient(circle,var(--line-strong) 1px,transparent 1.3px);background-size:6px 2px}

/* ── verdict card ────────────────────── */
.verdict{display:grid;grid-template-columns:auto 1fr auto;gap:14px;align-items:start;padding:20px 24px;border:1px solid;border-radius:var(--r-l)}
.verdict .ico{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;margin-top:1px;color:var(--on-verdict);font-weight:700;font-size:13px}
.verdict .ico svg.i{width:14px;height:14px;stroke-width:2.5}
.verdict h2{font-size:20px;font-weight:650}
.verdict p{font-size:15px;color:var(--ink);margin-top:4px;max-width:70ch}
.verdict .aside{font:13px var(--f-mono);color:var(--ink-2);text-align:right;max-width:24ch}
.v-red{background:var(--broken-bg);border-color:var(--broken-line)}
.v-red .ico{background:var(--broken)}
.v-red h2{color:var(--broken)}
.v-blue{background:var(--accent-soft);border-color:var(--accent-line)}
.v-blue .ico{background:var(--accent)}
.v-blue h2{color:var(--accent-ink)}
.v-green{background:var(--fixed-bg);border-color:var(--fixed-line)}
.v-green .ico{background:var(--fixed)}
.v-green h2{color:var(--fixed)}
.v-amber,.v-unsure{background:var(--hatch);border-color:var(--unsure-line)}
.v-amber .ico,.v-unsure .ico{background:var(--unsure)}
.v-amber h2,.v-unsure h2{color:var(--unsure)}
.v-neutral{background:transparent;border:1.5px dashed var(--line-strong)}
.v-neutral .ico{background:transparent;box-shadow:inset 0 0 0 1.5px var(--muted);color:var(--muted)}

/* ── live recording banner (amber means recording, nothing else) ─ */
.live{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:12px 12px 12px 18px;background:var(--live-bg);border:1px solid var(--live-line);border-radius:var(--r-m);font-size:14px}
.live b{font-weight:650;color:var(--live-ink)}
.live .t{font:13px var(--f-mono);color:var(--live-ink);margin-left:auto}
.livedot{width:10px;height:10px;border-radius:50%;background:var(--live);animation:ctpulse 1.6s ease-in-out infinite}
@keyframes ctpulse{0%,100%{box-shadow:0 0 0 0 rgba(242,169,59,.65)}50%{box-shadow:0 0 0 6px rgba(242,169,59,0)}}

/* ── the trail: crumbs fading toward the failure ─ */
.trail{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.trail li{display:grid;grid-template-columns:24px 60px minmax(0,1fr) auto;gap:12px;align-items:center;min-height:44px}
.trail .crumb{justify-self:center;width:9px;height:9px;border-radius:50%;background:var(--ink-2);opacity:.55}
.trail li.fail{min-height:52px;background:var(--broken-bg);border-radius:var(--r-m);margin:2px -10px;padding:0 10px}
.trail li.fail .crumb{width:13px;height:13px;opacity:1;background:var(--broken);box-shadow:0 0 0 4px color-mix(in oklch,var(--broken) 18%,transparent)}
.trail li.fail .method,.trail li.fail .st-code{color:var(--broken)}

/* ── tabs ────────────────────────────── */
.tabbar{display:flex;align-items:center;gap:24px;border-bottom:1px solid var(--line);margin-top:28px}
.tabbar [role="tablist"]{display:flex;gap:24px;overflow-x:auto}
.tab{position:relative;border:0;background:none;padding:12px 0 13px;font-size:14px;font-weight:600;color:var(--muted);white-space:nowrap}
.tab:hover{color:var(--ink)}
.tab[aria-selected="true"]{color:var(--ink)}
.tab[aria-selected="true"]::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:2px;background:var(--accent)}
.tab .n{font:600 12px var(--f-body);font-variant-numeric:tabular-nums;color:var(--muted);margin-left:4px}
.tabbar .switch{margin-left:auto}
[role="tabpanel"]{padding-top:20px}
[hidden]{display:none !important}

/* ── key/values ──────────────────────── */
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;font-size:14px;margin:0}
.kv dt{color:var(--muted)}
.kv dd{margin:0;color:var(--ink);min-width:0;overflow-wrap:anywhere}
.status-bad{color:var(--broken);font:600 13px var(--f-mono)}
.status-ok{color:var(--fixed);font:600 13px var(--f-mono)}
.ok-line{display:flex;align-items:center;gap:8px;font-weight:650;color:var(--fixed)}
.ok-line .mark{width:20px;height:20px}
.exc{font:600 13px var(--f-mono);color:var(--ink)}
.small{font-size:13px}

/* ── code, diff, log ─────────────────── */
.code{margin:0;font:13px/1.7 var(--f-mono);overflow-x:auto;background:var(--surface)}
.code .ln{display:grid;grid-template-columns:48px 1fr;min-width:max-content}
.code .ln > span:first-child{padding-right:14px;text-align:right;color:var(--muted);user-select:none;background:var(--sunken);border-right:1px solid var(--line)}
.code .ln > span:last-child{padding:0 16px;white-space:pre}
.code .hit{background:var(--broken-bg)}
.code .hit > span:first-child{background:var(--broken-line);color:var(--broken);border-right-color:var(--broken-line)}
.code .note{display:block;padding:6px 16px 6px 62px;background:var(--broken-bg);color:var(--broken);font:13px var(--f-body);border-top:1px solid var(--broken-line);border-bottom:1px solid var(--broken-line)}
.diff .ln{grid-template-columns:40px 40px 20px 1fr}
.diff .ln > span{white-space:pre}
.diff .ln > span:nth-child(1),.diff .ln > span:nth-child(2){padding-right:10px;text-align:right;color:var(--muted);background:var(--sunken);user-select:none}
.diff .ln > span:nth-child(2){border-right:1px solid var(--line)}
.diff .ln > span:nth-child(3){text-align:center;color:var(--muted);user-select:none}
.diff .ln > span:nth-child(4){padding:0 16px 0 0}
.diff .add{background:var(--fixed-bg)}
.diff .add > span:nth-child(3){color:var(--fixed)}
.diff .add > span:nth-child(1),.diff .add > span:nth-child(2){background:color-mix(in oklch,var(--fixed-line) 50%,var(--fixed-bg))}
.diff .del{background:var(--broken-bg)}
.diff .del > span:nth-child(3){color:var(--broken)}
.diff .del > span:nth-child(1),.diff .del > span:nth-child(2){background:color-mix(in oklch,var(--broken-line) 50%,var(--broken-bg))}
.tok-k{color:var(--accent-ink)}
.tok-s{color:var(--fixed)}
.tok-t{color:var(--live-ink)}
.log{margin:0;padding:16px 0;background:var(--code-bg);color:var(--code-ink);border-radius:var(--r-m);font:13.5px/1.7 var(--f-mono);overflow-x:auto;min-height:120px}
.log div{display:grid;grid-template-columns:64px 1fr;padding:0 18px;white-space:pre}
.log div > span:first-child{color:var(--code-muted)}
.log .bad > span:last-child{color:var(--code-bad)}
.log .fin > span:last-child{font-weight:600}
.cmd{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 8px 16px;border-radius:var(--r-m);background:var(--code-bg);color:var(--code-ink);font:13px var(--f-mono)}
.cmd .p{color:var(--code-accent);margin-right:8px;user-select:none}
.cmd .btn{background:transparent;color:var(--code-ink);border-color:var(--code-control-line);box-shadow:none;min-height:32px;padding:0 12px;font-size:12px;font-weight:600;border-radius:7px}
.cmd .btn:hover{background:var(--code-hover)}

/* ── misc ────────────────────────────── */
.note-line{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted)}
.hr{height:1px;background:var(--line);border:0;margin:0}
.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 8px;border:1px solid var(--line);border-radius:5px;background:var(--sunken);font:12px var(--f-mono);color:var(--ink)}
.legend{display:flex;flex-wrap:wrap;gap:20px;font-size:13px;color:var(--ink-2)}
.legend span{display:inline-flex;align-items:center;gap:8px}
.legend i{width:9px;height:14px;border-radius:3px;background:var(--sunken)}
.legend i.e{background:var(--accent)}
.legend i.bad{background:var(--broken)}
.legend i.u{background:var(--hatch-strong);box-shadow:inset 0 0 0 1px var(--unsure)}
.legend i.ok{background:var(--fixed)}
.legend i.p{background:transparent;box-shadow:inset 0 0 0 1.5px var(--line-strong)}
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,8px);opacity:0;background:var(--ink);color:var(--ground);padding:10px 16px;border-radius:var(--r-m);font-size:14px;font-weight:600;box-shadow:var(--shadow-2);transition:opacity .15s ease,transform .15s ease;pointer-events:none;z-index:50}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ── docs pages (Docs board, 2026-10-03) ─ */
.topbar{position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--line)}
.topbar-in{max-width:var(--docs-wrap);margin:0 auto;padding:12px 24px;display:flex;align-items:center;gap:16px 24px;flex-wrap:wrap}
.topbar .brand{padding:0}
.tag{font:12px var(--f-mono);color:var(--muted);border:1px solid var(--line-strong);border-radius:var(--r-pill);padding:2px 8px;line-height:1.4}
.topnav{display:flex;gap:4px;flex-wrap:wrap;margin-left:auto}
.topnav a{padding:10px 12px;border-radius:var(--r-s);font-size:14px;font-weight:600;color:var(--ink-2)}
.topnav a:hover{color:var(--ink);background:var(--hover)}
.topnav a[aria-current="page"]{color:var(--ink);background:var(--sunken)}
.docs{max-width:var(--docs-wrap);margin:0 auto;padding:32px 24px 96px;display:flex;flex-wrap:wrap;gap:40px;align-items:flex-start}
.docs-side{flex:1 1 240px;max-width:var(--docs-side);display:flex;flex-direction:column;gap:20px}
.docs-main{flex:999 1 560px;min-width:0;display:flex;flex-direction:column;gap:48px}
.docs-toc{flex:1 1 200px;max-width:var(--docs-toc);display:flex;flex-direction:column;gap:12px;position:sticky;top:var(--topbar-offset)}
.docs-side .search{width:100%}
.docs-side .search .input{width:100%;min-height:44px;box-shadow:var(--shadow-1)}
.docs-nav{display:flex;flex-direction:column;gap:20px}
.docs-nav .group{display:flex;flex-direction:column;gap:2px}
.docs-nav .group-title,.docs-toc .toc-title{font-size:14px;font-weight:650;color:var(--ink)}
.docs-nav .group-title{padding:0 12px 6px}
.docs-nav a{display:block;padding:10px 12px;border-radius:var(--r-nav);font-size:15px;font-weight:500;color:var(--ink-2)}
.docs-nav a:hover{background:var(--hover);color:var(--ink)}
.docs-nav a[aria-current="page"]{background:var(--accent-soft);color:var(--accent-ink);font-weight:650}
.docs-nav [hidden]{display:none}
.empty-hint{padding:16px;border:1px dashed var(--line-strong);border-radius:var(--r-m);font-size:14px;line-height:1.5;color:var(--ink-2)}

.doc{max-width:var(--prose);display:flex;flex-direction:column;gap:40px}
.doc-head{display:flex;flex-direction:column;gap:16px}
.doc-head .crumbs{margin:0}
.doc-title{font:700 var(--t-doc-title)/1.05 var(--f-display);letter-spacing:-0.035em}
.lead{font-size:var(--t-lead);line-height:1.6;color:var(--ink-2)}
.doc-meta{display:flex;gap:8px 16px;flex-wrap:wrap;font-size:13px;color:var(--muted)}
.doc-section{display:flex;flex-direction:column;gap:16px;scroll-margin-top:var(--topbar-offset)}
.doc-h2{font-size:var(--t-doc-h2);font-weight:650;letter-spacing:-0.02em}
.step-head{display:flex;align-items:baseline;gap:12px}
.step-head .n{font:13px var(--f-mono);font-variant-numeric:tabular-nums;color:var(--muted)}
.prose{font-size:var(--t-prose);line-height:var(--lh-prose);color:var(--ink-2)}
ul.prose{margin:0;padding-left:22px;display:flex;flex-direction:column;gap:10px;line-height:1.65}
.doc code,.empty-hint code,.callout code{font-family:var(--f-mono);font-size:.88em;background:var(--sunken);border:1px solid var(--line);border-radius:5px;padding:1px 5px;color:var(--ink);overflow-wrap:anywhere}
.doc :is(p,li,td) a{color:var(--accent-ink);text-decoration:underline;text-underline-offset:3px}
.doc :is(p,li,td) a:hover{color:var(--ink)}

.keypoints{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-l);padding:24px 28px;display:flex;flex-direction:column;gap:16px;box-shadow:var(--shadow-1)}
.keypoints h2{font-size:20px;font-weight:650}
.keypoints ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:14px}
.keypoints li{display:flex;gap:12px;font-size:16px;line-height:1.55}
.keypoints li .pip{margin-top:5px}
.keypoints strong{font-weight:650}

/* Command block: dark, labelled, with a copy button. The label names the shell or file. */
.codeblock{background:var(--code-bg);border-radius:var(--r-m);overflow:hidden}
.codeblock-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 8px 8px 16px;border-bottom:1px solid var(--code-line)}
.codeblock-head .label{font:12px var(--f-mono);color:var(--code-muted)}
.codeblock-head .btn{min-height:32px;padding:0 12px;border:1px solid var(--code-control-line);border-radius:7px;background:transparent;color:var(--code-ink);font-size:12px;font-weight:600;box-shadow:none}
.codeblock-head .btn:hover{background:var(--code-hover)}
.codeblock pre{margin:0;padding:16px;border:0;border-radius:0;max-height:none;background:none;font:13.5px/1.7 var(--f-mono);color:var(--code-ink);white-space:pre-wrap;overflow-x:auto}

/* Callout: neutral by default; .live only for warnings about recording itself. */
.callout{display:flex;gap:12px;padding:16px 18px;background:var(--sunken);border:1px solid var(--line);border-radius:var(--r-m);font-size:15px;line-height:1.6;color:var(--ink-2)}
.callout svg.i{width:18px;height:18px;margin-top:2px}
.callout strong{color:var(--ink);font-weight:650}
.callout.live{background:var(--live-bg);border-color:var(--live-line);color:var(--live-ink)}
.callout.live strong{color:var(--live-ink)}

/* Outcome cards explain what a result means. Colours follow the verdict rules. */
.outcomes{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:12px}
.outcome{padding:16px;border-radius:var(--r-m);border:1px solid;display:flex;flex-direction:column;gap:6px}
.outcome b{font:600 13px var(--f-mono);font-variant-numeric:tabular-nums}
.outcome span{font-size:14px;line-height:1.5;color:var(--ink-2)}
.outcome.repro{background:var(--accent-soft);border-color:var(--accent-line)}
.outcome.repro b{color:var(--accent-ink)}
.outcome.fixed{background:var(--fixed-bg);border-color:var(--fixed-line)}
.outcome.fixed b{color:var(--fixed)}
.outcome.broken{background:var(--broken-bg);border-color:var(--broken-line)}
.outcome.broken b{color:var(--broken)}
.outcome.unsure{background:var(--hatch);border-color:var(--unsure-line)}
.outcome.unsure b{color:var(--unsure)}

.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-m);background:var(--surface)}
.table-wrap .table{min-width:560px}
.table.doc-table th{font-size:15px;color:var(--ink);padding:12px 16px}
.table.doc-table td{font-size:15px;line-height:1.5;padding:12px 16px;color:var(--ink-2);vertical-align:top}
.table.doc-table td:first-child{font:13px var(--f-mono);color:var(--ink)}

.pager{display:flex;gap:12px;flex-wrap:wrap;border-top:1px solid var(--line);padding-top:24px}
.pager a{flex:1 1 240px;min-height:44px;padding:16px;border:1px solid var(--line-strong);border-radius:var(--r-m);background:var(--surface);display:flex;flex-direction:column;gap:4px;color:var(--ink)}
.pager a:hover{border-color:var(--ink-2)}
.pager a[rel="next"]{text-align:right}
.pager small{font-size:13px;color:var(--muted)}
.pager b{font-weight:650}

.toc{display:flex;flex-direction:column;border-left:1px solid var(--line)}
.toc a{padding:6px 14px;margin-left:-1px;border-left:2px solid transparent;font-size:14px;color:var(--ink-2)}
.toc a:hover{color:var(--ink)}
.toc a[aria-current="true"]{border-left-color:var(--accent);color:var(--ink);font-weight:600}
.toc-card{margin-top:12px;padding:16px;border-radius:var(--r-m);background:var(--accent-soft);display:flex;flex-direction:column;gap:6px}
.toc-card b{font-size:14px;font-weight:650}
.toc-card span{font:12px/1.7 var(--f-mono);color:var(--ink-2)}

@media (max-width:980px){
  .docs-side{max-width:none}
  .docs-toc{display:none}
}
@media (max-width:760px){
  .topbar .brand .wm{display:inline}
  .docs-nav:not(.searching) .group + .group{display:none}
  .doc-title{font-size:34px}
  .doc-h2{font-size:24px}
  .lead{font-size:17px}
  .keypoints{padding:20px}
}

/* ── motion: one curve, short, transform + opacity only ─ */
.rise{animation:rise .32s cubic-bezier(.2,0,0,1) both;animation-delay:calc(var(--s,0) * 70ms)}
.strip.play i{transform-origin:bottom;animation:cell .16s cubic-bezier(.2,0,0,1) both;animation-delay:calc(var(--d,0ms) + var(--k,0) * 11ms)}
.leave{animation:leave .2s cubic-bezier(.2,0,0,1) both}
@keyframes rise{from{opacity:0;transform:translateY(6px)}}
@keyframes cell{from{opacity:0;transform:scaleY(.3)}}
@keyframes leave{to{opacity:0;transform:translateY(-4px)}}
.fresh td{transition:background-color 1.4s ease}
.fresh.lit td{background:var(--sunken)}
[data-copy] .i,[data-copy] .t{transition:opacity .14s ease,transform .14s cubic-bezier(.2,0,0,1)}
[data-copy].swap .i,[data-copy].swap .t{opacity:0;transform:translateY(3px)}
[data-copy].done{color:var(--fixed)}
.swap-text{transition:opacity .16s ease}
.swap-text.out{opacity:0}
@media (prefers-reduced-motion:reduce){
  .rise,.strip.play i,.leave,.livedot{animation:none}
  .fresh td,[data-copy] .i,[data-copy] .t,.swap-text{transition:none}
  [data-copy].swap .i,[data-copy].swap .t{transform:none}
}

/* ── responsive ──────────────────────── */
@media (max-width:1240px){
  .table th,.table td{padding-left:10px;padding-right:10px}
  .table th:first-child,.table td:first-child{padding-left:16px}
  .table .why{max-width:18ch}
}
@media (max-width:980px){
  .app{grid-template-columns:minmax(0,1fr)}
  .side{position:sticky;top:0;z-index:20;height:auto;flex-direction:row;align-items:center;gap:12px;padding:10px 16px;border-right:0;border-bottom:1px solid var(--line);overflow-x:auto}
  .side .project{display:none}
  .nav{flex-direction:row}
  .side .foot{margin:0 0 0 auto}
  .side .foot .label-txt,.nav .count{display:none}
  .main{padding:24px 20px 56px}
  h1{font-size:30px}
  .split{grid-template-columns:1fr}
  .split > * + *{border-left:0;border-top:1px solid var(--line)}
}
@media (max-width:760px){
  .brand .wm{display:none}
  .nav a{min-height:44px}
  .btn-sm{min-height:40px}
  .head{flex-direction:column;align-items:flex-start;gap:14px}
  .head .actions{justify-content:flex-start;width:100%}
  .search,.search .input{width:100%}
  .verdict{grid-template-columns:auto 1fr}
  .verdict .aside{grid-column:2;text-align:left;max-width:none}
  .table.stack thead{display:none}
  .table.stack,.table.stack tbody,.table.stack tr,.table.stack td{display:block;width:100%}
  .table.stack tr{padding:12px 16px;border-bottom:1px solid var(--line)}
  .table.stack tr:last-child{border-bottom:0}
  .table.stack td{display:grid;grid-template-columns:96px 1fr;gap:10px;padding:5px 0;border:0;text-align:left}
  .table.stack td::before{content:attr(data-label);color:var(--muted);font-size:13px}
  .table.stack td.t-right{text-align:left}
  .steps{flex-direction:column;align-items:flex-start}
  .steps .join{display:none}
  .tabbar{flex-wrap:wrap;gap:0}
  .tabbar .switch{margin-left:0;padding:8px 0}
}
.docs-foot{border-top:1px solid var(--line)}
.docs-foot .topbar-in{padding-top:32px;padding-bottom:32px;justify-content:space-between;font-size:14px;color:var(--muted)}
.docs-foot .links{display:flex;gap:22px}
.docs-foot a:hover{color:var(--ink)}

/* Log history follows the case file: one ink rule and hairlines between scenarios. */
.log-history{border-top:3px solid var(--ink);padding-top:20px;min-width:0}
.log-history-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap}
.log-history-head h2{font-size:clamp(24px,2.4vw,30px);font-weight:700}
.log-history-head .actions{display:flex;gap:8px;flex-wrap:wrap}
.log-history .btn{border-radius:0;box-shadow:none}
.log-history-view>summary,.log-history-section>summary{cursor:pointer;min-height:44px;padding:12px 0;font-weight:650}
.log-history-section{border-top:1px solid var(--line)}
.log-history-section>summary{overflow-wrap:anywhere}
.log-history-section-body{padding:0 0 16px;overflow-wrap:anywhere}
.log-history-status{display:inline-flex;align-items:center;gap:6px;margin-left:12px;font-size:12px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2)}
.log-history-status::before{content:"";width:7px;height:7px;border:1px solid currentColor;flex:none}
.log-history-status[data-status="problem"]{color:var(--broken)}
.log-history-status[data-status="problem"]::before{background:currentColor}
.log-history-status[data-status="unknown"]{color:var(--unsure)}
.log-history-status[data-status="unknown"]::before{background:var(--hatch)}
.log-history-text{font:13px/1.65 var(--f-body);margin:12px 0 0;padding:12px 0;border-top:1px solid var(--line);white-space:pre-wrap;overflow-wrap:anywhere;max-height:420px;overflow:auto;background:transparent;color:var(--ink)}
.log-history [aria-disabled="true"]{opacity:.6;cursor:progress}
@media(max-width:760px){.log-history-head{align-items:flex-start}.log-history-head .actions{width:100%}.log-history-status{display:flex;margin:6px 0 0}}
