/*
 * Course-to-course navigation only.
 * Cross-document View Transitions are progressive enhancement: unsupported
 * browsers keep the existing immediate navigation without a scripted delay.
 */
@view-transition {
  navigation: auto;
}

.course-hero-copy h1,
.subpage-hero h1 {
  view-transition-name: course-title;
}

.page-switcher {
  view-transition-name: course-switcher;
}

.protocol-visual,
.subpage-note {
  view-transition-name: course-visual;
}

::view-transition-group(root) {
  animation-duration: 220ms;
  animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}

::view-transition-old(root) {
  animation: course-page-out 130ms cubic-bezier(0.4, 0, 1, 1) both;
}

::view-transition-new(root) {
  animation: course-page-in 220ms cubic-bezier(0.22, 1, 0.36, 1) 20ms both;
}

::view-transition-group(course-title),
::view-transition-group(course-switcher),
::view-transition-group(course-visual) {
  animation-duration: 240ms;
  animation-timing-function: cubic-bezier(0.22, 1, 0.36, 1);
}

::view-transition-old(course-title),
::view-transition-old(course-switcher),
::view-transition-old(course-visual) {
  animation: course-element-out 120ms cubic-bezier(0.4, 0, 1, 1) both;
}

::view-transition-new(course-title),
::view-transition-new(course-switcher),
::view-transition-new(course-visual) {
  animation: course-element-in 240ms cubic-bezier(0.22, 1, 0.36, 1) 25ms both;
}

@keyframes course-page-out {
  to {
    opacity: 0;
  }
}

@keyframes course-page-in {
  from {
    opacity: 0;
  }
}

@keyframes course-element-out {
  to {
    opacity: 0;
    transform: translateY(-6px);
  }
}

@keyframes course-element-in {
  from {
    opacity: 0;
    transform: translateY(8px);
  }
}

@media (prefers-reduced-motion: reduce) {
  ::view-transition-group(*),
  ::view-transition-old(*),
  ::view-transition-new(*) {
    animation-delay: 0ms !important;
    animation-duration: 0.01ms !important;
  }
}
