/* ============================================================
   Chapter dot-rail — SINGLE SOURCE OF TRUTH for the section navigator.
   Linked by every content page; the rail itself is built at runtime by
   /assets/chapter-rail.js from the page's main-content <h2> headings.
   Colour vars fall back to the brand palette so the rule is self-contained.
   ============================================================ */
.chapter-rail{ position:fixed; top:50%; right:18px; transform:translateY(-50%); z-index:40; display:flex; flex-direction:column; gap:12px; padding:8px 6px; }
.chapter-rail a{ display:block; width:11px; height:11px; border-radius:50%; border:1.5px solid var(--ink-muted,#5A6678); background:transparent; text-decoration:none; position:relative; transition:border-color .18s ease, background-color .18s ease, transform .18s ease; }
.chapter-rail a:hover{ border-color:var(--ember,#E85D2F); transform:scale(1.18); }
.chapter-rail a.active{ background:var(--ember,#E85D2F); border-color:var(--ember,#E85D2F); }
.chapter-rail a:focus-visible{ outline:2px solid var(--ember,#E85D2F); outline-offset:3px; }
.chapter-rail .rail-label{ position:absolute; right:21px; top:50%; transform:translateY(-50%); white-space:nowrap; font-family:'Inter',sans-serif; font-size:12px; font-weight:600; letter-spacing:0.02em; color:var(--bone,#F4F1EA); background:var(--ink,#0A1428); padding:4px 9px; border-radius:4px; opacity:0; pointer-events:none; transition:opacity .15s ease; max-width:220px; overflow:hidden; text-overflow:ellipsis; }
.chapter-rail a:hover .rail-label, .chapter-rail a:focus-visible .rail-label{ opacity:1; }
@media (max-width: 1180px){ .chapter-rail{ display:none; } }
@media (prefers-reduced-motion: reduce){ .chapter-rail a, .chapter-rail .rail-label{ transition:none; } }
