/* RecruiterOS · Command Center
   Builds on app.css (.shell, .sidebar, .topbar, .panel, .inbox ...).
   Only the Command-Center-specific components live here. */

.cmd-side { display: flex; flex-direction: column; gap: 14px; }

.ws-card {
  background: var(--surface-2); border: 1px solid var(--border); border-radius: 12px;
  padding: 11px 13px;
}
.ws-name { font-weight: 700; font-size: 14px; }
.ws-plan { font-size: 11px; color: var(--brand-2); text-transform: uppercase; letter-spacing: 0.08em; margin-top: 2px; font-family: var(--mono); }

/* Portal identity badge: which portal you're in (Admin vs Recruiter). Two
   accent variants so the two portals are instantly distinguishable at a glance. */
.portal-badge {
  display: flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 800; letter-spacing: .04em;
  padding: 8px 11px; border-radius: 999px; border: 1px solid transparent;
  font-family: var(--mono); white-space: nowrap;
}
.portal-badge[data-portal="admin"] {
  color: #c9b8ff; background: rgba(124, 92, 255, .14); border-color: rgba(124, 92, 255, .42);
}
.portal-badge[data-portal="recruiter"] {
  color: #9fe6d4; background: rgba(45, 212, 178, .13); border-color: rgba(45, 212, 178, .42);
}

/* Admin "view as recruiter" banner: an unmistakable strip across the top while
   an admin is inside a specific recruiter's portal. Sits above the shell, which
   shrinks to fit beneath it. */
.imp-banner {
  position: fixed; top: 0; left: 0; right: 0; height: 40px; z-index: 3000;
  display: flex; align-items: center; justify-content: center; gap: 14px;
  padding: 0 16px; font-size: 13px; font-weight: 600; color: #0a0a12;
  background: linear-gradient(135deg, #ffc24d, #ff9f45);
  box-shadow: 0 6px 20px -8px rgba(255, 162, 77, .8);
}
.imp-banner b { font-weight: 800; }
.imp-banner button {
  appearance: none; border: 0; cursor: pointer; font: inherit; font-weight: 800;
  padding: 5px 12px; border-radius: 999px; background: rgba(10, 10, 18, .85); color: #fff;
}
.imp-banner button:hover { background: #0a0a12; }
body.has-imp-banner .shell { height: calc(100vh - 40px); margin-top: 40px; }

/* Dashboard per-recruiter selector (admin, recruiting motion): chips that scope
   the whole dashboard to one recruiter's book of business. */
.ov-recruiters { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 16px; }
.ov-chip {
  appearance: none; cursor: pointer; font: inherit; font-size: 12.5px; font-weight: 600;
  padding: 7px 13px; border-radius: 999px; border: 1px solid var(--border-strong);
  background: var(--surface); color: var(--text-muted); transition: all .12s ease;
}
.ov-chip:hover { border-color: var(--brand); color: var(--text); }
.ov-chip.active { background: var(--brand); border-color: var(--brand); color: #fff; }

/* 14-day trial strip across the top of the Admin Portal. */
.trial-banner {
  display: flex; align-items: center; justify-content: center; gap: 14px;
  padding: 9px 16px; font-size: 13px; font-weight: 600; color: #0a0a12;
  background: linear-gradient(135deg, #7c5cff, #4dd0ff);
}
.trial-banner b { font-weight: 800; }
.trial-banner button {
  appearance: none; border: 0; cursor: pointer; font: inherit; font-weight: 800;
  padding: 5px 13px; border-radius: 999px; background: rgba(10, 10, 18, .85); color: #fff;
}
.trial-banner button:hover { background: #0a0a12; }
.trial-banner button:disabled { opacity: .6; cursor: default; }

/* Hard paywall once the trial ends and the workspace isn't paid. */
.paywall {
  position: fixed; inset: 0; z-index: 5000; display: grid; place-items: center; padding: 24px;
  background: rgba(8, 8, 14, .82); backdrop-filter: blur(8px);
}
.paywall-card {
  width: min(440px, 100%); background: var(--surface); border: 1px solid var(--border-strong);
  border-radius: 18px; padding: 28px; text-align: center; box-shadow: var(--shadow);
}
.paywall-badge {
  display: inline-block; font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .08em;
  color: #c9b8ff; background: rgba(124, 92, 255, .16); border: 1px solid rgba(124, 92, 255, .4);
  padding: 4px 12px; border-radius: 999px; margin-bottom: 14px;
}
.paywall-card h2 { margin: 0 0 8px; font-size: 22px; }
.paywall-card p { margin: 0 0 20px; color: var(--text-muted); font-size: 14px; line-height: 1.5; }

.motion-toggle { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; background: var(--bg-soft); border: 1px solid var(--border); border-radius: 12px; padding: 5px; }
.motion-toggle .mt {
  appearance: none; border: 1px solid transparent; cursor: pointer; padding: 10px 8px; border-radius: 9px;
  background: transparent; color: var(--text-muted); font: inherit; font-weight: 700; font-size: 13px; letter-spacing: .2px;
  display: flex; align-items: center; justify-content: center; gap: 6px; line-height: 1; transition: all .14s ease;
}
.motion-toggle .mt:hover { color: var(--text); background: rgba(255, 255, 255, .05); }
/* Active motion: bold, color-coded fill so it's obvious which one you're on.
   Recruiting = brand purple, BD = amber — warm vs cool = instantly distinct. */
/* Active changes ONLY color/shadow — never size or position — so the two tabs
   stay identical width when you switch (no shrink/jump). */
.motion-toggle .mt.active[data-motion="recruiting"] {
  background: linear-gradient(135deg, #7c5cff, #9d82ff); color: #fff;
  box-shadow: 0 4px 14px -6px rgba(124, 92, 255, .7), inset 0 0 0 1px rgba(255, 255, 255, .18);
}
.motion-toggle .mt.active[data-motion="bd"] {
  background: linear-gradient(135deg, #ffb020, #ff8a3c); color: #1b1206;
  box-shadow: 0 4px 14px -6px rgba(255, 150, 40, .65), inset 0 0 0 1px rgba(255, 255, 255, .25);
}

.cmd-nav { display: flex; flex-direction: column; gap: 2px; overflow-y: auto; flex: 1; margin: 4px -6px; padding: 0 6px; }
.nav-group { font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-dim); margin: 14px 6px 4px; font-weight: 700; }
.nav-item { display: flex; align-items: center; gap: 11px; padding: 9px 11px; border-radius: 10px; cursor: pointer; color: var(--text-muted); font-weight: 500; font-size: 14px; text-decoration: none; transition: background 0.12s ease, color 0.12s ease; }
.nav-item:hover { background: var(--surface); color: var(--text); }
.nav-item.active { background: var(--surface-2); color: var(--text); box-shadow: inset 2px 0 0 var(--brand); }
.nav-item .ni { width: 18px; text-align: center; }
.ni-badge { margin-left: auto; background: var(--brand); color: #0a0a12; font-size: 11px; font-weight: 700; min-width: 18px; height: 18px; border-radius: 9px; display: none; place-items: center; padding: 0 5px; }
.ni-badge.show { display: grid; }

.env-pill { font-family: var(--mono); font-size: 11px; padding: 4px 9px; border-radius: 7px; border: 1px solid var(--border); color: var(--text-dim); text-transform: uppercase; letter-spacing: 0.06em; }
.env-pill.live { color: var(--accent-green); border-color: rgba(56,224,166,0.4); }

/* generic section heads + cards */
.v-head { margin-bottom: 18px; }
.v-head h2 { font-size: 20px; letter-spacing: -0.01em; }
.v-head p { color: var(--text-muted); font-size: 15px; margin-top: 4px; max-width: 70ch; }

.card { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 18px; }
.card h3 { font-size: 16px; margin-bottom: 12px; }
.cards { display: grid; gap: 14px; }

/* stat grid (Overview) */
.stat-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 14px; }
.stat { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px; position: relative; overflow: hidden; }
.stat .sv { font-size: 28px; font-weight: 800; letter-spacing: -0.02em; }
.stat .sl { color: var(--text-muted); font-size: 13px; margin-top: 4px; }
.stat .rag { position: absolute; top: 14px; right: 14px; width: 9px; height: 9px; border-radius: 50%; }
.stat.clickable, .list-row.clickable { cursor: pointer; transition: transform .12s ease, border-color .12s ease, background .12s ease; }
.stat.clickable:hover { transform: translateY(-2px); border-color: var(--brand); background: var(--surface-2); }
.stat.clickable::after { content: "→"; position: absolute; right: 14px; bottom: 12px; color: var(--text-dim); opacity: 0; transition: opacity .12s ease; font-size: 14px; }
.stat.clickable:hover::after { opacity: 1; }
.list-row.clickable:hover { background: var(--surface-2); border-radius: 8px; }
.rag.green { background: var(--accent-green); box-shadow: 0 0 10px var(--accent-green); }
.rag.yellow { background: var(--accent-amber); box-shadow: 0 0 10px var(--accent-amber); }
.rag.red { background: var(--accent-red); box-shadow: 0 0 10px var(--accent-red); }

.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 1080px){ .two-col { grid-template-columns: 1fr; } }

.list-row { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); font-size: 14px; }
.list-row:last-child { border-bottom: 0; }
.list-row .lr-main { font-weight: 600; }
.list-row .lr-sub { color: var(--text-dim); font-size: 12.5px; }
.list-row .lr-right { margin-left: auto; color: var(--text-muted); font-size: 12.5px; }

/* Response inbox */
.chan-filter { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.chan-filter .cf { cursor: pointer; padding: 6px 12px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface); color: var(--text-muted); font-size: 12.5px; font-weight: 600; }
.chan-filter .cf.active { background: var(--surface-2); color: var(--text); border-color: var(--border-strong); }

.resp-item { background: var(--surface); border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; margin-bottom: 10px; }
.resp-top { display: flex; align-items: center; gap: 10px; }
.resp-top .avatar { width: 30px; height: 30px; font-size: 12px; }
.resp-name { font-weight: 700; font-size: 14px; }
.resp-chan { font-size: 11px; color: var(--text-dim); font-family: var(--mono); text-transform: uppercase; }
.resp-text { color: var(--text); margin: 9px 0 8px; font-size: 14px; }
.resp-actions { display: flex; flex-wrap: wrap; gap: 6px; }
.resp-act { font-size: 11.5px; color: var(--text-muted); background: var(--bg-soft); border: 1px solid var(--border); border-radius: 7px; padding: 3px 8px; font-family: var(--mono); }

/* classification badges */
.cls { margin-left: auto; font-size: 11px; font-weight: 800; letter-spacing: 0.04em; padding: 4px 9px; border-radius: 999px; text-transform: uppercase; }
.cls-positive { background: rgba(56,224,166,0.16); color: var(--accent-green); }
.cls-soft_yes { background: rgba(77,208,255,0.16); color: var(--brand-2); }
.cls-referral { background: rgba(255,122,198,0.16); color: var(--brand-3); }
.cls-timing_objection { background: rgba(255,194,77,0.16); color: var(--accent-amber); }
.cls-fit_objection { background: rgba(124,92,255,0.18); color: #b9a6ff; }
.cls-not_interested { background: rgba(108,108,130,0.2); color: var(--text-muted); }
.cls-stop { background: rgba(255,107,107,0.16); color: var(--accent-red); }
.cls-unclassified { background: rgba(255,255,255,0.08); color: var(--text-muted); }
.sla { font-size: 10.5px; color: var(--text-dim); font-family: var(--mono); margin-left: 8px; }

/* rules matrix */
.matrix { width: 100%; border-collapse: collapse; font-size: 13px; }
.matrix th, .matrix td { text-align: left; padding: 10px 12px; border-bottom: 1px solid var(--border); vertical-align: top; }
.matrix th { color: var(--text-dim); font-size: 11px; text-transform: uppercase; letter-spacing: 0.06em; font-weight: 700; }
.matrix td .acts { color: var(--text-muted); font-size: 12.5px; }
.matrix tbody tr.clickable { cursor: pointer; }
.matrix tbody tr.clickable:hover td { background: var(--surface-2); }

/* Dashboard drill-downs: back link, capacity bars, email-auth pills */
.back-link { display: inline-flex; align-items: center; gap: 6px; color: var(--text); cursor: pointer; text-decoration: none; font-weight: 600; font-size: 13px; padding: 5px 12px 5px 10px; border: 1px solid var(--border); border-radius: 999px; background: var(--surface-2); transition: background .12s, border-color .12s, color .12s; }
.back-link .arr { font-size: 15px; line-height: 1; transition: transform .12s; }
.back-link:hover { color: var(--brand); border-color: var(--brand); background: var(--surface); }
.back-link:hover .arr { transform: translateX(-3px); }
.cap-bar { height: 5px; border-radius: 3px; background: var(--surface-2); margin-top: 6px; overflow: hidden; }
.cap-fill { height: 100%; border-radius: 3px; }
.cap-fill.green { background: var(--accent-green); }
.cap-fill.yellow { background: var(--accent-amber); }
.cap-fill.red { background: var(--accent-red); }
.auth { display: inline-block; font-size: 10.5px; font-weight: 700; letter-spacing: .03em; padding: 1px 5px; border-radius: 5px; }
.auth.ok { color: var(--accent-green); background: rgba(34, 197, 94, 0.12); }
.auth.bad { color: var(--accent-red); background: rgba(239, 68, 68, 0.12); }

/* Analytics drill-downs: clickable KPIs, campaign chips, conversation threads */
.rstat.clickable { cursor: pointer; position: relative; transition: transform .12s ease, border-color .12s ease, background .12s ease; }
.rstat.clickable:hover { transform: translateY(-2px); border-color: var(--brand); background: var(--surface-2); }
.rstat.clickable::after { content: "→"; position: absolute; right: 16px; top: 16px; color: var(--text-dim); opacity: 0; transition: opacity .12s ease; font-size: 15px; }
.rstat.clickable:hover::after { opacity: 1; }
.an-more { color: var(--text-muted); text-decoration: none; }
.an-more:hover { color: var(--brand); }
.an-camp { color: var(--brand); text-decoration: none; font-weight: 600; cursor: pointer; }
.an-camp:hover { text-decoration: underline; }
.cls-pill { font-size: 10px; font-weight: 700; letter-spacing: .03em; padding: 1px 6px; border-radius: 999px; vertical-align: middle; color: var(--text-muted); background: var(--surface-2); }
.cls-pill.positive { color: var(--accent-green); background: rgba(34, 197, 94, 0.12); }
.cls-pill.referral { color: var(--brand); background: rgba(124, 140, 255, 0.14); }
.cls-pill.soft_yes { color: var(--accent-amber); background: rgba(245, 158, 11, 0.14); }
.an-conv { border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px; margin-bottom: 12px; background: var(--surface); }
.an-conv-head { display: flex; align-items: center; gap: 10px; }
.an-conv-body { margin-top: 10px; padding-top: 10px; border-top: 1px solid var(--border); display: flex; flex-direction: column; gap: 6px; }
.an-msg { font-size: 13px; line-height: 1.45; padding: 7px 11px; border-radius: 10px; max-width: 80%; }
.an-msg-at { display: block; font-size: 10.5px; color: var(--text-dim); margin-bottom: 2px; }
.an-msg.out { align-self: flex-start; background: var(--surface-2); color: var(--text-muted); border-bottom-left-radius: 3px; }
.an-msg.in { align-self: flex-end; background: rgba(124, 140, 255, 0.12); color: var(--text); border-bottom-right-radius: 3px; }

/* ---- Dashboard motion & polish ---- */
/* Staggered entrance for the Dashboard (renders once per nav, so no replay jank;
   Analytics auto-refreshes, so it deliberately stays out of this). */
@keyframes ovRise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
#ovBody .stat, #ovBody .two-col > .card { animation: ovRise .5s cubic-bezier(.2,.8,.2,1) both; }
#ovBody .stat-grid .stat:nth-child(1) { animation-delay: .04s; }
#ovBody .stat-grid .stat:nth-child(2) { animation-delay: .10s; }
#ovBody .stat-grid .stat:nth-child(3) { animation-delay: .16s; }
#ovBody .stat-grid .stat:nth-child(4) { animation-delay: .22s; }
#ovBody .two-col > .card:nth-child(1) { animation-delay: .26s; }
#ovBody .two-col > .card:nth-child(2) { animation-delay: .32s; }
/* A faint always-on gradient accent on the capacity strip so it reads as "live". */
#ovBody .stat-grid:first-child .stat::before { opacity: .5; }

/* Capacity bars grow from the left on render (works for any target width). */
.cap-fill { transform-origin: left center; animation: capGrow .7s cubic-bezier(.2,.8,.2,1) both; }
@keyframes capGrow { from { transform: scaleX(0); } to { transform: scaleX(1); } }

/* Health dots pulse when not green — pulls the eye straight to what needs action. */
@keyframes ragPulse { 0% { box-shadow: 0 0 0 0 currentColor; } 70% { box-shadow: 0 0 0 6px transparent; } 100% { box-shadow: 0 0 0 0 transparent; } }
.rag.red { color: var(--accent-red); animation: ragPulse 1.8s infinite; }
.rag.yellow { color: var(--accent-amber); animation: ragPulse 2.6s infinite; }

@media (prefers-reduced-motion: reduce) {
  #ovBody .stat, #ovBody .two-col > .card, .cap-fill, .rag.red, .rag.yellow { animation: none; }
}

/* phase checklist (Outreach) */
.phase { border: 1px solid var(--border); border-radius: 12px; padding: 14px 16px; margin-bottom: 10px; background: var(--surface); }
.phase-h { display: flex; align-items: center; gap: 10px; }
.phase-n { width: 26px; height: 26px; border-radius: 8px; background: var(--grad); color: #0a0a12; font-weight: 800; display: grid; place-items: center; font-size: 13px; }
.phase-h h4 { font-size: 14px; }
.phase-time { margin-left: auto; font-size: 11px; color: var(--text-dim); font-family: var(--mono); }
.phase ul { margin: 10px 0 0; padding-left: 18px; color: var(--text-muted); font-size: 13px; display: grid; gap: 4px; }
.phase .done { margin-top: 8px; font-size: 12px; color: var(--accent-green); }

/* timeline (sequence) */
.touch { display: grid; grid-template-columns: 54px 1fr; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--border); }
.touch:last-child { border-bottom: 0; }
.touch .day { font-family: var(--mono); font-size: 12px; color: var(--brand-2); }
.touch .tn { font-weight: 600; font-size: 13.5px; }
.touch .ti { color: var(--text-muted); font-size: 12.5px; }
.touch .chip-c { font-size: 10px; text-transform: uppercase; letter-spacing: 0.05em; padding: 1px 7px; border-radius: 6px; border: 1px solid var(--border); color: var(--text-dim); margin-left: 8px; }

/* integration status (Connected) */
.integ { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--border); }
.integ:last-child { border-bottom: 0; }
.integ .dot3 { width: 11px; height: 11px; border-radius: 50%; }
.integ .meta { flex: 1; }
.integ .meta b { font-size: 14px; }
.integ .meta small { display: block; color: var(--text-dim); font-size: 12px; }
.req-tag { font-size: 10px; font-family: var(--mono); color: var(--text-dim); border: 1px solid var(--border); border-radius: 6px; padding: 2px 6px; }

/* pipeline (Prospects) */
.pipe { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px,1fr)); gap: 10px; margin-bottom: 16px; }
.pipe .stage { background: var(--surface); border: 1px solid var(--border); border-radius: 10px; padding: 12px; text-align: center; }
.pipe .stage b { font-size: 22px; font-weight: 800; }
.pipe .stage span { display: block; color: var(--text-muted); font-size: 11.5px; margin-top: 3px; }

.btn-row { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 6px; }

/* cadence schedule */
.cad { display: grid; grid-template-columns: 60px 1fr; gap: 10px; padding: 9px 0; border-bottom: 1px solid var(--border); }
.cad:last-child { border-bottom: 0; }
.cad .ct { font-family: var(--mono); font-size: 12.5px; color: var(--brand-2); }
.cad .cn { font-weight: 600; font-size: 13.5px; }
.cad .cd { color: var(--text-muted); font-size: 12.5px; }
.cad .auto { font-size: 10px; font-family: var(--mono); color: var(--accent-green); }
.cad .manual { font-size: 10px; font-family: var(--mono); color: var(--accent-amber); }

.empty { color: var(--text-dim); text-align: center; padding: 36px 0; font-size: 14px; }
.muted { color: var(--text-muted); }
.spark { color: var(--brand-2); }

/* ============================================================
   Account menu (topbar, upper right) + enterprise dropdown
   ============================================================ */
.acct { position: relative; margin-left: 6px; }
.acct-btn {
  display: flex; align-items: center; gap: 6px;
  background: rgba(255,255,255,0.04); border: 1px solid var(--border-strong);
  border-radius: 999px; padding: 4px 8px 4px 4px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.acct-btn:hover { background: rgba(255,255,255,0.08); border-color: var(--brand); }
.acct-caret { color: var(--text-dim); font-size: 11px; }

/* Avatar shows an uploaded image (cover) or falls back to initials text */
.acct-avatar {
  width: 30px; height: 30px; border-radius: 50%;
  display: grid; place-items: center; flex: none;
  font-size: 12px; font-weight: 700; color: #0a0a12;
  background: var(--grad); background-size: cover; background-position: center;
  overflow: hidden;
}
.acct-avatar.has-img { color: transparent; }
.acct-avatar.lg { width: 44px; height: 44px; font-size: 16px; }

.acct-menu {
  position: absolute; top: calc(100% + 10px); right: 0; width: 290px; z-index: 80;
  background: var(--surface); border: 1px solid var(--border-strong);
  border-radius: 14px; box-shadow: var(--shadow); padding: 8px;
  /* Never taller than the viewport — scroll the menu instead of clipping items. */
  max-height: calc(100vh - 84px); overflow-y: auto;
  animation: acctIn .14s ease;
}
@keyframes acctIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.acct-menu[hidden] { display: none; }

.acct-head { display: flex; gap: 12px; align-items: center; padding: 8px 10px 9px; }
.acct-id { min-width: 0; }
.acct-id b { display: block; font-size: 14px; }
.acct-id span { display: block; font-size: 12px; color: var(--text-dim); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.acct-plan { margin-top: 4px; display: inline-block !important; font-size: 10px !important; text-transform: uppercase; letter-spacing: .06em; color: #b9a6ff !important; background: rgba(124,92,255,0.14); border: 1px solid rgba(124,92,255,0.3); padding: 2px 8px; border-radius: 999px; }

.acct-upload, .acct-item {
  display: flex; align-items: center; gap: 10px; width: 100%; text-align: left;
  padding: 6px 10px; border-radius: 9px; font-size: 13px; color: var(--text-muted);
  background: none; border: none; cursor: pointer;
}
.acct-upload:hover, .acct-item:hover { background: rgba(255,255,255,0.05); color: var(--text); }
.acct-item .ic, .acct-upload .ic { width: 18px; text-align: center; }
.acct-item.danger:hover { color: var(--accent-red); background: rgba(255,107,107,0.08); }
.acct-sep { height: 1px; background: var(--border); margin: 4px 4px; }
.acct-group { font-size: 10px; text-transform: uppercase; letter-spacing: .1em; color: var(--text-dim); font-weight: 700; padding: 5px 10px 3px; }

/* Working pipeline stage selector in Prospects */
.stage-select { border: 1px solid var(--border-strong); border-radius: 999px; padding: 4px 10px; font-size: 12px; font-weight: 600; background: var(--surface); color: var(--text); cursor: pointer; }
.stage-select:hover { border-color: var(--brand); }
.stage-select:disabled { opacity: .5; cursor: default; }

/* Response inbox action buttons */
.resp-btn { font-size: 12px; font-weight: 600; padding: 5px 11px; border-radius: 8px; border: 1px solid var(--brand); background: rgba(124,92,255,0.14); color: #b9a6ff; cursor: pointer; }
.resp-btn:hover { background: rgba(124,92,255,0.24); }
.resp-btn.ghost { border-color: var(--border-strong); background: transparent; color: var(--text-muted); }
.resp-btn.ghost:hover { color: var(--accent-red); border-color: var(--accent-red); }
.resp-btn:disabled { opacity: .5; cursor: default; }

/* ============================================================
   Modal (import, send composer, campaign detail)
   ============================================================ */
.modal-bg { position: fixed; inset: 0; background: rgba(5,5,10,0.6); backdrop-filter: blur(3px); z-index: 120; display: grid; place-items: center; padding: 24px; }
.modal-bg[hidden] { display: none; }
.modal-card { width: 100%; max-width: 560px; max-height: 86vh; overflow-y: auto; background: var(--surface); border: 1px solid var(--border-strong); border-radius: 16px; box-shadow: var(--shadow); padding: 22px; animation: acctIn .15s ease; }
.modal-card h3 { font-size: 18px; margin-bottom: 4px; }
.modal-card .sub { color: var(--text-dim); font-size: 13px; margin-bottom: 16px; }
.modal-card label { display: block; font-size: 12px; color: var(--text-muted); margin: 10px 0 5px; font-weight: 600; }
.modal-card textarea, .modal-card input, .modal-card select { width: 100%; background: var(--bg-soft); border: 1px solid var(--border-strong); border-radius: 9px; padding: 10px 12px; color: var(--text); font-family: inherit; font-size: 14px; }
.modal-card textarea { min-height: 150px; resize: vertical; font-family: var(--mono); font-size: 12.5px; }
.modal-foot { display: flex; gap: 10px; justify-content: flex-end; margin-top: 18px; }
.modal-x { float: right; background: none; border: none; color: var(--text-dim); font-size: 20px; cursor: pointer; line-height: 1; }
.modal-x:hover { color: var(--text); }
.imp-preview { font-size: 12px; color: var(--text-muted); margin-top: 8px; }
.imp-preview b { color: var(--accent-green); }
.send-chan { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 6px; }
.send-chan .cf { cursor: pointer; }
.needs-key { font-size: 12px; color: var(--accent-amber); margin-top: 6px; display: none; }
.needs-key.show { display: block; }

/* ============================================================
   In-Market Leads (the BD highlight): industry-led search hero
   ============================================================ */
.im-hero { padding: 8px 0 18px; }
.im-title { font-size: clamp(26px, 3.4vw, 40px); letter-spacing: -0.02em; line-height: 1.05; margin-bottom: 16px; }
.im-search {
  display: flex; align-items: center; gap: 10px;
  background: var(--surface); border: 1px solid var(--border-strong);
  border-radius: 14px; padding: 8px 8px 8px 16px;
  box-shadow: var(--shadow-glow);
}
.im-search .ico { color: var(--text-dim); font-size: 18px; }
.im-search input {
  flex: 1; background: none; border: none; outline: none;
  color: var(--text); font: inherit; font-size: 16px; padding: 10px 4px;
}
.im-search input::placeholder { color: var(--text-dim); }
.im-search .btn { white-space: nowrap; }
.im-industries { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 14px; }
.im-chip {
  appearance: none; cursor: pointer; font: inherit; font-size: 13px; font-weight: 600;
  padding: 7px 14px; border-radius: 999px;
  background: var(--surface); border: 1px solid var(--border); color: var(--text-muted);
  transition: all .12s ease;
}
.im-chip:hover { color: var(--text); border-color: var(--border-strong); transform: translateY(-1px); }
.im-chip.active { background: var(--grad); color: #0a0a12; border-color: transparent; }
.im-count { color: var(--text-muted); font-size: 13px; font-weight: 600; }

/* Search-mode toggle: industry/market OR company name */
.im-modes { display: inline-flex; gap: 4px; margin-bottom: 14px; padding: 4px; border-radius: 12px; background: var(--surface); border: 1px solid var(--border); }
.im-mode { appearance: none; cursor: pointer; font: inherit; font-size: 13px; font-weight: 600; padding: 8px 16px; border-radius: 9px; border: none; background: transparent; color: var(--text-muted); transition: all .12s ease; }
.im-mode:hover { color: var(--text); }
.im-mode.active { background: var(--grad); color: #0a0a12; }

/* Results toolbar: select-all + narrow-down + bulk push */
.im-toolbar { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 6px 0 14px; padding-bottom: 12px; border-bottom: 1px solid var(--border); }
.im-checkall { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--text); cursor: pointer; }
.im-checkall input { width: 16px; height: 16px; accent-color: var(--brand); cursor: pointer; }
.im-narrow { display: inline-flex; gap: 4px; padding: 3px; border-radius: 9px; background: var(--surface); border: 1px solid var(--border); }
.im-nbtn { appearance: none; cursor: pointer; font: inherit; font-size: 12px; font-weight: 600; padding: 5px 11px; border-radius: 6px; border: none; background: transparent; color: var(--text-muted); transition: all .12s ease; }
.im-nbtn:hover { color: var(--text); }
.im-nbtn.active { background: var(--brand); color: #fff; }
.im-toolbar #imBulk { margin-left: auto; }

/* Company lead card with selectable hiring-manager deep dive */
.im-lead { border: 1px solid var(--border); border-radius: 14px; background: var(--surface); padding: 18px; margin-bottom: 14px; transition: border-color .15s; }
.im-lead:hover { border-color: var(--border-strong); }
.im-lead-head { display: flex; align-items: center; gap: 12px; }
.im-lead-head .avatar { width: 38px; height: 38px; font-size: 14px; }
.im-lead-id { min-width: 0; }
.im-lead-name { font-size: 16px; font-weight: 700; letter-spacing: -0.01em; }
.im-lead-meta { font-size: 12.5px; color: var(--text-dim); margin-top: 2px; }
.im-score { margin-left: auto; }
.im-reason { font-size: 13.5px; color: var(--text-muted); margin: 12px 0 14px; line-height: 1.5; }
.im-reason a { color: var(--brand-2); }
.im-managers { border-top: 1px solid var(--border); padding-top: 12px; }
.im-mgr-head { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-dim); margin-bottom: 10px; }
.im-mgr { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; padding: 9px 10px; border-radius: 9px; cursor: pointer; transition: background .12s; }
.im-mgr:hover { background: var(--surface-2); }
.im-mgr input { width: 16px; height: 16px; accent-color: var(--brand); cursor: pointer; flex: none; }
.im-mgr-role { font-size: 13.5px; font-weight: 600; color: var(--text); }
.im-mgr-posted { font-size: 11px; font-weight: 500; color: var(--text-dim); white-space: nowrap; }
.im-mgr-arrow { color: var(--text-dim); }
.im-mgr-title { font-size: 13px; color: var(--text-muted); }
.im-fn { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; padding: 2px 7px; border-radius: 99px; background: rgba(124,92,255,0.16); color: #b9a6ff; }
.im-mgr-who { font-size: 12.5px; color: var(--text-muted); margin-left: auto; }
.im-mgr-why { flex-basis: 100%; font-size: 11.5px; color: var(--text-dim); font-style: italic; margin-left: 26px; }
.im-ai-tag { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; padding: 2px 7px; border-radius: 99px; background: rgba(77,208,255,0.14); color: var(--brand-2); margin-left: 4px; }
.im-ai-refine, .im-all-roles { appearance: none; cursor: pointer; font: inherit; font-size: 12px; font-weight: 600; margin-top: 8px; padding: 6px 12px; border-radius: 8px; border: 1px solid var(--border-strong); background: var(--surface-2); color: var(--text); transition: all .12s ease; }
.im-all-roles { margin-right: 8px; }
.im-ai-refine:hover, .im-all-roles:hover { border-color: var(--brand-2); color: #fff; }
.im-ai-refine:disabled, .im-all-roles:disabled { opacity: .6; cursor: default; }
.im-lead-reasons { font-size: 12px; color: var(--text-dim); margin-top: 12px; }

/* Renewed-demand lead (already in Prospects, but hiring again) */
.im-lead-renew { border-color: rgba(255,194,77,0.5); box-shadow: inset 3px 0 0 var(--accent-amber); }
.im-renew-badge { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; padding: 2px 8px; border-radius: 99px; background: rgba(255,194,77,0.18); color: var(--accent-amber); }
.im-pipeline-badge { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; padding: 2px 8px; border-radius: 99px; background: rgba(120,170,255,0.16); color: #7aa6ff; }
.im-renew { margin: 12px 0; padding: 12px 14px; border-radius: 11px; background: rgba(255,194,77,0.07); border: 1px solid rgba(255,194,77,0.3); }
.im-renew-top { font-size: 13px; margin-bottom: 8px; }
.im-renew-top b { color: var(--accent-amber); }
.im-renew-msg { font-size: 13px; line-height: 1.55; color: var(--text); background: var(--bg-soft); border: 1px solid var(--border); border-radius: 9px; padding: 10px 12px; margin-bottom: 8px; }
.im-renew-copy { appearance: none; cursor: pointer; font: inherit; font-size: 12px; font-weight: 600; padding: 6px 12px; border-radius: 8px; border: 1px solid var(--accent-amber); background: transparent; color: var(--accent-amber); transition: all .12s ease; }
.im-renew-copy:hover { background: rgba(255,194,77,0.14); }

/* ---- Cleaner lead cards: company checkbox + collapsible managers ---- */
.im-co-check { width: 17px; height: 17px; accent-color: var(--brand); cursor: pointer; flex: none; }
.im-managers-d { margin-top: 8px; border-top: 1px solid var(--border); }
.im-managers-d .im-managers { border-top: 0; padding-top: 2px; }
.im-mgr-summary { cursor: pointer; list-style: none; font-size: 12.5px; font-weight: 600; color: var(--text-muted); padding: 9px 0 3px; user-select: none; }
.im-mgr-summary::-webkit-details-marker { display: none; }
.im-mgr-summary::before { content: "▸"; color: var(--text-dim); margin-right: 8px; display: inline-block; }
.im-managers-d[open] .im-mgr-summary::before { content: "▾"; }
.im-managers-d[open] .im-mgr-summary { color: var(--text); }

/* ---- Hiring-signal activity feed — pinned bottom-right so it's always visible ---- */
.im-ticker {
  position: fixed; right: 20px; bottom: 84px; z-index: 60;
  width: 300px; max-width: calc(100vw - 40px);
  border: 1px solid var(--border-strong); border-radius: 12px; background: var(--surface);
  padding: 13px 15px; box-shadow: 0 18px 50px -20px rgba(0,0,0,.85);
}
.im-ticker-x { position: absolute; top: 8px; right: 10px; cursor: pointer; border: 0; background: none; color: var(--text-dim); font-size: 14px; line-height: 1; padding: 2px; }
.im-ticker-x:hover { color: var(--text); }
@media (max-width: 720px) { .im-ticker { position: static; width: auto; margin: 20px 0 4px auto; max-width: 360px; box-shadow: none; } }
.im-ticker-h { font-size: 12px; font-weight: 700; color: var(--text); margin-bottom: 8px; padding-right: 16px; }
.im-ticker-h .muted { font-weight: 500; }
.im-ticker-main { font-size: 14px; color: var(--text-muted); margin-bottom: 3px; }
.im-ticker-main b { color: var(--accent-green); }
.im-ticker-sub { font-size: 12px; color: var(--text-dim); margin-bottom: 10px; }
.im-ticker-log { display: flex; flex-direction: column; gap: 5px; border-top: 1px solid var(--border); padding-top: 9px; }
.im-tick-row { display: flex; justify-content: space-between; font-size: 12.5px; color: var(--text-muted); }
.im-tick-row b { color: var(--brand-2); font-family: var(--mono); }

/* Prospects: contact + enrich */
.lr-id { min-width: 0; }
.lr-contact { font-size: 12px; color: var(--text-muted); margin-top: 3px; }
.lr-contact.muted { color: var(--text-dim); font-style: italic; }
.pr-pending { font-size: 10px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; padding: 2px 7px; border-radius: 99px; background: rgba(255,194,77,0.16); color: var(--accent-amber); margin-left: 8px; }
.list-row .stage-select { margin-left: 0; }
.pr-enrich { appearance: none; cursor: pointer; font: inherit; font-size: 12px; font-weight: 600; white-space: nowrap; padding: 6px 12px; border-radius: 8px; border: 1px solid var(--border-strong); background: var(--surface-2); color: var(--text); margin-left: auto; transition: all .12s ease; }
.pr-enrich:hover { border-color: var(--brand); color: #fff; }
.pr-enrich:disabled { opacity: .6; cursor: default; }

/* Saved hiring signals shelf (staging between search and Prospects) */
.im-saved { border: 1px solid var(--border-strong); border-radius: 14px; background: var(--surface); padding: 16px 18px; margin: 4px 0 18px; }
.im-saved-head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 12px; }
.im-saved-head b { font-size: 15px; }
.im-saved-head #imSavedPush { margin-left: auto; }
.im-saved-list { display: flex; flex-direction: column; gap: 6px; max-height: 260px; overflow-y: auto; }
.im-saved-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 9px; background: var(--bg-soft); font-size: 13px; }
.im-saved-co { font-weight: 700; }
.im-saved-x { appearance: none; cursor: pointer; margin-left: auto; border: none; background: transparent; color: var(--text-dim); font-size: 14px; padding: 2px 6px; border-radius: 6px; }
.im-saved-x:hover { color: var(--accent-red); background: rgba(255,107,107,0.12); }

/* Note line used in modals (e.g. LinkedIn import with no campaign yet) */
.imp-note { font-size: 13px; color: var(--text-muted); background: var(--bg-soft); border: 1px solid var(--border); border-radius: 9px; padding: 10px 12px; margin: 6px 0; }

/* In-Market search hint */
.im-hint { font-size: 12.5px; color: var(--text-dim); margin: 12px 0 2px; max-width: 80ch; }

/* Daily import banner (top of Hire Signals) */
.im-import { margin: 12px 0 4px; border: 1px solid rgba(56,224,166,0.35); border-radius: 11px; background: rgba(56,224,166,0.06); padding: 11px 14px; }
.im-import-main { font-size: 13.5px; color: var(--text-muted); }
.im-import-main b { color: var(--accent-green); }
.im-import-log { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 8px; padding-top: 8px; border-top: 1px solid rgba(56,224,166,0.18); }
.im-import-day { font-size: 12px; color: var(--text-dim); }
.im-import-day b { color: var(--brand-2); font-family: var(--mono); }

/* Date search (Posted within …) + per-lead date stamps */
.im-daterow { display: flex; align-items: center; gap: 9px; margin: 10px 0 2px; flex-wrap: wrap; }
.im-datelbl { font-size: 12.5px; color: var(--text-muted); font-weight: 600; }
.im-date { font-size: 12.5px; padding: 5px 9px; border-radius: 8px; border: 1px solid var(--border); background: var(--surface-2, #11151c); color: var(--text); cursor: pointer; }
.im-date:hover { border-color: var(--brand-2); }
.im-datehint { font-size: 11.5px; }
.im-date-tag { font-size: 11.5px; color: var(--text-dim); white-space: nowrap; }
.im-date-added { color: var(--accent-green); }
.im-date-active { color: var(--brand-2); font-weight: 600; }

/* Company-size narrowing chips */
.im-sizerow { gap: 6px; }
.im-sizechip { font-size: 12px; padding: 4px 10px; border-radius: 999px; border: 1px solid var(--border); background: var(--surface-2, #11151c); color: var(--text-muted); cursor: pointer; }
.im-sizechip:hover { border-color: var(--brand-2); }
.im-sizechip.active { background: var(--brand-2); border-color: var(--brand-2); color: #04121e; font-weight: 600; }

/* Decision-makers-per-role (1/3/5) control in the results toolbar */
.im-dm { align-items: center; gap: 4px; }
.im-dm-lbl { font-size: 12px; color: var(--text-dim); margin-right: 2px; }

/* Company size in the lead meta */
.im-size { white-space: nowrap; }
.im-size-est { color: var(--text-dim); font-style: italic; }
.im-confirmed { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; color: var(--text-muted); cursor: pointer; margin-left: 4px; }
.im-confirmed input { cursor: pointer; }

/* Push cost-estimate / approval modal */
.pc-head { font-size: 13.5px; color: var(--text-muted); margin-bottom: 10px; }
.pc-voice { display: flex; align-items: center; gap: 7px; font-size: 13px; color: var(--text); margin-bottom: 12px; cursor: pointer; }
.pc-lines { border: 1px solid var(--border); border-radius: 10px; overflow: hidden; }
.pc-line { display: flex; justify-content: space-between; gap: 12px; padding: 8px 12px; font-size: 13px; border-bottom: 1px solid var(--border); }
.pc-line:last-child { border-bottom: 0; }
.pc-line span:last-child { font-family: var(--mono); color: var(--text); }
.pc-total { margin: 12px 0 6px; font-size: 15px; color: var(--text); text-align: right; }
.pc-total b { color: var(--accent-green); }
.pc-cond-h { font-size: 12px; color: var(--text-muted); margin: 10px 0 5px; }
.pc-cond { border: 1px dashed var(--border); border-radius: 8px; margin-top: 5px; opacity: .92; }
.pc-cond span:last-child { color: var(--text-dim); }
.pc-notes { font-size: 11.5px; line-height: 1.7; }

/* In-Market signal-type chips */
.im-sig-wrap { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
.im-sig-label { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--text-dim); margin-bottom: 10px; }
.im-sig-label .muted { font-weight: 500; text-transform: none; letter-spacing: 0; }
.im-signals { display: flex; flex-wrap: wrap; gap: 8px; }
.im-sigchip { appearance: none; cursor: pointer; font: inherit; font-size: 12.5px; font-weight: 600; padding: 6px 12px; border-radius: 999px; background: var(--surface); border: 1px solid var(--border); color: var(--text-muted); transition: all .12s ease; }
.im-sigchip:hover { color: var(--text); border-color: var(--border-strong); transform: translateY(-1px); }
.im-sigchip.active { background: rgba(124,92,255,0.18); color: #b9a6ff; border-color: rgba(124,92,255,0.5); }

/* ---- In-Market cleaner layout: title up, multi-select groups, less busy ---- */
.im-hero { padding: 2px 0 12px; }
.im-bar { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 12px; }
.im-title { font-size: clamp(22px, 2.6vw, 30px); margin-bottom: 0; line-height: 1.1; }
.im-bar .im-modes { margin-left: auto; }
.im-group { margin-top: 12px; }
.im-group-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.im-group-head-sub { margin: 0 0 8px; }
.im-group-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-dim); margin-right: 6px; }
.im-mini { appearance: none; cursor: pointer; font: inherit; font-size: 11.5px; font-weight: 600; padding: 4px 11px; border-radius: 7px; border: 1px solid var(--border-strong); background: var(--surface); color: var(--text-muted); transition: all .12s ease; }
.im-mini:hover { color: var(--text); border-color: var(--brand); }
.im-scroll { max-height: 124px; overflow-y: auto; padding: 10px; border: 1px solid var(--border); border-radius: 11px; background: var(--bg-soft); margin-top: 0; }
.im-scroll::-webkit-scrollbar { width: 8px; } .im-scroll::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 8px; }
.im-sig-details { border: 1px solid var(--border); border-radius: 11px; padding: 0 14px; background: var(--surface); }
.im-sig-details[open] { padding-bottom: 12px; }
.im-group-summary { cursor: pointer; font-size: 13px; font-weight: 600; padding: 11px 0; color: var(--text); list-style: none; user-select: none; }
.im-group-summary::-webkit-details-marker { display: none; }
.im-group-summary::before { content: "▸"; color: var(--text-dim); margin-right: 8px; display: inline-block; }
.im-sig-details[open] .im-group-summary::before { content: "▾"; }

/* Prospect search bar */
.pr-searchbar { display: flex; align-items: center; gap: 10px; background: var(--surface); border: 1px solid var(--border); border-radius: 11px; padding: 7px 14px; margin-bottom: 14px; }
.pr-searchbar .ico { color: var(--text-dim); font-size: 16px; }
.pr-searchbar input { flex: 1; background: none; border: none; outline: none; color: var(--text); font: inherit; font-size: 14px; padding: 4px 2px; }
.pr-searchbar input::placeholder { color: var(--text-dim); }

/* LinkedIn pull progress bar */
.li-prog { border: 1px solid var(--border-strong); border-radius: 12px; background: var(--surface); padding: 14px 16px; margin-bottom: 14px; }
.li-prog.done { border-color: rgba(56,224,166,0.4); }
.li-prog.error { border-color: rgba(255,107,107,0.4); }
.li-prog-top { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 10px; }
.li-prog-title { font-weight: 700; font-size: 14px; }
.li-prog-meta { margin-left: auto; font-size: 12.5px; color: var(--text-muted); font-family: var(--mono); }
.li-prog-meta b { color: var(--accent-green); font-size: 14px; }
.li-prog-sub { font-size: 12.5px; color: var(--text-dim); margin-top: 8px; }
.li-prog-sub a { color: var(--brand-2); }
.li-bar { height: 7px; border-radius: 99px; background: rgba(255,255,255,0.08); overflow: hidden; position: relative; }
.li-bar-fill { display: block; height: 100%; border-radius: 99px; background: var(--grad); transition: width .3s ease; }
.li-prog.done .li-bar-fill { background: var(--accent-green); }
.li-bar-fill.indet { width: 40%; position: absolute; left: 0; animation: liIndet 1.1s ease-in-out infinite; }
@keyframes liIndet { 0% { left: -40%; } 100% { left: 100%; } }

/* CSV import: file input + column mapping */
.imp-file { display: block; width: 100%; font: inherit; font-size: 13px; color: var(--text-muted); padding: 8px 10px; border: 1px dashed var(--border-strong); border-radius: 9px; background: var(--bg-soft); cursor: pointer; }
.imp-file::file-selector-button { font: inherit; font-size: 12px; font-weight: 600; margin-right: 10px; padding: 5px 10px; border-radius: 7px; border: 1px solid var(--border-strong); background: var(--surface-2); color: var(--text); cursor: pointer; }
.imp-check { display: flex; align-items: center; gap: 8px; font-size: 13px; color: var(--text-muted); margin-top: 4px; }
.imp-check input { width: 15px; height: 15px; accent-color: var(--brand); }
.imp-map { margin: 4px 0; }
.imp-map-title { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--text-dim); margin: 8px 0 8px; }
.imp-map-row { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.imp-map-row .imp-col { flex: 1; font-size: 13px; color: var(--text); background: var(--bg-soft); border: 1px solid var(--border); border-radius: 7px; padding: 6px 10px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.imp-map-row select { flex: 0 0 150px; }

/* ============================================================
   Overview: lift the capacity + KPI numbers to the top so every
   stat is fully visible without scrolling (tighter header + cards)
   ============================================================ */
.app .panel-wrap { padding-top: 16px; }
#view .v-head { margin-bottom: 12px; }
#view .v-head h2 { font-size: 19px; }
#view .v-head p { font-size: 13px; margin-top: 2px; }
.stat-grid { gap: 12px; }
.stat { padding: 13px 16px; }
.stat .sv { font-size: 25px; }
.stat .sl { font-size: 12px; }

/* ---------------- Outreach · sending-readiness control panel ---------------- */
.or-gate { border-radius: var(--radius); padding: 12px 15px; font-size: 13px; margin-bottom: 16px; border: 1px solid var(--border); }
.or-gate.ok { background: rgba(56, 224, 166, 0.08); border-color: rgba(56, 224, 166, 0.4); color: #8ff0cd; }
.or-gate.warn { background: rgba(255, 194, 77, 0.07); border-color: rgba(255, 194, 77, 0.4); color: #ffd98a; }

.or-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(290px, 1fr)); gap: 14px; }
.or-card { background: var(--surface-2); border: 1px solid var(--border); border-left: 3px solid var(--text-dim); border-radius: var(--radius); padding: 15px 16px; display: flex; flex-direction: column; gap: 10px; }
.or-card.or-ready { border-left-color: var(--accent-green); }
.or-card.or-warming { border-left-color: var(--accent-amber); }
.or-card.or-action { border-left-color: var(--accent-red); }
.or-card.or-off { border-left-color: var(--text-dim); }
.or-card-h { display: flex; align-items: center; gap: 9px; }
.or-ic { font-size: 17px; }
.or-name { font-weight: 700; font-size: 14px; flex: 1; min-width: 0; }
.or-card-b { flex: 1; }
.or-card-f { margin-top: 2px; }
.or-detail { margin: 0; color: var(--text-muted); font-size: 12.5px; line-height: 1.45; }

.or-pill { font-size: 10.5px; font-weight: 700; padding: 3px 9px; border-radius: 999px; white-space: nowrap; border: 1px solid transparent; }
.or-pill.ready { background: rgba(56, 224, 166, 0.14); color: #8ff0cd; border-color: rgba(56, 224, 166, 0.3); }
.or-pill.warming { background: rgba(255, 194, 77, 0.14); color: #ffd98a; border-color: rgba(255, 194, 77, 0.3); }
.or-pill.action { background: rgba(255, 107, 107, 0.14); color: #ffa3a3; border-color: rgba(255, 107, 107, 0.3); }
.or-pill.off { background: rgba(255, 255, 255, 0.06); color: var(--text-muted); border-color: var(--border); }

.or-bar { height: 7px; border-radius: 999px; background: rgba(255, 255, 255, 0.07); overflow: hidden; }
.or-bar.mini { height: 5px; }
.or-bar > span { display: block; height: 100%; border-radius: 999px; background: var(--brand-2, #4dd0ff); transition: width 0.3s ease; }
.or-bar > span.ok, .or-bar > span.ready { background: var(--accent-green); }
.or-bar > span.warn, .or-bar > span.warming { background: var(--accent-amber); }
.or-bar > span.action { background: var(--accent-red); }

.or-credits { margin-top: 10px; }
.or-credit-top { display: flex; align-items: baseline; gap: 6px; font-size: 13px; margin-bottom: 6px; }
.or-credit-top b { font-size: 18px; font-family: var(--mono); }

.or-foot-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.or-swrap { display: inline-flex; align-items: center; gap: 8px; font-size: 12px; }
.or-sw { appearance: none; border: 0; cursor: pointer; width: 40px; height: 22px; border-radius: 999px; background: rgba(255, 255, 255, 0.14); position: relative; transition: background 0.2s; padding: 0; }
.or-sw > span { position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; transition: transform 0.2s; }
.or-sw.on { background: var(--accent-green); }
.or-sw.on > span { transform: translateX(18px); }
.or-sw:disabled { opacity: 0.45; cursor: not-allowed; }

.or-steps { margin: 4px 0 0; padding-left: 20px; color: var(--text-muted); font-size: 13px; line-height: 1.6; }
.or-steps li { margin-bottom: 6px; }

.or-panel { margin-top: 16px; }
.or-dom { border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; margin-top: 12px; }
.or-dom-h { display: flex; align-items: center; gap: 10px; margin-bottom: 10px; }
.or-dom-h b { font-family: var(--mono); font-size: 13px; }
.or-mini { font-size: 11px; color: var(--text-muted); }
.or-inboxes { display: grid; gap: 9px; }
.or-inbox { display: grid; grid-template-columns: 14px 1fr auto; grid-template-areas: "dot email mini" "dot bar bar"; align-items: center; gap: 4px 9px; }
.or-dot { grid-area: dot; width: 9px; height: 9px; border-radius: 50%; background: var(--text-dim); }
.or-dot.ready { background: var(--accent-green); } .or-dot.warming { background: var(--accent-amber); } .or-dot.action { background: var(--accent-red); }
.or-email { grid-area: email; font-family: var(--mono); font-size: 12px; }
.or-inbox .or-mini { grid-area: mini; }
.or-inbox .or-bar { grid-area: bar; }

.or-li { border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; margin-top: 12px; }
.or-li-h { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }
.or-li-h b { font-family: var(--mono); font-size: 13px; }
.or-issue { margin-top: 9px; font-size: 12px; color: #ffd98a; background: rgba(255, 194, 77, 0.08); border: 1px solid rgba(255, 194, 77, 0.3); border-radius: 9px; padding: 8px 10px; }

.or-playbook { margin-top: 20px; border-top: 1px solid var(--border); padding-top: 12px; }
.or-playbook > summary { cursor: pointer; font-weight: 600; font-size: 13px; color: var(--text-muted); list-style: none; }
.or-playbook > summary::-webkit-details-marker { display: none; }
.or-playbook > summary::before { content: "▸ "; }
.or-playbook[open] > summary::before { content: "▾ "; }

/* ---------------- Campaigns · channel sequence builder ---------------- */
.seq-new-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 14px; margin-bottom: 8px; }
.seq-new { text-align: left; cursor: pointer; background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius); padding: 16px 17px; display: flex; flex-direction: column; gap: 6px; transition: border-color 0.15s, transform 0.05s; color: var(--text); }
.seq-new:hover { border-color: var(--brand-2); }
.seq-new:active { transform: translateY(1px); }
.seq-new-ic { font-size: 22px; }
.seq-new-t { font-weight: 700; font-size: 15px; }
.seq-new-b { color: var(--text-muted); font-size: 12.5px; line-height: 1.4; }
.seq-new-f { margin-top: 6px; font-size: 12px; font-weight: 600; color: var(--accent-green); }

.seq-row { display: flex; align-items: center; gap: 12px; background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius); padding: 12px 14px; margin-bottom: 10px; cursor: pointer; }
.seq-row:hover { border-color: var(--border-strong); }
.seq-ic { font-size: 18px; }
.seq-meta { flex: 1; min-width: 0; }
.seq-name { font-weight: 650; font-size: 14px; }
.seq-sub { color: var(--text-muted); font-size: 12px; margin-top: 2px; display: flex; align-items: center; gap: 7px; }
.seq-del { background: transparent; border: 1px solid var(--border); color: var(--text-dim); border-radius: 8px; padding: 5px 8px; cursor: pointer; }
.seq-del:hover { color: var(--accent-red); border-color: var(--accent-red); }
.seq-chip { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 999px; border: 1px solid transparent; }
.seq-chip.email { background: rgba(77, 208, 255, 0.14); color: #9fe0ff; border-color: rgba(77, 208, 255, 0.3); }
.seq-chip.linkedin { background: rgba(124, 140, 255, 0.16); color: #bcc6ff; border-color: rgba(124, 140, 255, 0.3); }
.seq-chip.sms { background: rgba(56, 224, 166, 0.14); color: #8ff0cd; border-color: rgba(56, 224, 166, 0.3); }
.seq-chip.voice { background: rgba(255, 194, 77, 0.14); color: #ffd279; border-color: rgba(255, 194, 77, 0.3); }
.seq-chip.multi { background: rgba(199, 146, 255, 0.16); color: #d6b6ff; border-color: rgba(199, 146, 255, 0.32); }

/* editor */
.seq-top { display: flex; align-items: center; gap: 14px; padding-bottom: 14px; margin-bottom: 16px; border-bottom: 1px solid var(--border); }
.seq-back { background: transparent; border: 0; color: var(--text-muted); font: inherit; font-size: 13px; cursor: pointer; padding: 0; }
.seq-back:hover { color: var(--text); }
.seq-edit-lbl { font-size: 11px; letter-spacing: 0.12em; color: var(--text-dim); font-family: var(--mono); }
.seq-top-actions { margin-left: auto; display: flex; gap: 8px; }
.seq-edit-grid { display: grid; grid-template-columns: 1fr 300px; gap: 18px; align-items: start; }
.seq-title { width: 100%; background: transparent; border: 0; border-bottom: 1px solid transparent; color: var(--text); font: inherit; font-size: 22px; font-weight: 800; padding: 4px 2px; margin-bottom: 12px; }
.seq-title:hover { border-bottom-color: var(--border); }
.seq-title:focus { outline: 0; border-bottom-color: var(--brand-2); }
.seq-steps-h { font-size: 15px; margin-bottom: 10px; }
.seq-steps-h .muted { font-weight: 400; font-size: 12px; }
.seq-enroll { display: inline-block; background: rgba(196, 244, 79, 0.12); color: #d6f56a; border: 1px solid rgba(196, 244, 79, 0.3); border-radius: 8px; font-size: 12px; font-weight: 600; padding: 5px 11px; margin-bottom: 12px; }

.seq-step { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius); margin-bottom: 12px; overflow: hidden; }
.seq-step-h { display: flex; align-items: center; gap: 10px; padding: 11px 14px; border-bottom: 1px solid var(--border); background: rgba(255, 255, 255, 0.02); }
.seq-step.collapsed .seq-step-b { display: none; }
.seq-grip { color: var(--text-dim); cursor: grab; }
.seq-step-h b { font-size: 13px; }
.seq-manual { display: inline-flex; align-items: center; gap: 7px; margin-left: auto; font-size: 12px; }
.seq-mini { background: transparent; border: 0; color: var(--text-dim); cursor: pointer; font-size: 14px; padding: 2px 4px; }
.seq-mini:hover { color: var(--text); }
.seq-step-h .seq-mini:last-child:hover { color: var(--accent-red); }
.seq-step-b { padding: 14px; }
.seq-delay { display: flex; align-items: center; gap: 9px; margin-bottom: 14px; }
.seq-delay label { font-size: 12px; color: var(--text-muted); }
.seq-day { width: 64px; }
.seq-flabel { display: flex; align-items: center; justify-content: space-between; font-size: 12px; font-weight: 600; color: var(--text-muted); margin: 10px 0 5px; }
.seq-insert { background: transparent; border: 0; color: var(--brand-2); font: inherit; font-size: 11.5px; cursor: pointer; }
.seq-insert:hover { text-decoration: underline; }
.seq-toolbar { display: flex; gap: 4px; align-items: center; background: var(--bg-soft); border: 1px solid var(--border); border-bottom: 0; border-radius: 9px 9px 0 0; padding: 5px 7px; }
.seq-toolbar button { background: transparent; border: 0; color: var(--text-muted); cursor: pointer; font: inherit; font-size: 12px; padding: 3px 7px; border-radius: 6px; }
.seq-toolbar button:hover { background: var(--surface-2); color: var(--text); }
.seq-toolbar .seq-insert { margin-left: auto; }
.seq-input, .seq-area, .seq-day { background: var(--bg-soft); border: 1px solid var(--border); border-radius: 9px; color: var(--text); font: inherit; font-size: 13px; padding: 9px 11px; width: 100%; }
.seq-area { resize: vertical; line-height: 1.5; border-radius: 0 0 9px 9px; min-height: 90px; }
.seq-toolbar + .seq-area { border-top: 0; }
.seq-input:focus, .seq-area:focus, .seq-day:focus { outline: 0; border-color: var(--brand-2); }
.seq-check { display: flex; align-items: center; gap: 8px; font-size: 12.5px; color: var(--text-muted); margin-top: 10px; }
.seq-add { width: 100%; background: transparent; border: 1px dashed var(--border-strong); color: var(--text-muted); border-radius: var(--radius); padding: 11px; cursor: pointer; font: inherit; font-weight: 600; }
.seq-add:hover { border-color: var(--brand-2); color: var(--text); }

.seq-rail { display: flex; flex-direction: column; gap: 14px; position: sticky; top: 12px; }
.rail-card { background: var(--surface-2); border: 1px solid var(--border); border-radius: var(--radius); padding: 14px 15px; }
.rail-h { font-size: 11px; letter-spacing: 0.1em; color: var(--text-dim); font-weight: 700; margin-bottom: 10px; display: flex; align-items: center; justify-content: space-between; }
.rail-add { background: transparent; border: 1px solid var(--border); color: var(--text-muted); font: inherit; font-size: 11px; border-radius: 7px; padding: 3px 8px; cursor: pointer; }
.rail-add:hover { color: var(--text); border-color: var(--brand-2); }
.rail-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 10px; }
.rail-stat b { display: block; font-size: 22px; font-weight: 800; line-height: 1; }
.rail-stat span { font-size: 10.5px; letter-spacing: 0.08em; color: var(--text-dim); }
.rail-vars { display: flex; flex-direction: column; gap: 7px; }
.var-chip { display: flex; align-items: center; gap: 8px; background: var(--bg-soft); border: 1px solid var(--border); border-radius: 9px; padding: 7px 9px; cursor: pointer; font-size: 12px; }
.var-chip:hover { border-color: var(--brand-2); }
.var-chip code { color: #ff7ac6; font-family: var(--mono); font-size: 11px; white-space: nowrap; }
.var-chip span { color: var(--text-muted); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.var-x { background: transparent; border: 0; color: var(--text-dim); cursor: pointer; font-size: 15px; line-height: 1; }
.var-x:hover { color: var(--accent-red); }
.rail-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.tag-chip { display: inline-flex; align-items: center; gap: 5px; background: var(--bg-soft); border: 1px solid var(--border); border-radius: 999px; padding: 3px 9px; font-size: 12px; }
.tag-chip button { background: transparent; border: 0; color: var(--text-dim); cursor: pointer; }
.tag-add { background: transparent; border: 1px dashed var(--border); color: var(--text-muted); border-radius: 999px; padding: 3px 10px; font: inherit; font-size: 12px; cursor: pointer; }

.seq-varmenu { position: fixed; z-index: 1000; width: 260px; max-height: 320px; overflow: auto; background: var(--surface-2); border: 1px solid var(--border-strong); border-radius: 11px; padding: 6px; box-shadow: 0 18px 50px -18px rgba(0, 0, 0, 0.7); }
.seq-varmenu button { display: flex; align-items: center; gap: 9px; width: 100%; text-align: left; background: transparent; border: 0; color: var(--text); cursor: pointer; padding: 7px 9px; border-radius: 8px; font: inherit; font-size: 12.5px; }
.seq-varmenu button:hover { background: var(--bg-soft); }
.seq-varmenu code { color: #ff7ac6; font-family: var(--mono); font-size: 11px; }
.seq-varmenu span { color: var(--text-muted); }

@media (max-width: 900px) { .seq-edit-grid { grid-template-columns: 1fr; } .seq-rail { position: static; } }

/* Prospects · bulk selection */
.pr-bulk { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 6px 0 12px; margin-bottom: 8px; border-bottom: 1px solid var(--border); }
.pr-selall { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--text-muted); cursor: pointer; }
.pr-selall input { width: 16px; height: 16px; accent-color: var(--brand-2, #4dd0ff); cursor: pointer; }
.pr-selcount { font-size: 12.5px; color: var(--text); }
.pr-selcount.muted { color: var(--text-dim); }
.pr-bulk-actions { margin-left: auto; display: flex; gap: 8px; }
.pr-check { width: 16px; height: 16px; flex: none; accent-color: var(--brand-2, #4dd0ff); cursor: pointer; }
.list-row.pr-selected { background: rgba(124, 140, 255, 0.08); border-radius: 8px; }

/* Prospects · LinkedIn extension connect panel (inside the pull modal) */
.li-ext { border: 1px solid rgba(124, 140, 255, 0.3); background: rgba(124, 140, 255, 0.06); border-radius: 12px; padding: 12px 14px; margin-bottom: 12px; }
.li-ext-h { font-weight: 700; font-size: 13.5px; display: flex; align-items: center; gap: 8px; }
.li-ext-tag { font-size: 10px; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: #bcc6ff; border: 1px solid rgba(124, 140, 255, 0.4); border-radius: 999px; padding: 1px 7px; }
.li-ext .or-steps { font-size: 12.5px; }
.li-ext-row { display: flex; align-items: center; gap: 10px; margin-top: 8px; }
.li-ext-row > label { width: 92px; flex: none; font-size: 12px; color: var(--text-muted); }
.li-copy { display: inline-flex; align-items: center; gap: 8px; flex: 1; min-width: 0; }
.li-copy code { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; background: var(--bg-soft); border: 1px solid var(--border); border-radius: 8px; padding: 6px 9px; font-family: var(--mono); font-size: 11.5px; color: var(--text); }
.li-or { text-align: center; color: var(--text-dim); font-size: 11.5px; margin: 12px 0 6px; }

/* ---------------- Light theme (toggle in the account menu) ----------------
   The whole UI is driven by CSS variables, so flipping these on the <html>
   element re-skins everything. data-theme is set before paint (no flash). */
html[data-theme="light"] {
  color-scheme: light;
  --bg: #f5f6fa;
  --bg-soft: #eef1f7;
  --surface: #ffffff;
  --surface-2: #f1f3f9;
  --border: rgba(16, 18, 40, 0.12);
  --border-strong: rgba(16, 18, 40, 0.22);
  --text: #14161f;
  --text-muted: #565a6e;
  --text-dim: #7a8094;
  --shadow: 0 18px 50px -22px rgba(20, 22, 50, 0.22);
  --shadow-glow: 0 0 50px -12px rgba(124, 92, 255, 0.20);
  /* Re-map the legacy aliases (see styles.css) to light surfaces. This alone
     re-skins every setup tab/step/pill/picker that used the dark fallbacks. */
  --line: #e3e6ef;
  --muted: #5b6273;
  --card: #ffffff;
  /* --panel backs the Candidates/Companies cards, filter rail and toolbar (set
     inline in command.js with a dark #16181d fallback). Without a light value it
     stayed dark on the light shell — dark boxes with invisible text. */
  --panel: #ffffff;
}
/* dark-only translucent fills that need flipping so they're visible on white */
html[data-theme="light"] .motion-toggle .mt:hover { background: rgba(16, 18, 40, 0.05); }
html[data-theme="light"] .or-sw { background: rgba(16, 18, 40, 0.18); }
html[data-theme="light"] .or-bar { background: rgba(16, 18, 40, 0.08); }
html[data-theme="light"] .seq-step-h { background: rgba(16, 18, 40, 0.02); }

/* Appearance toggle in the account menu */
.acct-theme { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 5px 12px; }
.acct-theme-l { font-size: 13px; color: var(--text-muted); display: inline-flex; align-items: center; gap: 8px; }
.theme-seg { display: inline-flex; background: var(--bg-soft); border: 1px solid var(--border); border-radius: 999px; padding: 3px; gap: 2px; }
.theme-seg .ts { appearance: none; border: 0; background: transparent; color: var(--text-muted); font: inherit; font-size: 12px; font-weight: 600; padding: 5px 11px; border-radius: 999px; cursor: pointer; transition: all .12s ease; }
.theme-seg .ts:hover { color: var(--text); }
.theme-seg .ts.active { background: var(--surface-2); color: var(--text); box-shadow: 0 1px 3px rgba(0, 0, 0, .18); }

/* ---------------- Light theme · structural surfaces ----------------
   The shell/sidebar/topbar/tabs use hardcoded dark fills in app.css, so the
   token override alone leaves them dark. Re-skin them here for a clean,
   readable light UI (white sidebar, dark legible tabs). */
html[data-theme="light"] .sidebar { background: #ffffff; }
html[data-theme="light"] .topbar { background: rgba(255, 255, 255, 0.9); }
html[data-theme="light"] .tabs { background: #ffffff; }

/* Left-nav tabs: clearly visible on white, with a distinct active state. */
html[data-theme="light"] .nav-item { color: #3a3d4d; }
html[data-theme="light"] .nav-item:hover { background: #eef0f7; color: var(--text); }
html[data-theme="light"] .nav-item.active { background: #e9ebf8; color: var(--text); box-shadow: inset 2px 0 0 var(--brand); }
html[data-theme="light"] .nav-group { color: #9498ad; }

/* Flip the dark-only translucent fills so they're visible on white. */
html[data-theme="light"] .camp-item:hover,
html[data-theme="light"] .side-link:hover,
html[data-theme="light"] .add-btn { background: rgba(16, 18, 40, 0.05); }
html[data-theme="light"] table.grid tbody tr:hover td { background: rgba(16, 18, 40, 0.03); }
html[data-theme="light"] table.grid thead th { background: var(--surface-2); }

/* Calm the ambient glow + grid so the light canvas stays clean. */
html[data-theme="light"] body::before { opacity: 0.12; }
html[data-theme="light"] .aurora { opacity: 0.16; }

/* ---------------- Light theme · status chips, badges & setup chrome ----------
   These chips are emitted with solid DARK hex from JS-injected <style> blocks
   (setupStyles, etc.), so they read as dark blobs on white. Re-skin each state
   to a soft tinted chip with accessible contrast on a light canvas. */
html[data-theme="light"] .s-pill.ready,
html[data-theme="light"] .setup-step.s-ready .setup-num { background: #e0f6ec; color: #0e7a4b; }
html[data-theme="light"] .s-pill.progress { background: #fcefd3; color: #946205; }
html[data-theme="light"] .s-pill.action { background: #fde2e2; color: #c23b32; }
html[data-theme="light"] .s-pill.pending { background: #eceef4; color: #5b6273; }
html[data-theme="light"] .setup-banner.warn { color: #946205; }
html[data-theme="light"] .setup-banner.ok { color: #0e7a4b; }
html[data-theme="light"] .setup-step.s-ready { border-color: rgba(14, 122, 75, .28); }
html[data-theme="light"] .setup-step.s-action { border-color: rgba(194, 59, 50, .26); }

/* The premium setup surfaces (branding / domain / voice) — a couple of accent
   text colors were tuned for a dark canvas; nudge them for light contrast. */
html[data-theme="light"] .sx-rec-type { background: rgba(124, 92, 255, .12); color: #6442d6; }
html[data-theme="light"] .sx-prev-body { background: radial-gradient(120% 80% at 100% 0%, rgba(124, 92, 255, .07), transparent 60%); }
html[data-theme="light"] .sx-hero { background:
  radial-gradient(130% 150% at 0% 0%, rgba(124, 92, 255, .12), transparent 52%),
  radial-gradient(120% 150% at 100% 0%, rgba(77, 208, 255, .10), transparent 52%),
  var(--surface); }

/* ---------------- Light theme · integration/connect tiles --------------------
   The Connect grid tiles (.cn-v) and status badges use the dark soft surface;
   make sure their hover/active borders and text stay legible on white. */
html[data-theme="light"] .cn-v { background: var(--surface); }
html[data-theme="light"] .cn-v:hover { border-color: var(--border-strong); background: var(--surface-2); }

/* Email sending tab — domain/server status badges + readiness chips also emit
   solid dark hex from a JS <style> block. Re-skin to soft tinted chips. */
html[data-theme="light"] .sd-b-active,
html[data-theme="light"] .sd-chip.ok { background: #e0f6ec; color: #0e7a4b; }
html[data-theme="light"] .sd-b-wait { background: #fcefd3; color: #946205; }
html[data-theme="light"] .sd-b-err { background: #fde2e2; color: #c23b32; }
html[data-theme="light"] .sd-b-prov { background: #e1eefb; color: #1f6fb8; }
html[data-theme="light"] .sd-b-pending,
html[data-theme="light"] .sd-chip.no { background: #eceef4; color: #5b6273; }
html[data-theme="light"] .sd-ns code { background: rgba(16, 18, 40, .05); }

/* Generic: any element using the dark-only translucent white fills for hover. */
html[data-theme="light"] .btn-ghost:hover { background: rgba(16, 18, 40, .05); }
html[data-theme="light"] .sl-status.off { background: rgba(16, 18, 40, .04); }
html[data-theme="light"] .sd-ns code,
html[data-theme="light"] .resp-act,
html[data-theme="light"] .cls-unclassified { background: rgba(16, 18, 40, .05); }

/* ---------------- Campaign Sequences Library (table) ---------------- */
.seqlib-tools { display: flex; align-items: center; gap: 12px; margin-bottom: 14px; flex-wrap: wrap; }
.seqlib-search { display: inline-flex; align-items: center; gap: 8px; flex: 1; min-width: 220px; max-width: 420px; background: var(--surface); border: 1px solid var(--border-strong); border-radius: 11px; padding: 9px 13px; }
.seqlib-search span { color: var(--text-dim); }
.seqlib-search input { flex: 1; background: transparent; border: 0; outline: 0; color: var(--text); font: inherit; font-size: 14px; }
.sl-mine { display: inline-flex; align-items: center; gap: 7px; font-size: 13px; color: var(--text-muted); cursor: pointer; }
.sl-count { margin-left: auto; color: var(--text-dim); font-size: 12.5px; font-variant-numeric: tabular-nums; }

table.seqlib { width: 100%; border-collapse: collapse; font-size: 13.5px; }
table.seqlib thead th { text-align: left; padding: 12px 16px; font-size: 11px; letter-spacing: .06em; text-transform: uppercase; color: var(--text-dim); border-bottom: 1px solid var(--border); font-weight: 700; white-space: nowrap; }
table.seqlib tbody td { padding: 13px 16px; border-bottom: 1px solid var(--border); vertical-align: middle; }
table.seqlib tbody tr:last-child td { border-bottom: 0; }
table.seqlib tbody tr:hover td { background: var(--surface-2); }
.sl-name { font-weight: 650; }
.sl-name .seq-chip { margin-right: 8px; vertical-align: middle; }
.sl-c { font-variant-numeric: tabular-nums; }
.sl-tag { display: inline-block; font-size: 11px; color: var(--text-muted); background: var(--bg-soft); border: 1px solid var(--border); border-radius: 6px; padding: 2px 8px; margin: 1px 3px 1px 0; }
.sl-status { cursor: pointer; border: 1px solid transparent; border-radius: 999px; font: inherit; font-size: 11.5px; font-weight: 700; padding: 4px 11px; white-space: nowrap; }
.sl-status.on { background: rgba(56,224,166,.14); color: var(--accent-green); border-color: rgba(56,224,166,.32); }
.sl-status.off { background: rgba(255,255,255,.06); color: var(--text-muted); border-color: var(--border); }
html[data-theme="light"] .sl-status.off { background: rgba(16,18,40,.05); }
.sl-actions { white-space: nowrap; text-align: right; }
.sl-actions .btn { margin-left: 6px; }
.sl-actions .sl-del:hover { background: rgba(255,90,108,.14); color: #ff8b96; border-color: rgba(255,90,108,.34); }

/* ---------------- Prospects / Candidates · spreadsheet (CSV-style) table ---------------- */
.pr-card-h { padding: 15px 18px 12px; display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.pr-card-h h3 { margin: 0; }
.pr-card-h .pr-bulk { border: 0; padding: 0; margin: 0 0 0 auto; }
.pr-table-wrap { overflow-x: auto; }
.pr-table { width: 100%; border-collapse: collapse; font-size: 13.5px; }
.pr-table thead th { text-align: left; padding: 10px 14px; font-size: 11px; letter-spacing: .05em; text-transform: uppercase; color: var(--text-dim); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); font-weight: 700; white-space: nowrap; background: var(--bg-soft); }
.pr-table tbody td { padding: 10px 14px; border-bottom: 1px solid var(--border); vertical-align: middle; white-space: nowrap; }
.pr-table tbody tr.pr-row:hover td { background: var(--surface-2); }
.pr-table tr.pr-selected td { background: rgba(124, 140, 255, .08); }
.pr-c-check { width: 36px; }
.pr-table .pr-check { width: 16px; height: 16px; accent-color: var(--brand-2, #4dd0ff); cursor: pointer; vertical-align: middle; }
.pr-av { width: 30px; height: 30px; font-size: 11px; display: inline-grid; place-items: center; border-radius: 50%; margin-right: 10px; vertical-align: middle; color: #fff; overflow: hidden; }
.pr-av img { position: absolute; inset: 0; width: 100%; height: 100%; border-radius: 50%; object-fit: cover; }
.pr-c-name { font-weight: 650; }
.pr-name-t { vertical-align: middle; }
.pr-c-email { font-family: var(--mono); font-size: 12px; max-width: 260px; overflow: hidden; text-overflow: ellipsis; }
.pr-c-email a { color: var(--text-muted); text-decoration: none; }
.pr-c-email a:hover { color: var(--brand-2); }
.pr-na { color: var(--text-dim); }
.pr-li { display: inline-grid; place-items: center; width: 24px; height: 24px; border-radius: 5px; background: #0a66c2; color: #fff; font-weight: 700; font-size: 12px; text-decoration: none; }
.pr-li:hover { filter: brightness(1.12); }
.pr-c-act { text-align: right; }
.pr-enrich { background: transparent; border: 1px solid var(--border-strong); border-radius: 7px; padding: 4px 9px; cursor: pointer; color: var(--text-muted); font-size: 14px; line-height: 1; }
.pr-enrich:hover { color: var(--text); border-color: var(--brand); }
.pr-table .stage-select { font-size: 11px; padding: 3px 9px; }
.pr-exp-toggle { background: none; border: 0; color: var(--brand-2, #4dd0ff); font-size: 11.5px; cursor: pointer; padding: 0 0 0 4px; }
.pr-exp-row { background: var(--bg-soft); }
.pr-exp-row td.pr-exp { color: var(--text-muted); font-size: 12.5px; line-height: 1.5; white-space: pre-line; padding-top: 0; padding-bottom: 12px; }

/* Sequences Library · filter buttons (My Sequences / Tags) */
.sl-fbtn { display: inline-flex; align-items: center; gap: 7px; background: var(--surface); border: 1px solid var(--border-strong); border-radius: 10px; padding: 8px 13px; font: inherit; font-size: 13px; font-weight: 600; color: var(--text-muted); cursor: pointer; }
.sl-fbtn:hover { color: var(--text); border-color: var(--brand); }
.sl-fbtn.active { color: var(--text); border-color: var(--brand); background: rgba(124, 92, 255, .10); }
.sl-fbtn b { font-weight: 600; color: var(--brand-2); }
.sl-tagwrap { position: relative; display: inline-block; }
.sl-tagsel { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }

/* Prospects bulk bar · enrich field checkboxes + status/sequence pickers */
.pr-bulk-actions { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.pr-enrich-grp { display: inline-flex; align-items: center; gap: 7px; font-size: 12.5px; color: var(--text-muted); border: 1px solid var(--border); border-radius: 9px; padding: 4px 8px; }
.pr-enrich-grp label { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; }
.pr-enrich-grp input { accent-color: var(--brand-2, #4dd0ff); }
.pr-seq-grp { display: inline-flex; align-items: center; gap: 6px; }
.pr-bulk-sel { background: var(--surface); border: 1px solid var(--border-strong); color: var(--text); border-radius: 8px; padding: 6px 9px; font: inherit; font-size: 12.5px; cursor: pointer; max-width: 220px; }
.pr-seqtag { display: inline-block; margin-left: 8px; font-size: 11px; color: var(--brand-2, #4dd0ff); background: rgba(77, 208, 255, .10); border: 1px solid rgba(77, 208, 255, .28); border-radius: 6px; padding: 1px 7px; vertical-align: middle; }

/* ============================================================
   2026 visual refresh — portal polish layer (loads last, so it
   elevates existing components without touching structure).
   ============================================================ */

/* Brand mark + wordmark */
.cmd-side .brand { font-weight: 800; letter-spacing: -0.02em; font-size: 19px; }
.cmd-side .brand .logo {
  width: 30px; height: 30px; display: grid; place-items: center; border-radius: 9px;
  background: linear-gradient(135deg, #7c5cff, #4dd0ff); color: #0a0a12; font-weight: 900;
  box-shadow: 0 6px 18px -6px rgba(124, 92, 255, .65);
}
.cmd-side .brand .os {
  background: linear-gradient(120deg, #b9a6ff, #8be7ff); -webkit-background-clip: text;
  background-clip: text; color: transparent; font-weight: 800;
}
/* White-label workspace logo. The adjuster exports a fixed 10:3 frame, so every
   logo (dark + light) renders at an identical size with no skew or clipping; the
   in-frame zoom is what sizes the mark. */
.cmd-side .brand { overflow: visible; line-height: 0; }
.cmd-side .brand .brand-logo { display: block; height: 44px; width: auto; max-width: 100%; object-fit: contain; }

/* Logo-fit adjuster modal */
.logo-adj-ov { position: fixed; inset: 0; z-index: 10000; background: rgba(0,0,0,.55); display: grid; place-items: center; padding: 20px; }
.logo-adj { background: var(--surface, #14161c); border: 1px solid var(--border); border-radius: 14px; padding: 18px; width: min(440px, 94vw); box-shadow: 0 24px 60px -12px rgba(0,0,0,.6); }
.logo-adj h3 { color: var(--text); }
.logo-adj-stage { border-radius: 10px; overflow: hidden; border: 1px solid var(--border); margin-bottom: 12px; }
.logo-adj-stage { display: grid; place-items: center; min-height: 120px; }
.logo-adj .la-cv { display: block; width: auto; height: auto; max-width: 100%; max-height: 48vh; cursor: grab; touch-action: none; }
.logo-adj .la-cv:active { cursor: grabbing; }
.la-zoom { display: flex; align-items: center; gap: 10px; font-size: 13px; color: var(--text-dim); margin-bottom: 14px; }
.la-zoom input { flex: 1; }
.la-acts { display: flex; align-items: center; gap: 8px; }

/* Sidebar: subtle depth + glass */
.sidebar.cmd-side { background: linear-gradient(180deg, rgba(24, 24, 34, .92), rgba(13, 13, 22, .82)); backdrop-filter: blur(14px); border-right: 1px solid var(--border); }
html[data-theme="light"] .sidebar.cmd-side { background: linear-gradient(180deg, #ffffff, #f6f7fc); border-right-color: var(--border); }

/* Nav items: smoother, with a gradient-tinted active state */
.cmd-nav .nav-item { border-radius: 11px; transition: background .14s ease, color .14s ease, box-shadow .14s ease; }
.cmd-nav .nav-item.active {
  background: linear-gradient(90deg, rgba(124, 92, 255, .20), rgba(77, 208, 255, .05));
  color: var(--text); box-shadow: inset 2px 0 0 var(--brand), 0 6px 18px -12px rgba(124, 92, 255, .8);
}
.cmd-nav .nav-group { opacity: .85; }
.cmd-nav::-webkit-scrollbar { width: 8px; }
.cmd-nav::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 99px; }

/* Workspace card */
.ws-card { border-radius: 14px; background: linear-gradient(180deg, var(--surface-2), var(--bg-soft)); }

/* Cards: layered, modern depth + slightly larger radius */
.card { border-radius: 16px; box-shadow: inset 0 1px 0 rgba(255, 255, 255, .03), 0 16px 44px -30px rgba(0, 0, 0, .75); }
html[data-theme="light"] .card { box-shadow: 0 1px 2px rgba(20, 22, 50, .05), 0 14px 34px -26px rgba(20, 22, 50, .20); }

/* Stat cards: animated top accent + hover lift */
.stat { border-radius: 16px; }
.stat::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 3px; border-radius: 16px 16px 0 0; background: var(--grad); opacity: 0; transition: opacity .16s ease; }
.stat:hover::before { opacity: .95; }

/* Buttons: gradient primary with depth; refined ghost */
.btn-primary { background: linear-gradient(135deg, #7c5cff, #5fa8ff); border: 0; color: #fff; box-shadow: 0 8px 22px -10px rgba(124, 92, 255, .75); transition: transform .12s ease, box-shadow .12s ease, filter .12s ease; }
.btn-primary:hover { transform: translateY(-1px); filter: brightness(1.06); box-shadow: 0 13px 28px -10px rgba(124, 92, 255, .85); }
.btn-ghost { transition: border-color .12s ease, color .12s ease, background .12s ease; }
.btn-ghost:hover { border-color: var(--brand); color: var(--text); }

/* Topbar: glass + tighter headline */
.topbar { backdrop-filter: blur(10px); }
.topbar h1, #pageTitle { letter-spacing: -0.025em; }

/* Inputs/selects/textareas: brand focus glow */
.main input:focus, .main select:focus, .main textarea:focus { box-shadow: 0 0 0 3px rgba(124, 92, 255, .20); }

/* Tables: a touch more breathing room + crisp header */
.pr-table thead th, table.seqlib thead th { backdrop-filter: blur(6px); }

/* ============================================================
   Clean-structure pass — tighter rhythm, clearer hierarchy, a
   calmer canvas. Visual only (spacing / type / density), so no
   layout or functionality changes.
   ============================================================ */

/* ---- Sidebar: organized + dense without feeling cramped ---- */
.sidebar.cmd-side { padding: 18px 12px; gap: 12px; }
.cmd-nav { gap: 1px; }
.cmd-nav .nav-group {
  font-size: 10px; letter-spacing: .14em; text-transform: uppercase;
  color: var(--text-dim); margin: 15px 8px 5px; font-weight: 700;
}
.cmd-nav .nav-group:first-child { margin-top: 2px; }
.cmd-nav .nav-item { padding: 8px 11px; font-size: 13.5px; gap: 11px; font-weight: 500; }
.cmd-nav .nav-item .ni { width: 18px; flex: none; text-align: center; font-size: 15px; opacity: .9; }
.cmd-nav .nav-item.active .ni { opacity: 1; }
.ws-card { padding: 10px 12px; }
.ws-name { font-size: 13.5px; }

/* ---- Topbar: quiet crumb, confident title ---- */
.topbar { gap: 14px; align-items: center; }
.topbar .crumb { font-size: 10.5px; text-transform: uppercase; letter-spacing: .12em; color: var(--text-dim); margin-bottom: 3px; }
.topbar h1, #pageTitle { font-size: 22px; font-weight: 800; line-height: 1.1; }

/* ---- Main content: consistent vertical rhythm ---- */
.v-head { margin-bottom: 20px; }
.v-head p { color: var(--text-muted); font-size: 14px; line-height: 1.5; max-width: 76ch; }

/* ---- Cards + sections: one consistent system ---- */
.card { padding: 18px 20px; }
.card h3 { font-size: 14px; font-weight: 700; letter-spacing: -.01em; margin-bottom: 14px; }
.cards, .two-col, .stat-grid { gap: 16px; }

/* ---- Controls: uniform radius/sizing so nothing looks ad-hoc ---- */
.btn-sm { border-radius: 9px; }
.main select, .main input[type="text"], .main input[type="url"], .main input[type="number"], .main input[type="email"], .main textarea {
  border-radius: 9px;
}

/* ---- Calmer canvas so content leads, not the background ---- */
.aurora { opacity: .42; }
body::before { opacity: .35; }
html[data-theme="light"] .aurora { opacity: .12; }

/* ---- Empty states: centered, intentional ---- */
.empty { padding: 30px 22px; color: var(--text-dim); font-size: 13.5px; line-height: 1.55; text-align: center; }

/* ---- Profile menu ALWAYS on top ----
   The topbar sits before the content (and iframe views like OS Text / Studio /
   Target Builder) in the DOM, so without its own stacking context those paint
   OVER the open account dropdown. Raise the topbar above content and lift the
   menu so the profile panel is always superimposed in front. */
.topbar { position: relative; z-index: 100; }
.acct { z-index: 1000; }
.acct-menu { z-index: 2000; }

/* ============================================================
   Professional polish v2 — typographic precision, crisper data
   surfaces, consistent badges, refined scrollbars. Visual only.
   ============================================================ */

/* Type: smoother rendering + tabular figures wherever numbers line up */
body.app { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }
.stat .sv, .rail-stat b, .sl-c, .or-credit-top b,
.pr-table td, table.seqlib td, table.grid td, .matrix td, .pipe .stage b { font-variant-numeric: tabular-nums; }

/* Stat tiles: confident number, quiet label */
.stat { padding: 18px 18px 16px; }
.stat .sv { font-size: 30px; font-weight: 800; letter-spacing: -.025em; line-height: 1.05; }
.stat .sl { font-size: 12px; color: var(--text-muted); margin-top: 6px; font-weight: 500; }
.stat .rag { width: 8px; height: 8px; top: 16px; right: 16px; }

/* Cards: hairline that sharpens on hover (subtle, professional) */
.card { transition: border-color .14s ease, box-shadow .14s ease; }
.card:hover { border-color: var(--border-strong); }

/* Pipeline stage chips: even, legible */
.pipe { gap: 12px; }
.pipe .stage { border-radius: 14px; }
.pipe .stage b { font-size: 22px; font-weight: 800; letter-spacing: -.02em; }
.pipe .stage span { font-size: 11.5px; color: var(--text-muted); }

/* Badges/pills: one consistent weight + tracking */
.cls, .status-pill, .or-pill, .sl-status, .seq-chip { font-weight: 700; letter-spacing: .02em; }
.cls { font-size: 10.5px; padding: 3px 9px; }

/* Buttons: crisp, even sizing */
.btn { font-weight: 600; }
.btn-sm { padding: 7px 12px; font-size: 13px; line-height: 1; }

/* Refined thin scrollbars everywhere in the app */
.app * { scrollbar-width: thin; scrollbar-color: var(--border-strong) transparent; }
.app *::-webkit-scrollbar { width: 10px; height: 10px; }
.app *::-webkit-scrollbar-thumb { background: var(--border-strong); border-radius: 999px; border: 2px solid transparent; background-clip: padding-box; }
.app *::-webkit-scrollbar-thumb:hover { background: var(--text-dim); }
.app *::-webkit-scrollbar-track { background: transparent; }

/* List rows / table rows: gentle separators, crisp hover */
.pr-table tbody td, table.seqlib tbody td { border-bottom-color: var(--border); }

/* Account button: a touch more refined */
.acct-btn { transition: border-color .12s ease, background .12s ease; }

/* ============================================================
   Voice Drops editor — clean, professional form styling.
   Replaces the cramped inline-styled inputs / faint labels.
   ============================================================ */
.vd-grid { gap: 14px 16px !important; }
.vd-field { margin-bottom: 2px; min-width: 0; }
.vd-field > label { display: block; font-size: 11.5px; font-weight: 600; letter-spacing: .01em; color: var(--text-muted); margin-bottom: 6px; }
.vd-field > label span { font-weight: 400; color: var(--text-dim); }
.vd-field input, .vd-field textarea,
.vd-grid input, .vd-grid select, .vd-grid textarea {
  width: 100%; background: var(--bg-soft); border: 1px solid var(--border-strong);
  border-radius: 9px; color: var(--text); font: inherit; font-size: 13.5px; padding: 9px 11px;
  transition: border-color .12s ease, box-shadow .12s ease;
}
.vd-field input::placeholder, .vd-field textarea::placeholder { color: var(--text-dim); }
.vd-field input:focus, .vd-field textarea:focus,
.vd-grid input:focus, .vd-grid select:focus, .vd-grid textarea:focus {
  outline: 0; border-color: var(--brand); box-shadow: 0 0 0 3px rgba(124, 92, 255, .18);
}
.vd-script { margin-top: 16px; }
.vd-script > label { margin-bottom: 8px; }
#vdScript { min-height: 108px; line-height: 1.55; resize: vertical; }
.vd-chips { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 9px; }
.vd-hint { font-size: 12px; color: var(--text-muted); margin-top: 8px; line-height: 1.5; }
.vd-actions { margin-top: 18px; display: flex; gap: 8px; }

/* Voice Drops tabs: clean pill row */
.vd-tabs { gap: 8px !important; margin: 2px 0 18px !important; }
.vd-tabs button, .vd-tabs .vd-tab {
  border: 1px solid var(--border); background: var(--surface); color: var(--text-muted);
  border-radius: 999px; padding: 7px 14px; font: inherit; font-size: 13px; font-weight: 600; cursor: pointer;
}
.vd-tabs button:hover, .vd-tabs .vd-tab:hover { color: var(--text); border-color: var(--border-strong); }
.vd-tabs button.active, .vd-tabs .vd-tab.active {
  color: #fff; border-color: transparent; background: linear-gradient(135deg, #7c5cff, #5fa8ff);
  box-shadow: 0 6px 16px -8px rgba(124, 92, 255, .7);
}
html[data-theme="light"] .vd-tabs button.active, html[data-theme="light"] .vd-tabs .vd-tab.active { color: #fff; }
