::view-transition-old(root), ::view-transition-new(root) {
  animation-duration: 0.15s;
}

@keyframes zoomIn {
  from {
    transform: scale(0.5);
    opacity: 0;
  }
  to {
    transform: scale(1);
    opacity: 1;
  }
}

@keyframes zoomOut {
  from {
    transform: scale(1);
    opacity: 1;
  }
  to {
    transform: scale(0.5);
    opacity: 0;
  }
}

::view-transition-new(zoom) {
  animation: zoomIn 0.4s ease forwards;
}

::view-transition-old(zoom) {
  animation: zoomOut 0.4s ease forwards;
}

::view-transition-new(navbar),
::view-transition-old(navbar) {
  height: 100%;
  overflow: clip;
  animation-duration: 0.3s;
}

.animated-popover {
  &[open] {
    @starting-style {
      transform: translateY(20px);
      opacity: 0;
    }

    transform: translateY(0);
    opacity: 1;
  }

  &:popover-open {
    @starting-style {
      transform: translateY(20px);
      opacity: 0;
    }

    transform: translateY(0);
    opacity: 1;
  }

  transform: translateY(-50px);
  opacity: 0;
  transition: transform 0.5s, opacity 0.5s, display 0.5s allow-discrete;
}

.spinner {
  --thickness: 3.5px;

  width: 1.5rem;
  aspect-ratio: 1;
  border-radius: 50%;
  background: currentColor;

  --mask:
    radial-gradient(
      farthest-side,
      transparent calc(100% - var(--thickness)),
      #000 calc(100% - var(--thickness) + 0.5px)
    ),
    conic-gradient(from 90deg, #000 0 270deg, transparent 0);

  -webkit-mask: var(--mask);
  mask: var(--mask);

  -webkit-mask-composite: source-in;
  mask-composite: intersect;
}
