/*

/*
 Theme Name:  CrateView Child
 Theme URI:   https://jwbc.design/collection
 Description: CrateView child theme: Discogs collection grid & album pages (canvas templates), settings page, folder filtering, mockup-matched styles.
 Author: JWBC LLC
 Version: 0.6.902-whosampled-icon
 Template:    twentytwentyfive
 Text Domain: crateview-child
 License:     GPL-2.0-or-later
 License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/

/* v0.6.20 tweaks per mockups */
.cv-summary-wide{ margin-top:40px !important; }
.cv-details{ font-size:18px !important; }
.cv-details .cv-group{ margin-bottom:10px !important; }
/* Remove all YouTube UI completely */
.cv-yt-col, .cv-track .cv-yt, .yt-col, .yt-icon, [data-kind="yt"], img[src*="youtube"], img[alt*="YouTube" i]{ display:none !important; }

/* v0.6.21 extra guard to hide any possible YT icons/anchors in the icon column */
.cv-track .cv-ico-col a[href*="youtube.com"],
.cv-track .cv-ico-col a[href*="youtu.be"],
.cv-track .cv-ico-col img[alt*="YouTube" i],
.cv-track .cv-ico-col img[src*="youtube"],
.cv-track .cv-ico-col img[src*="yt"] { display:none !important; }

/* v0.6.22 remove vertical pipes and adjust summary margin */
.cv-summary-wide{ margin: 40px 0 40px !important; }
.cv-track .cv-ico-col{ border-left:0 !important; border-right:0 !important; }
.cv-track .cv-pipe, .cv-pipe{ display:none !important; }

/* v0.6.23: kill any visual pipes and force summary spacing */
.cv-album-canvas .cv-summary-wide,
body .cv-summary-wide { margin-top:40px !important; }
.cv-track .cv-ico-col,
.cv-track .cv-duration { border-left:0 !important; border-right:0 !important; }
.cv-track .cv-ico-col::before,
.cv-track .cv-ico-col::after,
.cv-track::before,
.cv-track::after { content:none !important; border:none !important; }
.cv-pipe, .cv-track .cv-pipe, .cv-ico-col .cv-pipe { display:none !important; }

/* v0.6.24 — spacing + pipe removal */
.cv-summary-wide{ margin:30px 0 40px !important; }

/* Nuke vertical pipes/separators anywhere in tracklist */
.cv-tracklist .cv-track *{ border-left:0 !important; border-right:0 !important; background-image:none !important; box-shadow:none !important; }
.cv-tracklist .cv-ico-col, .cv-tracklist .cv-duration{ border-left:0 !important; border-right:0 !important; }
.cv-tracklist *, .cv-tracklist *::before, .cv-tracklist *::after{ content: none !important; border-left:0 !important; border-right:0 !important; }
/* In case pipes are literal characters */
.cv-tracklist .cv-track .cv-pipe{ display:none !important; }

/* v0.6.25 — kill any visual pipes/separators in tracklist */
.cv-tracklist .cv-pipe,
.cv-tracklist .pipe,
.cv-tracklist .sep,
.cv-tracklist .separator,
.cv-tracklist .cv-sep,
.cv-tracklist .cv-bar { display:none !important; }
.cv-tracklist .cv-ico-col, .cv-tracklist .cv-duration { border:0 !important; box-shadow:none !important; background-image:none !important; }

/* v0.6.26 — hard-kill vertical pipes/separators in tracklist */
.cv-tracklist .cv-track *,
.cv-tracklist .cv-track { background-image:none !important; box-shadow:none !important; }
.cv-tracklist .cv-ico-col, .cv-tracklist .cv-duration, .cv-tracklist .cv-track > * { border-left:0 !important; border-right:0 !important; }
.cv-tracklist .cv-track *::before,
.cv-tracklist .cv-track *::after { display:none !important; content:none !important; border:0 !important; background:none !important; box-shadow:none !important; }
.cv-tracklist .cv-pipe, .cv-tracklist .pipe, .cv-tracklist .sep, .cv-tracklist .separator, .cv-tracklist .cv-sep, .cv-tracklist .cv-bar { display:none !important; }

/* v0.6.27 hard-stop: remove any 1px separators in tracklist */
.cv-tracklist .cv-track, .cv-tracklist .cv-track *{
  background-image:none !important;
  box-shadow:none !important;
}
.cv-tracklist .cv-track > *{
  border-left:0 !important;
  border-right:0 !important;
}

/* v0.6.40 — CSS-only: details grid per mockup; no DOM rewrites */
:root { --cv-label-w: 120px; --cv-gap-x: 18px; --cv-gap-y: 8px; --cv-font: "Open Sans", system-ui, -apple-system, sans-serif; --cv-ink:#2f2f2f; }

.cv-infoblock .cv-details{ margin-top:6px; font-family:var(--cv-font); color:var(--cv-ink); }
.cv-infoblock .cv-details .cv-group{
  display:grid;
  grid-template-columns: var(--cv-label-w) 1fr;
  column-gap: var(--cv-gap-x);
  row-gap: var(--cv-gap-y);
  margin:0 0 14px;
}
.cv-infoblock .cv-details .cv-group + .cv-group{ margin-top:16px; }
.cv-infoblock .cv-details .cv-group > div strong{ font-weight:700; color:var(--cv-ink); }
.cv-infoblock .cv-details .cv-group > div{ font-size:18px; line-height:1.35; color:var(--cv-ink); }
.cv-infoblock .cv-details .cv-discogs{ margin-top:10px; font-size:18px; }
.cv-infoblock .cv-details .cv-discogs a{ text-decoration:underline; padding-right:18px; position:relative; }

/* Pipes — remove everywhere, even if template re-renders */
.cv-tracklist .cv-vsep{ display:none !important; width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; }
.cv-tracklist .cv-ico-col, .cv-tracklist .cv-duration{ border:0 !important; box-shadow:none !important; background:none !important; }
.cv-track .cv-ico-col::before, .cv-track .cv-ico-col::after,
.cv-track .cv-duration::before, .cv-track .cv-duration::after{ content:none !important; display:none !important; }

/* v0.6.54 — Spotify-only icons; ensure links are clickable; remove pipes */

/* remove pipes */
.cv-tracklist .cv-vsep{ display:none !important; width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; }

/* hide any YouTube links/icons in the icon column */
.cv-ico-col a[href*="youtube.com"],
.cv-ico-col a[href*="youtu.be"],
.cv-ico-col img[alt*="YouTube" i],
.cv-ico-col svg[aria-label*="YouTube" i]{ display:none !important; }

/* make Spotify links obviously clickable and above any overlapping layers */
.cv-track .cv-ico-col{ position:relative; z-index:3; }
.cv-ico-col a[href*="open.spotify.com"]{
  display:inline-flex !important;
  align-items:center;
  pointer-events:auto !important;
  position:relative; z-index:3;
  /* if any global styles disabled pointer-events on icons, undo it */
}
.cv-ico-col a[href*="open.spotify.com"] img,
.cv-ico-col a[href*="open.spotify.com"] svg{
  pointer-events:auto !important;
}

/* make the other track cells sit "under" the icon so they don't intercept clicks */
.cv-track .cv-main, .cv-track .cv-pos, .cv-track .cv-dur{
  position:relative; z-index:1;
}

/* belt-and-suspenders: if any overlay layer exists on the row, disable its pointer events */
.cv-track [class*="overlay"], .cv-track .cv-overlay{ pointer-events:none !important; }

/* v0.6.54p1 — minimal patch: strict details clamp, hide YT, remove pipes */
/* Only keep the three value cells (2,4,6) in the first details group */
.cv-infoblock .cv-details .cv-group > div:nth-child(n+7){ display:none !important; }
.cv-infoblock .cv-details .cv-group > div:nth-child(2),
.cv-infoblock .cv-details .cv-group > div:nth-child(4),
.cv-infoblock .cv-details .cv-group > div:nth-child(6){ display:block !important; }
/* Hide anything inside .cv-details that isn't a group or discogs link */
.cv-infoblock .cv-details > :not(.cv-group):not(.cv-discogs){ display:none !important; }
/* No pipes */
.cv-tracklist .cv-vsep{ display:none !important; width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; }
/* Hide YouTube variants in icon column */
.cv-ico-col a[href*="youtube"],
.cv-ico-col a[href*="youtu.be"],
.cv-ico-col img[src*="youtube"],
.cv-ico-col img[alt*="youtube" i],
.cv-ico-col svg[aria-label*="youtube" i],
.cv-ico-col .youtube, .cv-ico-col .yt, .cv-ico-col .cv-yt{ display:none !important; }
/* Make sure Spotify icon stays clickable above the row */
.cv-track .cv-ico-col{ position:relative; z-index:3; }
.cv-ico-col a[href*="open.spotify.com"]{ display:inline-flex !important; align-items:center; pointer-events:auto !important; position:relative; z-index:3; }
.cv-ico-col a[href*="open.spotify.com"] img,
.cv-ico-col a[href*="open.spotify.com"] svg{ pointer-events:auto !important; }
.cv-track .cv-main, .cv-track .cv-pos, .cv-track .cv-dur{ position:relative; z-index:1; }

/* v0.6.54p2 — extra-aggressive pipe removal */
.cv-tracklist .cv-vsep,
.cv-tracklist [class*="vsep"],
.cv-tracklist [role="separator"],
.cv-tracklist .sep,
.cv-tracklist .divider{ display:none !important; width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; }

/* v0.6.54p3 — custom Spotify logo sizing */


/* v0.6.54p3a — bigger Spotify logo + tighter right padding for durations */
:root{ --cv-dur-pr: 12px; }

.cv-track .cv-dur{ padding-right: var(--cv-dur-pr) !important; text-align:right; }
.cv-runtime{ padding-right: var(--cv-dur-pr) !important; text-align:right; }

/* v0.6.54p3b — icon size like mockup + align durations to runtime edge */
:root{ --cv-dur-pr: 0px; }

.cv-track .cv-dur{ padding-right: 0 !important; text-align:right; }
.cv-runtime{ padding-right: 0 !important; text-align:right; }
/* Ensure the rightmost cell hugs the inner border */
.cv-tracklist{ padding-right:0 !important; }

/* v0.6.54p3e — clean track row layout */
.cv-tracklist{ padding-right:0; margin-right:0; }
.cv-track{ padding:0; margin:0; }

.cv-ico-col{ display:flex; align-items:center; justify-content:center; }

.cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
.cv-runtime{ text-align:right; padding-right:0; }

/* v0.6.54p3f — correct Spotify logo + column width */

.cv-ico-col{ display:flex; align-items:center; justify-content:center; }
.cv-ico-col img.cv-spotify-logo{ max-width:150px; height:auto; display:block; }
.cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }

/* v0.6.54p3g — fixed 150px icon column, proper duration alignment */
.cv-tracklist{ padding-right:0; margin-right:0; }
.cv-track{ padding:0; margin:0; }

.cv-track-main{
  display:grid;
  grid-template-columns: 56px 1fr 150px max-content; /* pos | name | icon(150px) | duration */
  align-items:center;
  column-gap: 0.75rem;
}

.cv-pos{ justify-self:start; }
.cv-name{ justify-self:start; }

.cv-ico-col{ display:flex; align-items:center; justify-content:center; min-width:150px; }
.cv-ico-col img.cv-spotify-logo{ width:150px; height:auto; display:block; }

.cv-dur{
  justify-self:end;
  text-align:right;
  padding-right:0;
  margin-right:0;
}

/* Runtime row aligns with duration column edge */
.cv-runtime{ text-align:right; padding-right:0; margin-right:0; }

/* v0.6.54p3h — specificity bump + edge alignment */
section.cv-tracks .cv-track-main{
  display:grid;
  grid-template-columns: 56px 1fr 150px max-content;
  align-items:center;
  column-gap:.75rem;
}
section.cv-tracks .cv-ico-col{ display:flex; align-items:center; justify-content:center; min-width:150px; }
section.cv-tracks .cv-ico-col img.cv-spotify-logo{ width:150px; height:auto; display:block; }
section.cv-tracks .cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
section.cv-tracks ol.cv-tracklist{ padding-right:0; margin-right:0; }

/* v0.6.54p3k — user-tested grid columns and PNG logo */
section.cv-tracks .cv-track-main{
  display:grid;
  grid-template-columns: 100px 1fr 100px 0px 0px 0px 0px 65px; /* pos | name | icon | (legacy separators) | duration */
  align-items:center;
  column-gap:.5rem;
}
section.cv-tracks .cv-ico-col{ display:flex; align-items:center; justify-content:center; min-width:100px; }
section.cv-tracks .cv-ico-col img.cv-spotify-logo{ width:100%; height:auto; display:block; }
section.cv-tracks .cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
section.cv-tracks ol.cv-tracklist{ padding-right:0; margin-right:0; }
section.cv-tracks .cv-runtime{ text-align:right; padding-right:0; margin-right:0; }

/* v0.6.54p3m — user grid 150px icon column and right-aligned wordmark with 50px padding */
section.cv-tracks .cv-track-main{
  display:grid;
  grid-template-columns: 100px 1fr 150px 0px 0px 0px 0px 65px;
  align-items:center;
  column-gap:.5rem;
}
section.cv-tracks .cv-ico-col{
  padding: 0 50px 0 0;
  display:flex;
  align-items:center;
  justify-content:right;
  min-width:150px;
}
section.cv-tracks .cv-ico-col img.cv-spotify-logo{
  width:150px; height:auto; display:block;
}
section.cv-tracks .cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
section.cv-tracks ol.cv-tracklist{ padding-right:0; margin-right:0; }
section.cv-tracks .cv-runtime{ text-align:right; padding-right:0; margin-right:0; }

/* v0.6.54p3n — enforce grid columns + icon width/padding per user */
section.cv-tracks article.cv-album section.cv-tracks .cv-track-main,
article.cv-album section.cv-tracks .cv-track-main{
  display:grid;
  grid-template-columns: 100px 1fr 150px 0px 0px 0px 0px 65px;
  align-items:center;
  column-gap:.5rem;
}

/* Align the icon area to the right edge of its 150px column */
section.cv-tracks .cv-ico-col{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  padding-right:0;
  min-width:150px;
}

/* User-specified .cv-ico box for the logo (controls width + spacing from duration) */
section.cv-tracks .cv-ico{
  width:100px;
  padding-right:65px;
  display:block;
}
section.cv-tracks .cv-ico img,
section.cv-tracks .cv-ico-col img.cv-spotify-logo{
  width:100%;
  height:auto;
  display:block;
}

/* Keep durations flush-right */
section.cv-tracks .cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
section.cv-tracks ol.cv-tracklist{ padding-right:0; margin-right:0; }
section.cv-tracks .cv-runtime{ text-align:right; padding-right:0; margin-right:0; }


/* Members expander helpers */
.cv-chip--hidden{display:none;}
.cv-chip--past{opacity:.9;}
.cv-chip--toggle{cursor:pointer;border:1px solid var(--border);background:var(--surface);}

/* CrateView: splash template removed in this build */

*/
\g<1>0.6.903

/*
 Theme Name:  CrateView Child
 Theme URI:   https://jwbc.design/collection
 Description: CrateView child theme: Discogs collection grid & album pages (canvas templates), settings page, folder filtering, mockup-matched styles.
 Author: JWBC LLC
 Version: 0.6.880+stagefix
 Template:    twentytwentyfive
 Text Domain: crateview-child
 License:     GPL-2.0-or-later
 License URI: https://www.gnu.org/licenses/gpl-2.0.html
*/

/* v0.6.20 tweaks per mockups */
.cv-summary-wide{ margin-top:40px !important; }
.cv-details{ font-size:18px !important; }
.cv-details .cv-group{ margin-bottom:10px !important; }
/* Remove all YouTube UI completely */
.cv-yt-col, .cv-track .cv-yt, .yt-col, .yt-icon, [data-kind="yt"], img[src*="youtube"], img[alt*="YouTube" i]{ display:none !important; }

/* v0.6.21 extra guard to hide any possible YT icons/anchors in the icon column */
.cv-track .cv-ico-col a[href*="youtube.com"],
.cv-track .cv-ico-col a[href*="youtu.be"],
.cv-track .cv-ico-col img[alt*="YouTube" i],
.cv-track .cv-ico-col img[src*="youtube"],
.cv-track .cv-ico-col img[src*="yt"] { display:none !important; }

/* v0.6.22 remove vertical pipes and adjust summary margin */
.cv-summary-wide{ margin: 40px 0 40px !important; }
.cv-track .cv-ico-col{ border-left:0 !important; border-right:0 !important; }
.cv-track .cv-pipe, .cv-pipe{ display:none !important; }

/* v0.6.23: kill any visual pipes and force summary spacing */
.cv-album-canvas .cv-summary-wide,
body .cv-summary-wide { margin-top:40px !important; }
.cv-track .cv-ico-col,
.cv-track .cv-duration { border-left:0 !important; border-right:0 !important; }
.cv-track .cv-ico-col::before,
.cv-track .cv-ico-col::after,
.cv-track::before,
.cv-track::after { content:none !important; border:none !important; }
.cv-pipe, .cv-track .cv-pipe, .cv-ico-col .cv-pipe { display:none !important; }

/* v0.6.24 — spacing + pipe removal */
.cv-summary-wide{ margin:30px 0 40px !important; }

/* Nuke vertical pipes/separators anywhere in tracklist */
.cv-tracklist .cv-track *{ border-left:0 !important; border-right:0 !important; background-image:none !important; box-shadow:none !important; }
.cv-tracklist .cv-ico-col, .cv-tracklist .cv-duration{ border-left:0 !important; border-right:0 !important; }
.cv-tracklist *, .cv-tracklist *::before, .cv-tracklist *::after{ content: none !important; border-left:0 !important; border-right:0 !important; }
/* In case pipes are literal characters */
.cv-tracklist .cv-track .cv-pipe{ display:none !important; }

/* v0.6.25 — kill any visual pipes/separators in tracklist */
.cv-tracklist .cv-pipe,
.cv-tracklist .pipe,
.cv-tracklist .sep,
.cv-tracklist .separator,
.cv-tracklist .cv-sep,
.cv-tracklist .cv-bar { display:none !important; }
.cv-tracklist .cv-ico-col, .cv-tracklist .cv-duration { border:0 !important; box-shadow:none !important; background-image:none !important; }

/* v0.6.26 — hard-kill vertical pipes/separators in tracklist */
.cv-tracklist .cv-track *,
.cv-tracklist .cv-track { background-image:none !important; box-shadow:none !important; }
.cv-tracklist .cv-ico-col, .cv-tracklist .cv-duration, .cv-tracklist .cv-track > * { border-left:0 !important; border-right:0 !important; }
.cv-tracklist .cv-track *::before,
.cv-tracklist .cv-track *::after { display:none !important; content:none !important; border:0 !important; background:none !important; box-shadow:none !important; }
.cv-tracklist .cv-pipe, .cv-tracklist .pipe, .cv-tracklist .sep, .cv-tracklist .separator, .cv-tracklist .cv-sep, .cv-tracklist .cv-bar { display:none !important; }

/* v0.6.27 hard-stop: remove any 1px separators in tracklist */
.cv-tracklist .cv-track, .cv-tracklist .cv-track *{
  background-image:none !important;
  box-shadow:none !important;
}
.cv-tracklist .cv-track > *{
  border-left:0 !important;
  border-right:0 !important;
}

/* v0.6.40 — CSS-only: details grid per mockup; no DOM rewrites */
:root { --cv-label-w: 120px; --cv-gap-x: 18px; --cv-gap-y: 8px; --cv-font: "Open Sans", system-ui, -apple-system, sans-serif; --cv-ink:#2f2f2f; }

.cv-infoblock .cv-details{ margin-top:6px; font-family:var(--cv-font); color:var(--cv-ink); }
.cv-infoblock .cv-details .cv-group{
  display:grid;
  grid-template-columns: var(--cv-label-w) 1fr;
  column-gap: var(--cv-gap-x);
  row-gap: var(--cv-gap-y);
  margin:0 0 14px;
}
.cv-infoblock .cv-details .cv-group + .cv-group{ margin-top:16px; }
.cv-infoblock .cv-details .cv-group > div strong{ font-weight:700; color:var(--cv-ink); }
.cv-infoblock .cv-details .cv-group > div{ font-size:18px; line-height:1.35; color:var(--cv-ink); }
.cv-infoblock .cv-details .cv-discogs{ margin-top:10px; font-size:18px; }
.cv-infoblock .cv-details .cv-discogs a{ text-decoration:underline; padding-right:18px; position:relative; }

/* Pipes — remove everywhere, even if template re-renders */
.cv-tracklist .cv-vsep{ display:none !important; width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; }
.cv-tracklist .cv-ico-col, .cv-tracklist .cv-duration{ border:0 !important; box-shadow:none !important; background:none !important; }
.cv-track .cv-ico-col::before, .cv-track .cv-ico-col::after,
.cv-track .cv-duration::before, .cv-track .cv-duration::after{ content:none !important; display:none !important; }

/* v0.6.54 — Spotify-only icons; ensure links are clickable; remove pipes */

/* remove pipes */
.cv-tracklist .cv-vsep{ display:none !important; width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; }

/* hide any YouTube links/icons in the icon column */
.cv-ico-col a[href*="youtube.com"],
.cv-ico-col a[href*="youtu.be"],
.cv-ico-col img[alt*="YouTube" i],
.cv-ico-col svg[aria-label*="YouTube" i]{ display:none !important; }

/* make Spotify links obviously clickable and above any overlapping layers */
.cv-track .cv-ico-col{ position:relative; z-index:3; }
.cv-ico-col a[href*="open.spotify.com"]{
  display:inline-flex !important;
  align-items:center;
  pointer-events:auto !important;
  position:relative; z-index:3;
  /* if any global styles disabled pointer-events on icons, undo it */
}
.cv-ico-col a[href*="open.spotify.com"] img,
.cv-ico-col a[href*="open.spotify.com"] svg{
  pointer-events:auto !important;
}

/* make the other track cells sit "under" the icon so they don't intercept clicks */
.cv-track .cv-main, .cv-track .cv-pos, .cv-track .cv-dur{
  position:relative; z-index:1;
}

/* belt-and-suspenders: if any overlay layer exists on the row, disable its pointer events */
.cv-track [class*="overlay"], .cv-track .cv-overlay{ pointer-events:none !important; }

/* v0.6.54p1 — minimal patch: strict details clamp, hide YT, remove pipes */
/* Only keep the three value cells (2,4,6) in the first details group */
.cv-infoblock .cv-details .cv-group > div:nth-child(n+7){ display:none !important; }
.cv-infoblock .cv-details .cv-group > div:nth-child(2),
.cv-infoblock .cv-details .cv-group > div:nth-child(4),
.cv-infoblock .cv-details .cv-group > div:nth-child(6){ display:block !important; }
/* Hide anything inside .cv-details that isn't a group or discogs link */
.cv-infoblock .cv-details > :not(.cv-group):not(.cv-discogs){ display:none !important; }
/* No pipes */
.cv-tracklist .cv-vsep{ display:none !important; width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; }
/* Hide YouTube variants in icon column */
.cv-ico-col a[href*="youtube"],
.cv-ico-col a[href*="youtu.be"],
.cv-ico-col img[src*="youtube"],
.cv-ico-col img[alt*="youtube" i],
.cv-ico-col svg[aria-label*="youtube" i],
.cv-ico-col .youtube, .cv-ico-col .yt, .cv-ico-col .cv-yt{ display:none !important; }
/* Make sure Spotify icon stays clickable above the row */
.cv-track .cv-ico-col{ position:relative; z-index:3; }
.cv-ico-col a[href*="open.spotify.com"]{ display:inline-flex !important; align-items:center; pointer-events:auto !important; position:relative; z-index:3; }
.cv-ico-col a[href*="open.spotify.com"] img,
.cv-ico-col a[href*="open.spotify.com"] svg{ pointer-events:auto !important; }
.cv-track .cv-main, .cv-track .cv-pos, .cv-track .cv-dur{ position:relative; z-index:1; }

/* v0.6.54p2 — extra-aggressive pipe removal */
.cv-tracklist .cv-vsep,
.cv-tracklist [class*="vsep"],
.cv-tracklist [role="separator"],
.cv-tracklist .sep,
.cv-tracklist .divider{ display:none !important; width:0 !important; margin:0 !important; padding:0 !important; border:0 !important; }

/* v0.6.54p3 — custom Spotify logo sizing */


/* v0.6.54p3a — bigger Spotify logo + tighter right padding for durations */
:root{ --cv-dur-pr: 12px; }

.cv-track .cv-dur{ padding-right: var(--cv-dur-pr) !important; text-align:right; }
.cv-runtime{ padding-right: var(--cv-dur-pr) !important; text-align:right; }

/* v0.6.54p3b — icon size like mockup + align durations to runtime edge */
:root{ --cv-dur-pr: 0px; }

.cv-track .cv-dur{ padding-right: 0 !important; text-align:right; }
.cv-runtime{ padding-right: 0 !important; text-align:right; }
/* Ensure the rightmost cell hugs the inner border */
.cv-tracklist{ padding-right:0 !important; }

/* v0.6.54p3e — clean track row layout */
.cv-tracklist{ padding-right:0; margin-right:0; }
.cv-track{ padding:0; margin:0; }

.cv-ico-col{ display:flex; align-items:center; justify-content:center; }

.cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
.cv-runtime{ text-align:right; padding-right:0; }

/* v0.6.54p3f — correct Spotify logo + column width */

.cv-ico-col{ display:flex; align-items:center; justify-content:center; }
.cv-ico-col img.cv-spotify-logo{ max-width:150px; height:auto; display:block; }
.cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }

/* v0.6.54p3g — fixed 150px icon column, proper duration alignment */
.cv-tracklist{ padding-right:0; margin-right:0; }
.cv-track{ padding:0; margin:0; }

.cv-track-main{
  display:grid;
  grid-template-columns: 56px 1fr 150px max-content; /* pos | name | icon(150px) | duration */
  align-items:center;
  column-gap: 0.75rem;
}

.cv-pos{ justify-self:start; }
.cv-name{ justify-self:start; }

.cv-ico-col{ display:flex; align-items:center; justify-content:center; min-width:150px; }
.cv-ico-col img.cv-spotify-logo{ width:150px; height:auto; display:block; }

.cv-dur{
  justify-self:end;
  text-align:right;
  padding-right:0;
  margin-right:0;
}

/* Runtime row aligns with duration column edge */
.cv-runtime{ text-align:right; padding-right:0; margin-right:0; }

/* v0.6.54p3h — specificity bump + edge alignment */
section.cv-tracks .cv-track-main{
  display:grid;
  grid-template-columns: 56px 1fr 150px max-content;
  align-items:center;
  column-gap:.75rem;
}
section.cv-tracks .cv-ico-col{ display:flex; align-items:center; justify-content:center; min-width:150px; }
section.cv-tracks .cv-ico-col img.cv-spotify-logo{ width:150px; height:auto; display:block; }
section.cv-tracks .cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
section.cv-tracks ol.cv-tracklist{ padding-right:0; margin-right:0; }

/* v0.6.54p3k — user-tested grid columns and PNG logo */
section.cv-tracks .cv-track-main{
  display:grid;
  grid-template-columns: 100px 1fr 100px 0px 0px 0px 0px 65px; /* pos | name | icon | (legacy separators) | duration */
  align-items:center;
  column-gap:.5rem;
}
section.cv-tracks .cv-ico-col{ display:flex; align-items:center; justify-content:center; min-width:100px; }
section.cv-tracks .cv-ico-col img.cv-spotify-logo{ width:100%; height:auto; display:block; }
section.cv-tracks .cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
section.cv-tracks ol.cv-tracklist{ padding-right:0; margin-right:0; }
section.cv-tracks .cv-runtime{ text-align:right; padding-right:0; margin-right:0; }

/* v0.6.54p3m — user grid 150px icon column and right-aligned wordmark with 50px padding */
section.cv-tracks .cv-track-main{
  display:grid;
  grid-template-columns: 100px 1fr 150px 0px 0px 0px 0px 65px;
  align-items:center;
  column-gap:.5rem;
}
section.cv-tracks .cv-ico-col{
  padding: 0 50px 0 0;
  display:flex;
  align-items:center;
  justify-content:right;
  min-width:150px;
}
section.cv-tracks .cv-ico-col img.cv-spotify-logo{
  width:150px; height:auto; display:block;
}
section.cv-tracks .cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
section.cv-tracks ol.cv-tracklist{ padding-right:0; margin-right:0; }
section.cv-tracks .cv-runtime{ text-align:right; padding-right:0; margin-right:0; }

/* v0.6.54p3n — enforce grid columns + icon width/padding per user */
section.cv-tracks article.cv-album section.cv-tracks .cv-track-main,
article.cv-album section.cv-tracks .cv-track-main{
  display:grid;
  grid-template-columns: 100px 1fr 150px 0px 0px 0px 0px 65px;
  align-items:center;
  column-gap:.5rem;
}

/* Align the icon area to the right edge of its 150px column */
section.cv-tracks .cv-ico-col{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  padding-right:0;
  min-width:150px;
}

/* User-specified .cv-ico box for the logo (controls width + spacing from duration) */
section.cv-tracks .cv-ico{
  width:100px;
  padding-right:65px;
  display:block;
}
section.cv-tracks .cv-ico img,
section.cv-tracks .cv-ico-col img.cv-spotify-logo{
  width:100%;
  height:auto;
  display:block;
}

/* Keep durations flush-right */
section.cv-tracks .cv-dur{ justify-self:end; text-align:right; padding-right:0; margin-right:0; }
section.cv-tracks ol.cv-tracklist{ padding-right:0; margin-right:0; }
section.cv-tracks .cv-runtime{ text-align:right; padding-right:0; margin-right:0; }


/* Members expander helpers */
.cv-chip--hidden{display:none;}
.cv-chip--past{opacity:.9;}
.cv-chip--toggle{cursor:pointer;border:1px solid var(--border);background:var(--surface);}

/* CrateView: splash template removed in this build */


/* Artist Discography */
.cv-artist-discography { margin-top: 24px; }
.cv-artist-discography h3 { margin: 0 0 12px 0; }
.cv-discog-box {
    background: rgba(0,0,0,0.04);
    border: 1px solid rgba(0,0,0,0.08);
    border-radius: 12px;
    padding: 16px;
}
.cv-discog-row {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
    line-height: 1.2;
}
.cv-discog-row:last-child { margin-bottom: 0; }
.cv-discog-row .cv-icon {
    width: 18px;
    min-width: 18px;
    text-align: center;
    font-weight: 700;
}
.cv-discog-row.not-owned { opacity: 0.7; }
.cv-discog-row a { color: inherit; text-decoration: none; }
.cv-discog-row a:hover { text-decoration: underline; }

.cv-discog-empty { padding: 6px 0; }


/* Discography pills + spacing (match chip feel) */
.cv-discog-box { padding: 18px; }
.cv-discog-row { margin-bottom: 12px; flex-wrap: wrap; }
.cv-discog-row .cv-icon { margin-top: 1px; }

.cv-discog-pill {
    display: inline-block;
    padding: 10px 14px;
    border: 1px solid rgba(0,0,0,0.18);
    border-radius: 10px;
    background: rgba(255,255,255,0.18);
    line-height: 1;
    max-width: 100%;
}
.cv-discog-pill--off { opacity: 0.7; }


/* Artist Discography (mockup) */
.cv-artist-discography { margin-top: 20px; }
.cv-artist-discography h3 { margin: 0 0 14px 0; }

.cv-discog-box{
  background: rgba(0,0,0,0.04);
  border: 1px solid rgba(0,0,0,0.10);
  border-radius: 12px;
  padding: 18px 18px 12px 18px;
}

.cv-discog-row{
  display:flex;
  align-items:center;
  gap:10px;
  margin: 0 0 14px 0;
  line-height: 1.1;
}

.cv-discog-row:last-child{ margin-bottom: 0; }

.cv-discog-row .cv-icon{
  width: 18px;
  min-width: 18px;
  text-align:center;
  font-weight: 700;
  font-size: 16px;
}


/* Artist Discography – match mockup */
.cv-artist-discography .cv-discog-box{
  background: rgba(255,255,255,0.20);
  border: 1px solid rgba(0,0,0,0.12);
  border-radius: 12px;
  padding: 16px 18px;
  max-width: 760px;
}

.cv-artist-discography .cv-discog-item{
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 15px;
  line-height: 1.6;
  margin: 6px 0;
}

.cv-artist-discography .cv-discog-mark{
  width: 18px;
  min-width: 18px;
  text-align: center;
  font-weight: 700;
  font-size: 16px;
}

.cv-artist-discography .cv-discog-item.is-owned .cv-discog-mark{ color: #1d4ed8; } /* blue-ish like checkbox */
.cv-artist-discography .cv-discog-item.is-missing .cv-discog-mark{ color: #b91c1c; } /* red x */

.cv-artist-discography .cv-discog-pipe{
  opacity: 0.6;
}

.cv-artist-discography .cv-discog-title{
  font-size: inherit;
}

.cv-artist-discography a.cv-discog-title{
  text-decoration: none;
  border-bottom: 1px solid rgba(0,0,0,0.35);
}

.cv-artist-discography a.cv-discog-title:hover{
  border-bottom-color: rgba(0,0,0,0.7);
}



/* --- CrateView: Artist Discography CSS tune (v0.6.913) --- */
.cv-discog-box{
  padding: 14px 25px;
  border-radius: 10px;
  background: #f1e3c8;
  border: 1px solid #d2bfa0;
}

.cv-discog-row{
  line-height: 2em;
}

.cv-discog-row .cv-discog-link,
.cv-discog-row .cv-discog-text{
  font-size: 18px;
}


/* --- CrateView: Discography FORCE styles (v0.6.914) --- */
/* Higher specificity + !important to override any global theme styles */
body .cv-artist-discography .cv-discog-box{
  padding: 14px 25px !important;
  border-radius: 10px !important;
  background: #f1e3c8 !important;
  border: 1px solid #d2bfa0 !important;
}

body .cv-artist-discography .cv-discog-box .cv-discog-row{
  line-height: 2em !important;
}

body .cv-artist-discography .cv-discog-box .cv-discog-row .cv-discog-link,
body .cv-artist-discography .cv-discog-box .cv-discog-row .cv-discog-text{
  font-size: 18px !important;
}


/* --- CrateView: v0.6.918 Album details + tracklist spacing + discography styling (scoped) --- */

/* 1) Fix album details layout: each row is a 2-col grid (label left, value right) */
body .cv-infoblock .cv-details{
  display: flex !important;
  gap: 28px !important;
  flex-wrap: wrap !important;
}
body .cv-infoblock .cv-details .cv-group{
  margin: 0 !important;
  display: block !important;
  min-width: 260px !important; /* prevents weird wrapping like Genre/Producer dropping */
}
body .cv-infoblock .cv-details .cv-detail{
  display: grid !important;
  grid-template-columns: 120px 1fr !important;
  column-gap: 28px !important;
  row-gap: 0 !important;
  align-items: start !important;
  margin: 0 0 8px 0 !important;
}
body .cv-infoblock .cv-details .cv-detail > .cv-dt{
  font-weight: 600 !important;
  white-space: nowrap !important;
}
body .cv-infoblock .cv-details .cv-detail > .cv-dd{
  min-width: 0 !important;
}

/* 2) Restore tracklist breathing room (the theme has a reset .cv-track{padding:0}) */
body .cv-tracks .cv-track{
  padding: 8px 0 !important;
  margin: 0 !important;
  line-height: 1.65 !important;
}
body .cv-tracks .cv-track .cv-track-main{
  align-items: center !important;
}

/* 3) Discography section styling (single container + spacing) */
body .cv-artist-discography{ margin-top: 35px !important; }
body .cv-artist-discography .cv-discog-box{
  padding: 14px 25px !important;
  border-radius: 10px !important;
  background: #f1e3c8 !important;
  border: 1px solid #d2bfa0 !important;
}
body .cv-artist-discography .cv-discog-item{
  line-height: 2em !important;
  display: flex !important;
  align-items: center !important;
  gap: 10px !important;
}
body .cv-artist-discography .cv-discog-title{
  font-size: 18px !important;
}
body .cv-artist-discography .cv-discog-item.is-owned .cv-discog-mark{ color: #1f8f3a !important; } /* green */
body .cv-artist-discography .cv-discog-item.is-missing .cv-discog-mark{ color: #d97900 !important; } /* orange */

/* Keep pipes subtle and consistent */
body .cv-artist-discography .cv-discog-pipe{ opacity: .45 !important; }


/* --- CrateView: Album details single-column layout fix (v0.6.919) --- */
/* Goal: Year / Genre / Style / Label / Producer each on its own row, label left + value right */
body .cv-infoblock .cv-details,
body .cv-infoblock .cv-details .cv-group{
  display: block !important;
}

/* Ensure each detail row is a 2-col grid (label/value) */
body .cv-infoblock .cv-details .cv-detail{
  display: grid !important;
  grid-template-columns: 120px 1fr !important;
  column-gap: 18px !important;
  row-gap: 0 !important;
  align-items: start !important;
  margin: 0 0 8px 0 !important;
}

/* Keep label on left and value on right on the same row */
body .cv-infoblock .cv-details .cv-detail .cv-label{
  grid-column: 1 !important;
  white-space: nowrap !important;
}

body .cv-infoblock .cv-details .cv-detail .cv-value{
  grid-column: 2 !important;
  justify-self: start !important;
  min-width: 0 !important;
}

/* If any templates output <p> or <div> wrappers inside values, normalize spacing */
body .cv-infoblock .cv-details .cv-detail .cv-value,
body .cv-infoblock .cv-details .cv-detail .cv-value *{
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* Restore the intended vertical breathing room just in case a reset sneaks back in */
body .cv-tracklist .cv-track,
body .cv-tracklist .cv-track *{
  line-height: 1.6 !important;
}
body .cv-tracklist .cv-track{
  padding-top: 8px !important;
  padding-bottom: 8px !important;
}


/* --- CrateView: Genre/Producer value selector fix (v0.6.920) --- */
/* Some templates output the value without .cv-value (2nd child element). Force it into column 2. */
body .cv-infoblock .cv-details .cv-detail{
  display: grid !important;
  grid-template-columns: 120px 1fr !important;
  column-gap: 18px !important;
  align-items: start !important;
}

/* First child = label */
body .cv-infoblock .cv-details .cv-detail > *:first-child{
  grid-column: 1 !important;
  white-space: nowrap !important;
}

/* Second child (whether or not it has .cv-value) = value */
body .cv-infoblock .cv-details .cv-detail > *:nth-child(2){
  grid-column: 2 !important;
  justify-self: start !important;
  min-width: 0 !important;
}

/* If the value itself contains wrappers, keep them from adding extra top/bottom spacing */
body .cv-infoblock .cv-details .cv-detail > *:nth-child(2),
body .cv-infoblock .cv-details .cv-detail > *:nth-child(2) *{
  margin-top: 0 !important;
  margin-bottom: 0 !important;
}

/* =====================================================================
   FIX: Album details rows must ALWAYS be two-column grid
   - Some earlier selectors set the 2nd row in each group to display:block,
     which forces the value (Genre/Producer) onto a new line.
   - We override that here so every .cv-detail behaves consistently.
   ===================================================================== */
body .cv-infoblock .cv-details .cv-group > .cv-detail{
  display: grid !important;
  grid-template-columns: 120px 1fr !important;
  column-gap: 18px !important;
  align-items: start !important;
}
body .cv-infoblock .cv-details .cv-detail .cv-dt,
body .cv-infoblock .cv-details .cv-detail .cv-dd{
  margin: 0 !important;
}
