/* ============================================================
   OMNIS — Rail de progreso (hilo conductor entre secciones)
   Carril vertical fijo a la izquierda; el capítulo activo se
   ilumina al hacer scroll. Une toda la web en un solo viaje.
   ============================================================ */
.rail{
  position:fixed;left:clamp(16px,2.4vw,38px);top:50%;transform:translateY(-50%);
  z-index:46;display:flex;flex-direction:column;gap:22px;
}
.rail::before{
  content:"";position:absolute;left:3px;top:7px;bottom:7px;width:1px;   /* exacto: del primer al último círculo */
  background:linear-gradient(transparent, rgba(231,210,166,.22) 12%, rgba(231,210,166,.22) 100%);
}
/* gleam dorado que recorre el hilo en loop */
.rail::after{
  content:"";position:absolute;left:1.5px;width:4px;height:46px;border-radius:4px;pointer-events:none;
  background:radial-gradient(closest-side, rgba(231,210,166,.8), transparent);
  animation:railGleam 5s linear infinite;
}
@keyframes railGleam{
  0%{top:-10%;opacity:0}
  14%{opacity:.95}
  86%{opacity:.95}
  100%{top:100%;opacity:0}
}
.rail__item{
  position:relative;display:flex;align-items:center;gap:14px;
  background:none;border:0;padding:0;cursor:pointer;text-decoration:none;
}
.rail__dot{
  width:8px;height:8px;border-radius:50%;flex:none;position:relative;z-index:1;
  border:1px solid rgba(231,210,166,.55);background:#06080b;   /* opaco: oculta la línea por detrás */
  transition:.45s var(--ease);
}
.rail__label{
  font-family:'Jost',sans-serif;font-size:10px;letter-spacing:.22em;text-transform:uppercase;
  color:rgba(239,231,214,.5);white-space:nowrap;
  opacity:0;transform:translateX(-8px);transition:.45s var(--ease);
}
.rail__item:hover .rail__label{opacity:1;transform:none}
.rail__item.active .rail__dot{
  background:var(--gold);border-color:var(--gold);
  animation:railPulse 2.4s var(--ease) infinite;
}
@keyframes railPulse{
  0%,100%{box-shadow:0 0 0 0 rgba(198,163,106,.5)}
  70%{box-shadow:0 0 0 8px rgba(198,163,106,0)}
}
@media(prefers-reduced-motion:reduce){
  .rail::after{display:none}
  .rail__item.active .rail__dot{animation:none;box-shadow:0 0 0 5px rgba(198,163,106,.16)}
}
.rail__item.active .rail__label{opacity:1;transform:none;color:var(--gold-2)}

@media(max-width:820px){.rail{display:none}}
