﻿/* A quiet chapter index in the desktop gutter; text links serve narrow screens. */
.section-rail { position: fixed; z-index: 8; left: max(4px, calc((100vw - 1440px) / 2 + 8px)); top: 50%; transform: translateY(-50%); display: flex; flex-direction: column; gap: 2px; width: 36px; }
.section-rail a { position: relative; display: flex; align-items: center; justify-content: flex-start; width: 36px; height: 36px; padding-left: 6px; text-decoration: none; }
.rail-mark { width: 12px; height: 2px; background: var(--color-muted); }
.section-rail a[aria-current="location"] .rail-mark { width: 24px; height: 3px; background: var(--color-accent); }
.rail-label { position: absolute; left: 32px; top: 50%; transform: translateY(-50%); padding: 6px 10px; border: 1px solid var(--color-hairline); background: var(--color-paper); color: var(--color-ink); font-size: 14px; line-height: 1.5; white-space: nowrap; visibility: hidden; opacity: 0; }
.section-rail a:hover .rail-label, .section-rail a:focus-visible .rail-label { visibility: visible; opacity: 1; }
.section-rail a:hover .rail-mark { width: 24px; background: var(--color-accent); }
.section-rail a[aria-current="location"] .rail-label { color: var(--color-accent); }
.section-rail a:focus-visible { outline-offset: -2px; }
@media (max-width: 900px) { .section-rail { display: none; } }
@media (prefers-reduced-motion: no-preference) { .rail-mark { transition: width .16s ease, background-color .16s ease; } .rail-label { transition: opacity .16s ease; } }
