/* Shared progressive enhancement for both public sites. Content never starts hidden. */
:root {
  --experience-accent: var(--purple, var(--plum-700, #6633ba));
  --experience-progress: var(--lime, var(--gold, #ddff63));
  --experience-ease: cubic-bezier(.22, 1, .36, 1);
}
.reading-progress {
  position: absolute;
  inset: auto 0 -1px;
  height: 3px;
  background: var(--experience-progress);
  transform: scaleX(0);
  transform-origin: left center;
  pointer-events: none;
}
#primary-nav a[aria-current="location"] {
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: .45em;
}
.motion-toggle {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-height: 44px;
  padding: .35rem .8rem;
  border: 1px solid currentColor;
  border-radius: 4px;
  background: transparent;
  color: inherit;
  font: inherit;
  font-size: .75rem;
  line-height: 1.4;
  cursor: pointer;
}
.motion-toggle:disabled { cursor: default; }
.motion-toggle:focus-visible { outline: 3px solid currentColor; outline-offset: 4px; }
.legal-links { align-items: center; }
.legal-links .motion-toggle { color: #f3edf9; }
.footer-bottom > div:has(.motion-toggle) { align-items: center; }
/* Quiet, scroll-drawn contours connect a few key chapters of each site. */
[data-journey-scene] { position: relative; isolation: isolate; }
.journey-trail {
  position: absolute;
  z-index: -1;
  inset: 0 0 auto;
  height: clamp(140px, 24vw, 320px);
  overflow: hidden;
  color: var(--lime, var(--gold, #d5b875));
  opacity: .24;
  pointer-events: none;
}
.journey-trail svg { display: block; width: 100%; height: 100%; }
.journey-trail path {
  fill: none;
  stroke: currentColor;
  stroke-width: 2;
  stroke-linecap: round;
  stroke-dasharray: 1;
  stroke-dashoffset: var(--trail-offset, 0);
  vector-effect: non-scaling-stroke;
}
.journey-trail path:nth-child(2) { opacity: .62; }
.journey-trail path:nth-child(3) { opacity: .35; }
.journey-trail--closing { inset: auto 0 0; transform: scaleX(-1); }
.closing .journey-trail { color: #190d2c; opacity: .16; }
[data-motion="off"] [data-scroll-art] { transform: none !important; }
[data-motion="off"] .journey-trail path { stroke-dashoffset: 0 !important; }
[data-scrolled="true"] .event-header,
[data-scrolled="true"] .site-header { box-shadow: 0 8px 24px #190d2c10; }
[data-motion="on"] .event-header,
[data-motion="on"] .site-header { transition: box-shadow .24s ease; }
[data-motion="off"] { scroll-behavior: auto; }
[data-motion="off"] *,
[data-motion="off"] *::before,
[data-motion="off"] *::after { animation: none !important; transition: none !important; }

@media (prefers-reduced-motion: no-preference) and (hover: hover) and (pointer: fine) {
  [data-motion="on"] [data-lift] { transition: transform .35s var(--experience-ease), box-shadow .35s ease; }
  [data-motion="on"] [data-lift]:hover { transform: translateY(-5px); box-shadow: 0 14px 30px #190d2c12; }
  [data-motion="on"] .button > [aria-hidden="true"],
  [data-motion="on"] .text-link > [aria-hidden="true"] { display: inline-block; transition: transform .3s var(--experience-ease); }
  [data-motion="on"] .button:hover > [aria-hidden="true"],
  [data-motion="on"] .text-link:hover > [aria-hidden="true"] { transform: translate(2px, -2px); }
}
/* Keep navigation immediate; scroll effects are the optional motion layer. */
@view-transition { navigation: none; }
@media (prefers-reduced-motion: reduce) {
  :root { scroll-behavior: auto; }
  [data-scroll-art] { transform: none !important; }
  .journey-trail path { stroke-dashoffset: 0 !important; }
}
@media print {
  [data-scroll-art] { transform: none !important; }
  .reading-progress, .motion-toggle, .journey-trail { display: none; }
}
