/* NUAM Curators v1345 — public playlist preview / registration gates */
.nuam-guest-locked-tooltip-anchor {
  position: relative;
}

.nuam-guest-locked-action {
  cursor: pointer;
}

/* Registration tooltips deliberately reuse the existing playlist-tooltip-panel
   structure and the existing auth primary button. Only sizing/wrapping is scoped
   here so meta tooltip rules cannot collapse the content to 180px/nowrap. */
.nuam-guest-locked-tooltip-anchor > .playlist-genres-tooltip.nuam-guest-registration-tooltip {
  width: min(360px, calc(100vw - 24px));
  min-width: min(280px, calc(100vw - 24px));
  max-width: min(360px, calc(100vw - 24px));
  max-height: none;
  padding: 0 !important;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  white-space: normal;
  pointer-events: auto !important;
}

.nuam-guest-registration-tooltip .playlist-genres-tooltip-title,
.nuam-guest-registration-tooltip-title {
  margin-bottom: 0;
  font-size: 13px;
  line-height: 1.3;
  font-weight: 700;
  white-space: normal !important;
  overflow-wrap: anywhere;
}

.nuam-guest-registration-tooltip .playlist-scroll-tooltip-body {
  max-height: none;
  overflow: visible;
}

.nuam-guest-registration-tooltip .nuam-auth-primary-btn {
  margin-top: 0;
}

.nuam-guest-locked-tooltip-anchor:hover > .nuam-guest-registration-tooltip,
.nuam-guest-locked-tooltip-anchor:focus-within > .nuam-guest-registration-tooltip,
.nuam-guest-locked-tooltip-anchor.is-tooltip-open > .nuam-guest-registration-tooltip {
  pointer-events: auto !important;
}

/* Bottom registration callout: exact existing account-card surface + auth button;
   this class owns positioning/animation only, not a new visual surface. */
.nuam-guest-registration-prompt {
  position: fixed;
  z-index: 2147482800;
  left: 50%;
  bottom: max(16px, env(safe-area-inset-bottom));
  width: min(560px, calc(100vw - 24px));
  gap: 12px;
  background: var(--surface-overlay-soft);
  background-image: var(--grain-bg);
  background-size: 20px 20px;
  background-blend-mode: overlay;
  backdrop-filter: blur(8px) saturate(140%);
  -webkit-backdrop-filter: blur(8px) saturate(140%);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translate(-50%, calc(100% + 28px));
  transition: transform .28s cubic-bezier(.22,.8,.24,1), opacity .22s ease, visibility 0s linear .28s;
  touch-action: pan-y;
  overscroll-behavior: contain;
}

.nuam-guest-registration-prompt.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translate(-50%, 0);
  transition-delay: 0s;
}

.nuam-guest-registration-prompt-copy {
  flex: 1 1 auto;
  min-width: 0;
}

.nuam-guest-registration-prompt-text {
  color: var(--text-primary);
  font-size: 12px;
  line-height: 1.45;
  font-weight: 600;
}

.nuam-guest-registration-prompt-action {
  flex: 0 0 180px;
  width: 180px;
}

.nuam-guest-registration-prompt-action .nuam-auth-primary-btn {
  margin-top: 0;
}

/* V1349: guest statistics never scroll. The fake graphs are clipped to the
   visible panel while the registration card is centered in that visible area. */
#playlist-modal .playlist-public-preview-stats-panel {
  overflow: hidden !important;
  scrollbar-gutter: auto !important;
}

.playlist-public-preview-stats-panel > .playlist-public-preview-stats-lock {
  position: relative;
  flex: 1 1 auto !important;
  min-height: 0;
  height: auto;
  overflow: hidden;
  border-radius: inherit;
}

.playlist-public-preview-stats-fake {
  position: absolute;
  inset: 0;
  overflow: hidden;
  pointer-events: none;
  user-select: none;
  filter: blur(7px);
  opacity: .82;
}

.playlist-public-preview-stats-gate {
  position: absolute;
  z-index: 3;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 28px;
  background: rgba(12,12,14,.18);
}

html.ff-scrollbars-enabled #playlist-modal .playlist-modal-stats-shell > .playlist-public-preview-stats-panel,
html.ff-scrollbars-enabled #playlist-modal .playlist-modal-layout[data-mobile-pane="stats"] .playlist-public-preview-stats-panel {
  overflow: hidden !important;
  scrollbar-gutter: auto !important;
  padding-right: 9px !important;
}

.playlist-public-preview-stats-gate-card {
  width: min(430px, 100%);
}

.playlist-public-preview-stats-gate-text {
  color: var(--text-primary);
  font-size: 12px;
  line-height: 1.45;
  font-weight: 600;
  text-align: center;
}

.playlist-public-preview-stats-gate-btn {
  margin-top: 10px;
}

@media (max-width: 760px) {
  .nuam-guest-registration-prompt {
    align-items: stretch;
    flex-direction: column;
    gap: 10px;
  }

  .nuam-guest-registration-prompt-action {
    flex-basis: auto;
    width: 100%;
  }

  .playlist-public-preview-stats-lock {
    min-height: 0;
  }
}

/* v1354 — guest curator/search previews. Guest chart/list surfaces are clipped,
   never independently scrollable, and reuse the same registration card. */
#curator-modal .curator-public-preview-charts-shell {
  position: relative;
}

#curator-modal .curator-public-preview-charts-scroll {
  position: relative;
  overflow: hidden !important;
  scrollbar-gutter: auto !important;
}

html.ff-scrollbars-enabled #curator-modal .curator-public-preview-charts-scroll {
  overflow: hidden !important;
  scrollbar-gutter: auto !important;
  padding-right: 0 !important;
}

#curator-modal .curator-public-preview-charts-content.is-public-preview {
  filter: blur(7px);
  opacity: .82;
  pointer-events: none;
  user-select: none;
}

#curator-modal .curator-public-preview-stats-gate {
  inset: 0;
  z-index: 3;
  pointer-events: none;
  border-radius: var(--nuam-radius-xl);
}

#curator-modal .curator-public-preview-stats-gate-card {
  width: min(430px, calc(100% - 56px));
  pointer-events: auto;
}

.search-entity-shell[data-nuam-public-preview="1"] .search-head-actions a,
.search-entity-shell[data-nuam-public-preview="1"] .search-head-actions button {
  cursor: pointer;
}

.search-track-playlists-shell.is-public-preview,
.artist-search-head-charts-lock.is-public-preview {
  position: relative;
  overflow: hidden !important;
  scrollbar-gutter: auto !important;
}

.search-track-playlists-shell.is-public-preview .search-track-playlists-list,
.artist-search-head-charts-lock.is-public-preview .artist-search-head-charts {
  filter: blur(7px);
  opacity: .82;
  pointer-events: none;
  user-select: none;
}

.search-track-playlists-shell.is-public-preview .placement-table-body.is-split-scroll,
.search-track-playlists-shell.is-public-preview .placement-table-wrap,
.search-track-playlists-shell.is-public-preview .placement-table-block {
  overflow: hidden !important;
  scrollbar-gutter: auto !important;
}

.search-public-preview-gate {
  position: absolute;
  z-index: 4;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 28px;
  background: rgba(12,12,14,.18);
  pointer-events: none;
}

.search-public-preview-gate-card {
  width: min(430px, 100%);
  pointer-events: auto;
}

.search-public-preview-gate-text {
  color: var(--text-primary);
  font-size: 12px;
  line-height: 1.45;
  font-weight: 600;
  text-align: center;
}

.search-public-preview-gate-btn {
  margin-top: 10px;
}

.placement-playlist-button.is-public-preview-placeholder,
.placement-playlist-mobile-cover-link.is-public-preview-placeholder,
.placement-playlist-mobile-title.is-public-preview-placeholder {
  cursor: default;
  text-decoration: none;
}

@media (max-width: 760px) {
  #curator-modal .curator-public-preview-stats-gate-card,
  .search-public-preview-gate-card {
    width: min(430px, calc(100% - 32px));
  }
}

/* v1355 — artist public-preview lock must occupy the exact grid slot that the
   normal direct .artist-search-head-charts child uses. Full/authenticated pages
   do not render this wrapper at all. */
.artist-search-head-charts-lock.is-public-preview {
  min-width: 0;
  min-height: 0;
  width: 100%;
  height: 100%;
  position: relative;
  overflow: hidden !important;
  scrollbar-gutter: auto !important;
}

.artist-search-head-charts-lock.is-public-preview > .artist-search-head-charts {
  width: 100%;
  height: 100%;
  min-width: 0;
  min-height: 0;
}

.artist-search-head.has-neighbor-artists > .artist-search-head-charts-lock.is-public-preview {
  grid-column: 3;
}

.search-entity-shell.is-artist-head-collapsed .search-head-card.artist-search-head > .artist-search-head-charts-lock.is-public-preview {
  display: none;
}

@media (max-width: 760px) {
  .search-entity-shell.is-artist-mobile-tabs-enabled .artist-search-head > .artist-search-head-charts-lock.is-public-preview {
    display: none;
  }

  .search-entity-shell.is-artist-mobile-tabs-enabled .artist-search-mobile-analytics-pane .artist-search-head-charts-lock.is-public-preview {
    display: block;
    width: 100%;
    height: 100%;
  }
}
