* {
  box-sizing: border-box;
}

button,
input,
output {
  font: inherit;
}

.tm4-cassette {
  width: min(92%, 720px);
  margin: 0 auto;
  position: relative;
}

.cassette {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 10;
}

.cassette__svg {
  display: block;
  width: 100%;
  height: 100%;
}

.cassette__tape {
  transform-box: fill-box;
  transform-origin: center;
  animation: tm4-reel-spin linear infinite;
  animation-duration: calc(1.1s / var(--pitch-rate, 1));
  animation-play-state: paused;
}

.cassette.is-playing .cassette__tape {
  animation-play-state: running;
}

.cassette__tape--right {
  animation-direction: reverse;
}

.cassette__pack {
  transform-box: fill-box;
  transform-origin: center;
}

.cassette__pack--left {
  transform: scale(var(--left-reel-scale, 1));
}

.cassette__pack--right {
  transform: scale(var(--right-reel-scale, 0.72));
}

.tm4-cassette-overlay {
  position: absolute;
  inset: 0;
  pointer-events: none;
  display: grid;
  grid-template-columns: 64px 1fr 100px;
  grid-template-rows: 42px 52px 1fr;
  padding: 15.6% 9.8% 20.8%;
  color: #161613;
  text-transform: uppercase;
}

.tm4-cassette-side {
  grid-column: 1;
  grid-row: 1;
  justify-self: start;
  align-self: start;
  width: 36px;
  height: 36px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 0.98rem;
  letter-spacing: 0.04em;
  font-weight: 700;
}

.tm4-cassette-title {
  grid-column: 1 / span 2;
  grid-row: 1;
  align-self: start;
  justify-self: start;
  margin-left: 54px;
  margin-top: 3px;
  font-size: 0.52rem;
  letter-spacing: 0.04em;
  font-weight: 700;
  max-width: 50%;
  text-align: left;
  line-height: 1.2;
}

.tm4-cassette-counter {
  display: none;
}

.tm4-hidden-lists {
  display: none;
}

@keyframes tm4-reel-spin {
  from {
    transform: rotate(0deg);
  }

  to {
    transform: rotate(360deg);
  }
}
