/* S29: animations modify paint/compositing only; no element is initially hidden. */
@media (prefers-reduced-motion: no-preference) {
  html.zf-motion-enabled main [data-zf-motion="entered"] {
    animation: zf-reveal-once 550ms cubic-bezier(.2,.75,.2,1) both;
  }
  @keyframes zf-reveal-once {
    from { opacity: .84; transform: translate3d(0, 7px, 0); }
    to { opacity: 1; transform: translate3d(0, 0, 0); }
  }
  @keyframes zf-signal-once {
    from { opacity: .52; }
    to { opacity: 1; }
  }

  /* Home: discrete network points signal an assembled framework. */
  body[data-page="home"] .home-hero-visual[data-zf-visual="entered"] .zf-points circle {
    animation: zf-signal-once 850ms ease-out both;
  }
  body[data-page="home"] .home-hero-visual[data-zf-visual="entered"] .zf-points circle:nth-child(2n) {
    animation-delay: 130ms;
  }
  body[data-page="home"] .domain-model[data-zf-visual="entered"] .domain-blue,
  body[data-page="home"] .system-flow-field[data-zf-visual="entered"] svg {
    animation: zf-signal-once 800ms ease-out both;
  }

  /* Framework: the geometric structure resolves without moving the orbit. */
  body[data-page="framework"] .framework-hero-orbit[data-zf-visual="entered"] g[fill="none"] path {
    animation: zf-signal-once 950ms ease-out both;
  }
  body[data-page="framework"] .framework-orbit-stage[data-zf-visual="entered"] .framework-orbit-core {
    animation: zf-signal-once 950ms ease-out both;
  }

  /* Architecture: independently drawn planes establish depth and boundaries. */
  body[data-page="architecture"] .architecture-hero-visual[data-zf-visual="entered"] .architecture-plane {
    animation: zf-signal-once 850ms ease-out both;
  }
  body[data-page="architecture"] .architecture-hero-visual[data-zf-visual="entered"] .architecture-plane--gold {
    animation-delay: 140ms;
  }
  body[data-page="architecture"] .architecture-model-plane--gold[data-zf-visual="entered"] {
    animation: zf-signal-once 720ms ease-out both;
  }

  /* Systems: role, coordination, and decision resolve in causal order. */
  body[data-page="systems"] .systems-hero-field[data-zf-visual="entered"] .systems-hero-role {
    animation: zf-signal-once 600ms ease-out both;
  }
  body[data-page="systems"] .systems-hero-field[data-zf-visual="entered"] .systems-hero-coordination {
    animation: zf-signal-once 600ms ease-out 120ms both;
  }
  body[data-page="systems"] .systems-hero-field[data-zf-visual="entered"] .systems-hero-decision {
    animation: zf-signal-once 600ms ease-out 240ms both;
  }
  body[data-page="systems"] .systems-expression-field[data-zf-visual="entered"] svg,
  body[data-page="systems"] .systems-emphasis-visuals[data-zf-visual="entered"] svg {
    animation: zf-signal-once 750ms ease-out both;
  }

  /* Research: layers and inquiry nodes resolve, then remain steady. */
  body[data-page="research"] .research-hero-field[data-zf-visual="entered"] svg > g,
  body[data-page="research"] .research-direction-field[data-zf-visual="entered"] svg,
  body[data-page="research"] .research-progress-node[data-zf-visual="entered"] {
    animation: zf-signal-once 750ms ease-out both;
  }

  main a.cta,
  main a.home-text-link,
  main a.framework-depth-link,
  main a.systems-depth-link,
  main a.research-note-index__item {
    transition: filter 180ms ease, box-shadow 180ms ease;
  }
  @media (hover: hover) and (pointer: fine) {
    main a.cta:hover,
    main a.home-text-link:hover,
    main a.framework-depth-link:hover,
    main a.systems-depth-link:hover { filter: brightness(1.12); }
    main a.research-note-index__item:hover {
      box-shadow: inset 2px 0 0 var(--color-interaction);
    }
  }
  main a.cta:focus-visible,
  main a.home-text-link:focus-visible,
  main a.framework-depth-link:focus-visible,
  main a.systems-depth-link:focus-visible,
  main a.research-note-index__item:focus-visible { filter: brightness(1.12); }
}
@media (prefers-reduced-motion: reduce) {
  html.zf-motion-enabled main [data-zf-motion="entered"],
  html.zf-motion-enabled main [data-zf-visual="entered"] * {
    animation: none !important;
  }
}
