/* The three scroll effects of the details page, all played once as things enter view (scripts/agentic-scroll-in.js adds .is-in): (a) tiles rise and fade in, (b) connector lines draw in, (c) repo cards stagger in. Nothing runs continuously. Without scripts, or with reduced motion, nothing is hidden. */
@media (prefers-reduced-motion: no-preference) { /* only for visitors who allow motion */
  .js .rise { transition: opacity 0.6s cubic-bezier(0.2, 0.7, 0.2, 1), transform 0.6s cubic-bezier(0.2, 0.7, 0.2, 1), border-color 0.25s, background 0.25s; } /* the rise, plus the tile's own colour changes */
  .js .rise:not(.is-in) { opacity: 0; transform: translateY(14px); } /* (a) waiting below the screen */
  .js .world-agentic [data-draw] { transition: transform 0.7s cubic-bezier(0.2, 0.7, 0.2, 1), opacity 0.25s; } /* (b) how a line draws */
  .js .world-agentic [data-draw]:not(.is-in) { transform: scaleX(0); transform-origin: left center; } /* (b) a horizontal line not yet drawn */
  .js .world-agentic .repo-chain-line[data-draw]:not(.is-in), .js .world-agentic .repo-branch[data-draw]:not(.is-in) { transform: scaleY(0); transform-origin: center top; } /* (b) the chain and the line into each card are drawn downward */
  .js .world-agentic .repo-bus[data-draw]:not(.is-in) { transform: scaleX(0); transform-origin: center center; } /* (b) the bus grows out from the middle */
  .js [data-stagger] > li { transition: opacity 0.4s ease-out, transform 0.4s ease-out; transition-delay: calc(min(var(--n, 0), 14) * 45ms); } /* (c) each repo follows the one before */
  .js [data-stagger]:not(.is-in) > li { opacity: 0; transform: translateY(8px); } /* (c) waiting */
}
