/*
 * Hypnotic Pulse Artist Portal 3.1
 * Native LabelGrid Bridge layout.
 *
 * The LabelGrid header stays untouched.
 * Everything after the separator is rendered in one independent module grid.
 */

:root{
  --hp-artist-green: var(--hp-brand, #39ff14);
  --hp-artist-gap-x: 22px;
  --hp-artist-gap-y: 18px;
}

/* Header stays LabelGrid-native. */
.single-artist #lg_content_release.hp-lgt-bridge-active{
  display:block !important;
  width:100% !important;
  min-width:0 !important;
}

.single-artist #lg_content_release.hp-lgt-bridge-active > .separator{
  margin:18px 0 14px !important;
}

/* ONE independent module grid. Old LabelGrid floats no longer participate. */
.single-artist #lg_content_release.hp-lgt-bridge-active > .hp-artist-modules{
  display:grid !important;
  grid-template-columns:repeat(12,minmax(0,1fr)) !important;
  grid-auto-flow:row dense !important;
  grid-auto-rows:min-content !important;

  width:100% !important;
  min-width:0 !important;
  max-width:100% !important;

  margin:0 !important;
  padding:0 !important;

  column-gap:var(--hp-artist-gap-x) !important;
  row-gap:var(--hp-artist-gap-y) !important;

  align-items:start !important;
  align-content:start !important;
  float:none !important;
  clear:both !important;
}

/* All modules are peers. */
.single-artist .hp-artist-modules--bridge > .hp-artist-module{
  grid-column:span var(--hp-module-span,12) !important;

  box-sizing:border-box !important;
  width:auto !important;
  min-width:0 !important;
  max-width:100% !important;

  height:auto !important;
  min-height:0 !important;

  margin:0 !important;
  padding:0 !important;

  float:none !important;
  clear:none !important;
  position:static !important;
  align-self:start !important;
}

.single-artist .hp-artist-module__title{
  margin:0 0 7px !important;
  padding:0 !important;
  color:var(--hp-artist-green) !important;
  font:inherit !important;
  font-weight:800 !important;
  line-height:1.15 !important;
}

/* ------------------------------------------------------------
 * RELEASES
 * Keep the ORIGINAL LabelGrid structure and visual behavior.
 * Only neutralize the old 30% float/width because the module controls width now.
 * ------------------------------------------------------------ */
.single-artist .hp-artist-module--releases .hp-lgt-native-releases.right_col{
  display:block !important;
  float:none !important;
  clear:none !important;

  width:100% !important;
  min-width:0 !important;
  max-width:360px !important;

  margin:0 !important;
  padding:0 !important;
}

.single-artist .hp-artist-module--releases .right_col .artists{
  width:100% !important;
  margin:0 !important;
}

.single-artist .hp-artist-module--releases .right_col .titleartist{
  display:none !important;
}

/* Preserve LabelGrid's original visible gap. */
.single-artist .hp-artist-module--releases .right_col .release_data{
  width:100% !important;
  margin:0 0 1em !important;
  overflow:hidden !important;
}

/* Preserve original card construction and hover. */
.single-artist .hp-artist-module--releases .right_col .release_data a{
  display:inline-flex !important;
  width:100% !important;
  min-height:0 !important;
  text-decoration:none !important;
  vertical-align:middle !important;
  transition:all .2s ease !important;
}

.single-artist .hp-artist-module--releases .right_col .release_data .image_release{
  display:inline-block !important;
  flex:0 0 auto !important;
}

.single-artist .hp-artist-module--releases .right_col .release_data .image_release img{
  display:block !important;
  width:80px !important;
  max-width:80px !important;
  height:auto !important;
}

.single-artist .hp-artist-module--releases .right_col .release_data .title_release{
  width:63% !important;
  height:auto !important;
  margin:auto 5px !important;
  text-align:center !important;
  vertical-align:middle !important;
  font-size:.85em !important;
}

/* ------------------------------------------------------------
 * SPOTIFY / SOUNDCLOUD
 * No LabelGrid .spotify_preview class: no inherited 67% / 3% / 2em rules.
 * ------------------------------------------------------------ */
.single-artist .hp-artist-spotify,
.single-artist .hp-artist-spotify iframe{
  display:block !important;
  box-sizing:border-box !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  margin:0 !important;
  padding:0 !important;
}

.single-artist .hp-artist-spotify{
  height:152px !important;
  min-height:152px !important;
  max-height:152px !important;
  overflow:hidden !important;
}

.single-artist .hp-artist-spotify iframe{
  height:152px !important;
  min-height:152px !important;
  max-height:152px !important;
}

.single-artist .hp-artist-soundcloud{
  display:grid !important;
  gap:10px !important;
  width:100% !important;
  margin:0 !important;
  padding:0 !important;
}

.single-artist .hp-artist-soundcloud iframe{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  height:166px !important;
  margin:0 !important;
}

/* ------------------------------------------------------------
 * BIOGRAPHY
 * No LabelGrid .press_release/.cont: no 67%, 3%, 3em padding or quote spacer.
 * ------------------------------------------------------------ */
.single-artist .hp-artist-bio{
  width:100% !important;
  margin:0 !important;
  padding:0 !important;
  color:var(--hp-artist-green) !important;
  line-height:1.65 !important;
}

.single-artist .hp-artist-bio p{
  margin:0 0 10px !important;
  padding:0 !important;
}

.single-artist .hp-artist-bio p:last-child{
  margin-bottom:0 !important;
}

/* YouTube */
.single-artist .hp-artist-youtube-grid{
  display:grid !important;
  grid-template-columns:repeat(3,minmax(0,1fr)) !important;
  gap:10px !important;
  width:100% !important;
}

.single-artist .hp-artist-youtube-card{
  position:relative !important;
  display:block !important;
  overflow:hidden !important;
  aspect-ratio:16/9 !important;
  border:1px solid rgba(57,255,20,.25) !important;
  border-radius:8px !important;
  background:#080808 !important;
}

.single-artist .hp-artist-youtube-card img{
  display:block !important;
  width:100% !important;
  height:100% !important;
  object-fit:cover !important;
}

.single-artist .hp-artist-youtube-card span{
  position:absolute !important;
  inset:0 !important;
  display:grid !important;
  place-items:center !important;
  color:#fff !important;
  font-size:30px !important;
  text-shadow:0 2px 10px #000 !important;
}

/* Events */
.single-artist .hp-artist-events{
  display:grid !important;
  grid-template-columns:1fr !important;
  gap:8px !important;
}

.single-artist .hp-artist-event{
  display:grid !important;
  grid-template-columns:100px minmax(0,1fr) !important;
  align-items:center !important;
  gap:10px !important;
  padding:10px 12px !important;
  border:1px solid rgba(57,255,20,.25) !important;
  border-radius:8px !important;
  text-decoration:none !important;
}

/* Responsive */
@media(max-width:980px){
  .single-artist .hp-artist-modules--bridge > .hp-artist-module{
    grid-column:1 / -1 !important;
  }

  .single-artist .hp-artist-module--releases .hp-lgt-native-releases.right_col{
    max-width:420px !important;
  }

  .single-artist .hp-artist-youtube-grid{
    grid-template-columns:repeat(2,minmax(0,1fr)) !important;
  }
}

@media(max-width:620px){
  .single-artist #lg_content_release.hp-lgt-bridge-active > .hp-artist-modules{
    grid-template-columns:1fr !important;
    gap:14px !important;
  }

  .single-artist .hp-artist-youtube-grid{
    grid-template-columns:1fr !important;
  }
}


/* ============================================================
   3.1.1 — LABELGRID SPECIFICITY FIX
   Beats LabelGrid's max-width:1024px #lg_content_release rules.
   ============================================================ */

/* Keep the top separator compact. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
  margin:12px 0 12px!important;
}

/* Compact vertical rhythm between actual module rows. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-modules{
  row-gap:12px!important;
  column-gap:22px!important;
}

/*
 * LabelGrid at <=1024px sets:
 * #lg_content_release.release_detail .right_col .release_data {
 *   width:50%; display:inline-block;
 * }
 * These selectors deliberately carry the same ID plus more classes.
 */
body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col{
  display:block!important;
  float:none!important;
  clear:none!important;
  width:100%!important;
  min-width:0!important;
  max-width:330px!important;
  margin:0!important;
  padding:0!important;
}

body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .artists{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  margin:0!important;
  padding:0!important;
}

body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .release_data{
  display:block!important;
  float:none!important;
  clear:both!important;
  box-sizing:border-box!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  margin:0 0 11px!important;
  padding:0!important;
  overflow:hidden!important;
}

body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .release_data a{
  display:flex!important;
  align-items:stretch!important;
  box-sizing:border-box!important;
  width:100%!important;
  min-width:100%!important;
  max-width:100%!important;
  min-height:70px!important;
  margin:0!important;
  padding:0!important;
  border:1px solid rgba(57,255,20,.38)!important;
  border-radius:8px!important;
  background:#202020!important;
  overflow:hidden!important;
  text-decoration:none!important;
  transition:
    transform .16s ease,
    border-color .16s ease,
    background-color .16s ease,
    box-shadow .16s ease!important;
}

body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .release_data .image_release{
  display:block!important;
  flex:0 0 70px!important;
  width:70px!important;
  min-width:70px!important;
  max-width:70px!important;
  height:70px!important;
  margin:0!important;
  padding:0!important;
  border-right:1px solid rgba(57,255,20,.22)!important;
}

body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .release_data .image_release img{
  display:block!important;
  width:70px!important;
  min-width:70px!important;
  max-width:70px!important;
  height:70px!important;
  max-height:70px!important;
  object-fit:cover!important;
  margin:0!important;
  padding:0!important;
}

body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .release_data .title_release{
  display:flex!important;
  flex:1 1 auto!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  width:auto!important;
  min-width:0!important;
  height:70px!important;
  margin:0!important;
  padding:8px 12px!important;
  color:var(--hp-artist-green,#39ff14)!important;
  font-size:.9em!important;
  font-weight:700!important;
  line-height:1.15!important;
  text-align:center!important;
  text-shadow:none!important;
  -webkit-font-smoothing:antialiased!important;
}

body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .release_data a:hover{
  transform:translateY(-2px)!important;
  border-color:var(--hp-artist-green,#39ff14)!important;
  background:#292929!important;
  box-shadow:0 5px 14px rgba(0,0,0,.28)!important;
}

body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .release_data a:hover .title_release{
  color:#fff!important;
}

/* The optional original title is redundant because the module already says Releases. */
body.single-artist #lg_content_release.release_detail
.hp-artist-module--releases .hp-lgt-native-releases.right_col .titleartist{
  display:none!important;
}

/* Remove any LabelGrid responsive 50% release-card rule at all viewport sizes. */
@media only screen and (max-width:1024px){
  body.single-artist #lg_content_release.release_detail
  .hp-artist-module--releases .hp-lgt-native-releases.right_col .release_data{
    display:block!important;
    width:100%!important;
    min-width:100%!important;
    max-width:100%!important;
  }
}


/* 3.1.4 SoundCloud Library — does not alter Artist Page grid/layout */
.hp-artist-soundcloud__item{width:100%;max-width:100%;margin:0 0 10px}
.hp-artist-soundcloud__item:last-child{margin-bottom:0}
.hp-artist-soundcloud__item iframe{display:block;width:100%;max-width:100%;border:0}


/* ============================================================
   3.1.5 — SOUNDCLOUD FRONTEND TYPE HEIGHT FIX
   Scoped only to SoundCloud item types. No grid/design changes.
   ============================================================ */

/* Existing generic bridge CSS fixes SoundCloud iframe at 166px.
   Override it only for profile and playlist/set players. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--profile iframe,
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--playlist iframe{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  height:450px!important;
  min-height:450px!important;
  max-height:450px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
}

/* Individual tracks deliberately remain compact. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--track iframe{
  display:block!important;
  width:100%!important;
  max-width:100%!important;
  height:166px!important;
  min-height:166px!important;
  max-height:166px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
}

/* The wrapper itself must be allowed to grow with profile/set players. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud .hp-artist-soundcloud{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}

body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud .hp-artist-soundcloud__item{
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow:visible!important;
}


/* ============================================================
   3.1.6 — MATCH SPOTIFY / SOUNDCLOUD PLAYER HEIGHTS
   Scoped only to the two audio players.
   ============================================================ */

/* Full Spotify artist player */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--spotify .hp-artist-spotify{
  height:352px!important;
  min-height:352px!important;
  max-height:352px!important;
  overflow:hidden!important;
}

body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--spotify .hp-artist-spotify iframe{
  display:block!important;
  width:100%!important;
  height:352px!important;
  min-height:352px!important;
  max-height:352px!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
}

/* SoundCloud profile and playlist/set players match Spotify. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--profile iframe,
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--playlist iframe{
  height:352px!important;
  min-height:352px!important;
  max-height:352px!important;
}

/* Individual SoundCloud tracks deliberately remain compact. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--track iframe{
  height:166px!important;
  min-height:166px!important;
  max-height:166px!important;
}


/* ============================================================
   3.1.7 — DEFAULT PLAYER SIZES
   Spotify back to its original compact size.
   SoundCloud profile/set slightly smaller than before.
   ============================================================ */

/* Spotify: original compact Artist embed size. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--spotify .hp-artist-spotify{
  height:152px!important;
  min-height:152px!important;
  max-height:152px!important;
  overflow:hidden!important;
}

body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--spotify .hp-artist-spotify iframe{
  height:152px!important;
  min-height:152px!important;
  max-height:152px!important;
}

/* SoundCloud profile / playlist: still shows a scrollable list, but more compact. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--profile iframe,
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--playlist iframe{
  height:300px!important;
  min-height:300px!important;
  max-height:300px!important;
}

/* Single SoundCloud tracks remain unchanged. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--track iframe{
  height:166px!important;
  min-height:166px!important;
  max-height:166px!important;
}


/* ============================================================
   3.1.8 — BALANCED AUDIO ROW
   Spotify + SoundCloud use the same 220px height.
   No other layout/design changes.
   ============================================================ */

body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--spotify .hp-artist-spotify,
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--spotify .hp-artist-spotify iframe{
  height:220px!important;
  min-height:220px!important;
  max-height:220px!important;
}

body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--profile iframe,
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--playlist iframe{
  height:220px!important;
  min-height:220px!important;
  max-height:220px!important;
}


/* ============================================================
   3.1.9 — SOUNDCLOUD LIST VISIBILITY
   Spotify stays compact; SoundCloud profile/set gets enough
   height for the internal selectable track list.
   ============================================================ */

/* Spotify remains as in 3.1.8 */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--spotify .hp-artist-spotify,
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--spotify .hp-artist-spotify iframe{
  height:220px!important;
  min-height:220px!important;
  max-height:220px!important;
}

/* Profile / playlist needs more height or SoundCloud hides the list area. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--profile iframe,
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--playlist iframe{
  height:300px!important;
  min-height:300px!important;
  max-height:300px!important;
}

/* Individual tracks remain compact. */
body.single-artist #lg_content_release.hp-lgt-bridge-active
.hp-artist-module--soundcloud
.hp-artist-soundcloud__item--track iframe{
  height:166px!important;
  min-height:166px!important;
  max-height:166px!important;
}


/* 3.1.16 — richer media presentation */
.hp-artist-media-stack{
  display:grid;
  gap:16px;
}
.hp-artist-media-item{
  border:1px solid rgba(57,255,20,.28);
  border-radius:12px;
  padding:12px;
  background:rgba(8,16,8,.72);
  overflow:hidden;
}
.hp-artist-media-item__head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin:0 0 9px;
  line-height:1.2;
}
.hp-artist-media-item__head strong{
  color:var(--hp-artist-green,#39ff14);
  font-size:.95rem;
  font-weight:700;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.hp-artist-media-item__head span{
  flex:0 0 auto;
  color:rgba(255,255,255,.58);
  font-size:.68rem;
  text-transform:uppercase;
  letter-spacing:.08em;
}
.hp-artist-media-item iframe{
  display:block;
  width:100%!important;
  max-width:100%!important;
  border-radius:8px;
}

.hp-artist-youtube-grid{
  display:grid!important;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:16px!important;
}
.hp-artist-youtube-item{
  min-width:0;
}
.hp-artist-youtube-card{
  display:block;
  position:relative;
  border:1px solid rgba(57,255,20,.35);
  border-radius:10px;
  overflow:hidden;
}
.hp-artist-youtube-card img{
  display:block;
  width:100%;
  aspect-ratio:16/9;
  object-fit:cover;
}
.hp-artist-youtube-meta{
  padding:8px 3px 0;
}
.hp-artist-youtube-meta strong{
  display:block;
  color:var(--hp-artist-green,#39ff14);
  font-size:.82rem;
  line-height:1.25;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.hp-artist-youtube-meta small{
  display:block;
  margin-top:3px;
  color:rgba(255,255,255,.55);
  font-size:.68rem;
  line-height:1.2;
}

.hp-artist-module--events .hp-artist-events{
  display:grid;
  gap:10px;
}
.hp-artist-module--events .hp-artist-event{
  display:grid;
  grid-template-columns:110px minmax(0,1fr);
  align-items:center;
  gap:16px;
  min-height:46px;
  padding:8px 14px;
  border:1px solid rgba(57,255,20,.35);
  border-radius:10px;
  background:rgba(8,16,8,.6);
  text-decoration:none!important;
}
.hp-artist-module--events .hp-artist-event span{
  color:var(--hp-artist-green,#39ff14);
  font-size:.82rem;
}
.hp-artist-module--events .hp-artist-event strong{
  color:var(--hp-artist-green,#39ff14);
  font-size:.9rem;
}

@media (max-width:900px){
  .hp-artist-youtube-grid{
    grid-template-columns:1fr!important;
  }
  .hp-artist-module--events .hp-artist-event{
    grid-template-columns:1fr;
    gap:3px;
  }
}


/* 3.1.17 — YouTube lightbox */
.hp-artist-youtube-card{
  appearance:none;
  -webkit-appearance:none;
  width:100%;
  padding:0;
  cursor:pointer;
  background:transparent;
  color:inherit;
  font:inherit;
}
.hp-artist-youtube-card:hover img{
  transform:scale(1.025);
}
.hp-artist-youtube-card img{
  transition:transform .22s ease;
}
.hp-artist-youtube-modal{
  position:fixed;
  inset:0;
  z-index:999999;
  display:none;
  align-items:center;
  justify-content:center;
  padding:24px;
}
.hp-artist-youtube-modal.is-open{
  display:flex;
}
.hp-artist-youtube-modal__backdrop{
  position:absolute;
  inset:0;
  background:rgba(0,0,0,.88);
  backdrop-filter:blur(8px);
}
.hp-artist-youtube-modal__dialog{
  position:relative;
  z-index:1;
  width:min(1100px,94vw);
  max-height:92vh;
  border:1px solid rgba(57,255,20,.45);
  border-radius:16px;
  background:#060806;
  box-shadow:0 24px 80px rgba(0,0,0,.65);
  overflow:hidden;
}
.hp-artist-youtube-modal__ratio{
  position:relative;
  aspect-ratio:16/9;
  background:#000;
}
.hp-artist-youtube-modal__ratio iframe{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  border:0;
}
.hp-artist-youtube-modal__close{
  position:absolute;
  top:10px;
  right:12px;
  z-index:3;
  width:42px;
  height:42px;
  border:1px solid rgba(57,255,20,.55);
  border-radius:50%;
  background:rgba(0,0,0,.78);
  color:var(--hp-artist-green,#39ff14);
  font-size:30px;
  line-height:36px;
  cursor:pointer;
}
.hp-artist-youtube-modal__footer{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  padding:14px 18px;
}
.hp-artist-youtube-modal__title{
  color:var(--hp-artist-green,#39ff14);
  font-size:.95rem;
  line-height:1.3;
}
.hp-artist-youtube-modal__external{
  flex:0 0 auto;
  color:var(--hp-artist-green,#39ff14)!important;
  font-size:.8rem;
  text-decoration:none!important;
}
.hp-youtube-modal-open{
  overflow:hidden!important;
}
@media (max-width:700px){
  .hp-artist-youtube-modal{
    padding:10px;
  }
  .hp-artist-youtube-modal__dialog{
    width:100%;
  }
  .hp-artist-youtube-modal__footer{
    align-items:flex-start;
    flex-direction:column;
    gap:8px;
  }
}


/* 3.1.18 — dynamic Releases/Biography book-style flow */
.hp-artist-balanced-pair{
  grid-column:1 / -1;
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  gap:var(--hp-artist-grid-gap,24px);
  align-items:start;
}
.hp-artist-balanced-pair > .hp-artist-module:first-child{
  grid-column:span var(--hp-balanced-first-span,6);
}
.hp-artist-balanced-pair > .hp-artist-module:nth-child(2){
  grid-column:span var(--hp-balanced-second-span,6);
}
.hp-artist-balanced-pair > .hp-artist-module{
  width:auto!important;
  max-width:none!important;
  min-width:0!important;
  align-self:start!important;
}
.hp-artist-bio-tail{
  grid-column:1 / -1;
  margin-top:0;
  padding-top:0;
}
.hp-artist-bio--balanced-columns{
  column-count:2;
  column-gap:44px;
  column-fill:balance;
  orphans:3;
  widows:3;
}
.hp-artist-bio--balanced-columns > *{
  break-inside:avoid-column;
}
@media (max-width:900px){
  .hp-artist-bio--balanced-columns{
    column-count:1;
  }
}
@media (max-width:900px){
  .hp-artist-balanced-pair{
    display:contents;
  }
  .hp-artist-bio-tail{
    grid-column:1 / -1;
  }
}


/* 3.1.19 — Artist event history / card layout */
.hp-artist-module--events > .hp-artist-module__title{display:none!important}
.hp-artist-event-section{margin:0 0 34px}
.hp-artist-event-section:last-child{margin-bottom:0}
.hp-artist-event-section__title{
  margin:0 0 18px;
  color:var(--hp-artist-green,#39ff14);
  font-size:clamp(1.35rem,2vw,2rem);
  line-height:1.1;
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.01em
}
.hp-artist-event-cards{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:18px
}
.hp-artist-event-card{
  display:grid;
  grid-template-columns:minmax(120px,36%) minmax(0,1fr);
  min-height:210px;
  overflow:hidden;
  border:1px solid rgba(57,255,20,.42);
  border-radius:16px;
  background:rgba(4,8,4,.72)
}
.hp-artist-event-card__image{
  display:block;
  min-height:100%;
  overflow:hidden;
  background:#080808
}
.hp-artist-event-card__image img{
  display:block;
  width:100%;
  height:100%;
  min-height:210px;
  object-fit:cover
}
.hp-artist-event-card__body{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  min-width:0;
  padding:20px
}
.hp-artist-event-card__date{
  margin-bottom:10px;
  color:var(--hp-artist-green,#39ff14);
  font-size:.84rem;
  font-weight:700
}
.hp-artist-event-card h3{
  margin:0 0 12px!important;
  color:var(--hp-artist-green,#39ff14)!important;
  font-size:1.22rem!important;
  line-height:1.25!important;
  text-transform:uppercase
}
.hp-artist-event-card__location{
  margin-bottom:18px;
  color:rgba(255,255,255,.58);
  font-size:.9rem
}
.hp-artist-event-card__button{
  display:inline-flex;
  align-items:center;
  gap:14px;
  margin-top:auto;
  padding:9px 16px;
  border:1px solid rgba(57,255,20,.65);
  border-radius:999px;
  color:var(--hp-artist-green,#39ff14)!important;
  font-size:.82rem;
  text-decoration:none!important;
  text-transform:uppercase
}
.hp-artist-event-card__button:hover{
  background:rgba(57,255,20,.1)
}
.hp-artist-event-cards--past{
  grid-template-columns:repeat(3,minmax(0,1fr))
}
.hp-artist-event-card--past{
  grid-template-columns:96px minmax(0,1fr);
  min-height:150px;
  opacity:.88
}
.hp-artist-event-card--past .hp-artist-event-card__image img{
  min-height:150px
}
.hp-artist-event-card--past .hp-artist-event-card__body{
  padding:14px
}
.hp-artist-event-card--past h3{
  font-size:.96rem!important
}
.hp-artist-event-card--past .hp-artist-event-card__button{
  padding:6px 12px;
  font-size:.7rem
}

@media(max-width:1100px){
  .hp-artist-event-cards,
  .hp-artist-event-cards--past{
    grid-template-columns:1fr
  }
}
@media(max-width:700px){
  .hp-artist-event-section__title{
    font-size:1.65rem
  }
  .hp-artist-event-card,
  .hp-artist-event-card--past{
    grid-template-columns:38% minmax(0,1fr);
    min-height:178px;
    border-radius:14px
  }
  .hp-artist-event-card__image img,
  .hp-artist-event-card--past .hp-artist-event-card__image img{
    min-height:178px
  }
  .hp-artist-event-card__body,
  .hp-artist-event-card--past .hp-artist-event-card__body{
    padding:14px
  }
  .hp-artist-event-card h3,
  .hp-artist-event-card--past h3{
    font-size:1rem!important
  }
}


/* 3.1.20 — module separators, SoundCloud grid, bilingual biography */
.hp-artist-module--releases,
.hp-artist-module--bio{
  position:relative;
  padding-bottom:26px!important;
}
.hp-artist-module--releases::after,
.hp-artist-module--bio::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:linear-gradient(90deg,rgba(57,255,20,.16),rgba(57,255,20,.8),rgba(57,255,20,.16));
  box-shadow:0 0 8px rgba(57,255,20,.22);
}
.hp-artist-bio-language + .hp-artist-bio-language{
  margin-top:28px;
  padding-top:22px;
  border-top:1px solid rgba(57,255,20,.22);
}
.hp-artist-bio-language__label{
  margin:0 0 12px;
  color:var(--hp-artist-green,#39ff14);
  font-size:.9rem;
  font-weight:700;
  letter-spacing:.03em;
  text-transform:uppercase;
}

.hp-artist-media-stack--soundcloud{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:16px!important;
}
.hp-artist-module--soundcloud.hp-module-span-4 .hp-artist-media-stack--soundcloud,
.hp-artist-module--soundcloud.hp-module-span-6 .hp-artist-media-stack--soundcloud{
  grid-template-columns:1fr;
}
.hp-artist-module--soundcloud.hp-module-span-8 .hp-artist-media-stack--soundcloud,
.hp-artist-module--soundcloud.hp-module-span-12 .hp-artist-media-stack--soundcloud{
  grid-template-columns:repeat(2,minmax(0,1fr));
}
@media(max-width:900px){
  .hp-artist-media-stack--soundcloud{
    grid-template-columns:1fr!important;
  }
}


/* 3.1.21 — Spotify/SoundCloud continue through the same 50/50 grid */
.hp-artist-media-stack--soundcloud{
  display:grid!important;
  grid-template-columns:1fr!important;
  gap:16px!important;
}
.hp-artist-streaming-flow{
  grid-column:1 / -1;
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:18px 22px;
  align-items:start;
}
.hp-artist-streaming-flow > .hp-artist-module--spotify,
.hp-artist-streaming-cell{
  width:auto!important;
  min-width:0!important;
  max-width:none!important;
  margin:0!important;
}
.hp-artist-streaming-cell{
  border:1px solid rgba(57,255,20,.24);
  border-radius:12px;
  padding:0;
  overflow:hidden;
}
.hp-artist-streaming-cell > .hp-artist-module__title{
  padding:0 0 8px;
}
.hp-artist-streaming-cell .hp-artist-media-item{
  margin:0!important;
  width:100%!important;
}
.hp-artist-streaming-stash,
.hp-artist-streaming-flow > .hp-artist-module--soundcloud{
  display:none!important;
}

/* Lightbox must sit above theme/PWA/LabelGrid stacking contexts. */
.hp-artist-youtube-modal{
  z-index:2147483000!important;
}
.hp-artist-youtube-modal__backdrop{
  z-index:1!important;
}
.hp-artist-youtube-modal__dialog{
  z-index:2!important;
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
  transform:none!important;
}
.hp-artist-youtube-modal__ratio,
.hp-artist-youtube-modal__ratio iframe{
  display:block!important;
  opacity:1!important;
  visibility:visible!important;
}

@media(max-width:900px){
  .hp-artist-streaming-flow{
    grid-template-columns:1fr;
  }
}


/* 3.1.24 — final desktop alignment + section dividers */

/* Spotify and first SoundCloud card must start on exactly the same baseline. */
.hp-artist-streaming-flow{
  position:relative;
  align-items:start!important;
  padding-bottom:30px;
  margin-bottom:28px;
}
.hp-artist-streaming-flow::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:linear-gradient(90deg,rgba(57,255,20,.12),rgba(57,255,20,.78),rgba(57,255,20,.12));
  box-shadow:0 0 8px rgba(57,255,20,.20);
}
.hp-artist-streaming-flow > .hp-artist-module--spotify,
.hp-artist-streaming-flow > .hp-artist-streaming-cell{
  align-self:start!important;
  margin-top:0!important;
  padding-top:0!important;
}
.hp-artist-streaming-flow > .hp-artist-module--spotify > .hp-artist-module__title,
.hp-artist-streaming-flow > .hp-artist-streaming-cell > .hp-artist-module__title{
  margin-top:0!important;
  padding-top:0!important;
  min-height:24px;
  display:flex;
  align-items:flex-end;
}
.hp-artist-streaming-flow .hp-artist-media-item{
  margin-top:0!important;
}
.hp-artist-streaming-flow .hp-artist-module--spotify .hp-artist-media-stack,
.hp-artist-streaming-flow .hp-artist-streaming-cell .hp-artist-media-item{
  margin-top:0!important;
}

/* Every major following module gets the same visual rhythm. */
.hp-artist-module--youtube{
  position:relative;
  padding-bottom:30px!important;
  margin-bottom:28px!important;
}
.hp-artist-module--youtube::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:linear-gradient(90deg,rgba(57,255,20,.12),rgba(57,255,20,.78),rgba(57,255,20,.12));
  box-shadow:0 0 8px rgba(57,255,20,.20);
}

/* Events: separator after the whole Upcoming/Past block. */
.hp-artist-module--events{
  position:relative;
  padding-bottom:30px!important;
  margin-bottom:28px!important;
}
.hp-artist-module--events::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:linear-gradient(90deg,rgba(57,255,20,.12),rgba(57,255,20,.78),rgba(57,255,20,.12));
  box-shadow:0 0 8px rgba(57,255,20,.20);
}

/* If Past Events exists, give it a subtle divider from Upcoming too. */
.hp-artist-event-section--past{
  position:relative;
  margin-top:30px!important;
  padding-top:30px!important;
}
.hp-artist-event-section--past::before{
  content:"";
  position:absolute;
  left:0;
  right:0;
  top:0;
  height:1px;
  background:linear-gradient(90deg,rgba(57,255,20,.10),rgba(57,255,20,.48),rgba(57,255,20,.10));
}

/* Keep both columns visually balanced even when Spotify iframe is shorter. */
.hp-artist-streaming-flow .hp-artist-module--spotify,
.hp-artist-streaming-flow .hp-artist-streaming-cell{
  box-sizing:border-box;
}
.hp-artist-streaming-flow .hp-artist-module--spotify{
  min-height:100%;
}

/* Mobile remains simple and stacked; dividers stay full width. */
@media(max-width:900px){
  .hp-artist-streaming-flow{
    padding-bottom:22px;
    margin-bottom:22px;
  }
  .hp-artist-module--youtube,
  .hp-artist-module--events{
    padding-bottom:22px!important;
    margin-bottom:22px!important;
  }
}


/* 3.1.25 — final per-module neon divider system
   Each logical module owns exactly one fade-in/fade-out divider. */

:root{
  --hp-divider-line: linear-gradient(
    90deg,
    rgba(57,255,20,0) 0%,
    rgba(57,255,20,.22) 8%,
    rgba(57,255,20,.82) 50%,
    rgba(57,255,20,.22) 92%,
    rgba(57,255,20,0) 100%
  );
  --hp-divider-glow: 0 0 9px rgba(57,255,20,.22);
}

/* 1) Original LabelGrid divider directly below artwork / social links.
      Give it exactly the same fade/glow language as the new module dividers. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
  display:block!important;
  width:100%!important;
  height:1px!important;
  margin:28px 0 30px!important;
  padding:0!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
  opacity:1!important;
}

/* 2) Releases and Biography already own separators.
      Standardise them to the final fade style. */
.hp-artist-module--releases::after,
.hp-artist-module--bio::after{
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
}

/* If a long biography flows out below the two-column pair,
   the divider belongs at the REAL end of the biography. */
.hp-artist-bio-tail{
  position:relative!important;
  padding-bottom:30px!important;
  margin-bottom:28px!important;
}
.hp-artist-bio-tail::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:var(--hp-divider-line);
  box-shadow:var(--hp-divider-glow);
}
/* Avoid a premature line inside the continued biography layout. */
.hp-artist-balanced-pair + .hp-artist-bio-tail ~ *{
  position:relative;
}

/* 3) Streaming:
      REMOVE the old full-row divider.
      Spotify and every SoundCloud cell now get their OWN half-width divider.
      This is the important behaviour when SoundCloud continues for several rows. */
.hp-artist-streaming-flow{
  padding-bottom:0!important;
  margin-bottom:28px!important;
}
.hp-artist-streaming-flow::after{
  content:none!important;
  display:none!important;
}

.hp-artist-streaming-flow > .hp-artist-module--spotify,
.hp-artist-streaming-flow > .hp-artist-streaming-cell{
  position:relative!important;
  padding-bottom:28px!important;
  margin-bottom:0!important;
}

.hp-artist-streaming-flow > .hp-artist-module--spotify::after,
.hp-artist-streaming-flow > .hp-artist-streaming-cell::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  bottom:0;
  height:1px;
  background:var(--hp-divider-line);
  box-shadow:var(--hp-divider-glow);
}

/* The hidden SoundCloud stash/module must never create a divider. */
.hp-artist-streaming-stash::after,
.hp-artist-streaming-flow > .hp-artist-module--soundcloud::after{
  content:none!important;
}

/* 4) YouTube -> Upcoming Events:
      Put the line at the real bottom of YouTube and also guarantee
      visual spacing before the Events title. */
.hp-artist-module--youtube{
  position:relative!important;
  padding-bottom:30px!important;
  margin-bottom:30px!important;
}
.hp-artist-module--youtube::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  width:auto!important;
  height:1px!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
}

/* 5) Upcoming / Past Events:
      One subtle separator between Upcoming and Past (when Past exists),
      and one final divider after the complete Events module. */
.hp-artist-event-section--past::before{
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
}
.hp-artist-module--events::after{
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
}

/* If Events immediately follow YouTube, do not let theme margins collapse
   over the divider. */
.hp-artist-module--youtube + .hp-artist-module--events{
  margin-top:0!important;
  padding-top:0!important;
}

/* Mobile: same design, one full-width module after another. */
@media(max-width:900px){
  body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
    margin:22px 0 24px!important;
  }

  .hp-artist-streaming-flow > .hp-artist-module--spotify,
  .hp-artist-streaming-flow > .hp-artist-streaming-cell{
    padding-bottom:22px!important;
  }

  .hp-artist-bio-tail,
  .hp-artist-module--youtube,
  .hp-artist-module--events{
    padding-bottom:22px!important;
    margin-bottom:22px!important;
  }
}


/* 3.1.26 — final full-width separators between major page sections */

/* The individual Spotify/SoundCloud cell dividers remain.
   Add ONE full-width closing divider after the complete streaming grid. */
.hp-artist-streaming-flow{
  padding-bottom:34px!important;
  margin-bottom:30px!important;
}
.hp-artist-streaming-flow::after{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  height:1px!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
}

/* Guarantee the YouTube closing divider is visually present before Events. */
.hp-artist-module--youtube{
  padding-bottom:34px!important;
  margin-bottom:30px!important;
  overflow:visible!important;
}
.hp-artist-module--youtube::after{
  content:""!important;
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  bottom:0!important;
  height:1px!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
  pointer-events:none!important;
}

/* New single top divider supplied by Bridge 2.0.4. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
  display:block!important;
  width:100%!important;
  height:1px!important;
  margin:28px 0 30px!important;
  padding:0!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
}

/* Old LabelGrid separator is no longer used by Bridge 2.0.4.
   Hide it defensively if stale cached HTML still contains it. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
  display:none!important;
}

@media(max-width:900px){
  .hp-artist-streaming-flow,
  .hp-artist-module--youtube{
    padding-bottom:26px!important;
    margin-bottom:24px!important;
  }
  body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
    margin:22px 0 24px!important;
  }
}


/* 3.1.28 — Biography AI workspace */
.hpap-bio-ai-panel{
  display:grid;
  gap:18px;
  margin:18px 0 28px;
}
.hpap-bio-ai-panel .hpap-editor-field{
  position:relative;
  padding:18px;
  border:1px solid rgba(57,255,20,.24);
  border-radius:14px;
  background:rgba(5,12,5,.72);
}
.hpap-bio-ai-panel .hpap-editor-field--english.is-ai-generated{
  border-color:rgba(57,255,20,.46);
  box-shadow:0 0 16px rgba(57,255,20,.07);
}
.hpap-bio-field-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  margin-bottom:8px;
}
.hpap-bio-field-head label{
  display:block!important;
  margin:0!important;
  font-weight:700;
}
.hpap-bio-field-head small{
  display:block;
  margin-top:3px;
  opacity:.65;
}
.hpap-lang-pill{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:38px;
  height:28px;
  padding:0 9px;
  border:1px solid rgba(57,255,20,.55);
  border-radius:999px;
  color:#39ff14;
  font-size:.72rem;
  font-weight:700;
  letter-spacing:.08em;
}
.hpap-bio-translation-arrow{
  justify-self:center;
  color:#39ff14;
  font-size:1.4rem;
  line-height:1;
  opacity:.7;
}
.hpap-ai-actions{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  gap:10px;
  margin-top:12px;
}
.hpap-ai-actions .hpap-ai-status{
  font-size:.8rem;
  opacity:.72;
}
.hpap-ai-bio-btn{
  border-radius:999px!important;
}
.hpap-ai-bio-btn:disabled{
  opacity:.55!important;
  cursor:wait!important;
}


/* 3.1.31 — final biography + divider + Spotify label refinements */

/* Use the same neon fade for EN/DE separation; remove the old hard border. */
.hp-artist-bio-language + .hp-artist-bio-language{
  border-top:0!important;
  position:relative!important;
  padding-top:28px!important;
  margin-top:30px!important;
}
.hp-artist-bio-language + .hp-artist-bio-language::before{
  content:""!important;
  display:block!important;
  position:absolute!important;
  left:0!important;
  right:0!important;
  top:0!important;
  height:1px!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
}

/* Continued biography begins as a new full-width row. */
.hp-artist-bio-tail{
  grid-column:1 / -1!important;
  width:100%!important;
  max-width:none!important;
  box-sizing:border-box!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language{
  width:100%!important;
  max-width:none!important;
}
.hp-artist-bio-tail .hp-artist-bio{
  width:100%!important;
  max-width:none!important;
  columns:2;
  column-gap:48px;
  column-rule:0;
}
.hp-artist-bio-tail .hp-artist-bio > *{
  break-inside:avoid;
}

/* A real divider inserted between YouTube and Events. */
.hp-artist-major-divider{
  grid-column:1 / -1!important;
  display:block!important;
  width:100%!important;
  height:1px!important;
  margin:2px 0 30px!important;
  padding:0!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
  opacity:1!important;
  visibility:visible!important;
}
/* Avoid doubling if the pseudo divider happens to render as well. */
.hp-artist-module--youtube:has(+ .hp-artist-major-divider)::after{
  content:none!important;
  display:none!important;
}

/* The top separator must always use the new fade style, whether the active
   bridge outputs .separator or .hp-artist-top-divider. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator,
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
  width:100%!important;
  height:1px!important;
  padding:0!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
  opacity:1!important;
}

/* If the old separator is the only one present, show it; if the new divider
   immediately follows it, suppress only the duplicate old one. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
  display:block!important;
}
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator:has(+ .hp-artist-top-divider){
  display:none!important;
}

@media(max-width:900px){
  .hp-artist-bio-tail .hp-artist-bio{columns:1!important;}
  .hp-artist-major-divider{margin:2px 0 24px!important;}
}


/* 3.1.32 — bilingual heading cleanup / continuation alignment */
.hp-artist-bio-tail > .hp-artist-bio-language{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  break-inside:avoid!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language > .hp-artist-bio-language__label{
  display:block!important;
  width:100%!important;
  margin:0 0 14px!important;
  column-span:all;
}
.hp-artist-bio-tail > .hp-artist-bio-language > .hp-artist-bio{
  display:block!important;
  width:100%!important;
}


/* 3.1.33 — compact bilingual flow after Releases */
.hp-artist-bio-tail{
  grid-column:1 / -1!important;
  width:100%!important;
  max-width:none!important;
  margin-top:0!important;
  box-sizing:border-box!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  margin-left:0!important;
  margin-right:0!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation]{
  margin-top:0!important;
  padding-top:0!important;
  border-top:0!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation]::before{
  content:none!important;
  display:none!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation] .hp-artist-bio{
  width:100%!important;
  max-width:none!important;
  columns:2;
  column-gap:48px;
}
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation] .hp-artist-bio > *{
  break-inside:avoid;
}
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-moved-language="1"]{
  clear:both!important;
  margin-top:30px!important;
  padding-top:30px!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-moved-language="1"] > .hp-artist-bio-language__label{
  display:block!important;
  width:100%!important;
  margin:0 0 14px!important;
}

@media(max-width:900px){
  .hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation] .hp-artist-bio{
    columns:1!important;
  }
}


/* 3.1.34 — no divider inside one continuing biography language.
   The left line below Releases remains; only the artificial line above the
   right-hand continuation ("A major milestone...") is removed. */
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation]{
  border-top:0!important;
  box-shadow:none!important;
  background:none!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation]::before,
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation]::after{
  content:none!important;
  display:none!important;
  background:none!important;
  box-shadow:none!important;
  border:0!important;
}
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation] .hp-artist-bio,
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation] .hp-artist-bio::before,
.hp-artist-bio-tail > .hp-artist-bio-language[data-hpap-continuation] .hp-artist-bio::after{
  border-top:0!important;
  box-shadow:none!important;
}


/* 3.1.35 — remove the divider from the ORIGINAL Biography column when the
   same biography continues below the Releases/Bio pair.
   The Releases divider on the left remains untouched. */
.hp-artist-module--bio.hp-artist-module--bio-has-continuation::after{
  content:none!important;
  display:none!important;
  background:none!important;
  box-shadow:none!important;
}

/* Also remove any native bottom border/background on that specific Bio module. */
.hp-artist-module--bio.hp-artist-module--bio-has-continuation{
  border-bottom:0!important;
  box-shadow:none!important;
}


/* 3.1.36 — one top divider only + tighter spacing */

/* The legacy LabelGrid separator must never be visible anymore.
   Bridge 2.0.4+ supplies .hp-artist-top-divider instead. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  height:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:none!important;
  box-shadow:none!important;
}

/* Keep only our fade/glow divider. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  width:100%!important;
  height:1px!important;
  min-height:1px!important;
  margin:20px 0 24px!important;
  padding:0!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
}

/* Pull the Artist module grid closer to the top divider.
   This removes the oversized empty band visible in 3.1.35. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active
.hp-artist-modules--bridge{
  margin-top:0!important;
  padding-top:0!important;
  row-gap:26px!important;
}

/* The first row (usually Releases + Biography) should start promptly
   after the divider without extra inherited top margin. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active
.hp-artist-modules--bridge > .hp-artist-module:first-child,
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active
.hp-artist-modules--bridge > .hp-artist-balanced-pair:first-child{
  margin-top:0!important;
  padding-top:0!important;
}

@media(max-width:900px){
  body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
    margin:16px 0 20px!important;
  }
  body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active
  .hp-artist-modules--bridge{
    row-gap:22px!important;
  }
}


/* 3.1.37 — definitive top divider.
   Hide every LabelGrid/legacy divider and render exactly one HP fade divider. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator,
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  width:0!important;
  height:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:none!important;
  box-shadow:none!important;
}

body.single-artist .hpap-top-fade-divider{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  width:100%!important;
  height:1px!important;
  min-height:1px!important;
  margin:20px 0 28px!important;
  padding:0!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
  clear:both!important;
}

/* Keep the first Artist module row close to the new divider. */
body.single-artist .hpap-top-fade-divider + .hp-artist-modules--bridge{
  margin-top:0!important;
  padding-top:0!important;
}

@media(max-width:900px){
  body.single-artist .hpap-top-fade-divider{
    margin:16px 0 22px!important;
  }
}


/* 3.1.38 — use the existing PHP/LabelGrid separator; never create a second one. */
body.single-artist .hpap-top-fade-divider{
  display:none!important;
}

/* If an earlier cached bridge inserted hp-artist-top-divider, suppress it. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
  display:none!important;
  height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  box-shadow:none!important;
  background:none!important;
}

/* The one existing PHP/LabelGrid separator becomes our fade divider. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  width:100%!important;
  height:1px!important;
  min-height:1px!important;
  margin:20px 0 28px!important;
  padding:0!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
  clear:both!important;
}

body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator
+ .hp-artist-modules--bridge{
  margin-top:0!important;
  padding-top:0!important;
}

@media(max-width:900px){
  body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
    margin:16px 0 22px!important;
  }
}


/* 3.1.39 — top divider is now controlled by Bridge PHP 2.0.5.
   There is exactly ONE divider node: .hp-artist-top-divider. */

/* Kill every legacy separator, including stale cached markup. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .separator{
  display:none!important;
  visibility:hidden!important;
  opacity:0!important;
  height:0!important;
  min-height:0!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:none!important;
  box-shadow:none!important;
}

/* Also remove any theme/LabelGrid border that can visually masquerade as a second line. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .header_release,
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .header_release::before,
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .header_release::after{
  border-bottom:0!important;
  box-shadow:none!important;
}

/* The single PHP-rendered HP divider. */
body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  width:100%!important;
  height:1px!important;
  min-height:1px!important;
  margin:20px 0 26px!important;
  padding:0!important;
  border:0!important;
  background:var(--hp-divider-line)!important;
  box-shadow:var(--hp-divider-glow)!important;
  clear:both!important;
}

/* 3.1.37 temporary JS divider must never show if an old cached script survives. */
body.single-artist .hpap-top-fade-divider{
  display:none!important;
}

@media(max-width:900px){
  body.single-artist #lg_content_release.release_detail.hp-lgt-bridge-active > .hp-artist-top-divider{
    margin:16px 0 22px!important;
  }
}


/* 3.1.40 — balanced bilingual biography flow
   Long full-width EN/DE biography sections use two balanced editorial columns.
   Short texts stay single-column; mobile/tablet always stay single-column. */
.hp-artist-bio-tail > .hp-artist-bio-language{
  width:100%;
  max-width:none;
}
.hp-artist-bio-tail .hp-artist-bio--balanced-columns{
  column-width:auto;
  column-count:2;
  column-gap:clamp(28px,4vw,56px);
  column-fill:balance;
}
.hp-artist-bio-tail .hp-artist-bio--balanced-columns p{
  margin-top:0;
  break-inside:avoid-column;
}
@media (max-width:900px){
  .hp-artist-bio-tail .hp-artist-bio--balanced-columns{
    column-count:1;
  }
}


/* 3.1.41 — balance long single-paragraph biographies too.
   Some artist bios are entered as one large <p>. Earlier break-inside:avoid
   prevented that paragraph from flowing into the second column, producing a
   very tall left column and empty space on the right. */
.hp-artist-bio-tail .hp-artist-bio--balanced-columns,
.hp-artist-bio-tail .hp-artist-bio{
  column-fill:balance!important;
}
.hp-artist-bio-tail .hp-artist-bio--balanced-columns > *,
.hp-artist-bio-tail .hp-artist-bio > *{
  break-inside:auto!important;
  -webkit-column-break-inside:auto!important;
  page-break-inside:auto!important;
}
.hp-artist-bio-tail .hp-artist-bio--balanced-columns p,
.hp-artist-bio-tail .hp-artist-bio p{
  break-inside:auto!important;
  -webkit-column-break-inside:auto!important;
  orphans:3;
  widows:3;
}

/* 3.1.42 — structure-independent biography balancing.
   JS splits any long full-width language block into two real columns and picks
   the split from measured rendered heights. This also works for one giant
   paragraph, many paragraphs, and inline emphasis. */
.hp-artist-bio-tail .hp-artist-bio--explicit-balanced{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:clamp(28px,4vw,56px)!important;
  column-count:initial!important;
  column-gap:normal!important;
}
.hp-artist-bio-tail .hp-artist-bio--explicit-balanced > .hp-artist-bio-column{
  min-width:0;
}
.hp-artist-bio-tail .hp-artist-bio--explicit-balanced > .hp-artist-bio-column > :first-child{
  margin-top:0!important;
}
.hp-artist-bio-tail .hp-artist-bio--explicit-balanced > .hp-artist-bio-column > :last-child{
  margin-bottom:0!important;
}
@media (max-width:900px){
  .hp-artist-bio-tail .hp-artist-bio--explicit-balanced{
    display:block!important;
  }
}

/* 3.1.47 — live-DOM balanced biography continuation.
   Long continuation/language bodies are converted by JS into two real grid
   columns after insertion into the document, so balancing uses real widths. */
@media (min-width:901px){
  body.single-artist .hp-artist-bio-tail .hp-artist-bio.hp-artist-bio--explicit-balanced{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
    gap:clamp(32px,4vw,56px)!important;
    width:100%!important;
  }
}

/* 3.1.48 — adaptive biography row completion.
   Full-width (or orphaned half-width) Biography modules occupy both grid sides;
   their language bodies are balanced by the live-DOM JS into two real columns. */
body.single-artist .hp-artist-modules--bridge > .hp-artist-module--bio.hp-artist-module--bio-full-balanced{
  grid-column:1 / -1!important;
  width:100%!important;
  max-width:none!important;
  --hp-module-span:12!important;
}
body.single-artist .hp-artist-module--bio.hp-artist-module--bio-full-balanced > .hp-artist-bio-language{
  width:100%!important;
  max-width:none!important;
}
body.single-artist .hp-artist-module--bio.hp-artist-module--bio-full-balanced .hp-artist-bio.hp-artist-bio--explicit-balanced{
  display:grid!important;
  grid-template-columns:minmax(0,1fr) minmax(0,1fr)!important;
  gap:clamp(32px,4vw,56px)!important;
  width:100%!important;
  max-width:none!important;
}
@media(max-width:900px){
  body.single-artist .hp-artist-module--bio.hp-artist-module--bio-full-balanced .hp-artist-bio.hp-artist-bio--explicit-balanced{
    grid-template-columns:1fr!important;
  }
}


/* 3.1.71 — Past Events use the exact same card design as Upcoming Events. */
.hp-artist-event-cards--past{
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
}
.hp-artist-event-card--past{
  grid-template-columns:minmax(120px,36%) minmax(0,1fr)!important;
  min-height:210px!important;
  opacity:1!important;
}
.hp-artist-event-card--past .hp-artist-event-card__image img{
  min-height:210px!important;
}
.hp-artist-event-card--past .hp-artist-event-card__body{
  padding:20px!important;
}
.hp-artist-event-card--past h3{
  font-size:1.22rem!important;
  line-height:1.25!important;
}
.hp-artist-event-card--past .hp-artist-event-card__button{
  padding:9px 16px!important;
  font-size:.82rem!important;
}
@media(max-width:1100px){
  .hp-artist-event-cards--past{grid-template-columns:1fr!important}
}
@media(max-width:700px){
  .hp-artist-event-card--past{
    grid-template-columns:38% minmax(0,1fr)!important;
    min-height:178px!important;
  }
  .hp-artist-event-card--past .hp-artist-event-card__image img{min-height:178px!important}
  .hp-artist-event-card--past .hp-artist-event-card__body{padding:14px!important}
  .hp-artist-event-card--past h3{font-size:1rem!important}
}


/* 3.1.72 — compact, identical Upcoming/Past event cards + inline-description flyer support. */
body.single-artist .hp-artist-event-cards,
body.single-artist .hp-artist-event-cards--past{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,340px))!important;
  gap:18px!important;
  justify-content:start!important;
  align-items:stretch!important;
}
body.single-artist .hp-artist-event-card,
body.single-artist .hp-artist-event-card--past{
  width:100%!important;
  max-width:340px!important;
  min-height:210px!important;
  grid-template-columns:minmax(130px,42%) minmax(0,1fr)!important;
  opacity:1!important;
}
body.single-artist .hp-artist-event-card__image,
body.single-artist .hp-artist-event-card--past .hp-artist-event-card__image{
  min-height:210px!important;
}
body.single-artist .hp-artist-event-card__image img,
body.single-artist .hp-artist-event-card--past .hp-artist-event-card__image img{
  min-height:210px!important;
  height:100%!important;
  object-fit:cover!important;
}
body.single-artist .hp-artist-event-card__body,
body.single-artist .hp-artist-event-card--past .hp-artist-event-card__body{
  padding:16px!important;
}
body.single-artist .hp-artist-event-card h3,
body.single-artist .hp-artist-event-card--past h3{
  font-size:1.08rem!important;
  line-height:1.28!important;
}
body.single-artist .hp-artist-event-card__date{
  font-size:.78rem!important;
  line-height:1.35!important;
}
body.single-artist .hp-artist-event-card__location{
  font-size:.84rem!important;
  line-height:1.45!important;
}
body.single-artist .hp-artist-event-card__button,
body.single-artist .hp-artist-event-card--past .hp-artist-event-card__button{
  padding:8px 14px!important;
  font-size:.76rem!important;
}
@media(max-width:760px){
  body.single-artist .hp-artist-event-cards,
  body.single-artist .hp-artist-event-cards--past{
    grid-template-columns:minmax(0,1fr)!important;
  }
  body.single-artist .hp-artist-event-card,
  body.single-artist .hp-artist-event-card--past{
    max-width:100%!important;
    grid-template-columns:38% minmax(0,1fr)!important;
    min-height:178px!important;
  }
  body.single-artist .hp-artist-event-card__image,
  body.single-artist .hp-artist-event-card--past .hp-artist-event-card__image,
  body.single-artist .hp-artist-event-card__image img,
  body.single-artist .hp-artist-event-card--past .hp-artist-event-card__image img{
    min-height:178px!important;
  }
}
