/* ============================================================
   CAMPAIGNS — "My Campaigns" launcher + manager modal (Phase 5).
   Reuses the glass / rm-* / tiny-btn language elsewhere.
   ============================================================ */

/* launcher pill — landing, signed-in, under the account chip */
.camp-launch {
  position:fixed; top:54px; left:14px; z-index:9000; display:flex; align-items:center; gap:.45rem;
  padding:.42rem .8rem; border-radius:999px; cursor:pointer;
  font-family:var(--font-body); font-size:.76rem; color:hsl(var(--foreground));
}
.camp-launch:hover { color:hsl(var(--primary)); }

/* modal */
.camp-overlay {
  position:fixed; inset:0; z-index:9500; display:grid; place-items:center; padding:1.2rem;
  background:hsl(var(--background)/.62); backdrop-filter:blur(5px);
  animation:fade-rise .2s ease both;
}
.camp-panel {
  width:min(560px,94vw); max-height:86vh; display:flex; flex-direction:column; gap:.8rem;
  padding:1.4rem 1.4rem 1.2rem; border-radius:20px;
}
.camp-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.camp-head h2 { font-size:1.5rem; }
.camp-x { width:34px; height:34px; border-radius:999px; display:grid; place-items:center; cursor:pointer;
  color:hsl(var(--muted-foreground)); font-size:.9rem; }
.camp-x:hover { color:hsl(var(--foreground)); }
.camp-sub { font-size:.82rem; color:hsl(var(--muted-foreground)); margin-top:-.5rem; }

.camp-new { display:flex; gap:.6rem; }
.camp-new .rm-input { flex:1; }
.camp-new .rm-go { margin-top:0; white-space:nowrap; padding-inline:1.05rem; }

.camp-list { display:flex; flex-direction:column; gap:.5rem; overflow:auto; margin-top:.1rem; padding-right:.25rem; }
.camp-empty { font-size:.85rem; color:hsl(var(--muted-foreground)); text-align:center; padding:1.5rem 0; }

.camp-row {
  display:flex; align-items:center; gap:.5rem; padding:.45rem .55rem .45rem .7rem; border-radius:12px;
  background:hsl(var(--surface)/.5); box-shadow:inset 0 0 0 1px hsl(var(--border));
}
.camp-row-main { display:flex; align-items:center; gap:.7rem; min-width:0; flex:1; text-align:left;
  background:none; border:none; cursor:pointer; padding:.15rem; border-radius:9px; }
.camp-row-main:hover { background:hsl(var(--primary)/.08); }
.camp-row-ico { color:hsl(var(--primary)); display:grid; place-items:center; flex:none; }
.camp-row-text { display:flex; flex-direction:column; gap:.12rem; min-width:0; }
.camp-title { font-family:var(--font-display); font-size:1rem; color:hsl(var(--foreground));
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.camp-meta { font-size:.7rem; color:hsl(var(--muted-foreground)); }
.camp-edit { padding:.38rem .55rem; font-size:.95rem; }
.camp-actions, .camp-confirm { display:flex; gap:.4rem; flex:none; }
.tiny-btn.danger { color:hsl(0 75% 67%); box-shadow:inset 0 0 0 1px hsl(0 60% 50% / .45); }
.tiny-btn.danger:hover { background:hsl(0 60% 45% / .18); }

/* ---------- campaign detail ---------- */
.camp-panel.detail { width:min(680px,94vw); }
.camp-back { width:34px; height:34px; border-radius:999px; display:grid; place-items:center; cursor:pointer;
  color:hsl(var(--muted-foreground)); font-size:1rem; flex:none; }
.camp-back:hover { color:hsl(var(--foreground)); }
.camp-panel.detail .camp-head h2 { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

.camp-tabs { display:flex; gap:.4rem; flex-wrap:wrap; }
.camp-tab { font-family:var(--font-body); font-size:.78rem; padding:.4rem .75rem; border-radius:999px; cursor:pointer;
  color:hsl(var(--muted-foreground)); background:hsl(var(--surface)/.6); box-shadow:inset 0 0 0 1px hsl(var(--border));
  display:flex; align-items:center; gap:.4rem; transition:color .2s, box-shadow .2s; }
.camp-tab:hover { color:hsl(var(--foreground)); }
.camp-tab.on { color:hsl(var(--primary)); box-shadow:inset 0 0 0 1px hsl(var(--primary)/.6); background:hsl(var(--primary)/.1); }
.camp-tab-n { font-size:.66rem; min-width:1.1em; height:1.1em; padding:0 .25em; border-radius:999px;
  display:inline-grid; place-items:center; background:hsl(var(--primary)/.25); color:hsl(var(--foreground)); }

.camp-uploader { display:flex; align-items:center; gap:.7rem; flex-wrap:wrap; }
.camp-uploader .rm-go { margin-top:0; padding-inline:1rem; white-space:nowrap; }
.camp-uphint { font-size:.72rem; color:hsl(var(--muted-foreground)); }

.camp-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr)); gap:.7rem;
  overflow:auto; padding-right:.25rem; }
.camp-grid .camp-empty { grid-column:1/-1; }
.asset-card { border-radius:12px; overflow:hidden; background:hsl(var(--surface)/.5);
  box-shadow:inset 0 0 0 1px hsl(var(--border)); display:flex; flex-direction:column; }
.asset-card.status-uploading, .asset-card.status-processing { animation:asset-pulse 1.6s ease-in-out infinite; }
.asset-thumb { position:relative; aspect-ratio:4/3; background:hsl(var(--background)/.6); display:grid; place-items:center; overflow:hidden; }
.asset-thumb img { width:100%; height:100%; object-fit:cover; }
.asset-ph { color:hsl(var(--muted-foreground)/.7); }
.asset-kind { position:absolute; left:6px; top:6px; font-size:.7rem; width:20px; height:20px; border-radius:999px;
  display:grid; place-items:center; background:hsl(var(--background)/.7); color:hsl(var(--primary)); }
.asset-foot { display:flex; align-items:center; justify-content:space-between; gap:.3rem; padding:.4rem .5rem; }
.asset-badge { font-size:.64rem; letter-spacing:.04em; text-transform:uppercase; padding:.12rem .4rem; border-radius:999px;
  color:hsl(var(--muted-foreground)); background:hsl(var(--surface)); }
.asset-badge.b-ready { color:hsl(146 55% 60%); background:hsl(146 40% 30% / .2); }
.asset-badge.b-error { color:hsl(0 70% 66%); background:hsl(0 50% 35% / .2); }
.asset-confirm { display:flex; gap:.25rem; }
@keyframes asset-pulse { 0%,100%{ opacity:1; } 50%{ opacity:.62; } }
