/* The server includes this class so the first document is visible before JS.
 * Menu replacements use the shared reveal; charts and data updates keep theirs. */
.site-main.unified-page-motion { view-transition-name: none; }
.site-main.unified-page-motion .analytics-reveal,
body.analytics-ready .site-main.unified-page-motion .analytics-reveal {
  opacity: 1;
  transform: none;
  animation: none;
}
/* One underline moves between menu labels without changing their layout. */
.main-nav a[aria-busy="true"] { cursor: progress; }
.main-nav.has-moving-indicator a.active::after { visibility: hidden; }
.main-nav .nav-indicator {
  position: absolute;
  left: 0;
  top: 0;
  height: 2px;
  pointer-events: none;
  background: var(--tc-accent, var(--green));
}
.main-nav .nav-indicator[hidden] { display: none; }
.main-nav .nav-indicator.is-pending { animation: menu-request-pulse .8s ease-in-out infinite alternate; }
.site-main[aria-busy] { cursor: progress; }
@keyframes menu-request-pulse { from { opacity: .25; } to { opacity: 1; } }
@media (prefers-reduced-motion: reduce) {
  .main-nav .nav-indicator.is-pending { animation: none; }
}
