/* transitions-dev / transitions-polish: shared motion scale, P4 only. */
:root {
  --duration-stagger: 40ms;
  --duration-micro: 80ms;
  --duration-quick: 150ms;
  --duration-fast: 250ms;
  --duration-medium: 350ms;
  --duration-slow: 400ms;
  --duration-very-slow: 500ms;
  --ease-smooth-out: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-in-out: ease-in-out;
  --ease-out: ease-out;
  --ease-linear: linear;
  --distance-micro: 4px;
  --distance-medium: 12px;
  --scale-large: .96;
  --scale-medium: .97;
  --scale-tiny: .99;
  --blur-small: 2px;
  --blur-medium: 3px;
  --dropdown-open-dur: var(--duration-fast);
  --dropdown-close-dur: var(--duration-quick);
  --dropdown-pre-scale: var(--scale-medium);
  --dropdown-closing-scale: var(--scale-tiny);
  --dropdown-ease: var(--ease-smooth-out);
  --modal-open-dur: var(--duration-fast);
  --modal-close-dur: var(--duration-quick);
  --modal-scale: var(--scale-large);
  --modal-scale-close: var(--scale-large);
  --modal-ease: var(--ease-smooth-out);
  --acc-expand: var(--duration-fast);
  --acc-collapse: var(--duration-fast);
  --acc-chevron: var(--duration-fast);
  --acc-ease: var(--ease-smooth-out);
  --text-swap-dur: var(--duration-quick);
  --text-swap-translate-y: var(--distance-micro);
  --text-swap-blur: var(--blur-small);
  --text-swap-ease: var(--ease-in-out);
}

/* Reversible disclosures retain one duration; dismissal has no delay. */
#header.paper-header .paper-nav-trigger[aria-expanded=false] svg {
  transition-duration: var(--dropdown-close-dur);
}
/* Frequent pointer feedback stays small, with a softer return. */
.nimbus-cta-actions button {
  transition: background-color var(--duration-quick) var(--ease-out),
    box-shadow var(--duration-quick) var(--ease-out),
    transform 200ms var(--ease-smooth-out);
}
@media (hover:hover) and (pointer:fine) {
  .nimbus-cta-actions button:hover { transition-duration: 150ms, 150ms, 150ms; }
}
.nimbus-cta-actions .nimbus-primary:active,
.nimbus-cta-actions .nimbus-secondary:active { transition-duration: 70ms; }
/* 70ms presses and ambient artwork have no matching token usage. */
@media (prefers-reduced-motion:reduce) {
  .nimbus-cta-actions button { transition: none; }
}

/* Fade text ink independently of the footer's entrance opacity and artwork. */
.site-footer { --footer-text-opacity: 65%; }
.site-footer :is(.site-footer-column a,.site-footer-column button) { --footer-text-ink: #000829; }
.site-footer :is(.site-footer-tagline,.site-footer-column h2,.site-footer-copyright,.site-footer-utilities a,.site-footer-utilities button) { --footer-text-ink: #636a6b; }
.site-footer .site-footer-status { --footer-text-ink: #0100ff; }
.site-footer :is(.site-footer-tagline,.site-footer-column h2,.site-footer-column a,.site-footer-column button,.site-footer-copyright,.site-footer-utilities a,.site-footer-utilities button,.site-footer-status) {
  color: color-mix(in srgb, var(--footer-text-ink) var(--footer-text-opacity), transparent);
  transition: color var(--duration-quick) var(--ease-out);
}
.site-footer :is(.site-footer-tagline,.site-footer-column h2,.site-footer-column a,.site-footer-column button,.site-footer-copyright,.site-footer-utilities a,.site-footer-utilities button,.site-footer-status):is(:hover,:focus-visible) {
  color: var(--footer-text-ink);
}
.site-footer .site-footer-status>span { color: #0100ff; }
@media (prefers-reduced-motion:reduce) {
  .site-footer :is(.site-footer-tagline,.site-footer-column h2,.site-footer-column a,.site-footer-column button,.site-footer-copyright,.site-footer-utilities a,.site-footer-utilities button,.site-footer-status) { transition: none; }
}
