/* Thought — the golden thread (contract v1). The homepage's values, one engine for every page module.
   Decorative continuity only. The layer sits above section backgrounds and below knots and the coda. */
.th-thread { position: absolute; left: 0; top: 0; z-index: 2; width: 100%; height: 0; pointer-events: none; }
.th-thread svg { position: absolute; left: 0; top: 0; overflow: visible; }
.th-thread path { fill: none; stroke-linecap: round; stroke-linejoin: round; }
.th-thread-base { stroke: rgba(201, 163, 94, .5); stroke-width: 1.3; stroke-dasharray: .5 7; }
.th-thread-lit { position: absolute; left: 0; top: 0; width: 100%; height: 0; overflow: hidden; }
.th-thread-glow { stroke: rgba(227, 197, 140, .22); stroke-width: 7; }
.th-thread-line { stroke: #e3c58c; stroke-width: 1.7; }
.th-thread-head { position: absolute; left: 0; top: 0; width: 9px; height: 9px; margin: -4.5px 0 0 -4.5px; border-radius: 50%; background: #fff4d6; box-shadow: 0 0 0 3px rgba(227, 197, 140, .3), 0 0 16px 5px rgba(243, 214, 150, .55); opacity: 0; transition: opacity .3s ease; will-change: transform; }
/* Waypoints and the coda paint above the line, so it seems to pass through them. */
.th-has-thread [data-th-knot] { z-index: 3; }
[data-th-end] { position: relative; z-index: 3; }
/* Long reading pages: a quieter thread. */
[data-th-quiet] .th-thread-base { stroke-opacity: .55; }
[data-th-quiet] .th-thread-glow { display: none; }
[data-th-quiet] .th-thread-line { stroke-width: 1.2; stroke-opacity: .85; }
[data-th-quiet] .th-thread-head { width: 7px; height: 7px; margin: -3.5px 0 0 -3.5px; box-shadow: 0 0 0 2px rgba(227, 197, 140, .25), 0 0 10px 3px rgba(243, 214, 150, .4); }
@media (prefers-reduced-motion: reduce) { .th-thread-head { display: none; } }
@media print { .th-thread { display: none; } }
