/* Y.K. Music Compact Player Sidecar 0.3.3
   Loaded separately; deliberately never modifies the Core stylesheet. */

@media (min-width: 200px) and (min-height: 320px) {
  #ykm-persistent-player,
  #ykm-radio-dock {
    box-sizing: border-box !important;
    width: min(360px, calc(100vw - 24px)) !important;
    left: auto !important;
    right: 12px !important;
    bottom: 12px !important;
    max-height: calc(100dvh - 24px) !important;
  }

  #ykm-persistent-player .ykm-persistent-video,
  #ykm-radio-dock .ykm-radio-video {
    height: 203px !important;
    min-height: 200px !important;
    max-height: none !important;
    aspect-ratio: auto !important;
    width: 100% !important;
  }

  #ykm-persistent-player .ykm-persistent-video iframe,
  #ykm-radio-dock .ykm-radio-video iframe {
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    border: 0 !important;
  }

  body.ykm-player-active {
    padding-bottom: 350px !important;
  }
}

/* At 200–225 CSS pixels, preserve the 200px iframe minimum by using
   the whole screen width, without the usual 12px side margins. */
@media (min-width: 200px) and (max-width: 225px) and (min-height: 320px) {
  #ykm-persistent-player,
  #ykm-radio-dock {
    left: 0 !important;
    right: 0 !important;
    bottom: 0 !important;
    width: 100vw !important;
    border-left: 0 !important;
    border-right: 0 !important;
    border-radius: 12px 12px 0 0 !important;
  }
}

/* A shallow landscape window still needs 200px of video plus buttons. */
@media (min-width: 200px) and (min-height: 320px) and (max-height: 479px) {
  #ykm-persistent-player,
  #ykm-radio-dock {
    bottom: 6px !important;
    max-height: calc(100dvh - 12px) !important;
  }
  #ykm-persistent-player .ykm-persistent-video,
  #ykm-radio-dock .ykm-radio-video {
    height: 200px !important;
    min-height: 200px !important;
  }
  #ykm-persistent-player .ykm-persistent-player-head,
  #ykm-radio-dock .ykm-radio-dock-head {
    padding: 5px 9px !important;
    min-height: 0 !important;
  }
  #ykm-persistent-player .ykm-persistent-actions,
  #ykm-radio-dock .ykm-radio-dock-actions {
    padding: 4px 9px 5px !important;
  }
  #ykm-persistent-player .ykm-persistent-kicker,
  #ykm-radio-dock .ykm-persistent-kicker {
    font-size: 10px !important;
  }
  #ykm-persistent-player .ykm-persistent-title,
  #ykm-radio-dock [data-radio-dock-title] {
    font-size: 13px !important;
  }
  #ykm-persistent-player .ykm-persistent-close,
  #ykm-radio-dock [data-radio-stop] {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
  }
  body.ykm-player-active {
    padding-bottom: 315px !important;
  }
}

/* Desktop: make YouTube's own volume slider and remaining controls usable.
   Mobile keeps the approved compact dimensions unchanged. */
@media (min-width: 1024px) and (min-height: 620px) {
  #ykm-persistent-player,
  #ykm-radio-dock {
    width: min(480px, calc(100vw - 32px)) !important;
  }
  #ykm-persistent-player .ykm-persistent-video,
  #ykm-radio-dock .ykm-radio-video {
    height: 270px !important;
    min-height: 270px !important;
  }
  body.ykm-player-active {
    padding-bottom: 410px !important;
  }
}

.ykm-mini-play {
  box-sizing: border-box;
  appearance: none;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: 1px solid var(--ykm-gold, #d4b36c);
  background: var(--ykm-surface-2, #222936);
  color: var(--ykm-text, #fff);
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.ykm-mini-play:hover {
  border-color: var(--ykm-gold-strong, #f3d482);
  color: var(--ykm-gold-strong, #f3d482);
}
.ykm-mini-play:focus-visible,
.ykm-mini-open-inline:focus-visible {
  outline: 3px solid var(--ykm-gold-strong, #f3d482);
  outline-offset: 3px;
}
.ykm-mini-play-card {
  width: 34px;
  min-width: 34px;
  height: 34px;
  border-radius: 999px;
  font-size: 15px;
}
.ykm-mini-play-song {
  min-height: 44px;
  padding: 10px 17px;
  border-radius: 999px;
  font-size: 14px;
}
.ykm-song-page .ykm-mini-play-song {
  max-width: 100%;
}

/* Alternative playback mode: the Core .ykm-video box already reserves its
   16:9 height using padding-top:56.25%. The preview MUST be absolute inside
   that same box, otherwise it creates a second giant dark rectangle beneath
   the first (observed on the live screenshot with v0.3.0). This is a POSTER,
   NOT an overlay on top of an embedded YouTube iframe. */
.ykm-song-page .ykm-video .ykm-mini-direct-preview {
  position: absolute;
  inset: 0;
  display: block;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  min-height: 0;
  aspect-ratio: auto;
  background: #0d1117;
  border: 0;
  border-radius: inherit;
  overflow: hidden;
}
.ykm-song-page .ykm-video .ykm-mini-direct-poster {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  border: 0;
}
.ykm-song-page .ykm-video .ykm-mini-direct-play {
  appearance: none;
  display: flex;
  align-items: center;
  justify-content: center;
  position: absolute;
  inset: 0;
  box-sizing: border-box;
  width: 100%;
  height: 100%;
  min-height: 0;
  padding: 16px;
  border: 0;
  background: linear-gradient(to bottom, rgba(7, 11, 17, .10) 45%, rgba(7, 11, 17, .78) 100%);
  color: #fff;
  font: inherit;
  text-align: center;
  cursor: pointer;
}
.ykm-song-page .ykm-video .ykm-mini-direct-play:hover {
  background: linear-gradient(to bottom, rgba(7, 11, 17, .20) 35%, rgba(7, 11, 17, .85) 100%);
}
.ykm-song-page .ykm-video .ykm-mini-direct-play:focus-visible {
  outline: 3px solid #f3d482;
  outline-offset: -6px;
}
.ykm-song-page .ykm-video .ykm-mini-direct-play-icon {
  display: grid;
  place-items: center;
  box-sizing: border-box;
  width: 78px;
  height: 58px;
  padding-left: 4px;
  border: 2px solid #e4c781;
  border-radius: 18px;
  background: rgba(11, 16, 24, .88);
  color: #fff;
  font-size: 30px;
  line-height: 1;
  box-shadow: 0 8px 30px #0009;
}
.ykm-song-page .ykm-video .ykm-mini-direct-play:hover .ykm-mini-direct-play-icon {
  background: rgba(40, 33, 17, .96);
  border-color: #fff0b9;
}
.ykm-song-page .ykm-video .ykm-mini-direct-song-caption {
  position: absolute;
  bottom: 15px;
  left: 18px;
  right: 18px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  text-align: left;
  font-size: clamp(13px, 1.65vw, 19px);
  font-weight: 700;
  text-shadow: 0 2px 7px #000;
}
/* The ONLY active YouTube video is now in the visible compact player.
   Remove its former poster so the page has no second fake player. */
.ykm-song-page .ykm-video.ykm-mini-direct-playing {
  display: none !important;
}
.ykm-mini-inline-placeholder {
  width: 100%;
  min-height: 200px;
  box-sizing: border-box;
  padding: 24px 12px;
  display: flex;
  flex-direction: column;
  gap: 13px;
  align-items: center;
  justify-content: center;
  background: #111820;
  color: #fff;
  text-align: center;
}
.ykm-mini-inline-placeholder p {
  margin: 0;
  max-width: 30rem;
  font-size: 14px;
}
.ykm-mini-open-inline {
  appearance: none;
  border: 1px solid #ddc57c;
  border-radius: 999px;
  padding: 11px 16px;
  min-height: 44px;
  background: #272319;
  color: #fff;
  font: inherit;
  font-weight: 700;
  cursor: pointer;
}
.ykm-mini-viewport-notice {
  position: fixed;
  z-index: 100000;
  left: max(8px, env(safe-area-inset-left));
  right: max(8px, env(safe-area-inset-right));
  bottom: max(8px, env(safe-area-inset-bottom));
  margin: 0 auto;
  max-width: 480px;
  box-sizing: border-box;
  border: 1px solid #d4b36c;
  border-radius: 12px;
  padding: 12px 15px;
  background: #161c25;
  color: #fff;
  text-align: center;
  box-shadow: 0 6px 25px #0008;
  font-size: 14px;
}

/* 0.3.3: short landscape viewport. Keep the SAME iframe in its slot;
   CSS grid moves only its visual position. Specificity also covers Mobile
   Polish 0.1.8 (which loads later and uses !important for the mobile dock).
   202px panel + 8px minimum margins fits a 224px-high viewport. */
/* Class follows VISUAL viewport, including toolbars and admin bar. */
@media (min-width: 200px) {
  html.ykm-mini-short body #ykm-persistent-player:not([hidden]),
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) {
    display: grid !important;
    grid-template-columns: var(--ykm-mini-video-w, 200px) minmax(0, 1fr) !important;
    grid-template-rows: minmax(0, 1fr) 60px !important;
    box-sizing: border-box !important;
    width: var(--ykm-mini-panel-w) !important;
    max-width: var(--ykm-mini-panel-w) !important;
    height: var(--ykm-mini-panel-h, 202px) !important;
    min-height: var(--ykm-mini-panel-h, 202px) !important;
    max-height: var(--ykm-mini-panel-h, 202px) !important;
    left: var(--ykm-mini-center, 50%) !important;
    right: auto !important;
    top: auto !important;
    bottom: calc(var(--ykm-mini-bottom, 0px) + max(8px, env(safe-area-inset-bottom))) !important;
    transform: translateX(-50%) !important;
    margin: 0 !important;
    padding: 0 !important;
    border-width: 1px !important;
    border-style: solid !important;
    border-radius: 12px !important;
    overflow: visible !important;
  }
  html.ykm-mini-short body #ykm-persistent-player:not([hidden]) .ykm-persistent-video,
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) .ykm-radio-video {
    grid-column: 1 !important;
    grid-row: 1 / 3 !important;
    display: block !important;
    box-sizing: border-box !important;
    width: var(--ykm-mini-video-w, 200px) !important;
    height: var(--ykm-mini-video-h, 200px) !important;
    min-height: var(--ykm-mini-video-h, 200px) !important;
    max-height: var(--ykm-mini-video-h, 200px) !important;
    aspect-ratio: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
  }
  html.ykm-mini-short body #ykm-persistent-player:not([hidden]) .ykm-persistent-video iframe,
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) .ykm-radio-video iframe {
    display: block !important;
    width: var(--ykm-mini-video-w, 200px) !important;
    height: var(--ykm-mini-video-h, 200px) !important;
    border: 0 !important;
  }
  html.ykm-mini-short body #ykm-persistent-player:not([hidden]) .ykm-persistent-player-head,
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) .ykm-radio-dock-head {
    grid-column: 2 !important;
    grid-row: 1 !important;
    min-width: 0 !important;
    min-height: 0 !important;
    padding: 50px 12px 6px !important;
    align-items: flex-start !important;
    position: static !important;
  }
  html.ykm-mini-short body #ykm-persistent-player:not([hidden]) .ykm-persistent-close,
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) [data-radio-stop] {
    position: absolute !important;
    top: 8px !important;
    right: 10px !important;
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
  }
  html.ykm-mini-short body #ykm-persistent-player:not([hidden]) .ykm-persistent-actions,
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) .ykm-radio-dock-actions {
    grid-column: 2 !important;
    grid-row: 2 !important;
    box-sizing: border-box !important;
    position: static !important;
    width: 100% !important;
    height: 60px !important;
    min-height: 0 !important;
    padding: 8px 10px !important;
  }
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) .ykm-radio-dock-actions {
    display: grid !important;
    grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
    gap: 6px !important;
  }
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) .ykm-radio-dock-actions > button {
    width: 100% !important;
    min-width: 0 !important;
    height: 38px !important;
  }
  html.ykm-mini-short body #ykm-radio-dock:not([hidden]) [data-radio-dock-youtube] {
    display: none !important;
  }
  html.ykm-mini-short body.ykm-player-active { padding-bottom: 226px !important; }
}

/* Anchor to the visible browser area even when layout viewport stays taller. */
html.ykm-mini-visible-fit body #ykm-persistent-player:not([hidden]),
html.ykm-mini-visible-fit body #ykm-radio-dock:not([hidden]) {
  bottom: calc(var(--ykm-mini-bottom, 0px) + max(8px, env(safe-area-inset-bottom))) !important;
}
html.ykm-mini-short body #ykm-persistent-player .ykm-persistent-favorite {
  right: 52px !important;
  top: 8px !important;
  bottom: auto !important;
  width: 34px !important;
  height: 34px !important;
}
