html.pd-motion-active,
html.pd-motion-active body {
  overflow: hidden;
}

.pd-motion-surface {
  transform-origin: center;
  backface-visibility: hidden;
}

.pd-motion-overlay {
  position: fixed;
  z-index: 40;
  top: 0;
  left: 50%;
  width: min(100vw, 390px);
  height: min(100svh, 844px);
  overflow: hidden;
  pointer-events: none;
  opacity: 0;
  transform: translate3d(-50%, 0, 0);
  contain: layout paint style;
  isolation: isolate;
}

.pd-motion-veil {
  position: absolute;
  z-index: -1;
  inset: 0;
  background: color-mix(in oklab, var(--bg), transparent 94%);
  opacity: 0;
  will-change: opacity;
}

.pd-motion-gate-line {
  position: absolute;
  left: 24px;
  width: calc(100% - 48px);
  height: 1px;
  background: color-mix(in oklab, var(--muted), transparent 38%);
  opacity: 0;
  transform: scaleX(0.05);
  transform-origin: center;
  will-change: transform, opacity;
}

.pd-motion-gate-line--top {
  top: calc(50% - 42px);
}

.pd-motion-gate-line--bottom {
  top: calc(50% + 42px);
}

.pd-motion-gate-pulse {
  position: absolute;
  top: calc(50% - 2px);
  left: 24px;
  width: 72px;
  height: 4px;
  border-radius: 2px;
  background: linear-gradient(
    90deg,
    transparent,
    color-mix(in oklab, var(--accent), transparent 14%),
    var(--fg),
    transparent
  );
  box-shadow: 0 0 12px color-mix(in oklab, var(--accent), transparent 48%);
  opacity: 0;
  transform: translate3d(-96px, 0, 0) scaleX(0.72);
  transform-origin: center;
  will-change: transform, opacity;
}

.pd-motion-active .bottom-nav {
  position: relative;
  z-index: 3;
}

.pd-motion-active .bottom-nav__rail {
  opacity: 0;
}

.bottom-nav__item.pd-motion-target .bottom-nav__icon {
  filter: drop-shadow(0 0 6px color-mix(in oklab, var(--accent), transparent 45%));
}

@media (prefers-reduced-motion: reduce) {
  .pd-motion-gate-line,
  .pd-motion-gate-pulse {
    display: none;
  }

  .pd-motion-veil {
    background: var(--bg);
  }
}
