.radio-player {
  position: relative;
  width: 100%;
  height: 100%;
  display: grid;
  grid-template-columns: 94px minmax(0, 1fr);
  grid-template-rows: 64px 48px;
  column-gap: 18px;
  row-gap: 8px;
  padding: 13px 16px;
  overflow: hidden;
  border: 1px solid #dfe7ef;
  border-radius: 10px;
  background: linear-gradient(135deg, #fff 0%, #f8fbfe 100%);
  box-shadow: 0 8px 22px rgb(30 73 113 / 9%);
  color-scheme: light;
  font-family: Roboto, "Noto Sans TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
}

.radio-player *,
.radio-player *::before,
.radio-player *::after {
  box-sizing: border-box;
}

.radio-player__art {
  grid-row: 1 / 3;
  width: 94px;
  height: 94px;
  align-self: center;
  display: grid;
  place-items: center;
  border-radius: 10px;
  background: linear-gradient(145deg, #4b96ef 0%, #2f76c3 100%);
  box-shadow: 0 8px 18px rgb(47 118 195 / 20%);
  color: #fff;
}

.radio-player__art svg {
  width: 48px;
  height: 48px;
  overflow: visible;
  fill: currentColor;
}

.radio-player__art path {
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-width: 4;
}

.radio-player__meta {
  min-width: 0;
  align-self: end;
  padding-bottom: 2px;
}

.radio-player__meta strong {
  display: block;
  overflow: hidden;
  color: #273640;
  font-size: 17px;
  font-weight: 500;
  line-height: 23px;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.radio-player__status {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-top: 5px;
  color: #687986;
  font-size: 12px;
  line-height: 16px;
}

.radio-player__status-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: #8da0ae;
}

.radio-player[data-state="verifying"] .radio-player__status-dot,
.radio-player[data-state="connecting"] .radio-player__status-dot {
  background: #e6a13c;
}

.radio-player[data-state="playing"] .radio-player__status-dot {
  background: #2eaa67;
  box-shadow: 0 0 0 4px rgb(46 170 103 / 12%);
}

.radio-player[data-state="error"] .radio-player__status-dot {
  background: #d85a5a;
}

.radio-player .video-container,
.radio-player .video-js,
.radio-player .video-js.vjs-fluid,
.radio-player .video-js.vjs-audio-only-mode {
  width: 100%;
  height: 48px !important;
  min-height: 48px;
  padding-top: 0 !important;
}

.radio-player .video-container {
  min-width: 0;
  overflow: hidden;
  border-radius: 7px;
}

.radio-player .video-js {
  background: transparent;
  color: #536673;
  font-size: 10px;
}

.radio-player .video-js .vjs-tech,
.radio-player .video-js .vjs-poster,
.radio-player .video-js .vjs-big-play-button,
.radio-player .video-js .vjs-loading-spinner,
.radio-player .video-js .vjs-text-track-display,
.radio-player .video-js .vjs-error-display,
.radio-player .video-js .vjs-resize-manager {
  display: none !important;
}

.radio-player .video-js .vjs-control-bar {
  position: relative;
  bottom: auto;
  width: 100%;
  height: 48px;
  display: flex !important;
  align-items: center;
  border: 1px solid #e1e8ee;
  border-radius: 7px;
  background: #f5f8fb;
  color: #536673;
  opacity: 1 !important;
  visibility: visible !important;
}

.radio-player .video-js .vjs-control {
  height: 46px;
}

.radio-player .video-js .vjs-button:hover,
.radio-player .video-js .vjs-button:focus-visible {
  color: #2f76c3;
}

.radio-player .video-js .vjs-play-control {
  width: 4.6em;
  color: #2f76c3;
  font-size: 12px;
}

.radio-player .video-js .vjs-volume-panel {
  height: 46px;
}

.radio-player .video-js .vjs-volume-level {
  background: #408bea;
}

.radio-player .video-js .vjs-slider {
  background: rgb(83 102 115 / 22%);
}

.radio-player .video-js .vjs-live-control {
  min-width: 4.8em;
  justify-content: center;
  color: #748590;
  font-size: 10px;
  font-weight: 500;
  letter-spacing: 0.4px;
}

.radio-player .video-js .vjs-progress-control,
.radio-player .video-js .vjs-current-time,
.radio-player .video-js .vjs-duration,
.radio-player .video-js .vjs-time-divider,
.radio-player .video-js .vjs-remaining-time,
.radio-player .video-js .vjs-playback-rate,
.radio-player .video-js .vjs-chapters-button,
.radio-player .video-js .vjs-descriptions-button,
.radio-player .video-js .vjs-subs-caps-button,
.radio-player .video-js .vjs-audio-button,
.radio-player .video-js .vjs-picture-in-picture-control,
.radio-player .video-js .vjs-fullscreen-control,
.radio-player .video-js .vjs-seek-to-live-control {
  display: none !important;
}

.radio-player .video-js .vjs-custom-control-spacer {
  display: block;
  flex: 1 1 auto;
}

@media (max-width: 480px) {
  .radio-player {
    grid-template-columns: 62px minmax(0, 1fr);
    column-gap: 12px;
    padding: 12px;
  }

  .radio-player__art {
    width: 62px;
    height: 62px;
  }

  .radio-player__art svg {
    width: 36px;
    height: 36px;
  }

  .radio-player__meta strong {
    font-size: 15px;
    line-height: 21px;
  }

  .radio-player .video-js .vjs-volume-control {
    display: none !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .radio-player[data-state="playing"] .radio-player__status-dot {
    box-shadow: none;
  }
}
