/*
  Persona components. One class family per Lida component, restyled for the persona palette.
  Every colour comes from tokens.css; nothing here is a raw hex.
  Shape rule: buttons and status tags are pills (--radius-pill); data containers (tables, charts, disclosures,
  the lead card) are --radius-md; code blocks --radius-sm. Everything else is flat: grouped by a top rule and space.
  Box rule: only the lead persona card is elevated. Other groupings use .card, which is a ruled, unboxed block.
*/
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
body{margin:0;background:var(--surface);color:var(--text-secondary);font:var(--text-base)/1.6 var(--sans);-webkit-font-smoothing:antialiased;transition:background var(--dur-slow) var(--ease)}
h1,h2,h3,h4{font-family:var(--serif);font-weight:400;color:var(--text-primary);margin:0;text-wrap:balance;letter-spacing:-.012em}
p{margin:0;text-wrap:pretty}
a{color:var(--brand);text-underline-offset:.2em;text-decoration-thickness:.06em}
a{transition:color var(--dur-fast) var(--ease),text-decoration-thickness var(--dur-fast) var(--ease)}
a:hover{text-decoration-thickness:.12em}
:focus-visible{outline:2px solid var(--brand);outline-offset:3px;border-radius:3px}
@media (prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}

/* Label */
.label{font:400 var(--text-xs)/1.5 var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--text-tertiary)}
.hint{font-size:13px;color:var(--text-tertiary)}
.gutter{padding-inline:16px}
.wrap{max-width:var(--maxw);margin:0 auto}

/* Nav (sticky bar with section tabs) */
.bar{background:var(--card);border-bottom:1px solid var(--border-soft);position:sticky;top:0;z-index:5}
.bar .wrap{display:flex;gap:24px;align-items:center;justify-content:space-between;padding-block:14px}
.bar .brand{display:inline-flex;align-items:center;gap:8px;font:500 18px var(--serif);color:var(--text-primary);text-decoration:none}
.logo-mark{width:26px;height:26px;flex:none}
.lm-link{stroke:var(--border-strong);stroke-width:1.6;fill:none}
.lm-state{fill:var(--accent)}
.lm-person,.lm-company{fill:var(--card);stroke:var(--text-primary);stroke-width:1.8}
.bar .site{display:flex;gap:16px;align-items:center;flex:none}
.bar .site a:not(.brand){font:500 13px var(--sans);color:var(--text-secondary);text-decoration:none}
.bar .site a:not(.brand):hover{color:var(--brand)}
.tabs{display:flex;gap:2px;min-width:0;overflow-x:auto;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tabs a{flex:none;font:500 12px/1 var(--mono);letter-spacing:.05em;text-transform:uppercase;color:var(--text-secondary);padding:10px 8px;border-radius:var(--radius-sm);text-decoration:none;transition:color var(--dur-fast) var(--ease),background var(--dur-fast) var(--ease)}
.tabs a:hover{color:var(--brand);background:var(--brand-wash)}
.tabs a:active,.filters button:active{transform:translateY(1px)}
@media (max-width:760px){.bar .wrap{flex-wrap:wrap;gap:8px 16px}.tabs{width:100%}}

/* Night band (hero) */
.hero{background:radial-gradient(circle at 85% 0%,var(--night-2),var(--night) 60%)}
.hero .wrap{padding-block:56px 48px;display:grid;gap:16px}
.hero .label{color:var(--night-faint)}
.hero h1{color:var(--night-text);font-size:var(--text-display);line-height:1.1;padding-bottom:.08em}
.hero h1 em{color:var(--night-star);font-weight:300}
.hero .lede{font-size:18px;color:var(--night-muted);max-width:72ch}
.hero .chips{display:flex;flex-wrap:wrap;gap:8px}
.hero .chip{background:transparent;border:1px solid var(--night-faint);color:var(--night-text)}

/* Section scaffold */
.sec{padding-block:44px;scroll-margin-top:64px}
.sec .wrap{display:grid;grid-template-columns:minmax(0,1fr);gap:20px}
.sec .wrap>*,.hero .wrap>*{min-width:0}
.sec.alt{background:var(--surface-alt-1)}
.sec.alt2{background:var(--surface-alt-2)}
.shead{display:grid;gap:6px}
.shead .step{font:300 italic 20px var(--serif);color:var(--accent)}
.shead h2{font-size:clamp(1.6rem,3vw,var(--text-2xl));line-height:1.13}
.shead p{max-width:66ch}
.sub{font-size:var(--text-lg);line-height:1.28;margin-top:8px}

/* Question / Evidence / Adds — the step contract */
.qea{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(220px,100%),1fr));gap:0 var(--space-5);border-block:1px solid var(--border)}
.qea div{padding:12px 0;display:grid;gap:2px}
.qea b{font:500 11px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--brand)}
.qea span{font-size:15px;color:var(--text-primary);line-height:1.4}

/* Chip and tag */
.chip{font:500 12px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:4px 10px;border-radius:var(--radius-pill);background:var(--brand-wash);color:var(--text-primary)}
.tg{font:500 10.5px/1.4 var(--mono);letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:var(--radius-pill);white-space:nowrap;display:inline-block}
.tg.said{background:var(--brand-wash);color:var(--brand);border:1px solid var(--brand-tint)}
.tg.did{background:var(--brand);color:var(--on-brand)}
.tg.not_taken,.tg.lacks,.tg.untested{background:var(--card);color:var(--text-tertiary);border:1px dashed var(--border-strong)}
.tg.ctx{background:var(--card);color:var(--text-tertiary);border:1px solid var(--border-strong)}
.tg.holds,.tg.fits,.tg.rule{background:var(--accent);color:var(--on-brand)}
.tg.partial{background:var(--accent-wash);color:var(--accent);border:1px solid var(--accent)}
.tg.hypothesis,.tg.not_a_test{background:var(--card);color:var(--text-tertiary);border:1px dotted var(--border-strong)}
.tg.misfit{background:var(--text-primary);color:var(--card)}
.tg.held,.tg.dropped{background:var(--surface-alt-2);color:var(--text-secondary)}
.tg.warn{background:var(--accent-wash);color:var(--accent);border:1px solid var(--accent)}

/* Card */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(250px,100%),1fr));gap:var(--space-4) var(--space-5)}
.card{border-top:1px solid var(--border);padding-top:var(--space-3);display:grid;gap:6px;align-content:start}
.card b.k{font:500 11.5px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--accent)}
.card p{font-size:15px;color:var(--text-primary)}
.card .ev{font-size:12.5px;color:var(--text-tertiary)}
.card h3{font-size:22px;line-height:1.2}
.card.lead{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3) 18px;box-shadow:var(--shadow)}
.refs{font:12px/1.5 var(--mono);color:var(--text-tertiary)}
.refs a{text-decoration:none;border-bottom:1px dotted var(--brand)}

/* Stat */
.prof{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr));gap:var(--space-4) var(--space-5)}
.pc{border-top:1px solid var(--border);padding-top:var(--space-3);display:grid;gap:6px;align-content:start}
.pc b{font:300 italic var(--text-stat)/1.1 var(--serif);color:var(--accent);font-variant-numeric:tabular-nums}
.pc span{font-size:13.5px;color:var(--text-secondary)}

/* Steps strip */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(150px,100%),1fr));gap:var(--space-3) var(--space-4)}
.steps a{border-top:1px solid var(--border);padding-top:var(--space-2);display:grid;gap:4px;text-decoration:none;color:var(--text-primary);transition:border-color var(--dur-fast) var(--ease)}
.steps a:hover{border-top-color:var(--accent)}
.steps b{font:300 italic 18px var(--serif);color:var(--accent)}
.steps span{font-size:14px;line-height:1.35}

/* Table (DividedList for wide data) */
.rt{border:1px solid var(--border);border-radius:var(--radius-md);overflow:auto;background:var(--card);max-height:640px}
.rt table{border-collapse:collapse;width:100%;font-size:14px}
.rt table.wide{min-width:900px}
.rt th{font:500 11px/1.3 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);text-align:left;padding:10px 12px;background:var(--surface-alt-2);border-bottom:1px solid var(--border);position:sticky;top:0}
.rt td{padding:10px 12px;border-bottom:1px solid var(--border-soft);vertical-align:top}
.rt tr:last-child td{border-bottom:0}
.rt td.d,.rt td.n{font:13px/1.4 var(--mono);white-space:nowrap}
.rt code,code{font:500 12.5px var(--mono);color:var(--text-primary)}
.rt tr.held td{background:var(--surface-alt-1)}
.rt q{font-family:var(--serif);font-size:15.5px;color:var(--text-primary)}
.aud{display:inline-flex;align-items:center;gap:6px;font-size:13px;white-space:nowrap}
.aud i{width:10px;height:10px;border-radius:50%;display:inline-block}

/* Viz box */
.vizbox{background:var(--card);border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:12px}
.vizbox svg{display:block;width:100%;height:auto}
.vizbox text{font:11px var(--mono);fill:var(--text-tertiary)}
.legend{display:flex;flex-wrap:wrap;gap:6px 16px;margin-top:8px}

/* Disclosure + code block */
details{background:var(--card);border:1px solid var(--border-soft);border-radius:var(--radius-md);padding:10px 14px}
details summary{cursor:pointer;font:500 12px var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--brand)}
pre{margin:10px 0 0;overflow:auto;font:12.5px/1.5 var(--mono);color:var(--text-primary);background:var(--surface-alt-1);border-radius:var(--radius-sm);padding:12px;max-height:520px}

/* Lists inside cards */
ul.plain{margin:0;padding-left:18px;display:grid;gap:4px;font-size:15px;color:var(--text-primary)}

/* Filter group */
.filters{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.filters>span{font:500 11px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-right:4px}
.filters button{font:500 12px/1 var(--mono);color:var(--text-primary);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-pill);padding:0 12px;min-height:32px;cursor:pointer;transition:background var(--dur-fast) var(--ease),color var(--dur-fast) var(--ease)}
.filters button[aria-pressed="true"]{background:var(--text-primary);border-color:var(--text-primary);color:var(--card)}

/* Tree (actor classes) */
.tree{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;justify-items:center}
.tree .node{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);padding:10px 16px;text-align:center;font:500 15px var(--serif);color:var(--text-primary)}
.tree .node small{display:block;font:12px var(--sans);color:var(--text-tertiary)}
.tree .row{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}
.tree .node.root{background:var(--night);color:var(--night-text);border-color:var(--night)}
.tree .node.root small{color:var(--night-faint)}
.tree .node.kind{border-color:var(--accent);color:var(--accent)}

/* Footer */
.foot{background:var(--night);color:var(--night-muted);font-size:13px}
.foot .wrap{padding-block:24px}
.foot a{color:var(--night-star)}

/* Facts list (label over value), used where a stat row would be too loud */
.facts{display:flex;flex-wrap:wrap;gap:var(--space-2) var(--space-4);margin:0}
.facts div{display:grid;gap:0}
.facts dt{font:500 11px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary)}
.facts dd{margin:0;font:400 20px/1.2 var(--serif);color:var(--text-primary);font-variant-numeric:tabular-nums}

/* Link list: navigation to reference views, deliberately not a card grid */
ul.links{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(320px,100%),1fr));gap:var(--space-4) var(--space-5)}
ul.links li{display:grid;gap:4px;padding-top:var(--space-3);border-top:1px solid var(--border)}
ul.links a{font:400 var(--text-lg)/1.25 var(--serif);color:var(--text-primary);text-decoration:none}
ul.links a:hover{color:var(--brand)}
ul.links p{font-size:15px;color:var(--text-secondary);max-width:52ch}

/* Loading skeleton: the page outline while data loads */
.skel{display:grid;gap:14px}
.skel i{display:block;height:14px;border-radius:var(--radius-sm);background:var(--surface-sunk);animation:skel 1.2s var(--ease) infinite alternate}
.skel i.h{height:36px;width:min(560px,80%)}
.skel i.s{width:min(420px,60%)}
@keyframes skel{from{opacity:.55}to{opacity:1}}

/* Simulation: stage on the left, live feed of what happens and why on the right */
.simpanel{display:grid;gap:20px}
.simgrid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,1fr);gap:var(--space-4);align-items:start}
.simleft{display:grid;gap:12px;position:sticky;top:72px}
.simright{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);display:grid;grid-template-rows:auto minmax(0,1fr);max-height:min(720px,calc(100vh - 96px));overflow:hidden}
.feed-head{display:grid;gap:2px;padding:14px 18px;border-bottom:1px solid var(--border-soft)}
.feed-head b{font:400 var(--text-lg)/1.2 var(--serif);color:var(--text-primary)}
.feed{list-style:none;margin:0;padding:8px 0;overflow-y:auto;overscroll-behavior:contain}
.fe{display:grid;grid-template-columns:76px minmax(0,1fr);gap:0 12px;padding:10px 18px 12px;border-left:3px solid transparent;transition:background var(--dur) var(--ease),border-color var(--dur) var(--ease),opacity var(--dur) var(--ease)}
.fe.future{display:none}
.fe.current{background:var(--brand-wash);border-left-color:var(--brand)}
.fe.current.hypothesis{border-left-color:var(--border-strong);background:var(--surface-alt-1)}
@media (prefers-reduced-motion:no-preference){.fe:not(.future){animation:fe-in var(--dur-slow) var(--ease)}}
@keyframes fe-in{from{opacity:0;transform:translateY(6px)}}
.fe-time{all:unset;cursor:pointer;font:500 12.5px/1.6 var(--mono);color:var(--text-tertiary);font-variant-numeric:tabular-nums;align-self:start}
.fe-time:hover,.fe-time:focus-visible{color:var(--brand);text-decoration:underline}
.fe-card{display:grid;gap:4px;min-width:0}
.fe-who{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.fe-who b{font:600 14px var(--sans);color:var(--text-primary)}
.fe-act{font-size:15px;line-height:1.45;color:var(--text-primary)}
.fe-why{font-size:13.5px;line-height:1.45;color:var(--text-secondary)}
.fe-why span{font:500 10.5px var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--brand);margin-right:6px}
.fe-evi{font-size:12.5px;color:var(--text-tertiary)}
.cls-icon{width:16px;height:16px;flex:none}
.cls-icon>*{fill:var(--card);stroke:var(--text-primary);stroke-width:1.6}
.cls-icon.cls-state>*{stroke:var(--accent)}
.cls-icon.cls-event>*{fill:var(--night);stroke:var(--night)}

.stage{position:relative;background:var(--card);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}
.stage svg{display:block;width:100%;height:auto}
.st-clock{position:absolute;top:14px;left:16px;font:400 28px/1 var(--serif);color:var(--text-primary);font-variant-numeric:tabular-nums}
.st-route{fill:none;stroke:var(--border);stroke-width:1.5;stroke-dasharray:4 5;transition:stroke var(--dur) var(--ease)}
.st-route.on{stroke:var(--brand-tint);stroke-dasharray:none;stroke-width:2}
.st-route.lit{stroke:var(--brand);stroke-width:2.5}
.st-event rect{fill:var(--night);stroke:var(--night)}
.st-event text{fill:var(--night-text);font:500 14px var(--sans)}
.st-event .st-k{fill:var(--night-faint)}
.st-figure>rect,.st-figure>circle,.st-figure>polygon{fill:var(--card);stroke:var(--text-primary);stroke-width:2}
.st-figure.st-state>rect{stroke:var(--accent)}
.st-figure .st-ini{font:400 24px var(--serif);fill:var(--text-primary)}
.st-figure .st-name{font:500 15px var(--sans);fill:var(--text-primary)}
.st-k{font:500 10.5px var(--mono);letter-spacing:.08em;fill:var(--text-tertiary)}
.st-figure.idle{opacity:.35}
.st-figure{transform-box:fill-box;transform-origin:center}
.st-figure.hit{animation:st-hit .6s var(--ease)}
@keyframes st-hit{40%{transform:scale(1.1)}}
.st-pulse{fill:var(--brand);stroke:var(--card);stroke-width:2}
.st-pulse.hypothesis{fill:var(--card);stroke:var(--brand);stroke-width:2.5;stroke-dasharray:3 2}
.st-bubble{position:absolute;max-width:38%;background:var(--surface);border:1px solid var(--brand-tint);border-radius:var(--radius-md);padding:7px 11px;display:grid;gap:2px;box-shadow:var(--shadow);transition:opacity var(--dur) var(--ease)}
.st-bubble.hypothesis{border-style:dashed;border-color:var(--border-strong)}
.st-bubble.past{opacity:.5;box-shadow:none}
.st-bubble b{font:500 14px/1.3 var(--sans);color:var(--text-primary)}
.st-bubble span{font:11px var(--mono);color:var(--text-tertiary)}

.st-controls{display:flex;gap:10px;align-items:flex-start}
.st-controls button{font:500 12px/1 var(--mono);color:var(--text-primary);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-pill);padding:0 14px;min-height:34px;cursor:pointer;flex:none}
.st-controls button.st-play{background:var(--text-primary);color:var(--card);border-color:var(--text-primary);min-width:84px}
.st-controls button:active{transform:translateY(1px)}
.st-track{flex:1;min-width:0;display:grid;gap:2px;padding-top:6px}
.st-scrub{width:100%;margin:0;accent-color:var(--brand)}
.st-ticks{position:relative;height:30px}
.st-ticks i{position:absolute;top:0;width:2px;height:8px;margin-left:-1px;background:var(--brand)}
.st-ticks i.hypothesis{background:var(--border-strong)}
.st-ticks span{position:absolute;top:12px;transform:translateX(-50%);font:11px var(--mono);color:var(--text-tertiary);white-space:nowrap}

@media (max-width:900px){.simgrid{grid-template-columns:minmax(0,1fr)}.simleft{position:static}.simright{max-height:none}.fe.future{display:grid;opacity:.35}}
@media (max-width:640px){.st-bubble{display:none}.st-clock{font-size:20px}.fe{grid-template-columns:60px minmax(0,1fr);padding-inline:12px}}

/* Evidence meter: dots fill toward three independent cases */
.meter{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;white-space:nowrap}
.meter .dots{display:inline-flex;gap:3px}
.meter .dots i{width:8px;height:8px;border-radius:50%;border:1.5px solid var(--brand);background:transparent}
.meter .dots i.on{background:var(--brand)}
.meter.hypothesis .dots i{border-color:var(--border-strong)}
.meter.hypothesis .dots i.on{background:var(--border-strong)}
.meter b{font:600 12px var(--sans);letter-spacing:.02em;color:var(--text-primary)}
.meter .hint{font-size:12.5px;white-space:normal}
.key{display:flex;flex-wrap:wrap;gap:6px 20px;margin:0}
.feed-head .key{margin-top:6px}

/* Groups: cast switcher, group note, commission frame on the stage */
#grp .pill{font:500 12px/1 var(--mono);color:var(--text-primary);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-pill);padding:0 12px;min-height:32px;display:inline-flex;align-items:center;text-decoration:none}
#grp .pill[aria-current="true"]{background:var(--accent);border-color:var(--accent);color:var(--on-brand)}
.groupnote{display:grid;gap:4px;border-left:3px solid var(--accent);padding:4px 0 4px 14px;max-width:80ch}
.groupnote b{font:400 var(--text-lg)/1.25 var(--serif);color:var(--text-primary)}
.st-frame rect{fill:var(--accent-wash);stroke:var(--accent);stroke-width:1.2;stroke-dasharray:6 4}
.st-frame text{fill:var(--accent)}
.stage.crowded .st-ini{font-size:19px}
.stage.crowded .st-name{font-size:13px}
.st-bubble.centred{transform:translateX(-50%);max-width:44%}
.st-figure .st-ini.long{font-size:12px;letter-spacing:-.03em}
.idle-note{font-size:13.5px;color:var(--text-secondary);max-width:70ch}
.idle-note b{color:var(--text-primary);font-weight:600}
.st-figure.idle{cursor:help}

/* Calendar dates on the simulation */
.st-clock{display:grid;gap:2px}
.st-cal{font:500 13px var(--mono);color:var(--text-tertiary);font-variant-numeric:tabular-nums}
.fe-time{display:grid;gap:2px;align-content:start}
.fe-time .fe-date{font:11px var(--mono);color:var(--text-tertiary)}
.fe-window{font-size:12.5px;color:var(--text-secondary)}
.fe-window .fe-date{font:500 12.5px var(--mono);color:var(--text-primary)}
.evdate{display:flex;flex-wrap:wrap;align-items:center;gap:8px 12px;font:500 13px var(--sans);color:var(--text-primary)}
.evdate input{font:500 13px var(--mono);color:var(--text-primary);background:var(--card);border:1px solid var(--border);border-radius:var(--radius-sm);padding:6px 8px}
.evdate .hint{flex-basis:100%;font-weight:400}
