/* UI-007: deliberately no JavaScript navigation interception.  Browsers that
   support cross-document View Transitions keep their own history, timing and
   loading path; every other browser receives an ordinary document navigation. */
:root {
  --native-navigation-duration: 180ms;
  --native-navigation-ease-out: cubic-bezier(0.23, 1, 0.32, 1);
}

/* Fallback for engines without cross-document View Transitions. It does not
   intercept links or delay navigation; the newly loaded page enters softly. */
main {
  animation: native-navigation-reveal var(--native-navigation-duration) var(--native-navigation-ease-out) both;
}

@supports (view-transition-name: root) {
  @view-transition { navigation: auto; }

  /* The outgoing document is intentionally static.  Primary navigation is a
     high-frequency action, so it must never wait for a decorative exit. */
  ::view-transition-old(root) {
    animation: none;
  }

  ::view-transition-new(root) {
    animation: native-navigation-reveal var(--native-navigation-duration) var(--native-navigation-ease-out) both;
  }

  main { animation: none; }

  @keyframes native-navigation-reveal {
    from { opacity: 0; transform: translateY(6px); }
    to { opacity: 1; transform: translateY(0); }
  }
}

@media (prefers-reduced-motion: reduce) {
  main { animation: native-navigation-fade 100ms var(--native-navigation-ease-out) both; }
  @supports (view-transition-name: root) {
    ::view-transition-new(root) {
      animation: native-navigation-fade 100ms var(--native-navigation-ease-out) both;
    }

    @keyframes native-navigation-fade {
      from { opacity: 0; }
      to { opacity: 1; }
    }
  }
}
