/* ===================================================================
   Black Bear CRM — visual system
   Palette:  navy night + disciplined gold + cool paper
   Type:     Sora (display) · Inter (body) · IBM Plex Mono (data)
   =================================================================== */

:root{
  --navy-900:#0B1E33;
  --navy-800:#102942;
  --navy-700:#16344f;
  --ink:#0E1A24;
  --slate:#5b6b7b;
  --line:#e3e8ee;
  --paper:#f4f6f8;
  --card:#ffffff;
  --gold:#c79a3b;
  --gold-deep:#a97f28;
  --gold-soft:#f0e4c4;
  --pine:#2e7d5b;
  --pine-soft:#e2f0ea;
  --rust:#b5533b;
  --rust-soft:#f6e4de;
  --sky:#2f6fb0;
  --sky-soft:#e4eef8;
  --radius:12px;
  --radius-sm:8px;
  --shadow:0 1px 2px rgba(11,30,51,.06),0 8px 24px rgba(11,30,51,.06);
  --shadow-sm:0 1px 2px rgba(11,30,51,.08);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:'Inter',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  background:var(--paper);
  color:var(--ink);
  font-size:15px;
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
.mono{font-family:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;
  font-variant-numeric:tabular-nums}

/* ---- App frame ---------------------------------------------------- */
.app{display:flex;min-height:100vh}

.sidebar{
  width:248px;flex:0 0 248px;
  background:linear-gradient(180deg,var(--navy-900),var(--navy-800));
  color:#cdd8e4;
  display:flex;flex-direction:column;
  position:sticky;top:0;height:100vh;
  padding:22px 16px;
}

.brand{display:flex;align-items:center;gap:12px;padding:4px 6px 22px}
.brand-mark{color:var(--gold);display:flex;line-height:0}
.brand-text{
  font-family:'Sora',sans-serif;font-weight:700;color:#fff;
  font-size:16px;line-height:1.1;letter-spacing:.2px;
  display:flex;flex-direction:column;
}
.brand-text small{
  font-family:'Inter',sans-serif;font-weight:500;
  color:#7f94aa;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;
  margin-top:3px;
}

.nav{display:flex;flex-direction:column;gap:2px;margin-top:6px}
.nav-item{
  position:relative;
  padding:10px 14px;border-radius:var(--radius-sm);
  color:#a9b8c8;font-weight:500;font-size:14px;
  transition:background .15s,color .15s;
}
.nav-item:hover{background:rgba(255,255,255,.05);color:#e7eef5}
.nav-item.is-active{background:rgba(199,154,59,.14);color:#fff}
.nav-item.is-active::before{
  content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;
  background:var(--gold);border-radius:0 3px 3px 0;
}

.sidebar-foot{margin-top:auto;padding-top:16px;border-top:1px solid rgba(255,255,255,.08)}
.who{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.who-avatar{
  width:34px;height:34px;border-radius:50%;
  background:var(--gold);color:var(--navy-900);
  display:flex;align-items:center;justify-content:center;
  font-family:'Sora',sans-serif;font-weight:700;font-size:14px;
}
.who-meta{display:flex;flex-direction:column;line-height:1.2}
.who-name{color:#fff;font-size:13.5px;font-weight:600}
.who-role{color:#7f94aa;font-size:11px;text-transform:capitalize}
.logout{
  display:block;text-align:center;font-size:12.5px;color:#a9b8c8;
  padding:8px;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius-sm);
  transition:border-color .15s,color .15s;
}
.logout:hover{color:#fff;border-color:rgba(255,255,255,.3)}

/* ---- Main --------------------------------------------------------- */
.main{flex:1;min-width:0;display:flex;flex-direction:column}
.topbar{
  height:64px;display:flex;align-items:center;gap:14px;
  padding:0 30px;background:var(--card);border-bottom:1px solid var(--line);
  position:sticky;top:0;z-index:5;
}
.page-title{
  font-family:'Sora',sans-serif;font-weight:600;font-size:19px;margin:0;
  color:var(--ink);letter-spacing:-.01em;
}
.hamburger{display:none;font-size:22px;cursor:pointer;color:var(--slate)}
.content{padding:28px 30px 60px;max-width:1180px;width:100%}

/* ---- Metric strip (the funnel, in tabular figures) ---------------- */
.metrics{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));
  gap:14px;margin-bottom:24px;
}
.metric{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  padding:16px 18px;box-shadow:var(--shadow-sm);
}
.metric-label{
  font-size:11px;letter-spacing:.11em;text-transform:uppercase;color:var(--slate);
  font-weight:600;
}
.metric-value{
  font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:30px;
  color:var(--ink);margin-top:6px;line-height:1;letter-spacing:-.02em;
}
.metric.accent .metric-value{color:var(--gold-deep)}
.metric-sub{font-size:12px;color:var(--slate);margin-top:6px}

/* ---- Card / panel ------------------------------------------------- */
.card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);margin-bottom:22px;overflow:hidden;
}
.card-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 20px;border-bottom:1px solid var(--line);
}
.card-title{font-family:'Sora',sans-serif;font-weight:600;font-size:15px;margin:0}
.card-body{padding:20px}
.card-note{font-size:12.5px;color:var(--slate);margin:0}

/* ---- Pipeline spine (new -> retained) ----------------------------- */
.spine{display:flex;gap:6px;padding:6px 20px 22px}
.spine-node{flex:1;text-align:center}
.spine-bar{
  height:8px;border-radius:6px;background:var(--line);position:relative;overflow:hidden;
}
.spine-bar span{position:absolute;inset:0;background:var(--gold);width:0;
  transition:width .5s ease}
.spine-count{
  font-family:'IBM Plex Mono',monospace;font-weight:600;font-size:18px;margin-top:10px;
}
.spine-name{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--slate);margin-top:2px}

/* ---- Tables ------------------------------------------------------- */
.table-wrap{overflow-x:auto}
table.grid{width:100%;border-collapse:collapse;font-size:13.5px}
table.grid th{
  text-align:left;font-weight:600;font-size:11px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--slate);
  padding:11px 16px;border-bottom:1px solid var(--line);background:#fafbfc;
  white-space:nowrap;
}
table.grid td{padding:12px 16px;border-bottom:1px solid var(--line);vertical-align:middle}
table.grid tr:last-child td{border-bottom:none}
table.grid tbody tr{transition:background .12s}
table.grid tbody tr:hover{background:#fafbfc}
.cell-name{font-weight:600;color:var(--ink)}
.cell-muted{color:var(--slate)}

/* ---- Badges ------------------------------------------------------- */
.badge{
  display:inline-flex;align-items:center;gap:5px;
  font-size:11.5px;font-weight:600;padding:3px 10px;border-radius:999px;
  border:1px solid transparent;white-space:nowrap;
}
.badge::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.85}
.st-new{background:#eef2f6;color:#586a7c}
.st-contacted{background:var(--sky-soft);color:#26567f}
.st-engaged{background:var(--pine-soft);color:#1f6349}
.st-qualified{background:var(--gold-soft);color:var(--gold-deep)}
.st-booked{background:#e7e0f4;color:#5b3ea0}
.st-retained{background:var(--pine);color:#fff}
.st-not_eligible{background:#eef2f6;color:#8593a1}
.st-lost{background:var(--rust-soft);color:#9a4230}

/* ---- Forms -------------------------------------------------------- */
.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-size:12px;font-weight:600;color:var(--slate);letter-spacing:.02em}
.field input,.field select,.field textarea{
  font-family:inherit;font-size:14px;color:var(--ink);
  padding:10px 12px;border:1px solid var(--line);border-radius:var(--radius-sm);
  background:#fff;transition:border-color .15s,box-shadow .15s;width:100%;
}
.field input:focus,.field select:focus,.field textarea:focus{
  outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(199,154,59,.18);
}

.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  font-family:'Sora',sans-serif;font-weight:600;font-size:14px;cursor:pointer;
  padding:10px 20px;border-radius:var(--radius-sm);border:1px solid transparent;
  transition:transform .06s,background .15s,box-shadow .15s;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--gold);color:var(--navy-900)}
.btn-primary:hover{background:var(--gold-deep);color:#fff}
.btn-ghost{background:#fff;border-color:var(--line);color:var(--ink)}
.btn-ghost:hover{border-color:var(--slate)}

/* ---- Flash messages ---------------------------------------------- */
.flash{
  padding:12px 16px;border-radius:var(--radius-sm);font-size:13.5px;
  margin-bottom:18px;border:1px solid transparent;
}
.flash strong{font-weight:600}
.flash-created{background:var(--pine-soft);border-color:#bfe0d2;color:#1f6349}
.flash-matched{background:var(--sky-soft);border-color:#c7ddf0;color:#26567f}
.flash-merged{background:var(--gold-soft);border-color:#e4d3a3;color:var(--gold-deep)}
.flash-error{background:var(--rust-soft);border-color:#eecabf;color:#9a4230}

/* ---- Empty states ------------------------------------------------- */
.empty{text-align:center;padding:46px 20px;color:var(--slate)}
.empty h3{font-family:'Sora',sans-serif;color:var(--ink);margin:0 0 6px;font-size:16px}
.empty p{margin:0;font-size:13.5px}

/* ---- "Coming next" placeholder ------------------------------------ */
.stub{
  background:var(--card);border:1px dashed var(--line);border-radius:var(--radius);
  padding:40px;text-align:center;
}
.stub .step-chip{
  display:inline-block;font-family:'IBM Plex Mono',monospace;font-size:11px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--gold-deep);
  background:var(--gold-soft);padding:4px 12px;border-radius:999px;margin-bottom:14px;
}
.stub h2{font-family:'Sora',sans-serif;font-size:19px;margin:0 0 10px;color:var(--ink)}
.stub p{color:var(--slate);max-width:520px;margin:0 auto 6px;font-size:14px}
.stub ul{max-width:520px;margin:14px auto 0;text-align:left;color:var(--slate);
  font-size:13.5px;line-height:1.7;padding-left:18px}

/* ---- Login -------------------------------------------------------- */
.auth-wrap{
  min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(1200px 500px at 50% -10%,var(--navy-700),var(--navy-900));
  padding:24px;
}
.auth-card{
  width:100%;max-width:400px;background:var(--card);border-radius:16px;
  box-shadow:0 30px 60px rgba(0,0,0,.35);padding:34px 32px;
}
.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.auth-brand .brand-mark{color:var(--gold)}
.auth-brand-text{font-family:'Sora',sans-serif;font-weight:700;font-size:18px;color:var(--ink)}
.auth-sub{color:var(--slate);font-size:13px;margin:0 0 24px}
.auth-card .btn{width:100%;margin-top:4px}

/* ---- Responsive --------------------------------------------------- */
@media (max-width:860px){
  .sidebar{
    position:fixed;left:0;top:0;z-index:40;height:100vh;
    transform:translateX(-100%);transition:transform .22s ease;
    box-shadow:8px 0 30px rgba(0,0,0,.25);
  }
  #navtoggle:checked ~ .app .sidebar{transform:translateX(0)}
  .hamburger{display:block}
  .content{padding:20px 16px 50px}
  .topbar{padding:0 16px}
}

@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
}

/* ===================================================================
   Step 2 — single-contact view, timeline, team management
   =================================================================== */

.backlink{display:inline-flex;align-items:center;gap:6px;color:var(--slate);
  font-size:13px;font-weight:500;margin-bottom:16px}
.backlink:hover{color:var(--gold-deep)}

/* contact header */
.contact-header{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow);padding:22px 24px;margin-bottom:22px;
  display:flex;justify-content:space-between;gap:24px;flex-wrap:wrap;
}
.ch-id{font-family:'IBM Plex Mono',monospace;font-size:12px;color:var(--slate)}
.ch-name{font-family:'Sora',sans-serif;font-weight:700;font-size:24px;
  color:var(--ink);margin:4px 0 10px;letter-spacing:-.01em}
.ch-badges{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ch-meta{display:grid;grid-template-columns:auto auto;gap:7px 18px;
  align-content:start;font-size:13px;margin:0}
.ch-meta dt{color:var(--slate);font-weight:500}
.ch-meta dd{margin:0;color:var(--ink);font-weight:500}

/* two-column detail layout */
.detail-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:22px;align-items:start}
@media (max-width:860px){.detail-grid{grid-template-columns:1fr}}

/* known-as chips */
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;
  padding:6px 12px;border-radius:999px;background:#f1f4f7;color:var(--ink);
  border:1px solid var(--line)}
.chip .chip-kind{font-size:10px;letter-spacing:.08em;text-transform:uppercase;
  color:var(--slate);font-weight:600}

/* note form */
.note-form textarea{min-height:74px;resize:vertical}
.note-actions{display:flex;justify-content:flex-end;margin-top:10px}

/* timeline */
.timeline{position:relative;padding:2px 2px 0}
.tl-item{position:relative;padding:0 0 20px 26px}
.tl-item::before{content:"";position:absolute;left:6px;top:6px;bottom:-4px;
  width:2px;background:var(--line)}
.tl-item:last-child{padding-bottom:2px}
.tl-item:last-child::before{display:none}
.tl-dot{position:absolute;left:0;top:3px;width:14px;height:14px;border-radius:50%;
  background:#fff;border:3px solid var(--gold);box-sizing:border-box}
.tl-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.tl-title{font-weight:600;font-size:13.5px;color:var(--ink)}
.tl-time{font-size:12px;color:var(--slate)}
.tl-detail{font-size:13.5px;color:#33414f;margin-top:4px;line-height:1.55}
.tl-note{background:#fbfaf5;border:1px solid var(--gold-soft);border-radius:8px;
  padding:10px 12px;margin-top:7px;white-space:pre-wrap;font-size:13.5px;color:#33414f}
.tl-by{font-size:12px;color:var(--slate);margin-top:5px}

/* channel badges */
.cb{display:inline-flex;align-items:center;font-size:11px;font-weight:600;
  padding:2px 9px;border-radius:999px;text-transform:capitalize}
.cb-system{background:#eef2f6;color:#586a7c}
.cb-email{background:var(--sky-soft);color:#26567f}
.cb-call{background:var(--gold-soft);color:var(--gold-deep)}
.cb-whatsapp{background:var(--pine-soft);color:#1f6349}
.cb-form{background:#ece7f5;color:#5b3ea0}
.cb-ads{background:var(--rust-soft);color:#9a4230}

/* clickable rows */
tr[data-href]{cursor:pointer}
.cell-name a{color:inherit}
.cell-name a:hover{color:var(--gold-deep)}

/* search / toolbar */
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.search-box{position:relative;flex:1;min-width:200px}
.search-box input{width:100%;padding:9px 12px 9px 32px;border:1px solid var(--line);
  border-radius:var(--radius-sm);font-family:inherit;font-size:14px}
.search-box input:focus{outline:none;border-color:var(--gold);
  box-shadow:0 0 0 3px rgba(199,154,59,.18)}
.search-box .si{position:absolute;left:11px;top:50%;transform:translateY(-50%);
  color:var(--slate);font-size:13px}

/* role + status */
.role-tag{font-size:11px;font-weight:600;padding:2px 10px;border-radius:999px;
  text-transform:capitalize;background:#eef2f6;color:#586a7c}
.role-tag.admin{background:var(--gold-soft);color:var(--gold-deep)}
.dim{opacity:.55}

/* ===================================================================
   Steps 3–6 — channel tabs, score pill, links, call action
   =================================================================== */
.score-pill{display:inline-flex;align-items:center;justify-content:center;
  min-width:34px;padding:2px 8px;border-radius:999px;font-family:'IBM Plex Mono',monospace;
  font-weight:600;font-size:12.5px;background:var(--gold-soft);color:var(--gold-deep)}
.link-a{color:var(--sky);font-weight:600}
.link-a:hover{color:#1f5896;text-decoration:underline}
.ch-actions{margin-top:14px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.ch-actions .cell-muted{font-size:12.5px}

/* ===================================================================
   Agents section — cards, per-agent view, transfer modal
   =================================================================== */
.agent-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
.agent-card{
  background:var(--card);border:1px solid var(--line);border-radius:var(--radius);
  box-shadow:var(--shadow-sm);padding:18px;display:block;
  transition:border-color .15s,box-shadow .15s,transform .06s;
}
.agent-card:hover{border-color:var(--gold);box-shadow:var(--shadow);transform:translateY(-1px)}
.agent-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}
.agent-avatar{
  width:40px;height:40px;border-radius:50%;background:var(--navy-800);color:var(--gold);
  display:flex;align-items:center;justify-content:center;font-family:'Sora',sans-serif;
  font-weight:700;font-size:16px;
}
.agent-type{font-size:10.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;
  color:var(--slate);background:#eef2f6;padding:3px 9px;border-radius:999px}
.agent-type.inbound{background:var(--sky-soft);color:#26567f}
.agent-name{font-family:'Sora',sans-serif;font-weight:600;font-size:16px;color:var(--ink)}
.agent-voice{font-size:12px;color:var(--slate);margin-top:2px}
.agent-count{margin-top:12px;font-size:14px;color:var(--ink);font-weight:500}
.agent-flag{margin-top:8px;font-size:11.5px;color:var(--rust);font-weight:500}

.btn-xs{padding:5px 11px!important;font-size:12px!important}
.called-yes{color:var(--pine);font-weight:700;font-size:15px}
.called-no{color:var(--line)}

/* modal */
.modal-overlay{
  position:fixed;inset:0;background:rgba(11,30,51,.55);z-index:100;
  display:none;align-items:center;justify-content:center;padding:20px;
}
.modal-overlay.open{display:flex}
.modal{
  background:var(--card);border-radius:14px;box-shadow:0 30px 60px rgba(0,0,0,.35);
  padding:24px;width:100%;max-width:400px;
}
.modal-title{font-family:'Sora',sans-serif;font-weight:600;font-size:17px;margin:0 0 6px;color:var(--ink)}
.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:18px}
