/* Load after thread.css. One fine continuous strand, including its occasional
   measured curls. Caption and connector placement belongs to cinematic-hero.css. */
.story-thread.living-thread {
  position: absolute;
  inset: 0 auto auto 0;
  width: 100%;
  overflow: visible;
  pointer-events: none;
  user-select: none;
  z-index: 4;
  contain: layout style;
  filter: none;
  --living-thread-gold: #bd9a63;
}

.story-thread.living-thread path {
  fill: none;
  stroke: var(--living-thread-gold);
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
  filter: none;
  transition: none;
  animation: none;
}

/* One hairline, not a stack of luminous cables. The quiet continuation remains
   visible below the reading position; the stronger arc-length prefix follows
   the reader without skipping/reversing when a curl turns upward. */
.story-thread.living-thread .thread-guide {
  stroke-width: 1.05px;
  opacity: .15;
}

.story-thread.living-thread .thread-drawn {
  stroke-width: 1.25px;
  opacity: .84;
}

.story-thread.living-thread .thread-shadow,
.story-thread.living-thread .thread-fibre,
.story-thread.living-thread .thread-tip {
  display: none !important;
}

@media (max-width: 759px) {
  .story-thread.living-thread .thread-guide { stroke-width: 1px; opacity: .11; }
  .story-thread.living-thread .thread-drawn { stroke-width: 1.05px; opacity: .68; }
}

/* Static full-length decoration when motion is disabled. JS also cancels its
   RAF immediately; CSS remains a fail-safe for an in-flight preference change. */
@media (prefers-reduced-motion: reduce) {
  .story-thread.living-thread .thread-drawn { stroke-dashoffset: 0 !important; }
}
[data-motion="off"] .story-thread.living-thread .thread-drawn {
  stroke-dashoffset: 0 !important;
}

@media print {
  .story-thread.living-thread { display: none !important; }
}
