/* Playlist-only adaptive geometry. Existing row metrics remain authoritative. */
body.playlists-page .playlist-playerShell{
  --playlist-dock-base-top:4px;
  --playlist-dock-extra:0px;
  padding-top:calc(var(--playlist-dock-base-top) + var(--playlist-dock-extra));
  transition:padding-top 210ms ease;
}
body.playlists-page .playlist-modeBar{bottom:calc(var(--playlist-dock-nav-bottom, 48px) + var(--playlist-dock-growth, 0px) + var(--playlist-viewport-lift, 0px));transition:bottom 210ms ease;}
body.playlists-page .playlist-colorPanel{
  position:absolute;inset:0 0 auto;height:var(--playlist-dock-extra);box-sizing:border-box;
  display:flex;align-items:center;justify-content:center;gap:8px;padding:4px 22px 4px 8px;
  overflow:auto;overscroll-behavior:contain;flex-wrap:wrap;align-content:flex-start;
  color:inherit;font:inherit;font-size:12px;
}
body.playlists-page .playlist-colorPanel[hidden]{display:none;}
.playlist-colorPanel label{display:flex;align-items:center;gap:4px;white-space:nowrap;}
.playlist-colorPanel input[type=color]{width:32px;height:28px;padding:0;border:1px solid currentColor;cursor:pointer;}
.playlist-colorPanel input[type=text]{box-sizing:content-box;width:9ch;min-width:9ch;flex-shrink:0;font:inherit;padding:4px;border:1px solid currentColor;border-radius:5px;}
body.playlists-page .playlist-colorPanel button{font:inherit;padding:5px 8px;min-height:28px;cursor:pointer;}
#playlistAppearanceStatus:empty{display:none;}
#playlistAppearanceStatus{flex-basis:100%;text-align:center;font-size:10px;}
body.playlists-page .playlist-dockToggle{position:absolute;right:2px;top:1px;width:18px;height:14px;min-height:0;min-width:0;padding:0;border:0;background:transparent;color:inherit;font:14px/12px sans-serif;cursor:pointer;z-index:1;}
body.playlists-page :is(.playlist-dockToggle,.playlist-dockGrip,.playlist-colorPanel input,.playlist-colorPanel button,.playlist-dockChoices button):focus-visible{outline:2px solid currentColor;outline-offset:2px;}
body.playlists-page .playlist-dockGrip{padding:0;border:0;border-radius:0;pointer-events:none;}
.playlist-dockChoices[hidden]{display:none;}
.playlist-dockChoices{position:absolute;bottom:calc(100% + 8px);right:0;display:grid;gap:4px;min-width:130px;max-width:100%;padding:8px;border:1px solid currentColor;border-radius:12px;background:#fff;color:#111;box-sizing:border-box;z-index:2;}
.playlist-dockChoices button{font:inherit;font-size:12px;min-height:40px;cursor:pointer;}
body.playlists-page.is-dark .playlist-dockChoices{background:#121212;color:#fff;}
body.playlists-page .playlist-playerShell__meta{touch-action:manipulation;}
body.playlists-page.has-mobile-playlist-dock .playlist-playerShell{touch-action:manipulation;}
/* Reserve vertical swipe on metadata/background only. Controls retain their own actions. */
body.playlists-page.has-mobile-playlist-dock .playlist-playerShell.is-expanded .playlist-playerShell__meta{touch-action:pan-x pinch-zoom;}
body.playlists-page .playlist-colorPanel{touch-action:pan-y pinch-zoom;}
@media (max-width:900px){
  body.playlists-page .playlist-mobileControlsDock > .playlist-playerShell{--playlist-dock-base-top:5px;padding-top:calc(var(--playlist-dock-base-top) + var(--playlist-dock-extra));position:relative;}
  body.playlists-page .playlist-mobileControlsDock > .playlist-modeBar{position:relative;inset:auto;}
  body.playlists-page.has-mobile-playlist-dock .playlist-modeBar{gap:0;touch-action:pan-y pinch-zoom;}
  body.playlists-page.has-mobile-playlist-dock .playlist-modeBar__group{overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;flex:1 1 auto;touch-action:pan-x pan-y pinch-zoom;}
  .has-mobile-playlist-dock .playlist-modeBar__group::-webkit-scrollbar{display:none;}
  body.playlists-page.has-mobile-playlist-dock .playlist-dockGrip{position:relative;flex:0 0 44px;width:44px;height:44px;min-width:44px;margin:0;background:none;pointer-events:auto;touch-action:pan-y pinch-zoom;cursor:default;}
  .has-mobile-playlist-dock .playlist-dockGrip::before{content:'';display:block;width:3px;height:20px;margin:auto;background:currentColor;border-radius:2px;box-shadow:5px 0 currentColor;}
  body.playlists-page.has-mobile-playlist-dock .playlist-modeBar[data-dock^=half]{width:var(--playlist-drag-width,max(50%,calc(102px + var(--playlist-min-tab, 72px))));max-width:100%;}
  body.playlists-page.has-mobile-playlist-dock .playlist-modeBar[data-dock=full]{width:var(--playlist-drag-width,100%);}
  body.playlists-page.has-mobile-playlist-dock .playlist-modeBar[data-dock=half-left]{justify-self:start;}
  body.playlists-page.has-mobile-playlist-dock .playlist-modeBar[data-dock=half-right]{justify-self:end;}
  body.playlists-page.has-mobile-playlist-dock .playlist-modeBar[style*="--playlist-drag-offset"]{justify-self:start;left:var(--playlist-drag-offset);}
  body.playlists-page .playlist-colorPanel{gap:5px;font-size:11px;}
}
@media (max-width:360px){body.playlists-page .playlist-mobileControlsDock > .playlist-playerShell{--playlist-dock-base-top:4px;}}
/* Early hydration uses an html flag, before body or the async player exists. */
html[data-playlist-default=dark] body.playlists-page{background-color:#0a0a0a;}
body.playlists-page .playlist-module__lordKiPortraitImage--resolved{opacity:1;object-fit:contain;}
body.playlists-page .playlist-module__lordKiPortraitImage--resolved[src$="/lord-ki-portrait-custom.webp"]{object-fit:cover;}
body.playlists-page .playlist-module__lordKiPortraitMedia.has-resolved-artwork .playlist-module__lordKiPortraitImage:not(.playlist-module__lordKiPortraitImage--resolved){visibility:hidden;}
body.playlists-page .playlist-module__yngfPortraitUpload--custom{display:none;}
body.playlists-page.is-playlist-custom :is(.playlist-module__yngfPortraitUpload--day,.playlist-module__yngfPortraitUpload--night){display:none;}
body.playlists-page.is-playlist-custom .playlist-module__yngfPortraitUpload--custom{display:grid;}
body.playlists-page #playlistYngfPortraitCustomRemove[hidden]{display:none;}
body.playlists-page .playlist-module__yngfPortraitUpload--custom img{object-fit:contain;}
@media (prefers-reduced-motion:reduce){body.playlists-page :is(.playlist-playerShell,.playlist-modeBar,.playlist-module__lordKiPortraitImage){transition:none;}}

.playlist-dockSwipe{display:none;}
.has-mobile-playlist-dock .playlist-playerShell.is-expanded .playlist-dockSwipe{display:block;position:absolute;inset:0 24px auto 16px;height:14px;touch-action:pan-x pinch-zoom;}
.playlist-dockSwipe::before{content:'';display:block;width:28px;height:2px;border-radius:2px;background:currentColor;margin:5px auto;}
body.playlists-page.has-mobile-playlist-dock .playlist-colorPanel{padding-top:14px;}
body.playlists-page .playlist-module__lordKiPortraitImage--resolved[hidden]{display:none;}
html[data-playlist-custom] body.playlists-page > .playlists-topRow .nav a{color:var(--playlist-custom-ink);}

body.playlists-page .playlist-playerShell__meta{user-select:none;}

body.playlists-page .playlist-playerShell{bottom:var(--playlist-viewport-lift,0px);}
@media (max-width:900px){body.playlists-page .playlist-mobileControlsDock{bottom:var(--playlist-viewport-lift,0px);}body.playlists-page .playlist-mobileControlsDock > .playlist-playerShell{bottom:auto;}}
@media (min-width:901px){
  body.playlists-page :is(.playlist-trainJazzLink,.playlist-goHomeLink){bottom:calc(96px + var(--playlist-dock-growth,0px) + var(--playlist-viewport-lift,0px));transition:bottom 210ms ease;}
  body.playlists-page .playlist-paintDock{bottom:calc(214px + var(--playlist-dock-growth,0px) + var(--playlist-viewport-lift,0px));transition:bottom 210ms ease;}
}
@media (prefers-reduced-motion:reduce){body.playlists-page :is(.playlist-trainJazzLink,.playlist-goHomeLink,.playlist-paintDock){transition:none;}}

html:not([data-playlist-custom]) body.playlists-page .harlemWorld__profileEditor [data-profile-custom]{display:none;}

/* Continuous geometry: drag previews and released positions use the same values. */
@media (max-width:900px){
  body.playlists-page.has-mobile-playlist-dock .playlist-modeBar[data-dock]{
    width:var(--playlist-drag-width,100%);max-width:100%;
    justify-self:start;left:var(--playlist-drag-offset,0px);
  }
  body.playlists-page.has-mobile-playlist-dock .playlist-dockGrip{touch-action:none;}
}
.playlist-dockRange{display:grid;gap:4px;font-size:12px;}
.playlist-dockRange input{width:100%;min-width:0;accent-color:currentColor;}

body.playlists-page.has-mobile-playlist-dock .playlist-dockGrip.is-moving::before{content:'';width:24px;height:24px;background:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20d%3D%22M3%2012h18M7%208l-4%204%204%204m10-8%204%204-4%204%22%20fill%3D%22none%22%20stroke%3D%22white%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22square%22%2F%3E%3C%2Fsvg%3E") center/20px 20px no-repeat;box-shadow:none;}
