/* ============================================================
   Source Release — Early Access / New badges + staff release panel
   Purely additive: no existing selectors are overridden.
   ============================================================ */

.src-badge {
  display: inline-flex;
  align-items: center;
  gap: .3em;
  font-size: .66rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  line-height: 1;
  padding: .3em .55em;
  border-radius: 999px;
  white-space: nowrap;
  vertical-align: middle;
  border: 1px solid transparent;
}
.src-badge i { font-size: .85em; }

.src-badge--early {
  color: #ffd479;
  background: linear-gradient(135deg, rgba(255, 176, 32, .22), rgba(255, 96, 160, .18));
  border-color: rgba(255, 186, 64, .45);
  box-shadow: 0 0 0 1px rgba(255, 186, 64, .08), 0 4px 14px rgba(255, 150, 32, .12);
}
.src-badge--new {
  color: #8ef2c4;
  background: linear-gradient(135deg, rgba(32, 220, 150, .2), rgba(60, 160, 255, .16));
  border-color: rgba(64, 224, 168, .45);
  box-shadow: 0 0 0 1px rgba(64, 224, 168, .08), 0 4px 14px rgba(32, 200, 140, .12);
}

/* Badge row inside a source card */
.src-badges {
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
  justify-content: center;
  padding: .15rem .4rem .3rem;
}
.src-badges:empty { display: none; }

/* ---------------- Staff release-management panel ---------------- */
.srel-panel {
  margin: 1rem 0 1.5rem;
  border: 1px solid var(--border, #2a2a38);
  border-radius: 14px;
  background: var(--surface, #14141c);
  overflow: hidden;
}
.srel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .75rem;
  flex-wrap: wrap;
  padding: .85rem 1rem;
  border-bottom: 1px solid var(--border, #2a2a38);
  background: rgba(124, 92, 255, .06);
}
.srel-head h2 {
  margin: 0;
  font-size: 1rem;
  display: flex;
  align-items: center;
  gap: .5rem;
}
.srel-head .srel-hint {
  margin: .25rem 0 0;
  font-size: .8rem;
  color: var(--text-muted, #8b8b9c);
}
.srel-tools {
  display: flex;
  gap: .5rem;
  flex-wrap: wrap;
  align-items: center;
  padding: .75rem 1rem 0;
}
.srel-tools input[type="search"],
.srel-tools select {
  background: var(--surface-2, #1b1b26);
  color: var(--text-primary, #fff);
  border: 1px solid var(--border, #2a2a38);
  border-radius: 9px;
  padding: .45rem .6rem;
  font-size: .85rem;
  min-width: 0;
}
.srel-list {
  display: grid;
  gap: .6rem;
  padding: .75rem 1rem 1rem;
}
.srel-row {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: .6rem;
  align-items: center;
  padding: .7rem .8rem;
  border: 1px solid var(--border, #2a2a38);
  border-radius: 11px;
  background: var(--surface-2, #1b1b26);
}
.srel-row-main { min-width: 0; }
.srel-row-name {
  font-weight: 650;
  font-size: .92rem;
  display: flex;
  align-items: center;
  gap: .45rem;
  flex-wrap: wrap;
}
.srel-row-key {
  font-size: .72rem;
  color: var(--text-muted, #8b8b9c);
  word-break: break-all;
  margin-top: .15rem;
}
.srel-row-meta {
  font-size: .74rem;
  color: var(--text-muted, #8b8b9c);
  margin-top: .2rem;
}
.srel-row-actions {
  display: flex;
  gap: .4rem;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
}
.srel-status {
  display: inline-flex;
  align-items: center;
  gap: .3em;
  font-size: .68rem;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: .04em;
  padding: .28em .55em;
  border-radius: 999px;
  border: 1px solid var(--border, #2a2a38);
  color: var(--text-muted, #8b8b9c);
}
.srel-status--early { color: #ffd479; border-color: rgba(255, 186, 64, .45); background: rgba(255, 176, 32, .12); }
.srel-status--full  { color: #8ef2c4; border-color: rgba(64, 224, 168, .45); background: rgba(32, 220, 150, .12); }
.srel-empty {
  padding: 1rem;
  color: var(--text-muted, #8b8b9c);
  font-size: .88rem;
  text-align: center;
}

@media (max-width: 640px) {
  .srel-row { grid-template-columns: 1fr; }
  .srel-row-actions { justify-content: flex-start; }
  .srel-tools { flex-direction: column; align-items: stretch; }
}

/* =========================================================================
 * Awaiting-release badge (staff-only), Early-Access lock in the Personal
 * Source Picker, the Early-Access upgrade dialog, and the Admin/Moderator
 * release-management panel.
 * ========================================================================= */
.src-badge--pending {
  color: #cfd3ff;
  border-color: rgba(124, 92, 255, .45);
  background: rgba(124, 92, 255, .14);
}

/* --- Personal Source Picker: locked Early-Access rows --- */
.gs-sp-row.is-locked { cursor: pointer; }
.gs-sp-row.is-locked .gs-sp-name { opacity: .72; }
.gs-sp-row.is-locked input[type="checkbox"] { cursor: not-allowed; }
.gs-sp-lock { font-size: .7rem; color: #ffd479; margin-left: .1rem; }
.gs-sp-upgrade {
  border: 1px solid rgba(255, 186, 64, .5);
  background: rgba(255, 176, 32, .12);
  color: #ffd479;
  font-size: .7rem;
  font-weight: 700;
  padding: .25rem .5rem;
  border-radius: 999px;
  cursor: pointer;
  white-space: nowrap;
}
.gs-sp-upgrade:hover { background: rgba(255, 176, 32, .22); }

/* --- Early Access upgrade dialog --- */
body.ea-open { overflow: hidden; }
.ea-overlay {
  position: fixed; inset: 0; z-index: 4000;
  display: flex; align-items: center; justify-content: center;
  padding: 1rem;
  background: rgba(0, 0, 0, .68);
  backdrop-filter: blur(4px);
}
.ea-overlay[hidden] { display: none; }
.ea-modal {
  position: relative;
  width: min(420px, 100%);
  background: var(--bg-elev, #151520);
  border: 1px solid var(--border, #2a2a38);
  border-radius: 18px;
  padding: 1.6rem 1.4rem 1.3rem;
  text-align: center;
  box-shadow: 0 24px 60px rgba(0, 0, 0, .55);
}
.ea-close {
  position: absolute; top: .6rem; right: .6rem;
  width: 32px; height: 32px; border-radius: 50%;
  border: 1px solid var(--border, #2a2a38);
  background: transparent; color: var(--text-muted, #8b8b9c);
  cursor: pointer;
}
.ea-close:hover { color: var(--text, #eee); }
.ea-icon {
  width: 54px; height: 54px; margin: 0 auto .8rem;
  display: grid; place-items: center;
  border-radius: 50%;
  font-size: 1.35rem; color: #ffd479;
  background: rgba(255, 176, 32, .14);
  border: 1px solid rgba(255, 186, 64, .45);
}
.ea-title { margin: 0 0 .25rem; font-size: 1.15rem; font-weight: 800; }
.ea-source {
  margin: 0 0 .6rem; font-size: .9rem; font-weight: 700; color: #ffd479;
}
.ea-text { margin: 0 0 .9rem; font-size: .88rem; line-height: 1.5; color: var(--text-muted, #8b8b9c); }
.ea-plus { color: #ffd479; }
.ea-perks {
  list-style: none; margin: 0 0 1.1rem; padding: 0;
  display: grid; gap: .4rem; text-align: left;
  font-size: .84rem;
}
.ea-perks li { display: flex; align-items: center; gap: .5rem; }
.ea-perks i { color: #ffd479; width: 1rem; text-align: center; }
.ea-actions { display: flex; flex-direction: column; gap: .5rem; }
.ea-btn {
  border-radius: 10px; padding: .6rem .9rem;
  font-size: .9rem; font-weight: 700; cursor: pointer;
  border: 1px solid transparent;
}
.ea-btn--primary {
  background: linear-gradient(135deg, #ffb020, #ff7a45);
  color: #1a1206;
}
.ea-btn--primary:hover { filter: brightness(1.06); }
.ea-btn--ghost {
  background: transparent;
  border-color: var(--border, #2a2a38);
  color: var(--text-muted, #8b8b9c);
}
.ea-btn--ghost:hover { color: var(--text, #eee); }

/* --- Admin / Moderator release-management panel --- */
.rp {
  border: 1px solid var(--border, #2a2a38);
  border-radius: 16px;
  background: rgba(255, 255, 255, .03);
  padding: 1rem 1.1rem 1.1rem;
  margin: 0 0 1.25rem;
}
.rp__head {
  display: flex; gap: .75rem; flex-wrap: wrap;
  align-items: flex-start; justify-content: space-between;
  margin-bottom: .8rem;
}
.rp__title { margin: 0; font-size: 1rem; font-weight: 800; display: flex; align-items: center; gap: .45rem; }
.rp__sub { margin: .25rem 0 0; font-size: .8rem; color: var(--text-muted, #8b8b9c); max-width: 52ch; }
.rp__search {
  background: var(--bg-elev, #151520); color: var(--text, #eee);
  border: 1px solid var(--border, #2a2a38);
  border-radius: 10px; padding: .45rem .65rem; font-size: .85rem; min-width: 190px;
}
.rp__tabs { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: .8rem; }
.rp-tab {
  border: 1px solid var(--border, #2a2a38);
  background: transparent; color: var(--text-muted, #8b8b9c);
  border-radius: 999px; padding: .35rem .7rem;
  font-size: .78rem; font-weight: 700; cursor: pointer;
}
.rp-tab.is-on { background: var(--accent, #7c5cff); border-color: transparent; color: #fff; }
.rp-tab__n { opacity: .75; font-weight: 600; }
.rp__list { display: grid; gap: .5rem; }
.rp__empty { margin: 0; padding: .9rem; font-size: .85rem; color: var(--text-muted, #8b8b9c); text-align: center; }
.rp-row {
  display: flex; gap: .6rem; flex-wrap: wrap;
  align-items: center; justify-content: space-between;
  border: 1px solid var(--border, #2a2a38);
  border-radius: 12px; padding: .55rem .7rem;
  background: var(--bg-elev, #151520);
}
.rp-row.is-busy { opacity: .55; pointer-events: none; }
.rp-row__main { display: grid; gap: .25rem; min-width: 0; }
.rp-row__name { font-size: .9rem; font-weight: 700; }
.rp-row__meta { display: flex; gap: .35rem; flex-wrap: wrap; }
.rp-chip {
  display: inline-flex; align-items: center; gap: .3em;
  font-size: .68rem; font-weight: 700; text-transform: uppercase;
  letter-spacing: .04em; padding: .22em .5em; border-radius: 999px;
  border: 1px solid var(--border, #2a2a38); color: var(--text-muted, #8b8b9c);
}
.rp-chip.is-pending { color: #cfd3ff; border-color: rgba(124, 92, 255, .45); background: rgba(124, 92, 255, .14); }
.rp-chip.is-early   { color: #ffd479; border-color: rgba(255, 186, 64, .45); background: rgba(255, 176, 32, .12); }
.rp-chip.is-full    { color: #8ef2c4; border-color: rgba(64, 224, 168, .45); background: rgba(32, 220, 150, .12); }
.rp-row__actions { display: flex; gap: .35rem; flex-wrap: wrap; }
.rp-btn {
  border: 1px solid var(--border, #2a2a38);
  background: transparent; color: var(--text, #eee);
  border-radius: 9px; padding: .35rem .6rem;
  font-size: .76rem; font-weight: 700; cursor: pointer;
}
.rp-btn:disabled { opacity: .45; cursor: not-allowed; }
.rp-btn--early:hover:not(:disabled) { border-color: rgba(255, 186, 64, .6); color: #ffd479; }
.rp-btn--full:hover:not(:disabled)  { border-color: rgba(64, 224, 168, .6); color: #8ef2c4; }
.rp-btn--hide:hover:not(:disabled)  { border-color: rgba(255, 96, 96, .6); color: #ff9b9b; }

@media (max-width: 640px) {
  .rp-row { flex-direction: column; align-items: stretch; }
  .rp__search { width: 100%; }
}
