/* Swarm case-file — light editorial style */
:root{
  --paper:#f4f1e9; --paper2:#efeadf; --card:#fffdf8; --ink:#211f1a; --ink2:#3b382f;
  --muted:#726b5c; --faint:#9a9280; --rule:#e2dccd; --rule2:#cfc7b4;
  --accent:#0f6b60; --accent2:#0b544b;
  --ok:#2f8f6a; --partial:#c07b2a; --fail:#b0472f;
  --disp:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:"Inter",system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,Menlo,Consolas,monospace;
}
@media (prefers-color-scheme: dark){:root{
  --paper:#1a1916; --paper2:#201e1a; --card:#221f1b; --ink:#ece7db; --ink2:#d3ccbb;
  --muted:#a49b87; --faint:#786f5d; --rule:#332f28; --rule2:#453f34;
  --accent:#4bbfae; --accent2:#6fd0c0;
  --ok:#57c39a; --partial:#d9a45c; --fail:#e08163;
}}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{color:var(--accent)}
.wrap{display:grid;grid-template-columns:272px 1fr;min-height:100vh}

/* rail */
aside{background:var(--paper2);border-right:1px solid var(--rule);padding:26px 20px 40px;position:sticky;top:0;height:100vh;overflow:auto}
.brand{font-family:var(--disp);font-weight:600;font-size:21px;letter-spacing:-.01em;line-height:1.1;margin:0 0 3px}
.brand em{font-style:italic;color:var(--accent)}
.brand-sub{font-family:var(--mono);font-size:11px;color:var(--faint);margin-bottom:24px;letter-spacing:.02em}
.rail-h{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin:0 0 10px}
.task{display:block;width:100%;text-align:left;background:var(--card);border:1px solid var(--rule);border-radius:8px;padding:13px 14px;margin-bottom:10px;cursor:pointer;transition:border-color .12s, transform .12s}
.task:hover{border-color:var(--rule2);transform:translateY(-1px)}
.task.on{border-color:var(--accent);box-shadow:0 1px 0 var(--accent) inset, 0 0 0 1px var(--accent)}
.task .tt{font-family:var(--disp);font-weight:600;font-size:16px;line-height:1.15;margin-bottom:4px}
.task .tg{font-family:var(--mono);font-size:10.5px;color:var(--accent);text-transform:uppercase;letter-spacing:.06em;margin-bottom:6px}
.task .td{font-size:12px;color:var(--muted);line-height:1.45}
.rail-foot{margin-top:22px;padding-top:16px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:10.5px;color:var(--faint);line-height:1.7}
.rail-foot a{text-decoration:none}

/* main */
main{min-width:0;display:flex;flex-direction:column}
header{padding:34px 40px 22px;border-bottom:1px solid var(--rule)}
header .ey{font-family:var(--mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--accent);margin-bottom:8px}
header h1{font-family:var(--disp);font-weight:600;font-size:clamp(24px,3.4vw,34px);line-height:1.08;letter-spacing:-.015em;margin:0 0 10px;max-width:22ch}
header p{margin:0;color:var(--ink2);font-size:15px;max-width:78ch}
header .win{font-family:var(--mono);font-size:12px;color:var(--muted);margin-top:12px}

/* flow */
.flowwrap{flex:1;overflow:auto;padding:26px 40px 40px}
.flow{position:relative}
.flow svg.edges{position:absolute;inset:0;overflow:visible;pointer-events:none}
.step{position:absolute;width:212px;background:var(--card);border:1px solid var(--rule2);border-radius:10px;padding:12px 13px 12px 16px;cursor:pointer;transition:box-shadow .12s, transform .12s, border-color .12s;box-shadow:0 1px 2px #0000000d}
.step::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;border-radius:10px 0 0 10px;background:var(--lanec,#999)}
.step:hover{transform:translateY(-2px);box-shadow:0 6px 18px #00000018;border-color:var(--lanec)}
.step.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent)}
.step .top{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.step .oc{width:9px;height:9px;border-radius:50%;flex:none}
.step .tm{font-family:var(--mono);font-size:10.5px;color:var(--muted)}
.step .ln{font-family:var(--mono);font-size:9.5px;color:var(--lanec);margin-left:auto;text-transform:uppercase;letter-spacing:.04em}
.step .ti{font-family:var(--disp);font-weight:600;font-size:15px;line-height:1.2;letter-spacing:-.005em}
.step .ev-badge{margin-top:7px;font-family:var(--mono);font-size:10px;color:var(--faint);display:flex;align-items:center;gap:5px}
.step .ev-badge svg{width:11px;height:11px;fill:none;stroke:currentColor;stroke-width:2}

.stage-label{position:absolute;font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.1em;color:var(--faint)}

/* legend */
.legend{display:flex;gap:22px;flex-wrap:wrap;align-items:center;padding:12px 40px;border-top:1px solid var(--rule);font-family:var(--mono);font-size:11px;color:var(--muted);background:var(--paper2)}
.legend b{color:var(--ink2);font-weight:600}
.legend .oc{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:0}
.legend .ar{display:inline-block;width:22px;border-top:1.5px solid var(--faint);vertical-align:4px;margin-right:5px;position:relative}

/* evidence drawer */
#drawer{position:fixed;top:0;right:0;height:100vh;width:min(460px,92vw);background:var(--card);border-left:1px solid var(--rule2);
  box-shadow:-12px 0 40px #00000022;transform:translateX(100%);transition:transform .2s ease;overflow:auto;z-index:20;padding:24px 26px 40px}
#drawer.on{transform:translateX(0)}
#drawer .close{position:absolute;top:16px;right:18px;font-family:var(--mono);font-size:20px;color:var(--muted);cursor:pointer;line-height:1}
#drawer .dh-eyebrow{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--lanec,var(--accent));margin-bottom:6px}
#drawer h2{font-family:var(--disp);font-weight:600;font-size:22px;line-height:1.15;margin:0 0 10px;max-width:20ch}
#drawer .meta{font-family:var(--mono);font-size:11px;color:var(--muted);margin-bottom:16px;display:flex;gap:10px;flex-wrap:wrap;align-items:center}
#drawer .pill{font-family:var(--mono);font-size:10px;text-transform:uppercase;letter-spacing:.05em;padding:2px 7px;border-radius:3px}
#drawer .detail{font-size:14px;color:var(--ink2);line-height:1.6;margin-bottom:20px}
#drawer .ev-h{font-family:var(--mono);font-size:10.5px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin:18px 0 10px;display:flex;align-items:center;gap:8px}
#drawer .ev-h::after{content:"";flex:1;height:1px;background:var(--rule)}
.chat{background:var(--paper);border:1px solid var(--rule);border-radius:10px;border-top-left-radius:2px;padding:12px 14px;margin-bottom:12px}
.chat .who{font-family:var(--mono);font-size:12px;font-weight:600;color:var(--accent)}
.chat .whn{font-family:var(--mono);font-size:10.5px;color:var(--faint);margin-left:8px}
.chat .pg{font-family:var(--mono);font-size:10px;color:var(--faint);margin-top:2px}
.chat .bd{font-family:var(--mono);font-size:12px;line-height:1.6;color:var(--ink);margin-top:9px;white-space:pre-wrap;word-break:break-word}
.note{font-size:11.5px;color:var(--faint);font-style:italic;margin-top:8px}

@media (max-width:820px){
  .wrap{grid-template-columns:1fr}
  aside{position:static;height:auto;border-right:0;border-bottom:1px solid var(--rule)}
  header,.flowwrap,.legend{padding-left:20px;padding-right:20px}
}
