.preview-player {
  position: relative;
  display: grid;
  width: min(100%, var(--preview-width, 36rem));
  gap: 0.65rem;
  place-items: center;
  transition: width 240ms ease;
}

.preview-player[data-aspect="9:16"] {
  width: min(100%, var(--preview-portrait-width, 24rem));
}

.preview-player[data-aspect="16:9"] {
  width: min(100%, var(--preview-landscape-width, 58rem));
}

.preview-player[data-aspect="1:1"] {
  width: min(100%, var(--preview-square-width, 38rem));
}

.preview-player .stage {
  position: relative;
  width: 100%;
}

.preview-autofit {
  line-break: strict;
  overflow-wrap: normal;
  text-wrap: balance;
}

.preview-player .stage[data-aspect="9:16"] {
  aspect-ratio: 9 / 16;
}

.preview-player .stage[data-aspect="16:9"] {
  aspect-ratio: 16 / 9;
}

.preview-player .stage[data-aspect="1:1"] {
  aspect-ratio: 1 / 1;
}

.preview-control {
  appearance: none;
  border: 0;
  color: #fff;
  cursor: pointer;
  font: inherit;
  text-decoration: none;
}

.preview-play {
  position: absolute;
  inset: 50% auto auto 50%;
  z-index: 10;
  display: grid;
  width: 4.25rem;
  height: 4.25rem;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.2);
  border-radius: 999px;
  background: rgba(8, 13, 28, 0.78);
  box-shadow: 0 12px 32px rgba(0, 0, 0, 0.28);
  backdrop-filter: blur(12px);
  transform: translate(-50%, -50%);
  transition: opacity 160ms ease, transform 160ms ease;
}

.preview-play:hover {
  transform: translate(-50%, -50%) scale(1.06);
}

.preview-play svg {
  width: 1.45rem;
  height: 1.45rem;
  margin-left: 0.18rem;
  fill: currentColor;
}

.preview-toolbar {
  position: static;
  z-index: 11;
  display: flex;
  width: 100%;
  min-height: 3rem;
  align-items: center;
  gap: 0.45rem;
  padding: 0.42rem 0.5rem;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 0.8rem;
  background: rgba(8, 13, 28, 0.92);
  box-shadow: 0 0.7rem 2rem rgba(0, 0, 0, 0.18);
  backdrop-filter: blur(12px);
}

.preview-toolbar .preview-control {
  display: grid;
  width: 2rem;
  height: 2rem;
  flex: 0 0 auto;
  place-items: center;
  border-radius: 0.5rem;
  background: transparent;
}

.preview-toolbar .preview-control:hover,
.preview-toolbar .preview-control:focus-visible {
  background: rgba(255, 255, 255, 0.12);
}

.preview-toolbar svg {
  width: 1rem;
  height: 1rem;
  fill: currentColor;
}

.preview-progress {
  width: 100%;
  height: 1.25rem;
  min-width: 4rem;
  flex: 1 1 8rem;
  margin: 0;
  appearance: none;
  cursor: pointer;
  background: transparent;
}

.preview-progress::-webkit-slider-runnable-track {
  height: 0.26rem;
  border-radius: 999px;
  background:
    linear-gradient(
      to right,
      #fff 0 var(--preview-progress, 0%),
      rgba(255, 255, 255, 0.24) var(--preview-progress, 0%) 100%
    );
}

.preview-progress::-moz-range-track {
  height: 0.26rem;
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.24);
}

.preview-progress::-moz-range-progress {
  height: 0.26rem;
  border-radius: 999px;
  background: #fff;
}

.preview-progress::-webkit-slider-thumb {
  width: 0.85rem;
  height: 0.85rem;
  margin-top: -0.295rem;
  appearance: none;
  border: 2px solid #0b1020;
  border-radius: 999px;
  background: #fff;
  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.3);
}

.preview-progress::-moz-range-thumb {
  width: 0.75rem;
  height: 0.75rem;
  border: 2px solid #0b1020;
  border-radius: 999px;
  background: #fff;
}

.preview-time {
  min-width: 5.15rem;
  color: rgba(255, 255, 255, 0.8);
  font-size: 0.68rem;
  font-variant-numeric: tabular-nums;
  text-align: right;
}

.preview-aspects {
  display: flex;
  flex: 0 0 auto;
  align-items: center;
  gap: 0.18rem;
  padding: 0.16rem;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 0.62rem;
  background: rgba(255, 255, 255, 0.06);
}

.preview-aspect {
  height: 2rem;
  min-width: 2.75rem;
  flex: 0 0 auto;
  appearance: none;
  border: 0;
  border-radius: 0.45rem;
  color: rgba(255, 255, 255, 0.62);
  cursor: pointer;
  background: transparent;
  padding: 0 0.48rem;
  font: 600 0.68rem/1 system-ui, sans-serif;
  transition: color 140ms ease, background 140ms ease, box-shadow 140ms ease;
}

.preview-aspect:hover,
.preview-aspect:focus-visible {
  color: #fff;
  background: rgba(255, 255, 255, 0.1);
}

.preview-aspect.is-active {
  color: #0b1020;
  background: #fff;
  box-shadow: 0 0.2rem 0.7rem rgba(0, 0, 0, 0.2);
}

body.is-playing .preview-play {
  opacity: 0;
  pointer-events: none;
  transform: translate(-50%, -50%) scale(0.88);
}

.preview-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

@media (max-width: 520px) {
  .preview-toolbar {
    gap: 0.25rem;
    padding-inline: 0.35rem;
  }

  .preview-time {
    min-width: 4.6rem;
    font-size: 0.62rem;
  }

  .preview-aspects {
    gap: 0.1rem;
    padding: 0.12rem;
  }

  .preview-aspect {
    min-width: 2.35rem;
    padding-inline: 0.3rem;
    font-size: 0.62rem;
  }
}

@media (prefers-reduced-motion: reduce) {
  .preview-play,
  .preview-player {
    transition: none;
  }
}
