/* Research, the hero: The Ledger (assets/vibe-ledger.js). The host holds the
   slot's box before the script runs, so nothing moves when it draws. */
.ledger{position:relative;width:100%;aspect-ratio:640/560;border-radius:2px;outline:none;-webkit-tap-highlight-color:transparent}
@media (max-width:500px){.ledger{aspect-ratio:1/1}}
.ledger:focus-visible{outline:1px solid rgba(226,228,255,.32);outline-offset:8px}
.ledger svg{position:absolute;inset:0;display:block;width:100%;height:100%;overflow:visible;font-family:var(--mono);user-select:none;-webkit-user-select:none}
.ledger text{letter-spacing:.08em}
.ledger .lg-title{font-size:10px;letter-spacing:.24em}
.ledger .lg-head{font-size:8px}
.ledger .lg-read{font-size:9px;letter-spacing:.06em}
.ledger .lg-foot{font-size:8px;opacity:.85}
.ledger .lg-block{font-size:8.5px}
.ledger .lg-note{font-size:7.5px}
.ledger .lg-ratio{letter-spacing:.02em}
/* names over the ribbons get a halo in the page colour */
.ledger .lg-block,.ledger .lg-read{paint-order:stroke;stroke:#07080E;stroke-width:3px;stroke-linejoin:round}
.ledger .lg-loud{pointer-events:none}
.ledger .lg-quiet path,.ledger .lg-row{cursor:pointer}
/* tracing: the lit layer fades in over the quiet one; the rest fall back */
.ledger .lg-a,.ledger .lg-q,.ledger .lg-quiet,.ledger .lg-row{transition:opacity .32s var(--ease,ease)}
.ledger .lg-a{opacity:0}
.ledger path.lg-a.on{opacity:.92}
.ledger g.lg-a.on{opacity:1}
.ledger .lg-q.off{opacity:0}
.ledger .lg-tracing .lg-quiet{opacity:.32}
.ledger .lg-row.dim{opacity:.5}
.ledger .lg-arriving .lg-row{transition:none}
/* for screen readers only */
.ledger .lg-sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
@media (prefers-reduced-motion:reduce){.ledger .lg-a,.ledger .lg-q,.ledger .lg-quiet,.ledger .lg-row{transition:none}}
