:root{
  --bg:#F8F4EA;
  --surface:#FFFFFF;
  --surface-2:#F3EEE1;
  --surface-3:#ECE4D2;
  --border:#E1D8C3;
  --border-soft:#EBE3D2;
  --brass:#C9A227;
  --brass-bright:#9C6F0A;
  --brass-soft:rgba(201,162,39,0.16);
  --clay:#A34A31;
  --clay-soft:rgba(163,74,49,0.14);
  --sage:#4F7566;
  --sage-soft:rgba(79,117,102,0.14);
  --steel:#4C6B92;
  --steel-soft:rgba(76,107,146,0.14);
  --text:#241F16;
  --text-mute:#6B6355;
  --text-dim:#98907F;
  --radius:10px;
}
*{box-sizing:border-box;}
body{margin:0;background:var(--bg);color:var(--text);font-family:'Inter',sans-serif;}
h1,h2,h3,.serif{font-family:'Fraunces',serif;}
::selection{background:var(--brass-soft);}
.app{display:flex;min-height:640px;background:var(--bg);}

/* ---- Auth screens ---- */
/* .app is display:flex, which makes .auth-wrap a row-direction flex ITEM --
   without an explicit width, flex items shrink-to-fit their content instead
   of filling the available width, so .auth-wrap's own justify-content:center
   had nothing to center within (the wrap only ever sized itself to the
   card). width:100% + min-width:0 fixes that on every screen size, not just
   the wide emulator this went untested on. */
.auth-wrap{width:100%;min-width:0;min-height:640px;display:flex;align-items:center;justify-content:center;background:var(--bg);padding:20px;}
.auth-card{width:360px;max-width:100%;background:var(--surface);border:1px solid var(--border-soft);border-radius:14px;padding:28px 24px;}
.auth-brand{display:flex;align-items:center;gap:10px;margin-bottom:22px;}
.auth-brand .brand-mark{width:42px;height:42px;}
.auth-title{font-size:19px;font-weight:500;margin:0 0 4px;}
.auth-sub{font-size:12.5px;color:var(--text-mute);margin:0 0 22px;}
.auth-note{font-size:11.5px;color:var(--text-dim);margin-top:16px;line-height:1.5;}
.auth-switch{font-size:12.5px;color:var(--text-mute);margin-top:16px;text-align:center;}
.auth-switch a{color:var(--brass-bright);cursor:pointer;text-decoration:none;}
.role-toggle{display:flex;gap:8px;margin-bottom:16px;}
.role-opt{flex:1;text-align:center;padding:8px;border:1px solid var(--border);border-radius:7px;font-size:12.5px;cursor:pointer;color:var(--text-mute);}
.role-opt.active{border-color:var(--brass);background:var(--brass-soft);color:var(--brass-bright);}

/* ---- Mobile topbar (hidden on desktop; shown under the mobile breakpoint below) ---- */
.topbar{display:none;position:fixed;top:0;left:0;right:0;height:56px;align-items:center;gap:12px;padding:0 14px;background:var(--surface);border-bottom:1px solid var(--border-soft);z-index:120;}
.topbar-brand{display:flex;align-items:center;gap:8px;}
.topbar-brand .brand-mark{width:24px;height:24px;}
.topbar-brand .brand-name{font-family:'Fraunces',serif;font-size:15px;font-weight:500;}
.hamburger-btn{display:none;flex-direction:column;align-items:center;justify-content:center;gap:4px;width:34px;height:34px;flex-shrink:0;background:none;border:1px solid var(--border);border-radius:7px;cursor:pointer;padding:0;}
.hamburger-btn span{display:block;width:16px;height:1.5px;background:var(--text);border-radius:1px;}
.sidebar-backdrop{display:none;position:fixed;inset:0;background:rgba(8,11,15,0.55);z-index:150;}
.sidebar-backdrop.show{display:block;}
.sidebar-close-btn{display:none;margin-left:auto;background:none;border:none;color:var(--text-mute);font-size:20px;line-height:1;cursor:pointer;padding:4px;flex-shrink:0;}

/* ---- Sidebar ---- */
.sidebar{width:216px;flex-shrink:0;border-right:1px solid var(--border-soft);padding:24px 16px;display:flex;flex-direction:column;}
.brand{display:flex;align-items:center;gap:10px;padding:0 8px 24px;border-bottom:1px solid var(--border-soft);margin-bottom:20px;}
.brand-mark{width:30px;height:30px;flex-shrink:0;object-fit:contain;display:block;}
.brand-name{font-family:'Fraunces',serif;font-size:17px;font-weight:500;letter-spacing:0.2px;}
.brand-sub{font-size:11px;color:var(--text-dim);margin-top:1px;}
.nav{display:flex;flex-direction:column;gap:2px;}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:7px;font-size:13.5px;color:var(--text-mute);cursor:pointer;border:none;background:none;text-align:left;width:100%;font-family:'Inter',sans-serif;}
.nav-item:hover{background:var(--surface);color:var(--text);}
.nav-item.active{background:var(--brass-soft);color:var(--brass-bright);font-weight:500;}
.nav-dot{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:0.7;flex-shrink:0;}
.sidebar-foot{margin-top:auto;padding-top:16px;border-top:1px solid var(--border-soft);}
.who{display:flex;align-items:center;gap:9px;padding:6px 4px 12px;}
.who-avatar{width:28px;height:28px;border-radius:50%;background:var(--surface-2);border:1px solid var(--border);display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:600;color:var(--brass-bright);flex-shrink:0;}
.who-name{font-size:12.5px;font-weight:500;}
.who-role{font-size:10.5px;color:var(--text-dim);}
.foot-btn{width:100%;background:none;border:1px solid var(--border);color:var(--text-dim);font-size:12px;padding:8px;border-radius:7px;cursor:pointer;font-family:'Inter',sans-serif;margin-top:6px;}
.foot-btn:hover{border-color:var(--text-dim);color:var(--text-mute);}
.foot-btn.danger:hover{border-color:var(--clay);color:var(--clay);}

/* ---- Main ---- */
.main{flex:1;padding:28px 36px 40px;min-width:0;}
.view-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:24px;gap:16px;flex-wrap:wrap;}
.view-title{font-size:24px;font-weight:500;margin:0 0 4px;}
.view-desc{font-size:13px;color:var(--text-mute);margin:0;}
.head-actions{display:flex;gap:8px;}
.btn{background:var(--brass);color:#241B05;border:none;padding:9px 16px;border-radius:7px;font-size:13px;font-weight:600;cursor:pointer;font-family:'Inter',sans-serif;}
.btn:hover{background:var(--brass-bright);}
.btn-ghost{background:none;border:1px solid var(--border);color:var(--text);padding:9px 16px;border-radius:7px;font-size:13px;cursor:pointer;font-family:'Inter',sans-serif;font-weight:500;}
.btn-ghost:hover{border-color:var(--text-mute);}
.btn-sm{padding:5px 11px;font-size:12px;border-radius:6px;}
.btn:disabled,.btn-ghost:disabled{opacity:0.5;cursor:not-allowed;}

/* ---- Stat cards ---- */
.stat-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:28px;}
.stat-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:16px 18px;}
.stat-label{font-size:12px;color:var(--text-mute);margin:0 0 8px;}
.stat-value{font-size:26px;font-weight:500;font-family:'Fraunces',serif;margin:0;}
.stat-value.brass{color:var(--brass-bright);}
.stat-value.sage{color:var(--sage);}

/* ---- Section blocks ---- */
.section{background:var(--surface);border:1px solid var(--border-soft);border-radius:var(--radius);padding:20px 22px;margin-bottom:20px;}
.section-title{font-size:14px;font-weight:600;margin:0 0 16px;color:var(--text);}

/* ---- Funnel ---- */
.funnel-row{display:flex;align-items:center;gap:12px;margin-bottom:10px;}
.funnel-label{width:96px;flex-shrink:0;font-size:12.5px;color:var(--text-mute);}
.funnel-track{flex:1;height:20px;background:var(--surface-2);border-radius:4px;overflow:hidden;}
.funnel-fill{height:100%;border-radius:4px;}
.funnel-count{width:28px;text-align:right;font-size:12.5px;color:var(--text);font-weight:500;flex-shrink:0;}

/* ---- Table ---- */
table{width:100%;border-collapse:collapse;font-size:13px;}
th{text-align:left;font-weight:500;color:var(--text-dim);font-size:11.5px;padding:0 10px 10px;border-bottom:1px solid var(--border-soft);}
td{padding:11px 10px;border-bottom:1px solid var(--border-soft);vertical-align:middle;}
tr:last-child td{border-bottom:none;}
tbody tr:hover{background:var(--surface-2);}
.lead-name{font-weight:500;}
.lead-sub{font-size:11.5px;color:var(--text-dim);margin-top:1px;}
.badge{display:inline-block;padding:3px 9px;border-radius:20px;font-size:11px;font-weight:600;white-space:nowrap;}
.badge-new{background:rgba(211,84,0,0.14);color:#B34700;margin-left:7px;text-transform:uppercase;letter-spacing:0.3px;font-size:10px;padding:2px 7px;}
.row-actions{display:flex;gap:6px;justify-content:flex-end;}
.icon-btn{background:none;border:1px solid var(--border);color:var(--text-mute);width:26px;height:26px;border-radius:6px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:13px;}
.icon-btn:hover{border-color:var(--text-mute);color:var(--text);}
.icon-btn.call{color:var(--steel);border-color:rgba(124,147,176,0.4);}
.icon-btn.call:hover{border-color:var(--steel);}
.icon-btn.whatsapp{color:#2E9257;border-color:rgba(46,146,87,0.45);}
.icon-btn.whatsapp:hover{border-color:#2E9257;}
.icon-btn:disabled{opacity:0.35;cursor:not-allowed;}
.icon-btn:disabled:hover{border-color:var(--border);}
.activity-log{margin-top:6px;max-height:160px;overflow-y:auto;border-top:1px solid var(--border-soft);padding-top:10px;}
.activity-row{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--text-mute);padding:5px 0;}
.activity-tag{width:20px;height:20px;border-radius:5px;display:flex;align-items:center;justify-content:center;font-size:11px;flex-shrink:0;}
.activity-tag.call{background:rgba(124,147,176,0.18);color:var(--steel);}
.activity-tag.whatsapp{background:rgba(46,146,87,0.16);color:#2E9257;}
select.stage-select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);font-size:12px;padding:5px 8px;border-radius:6px;font-family:'Inter',sans-serif;}

.filter-bar{display:flex;gap:14px;margin-bottom:16px;flex-wrap:wrap;align-items:flex-end;}
.filter-bar select{background:var(--surface-2);border:1px solid var(--border);color:var(--text);font-size:12.5px;padding:7px 10px;border-radius:7px;font-family:'Inter',sans-serif;}
.filter-group{display:flex;flex-direction:column;gap:5px;}
.filter-group label{font-size:11px;color:var(--text-dim);text-transform:uppercase;letter-spacing:0.3px;}

.empty{text-align:center;padding:48px 20px;color:var(--text-dim);}
.empty-title{font-family:'Fraunces',serif;font-size:16px;color:var(--text-mute);margin:0 0 6px;}
.empty p{font-size:13px;margin:0 0 16px;}

/* ---- Modal ---- */
.modal-overlay{position:fixed;inset:0;background:rgba(8,11,15,0.6);display:flex;align-items:center;justify-content:center;z-index:50;padding:20px;}
.modal{background:var(--surface-3);border:1px solid var(--border);border-radius:12px;padding:24px;width:440px;max-width:100%;max-height:86vh;overflow-y:auto;}
.modal.wide{width:560px;}
.modal h3{margin:0 0 4px;font-size:17px;font-weight:500;}
.modal-sub{font-size:12px;color:var(--text-mute);margin:0 0 18px;}
.field{margin-bottom:13px;}
.field label{display:block;font-size:12px;color:var(--text-mute);margin-bottom:5px;}
.field input,.field select,.field textarea{width:100%;background:var(--surface-2);border:1px solid var(--border);color:var(--text);padding:8px 10px;border-radius:7px;font-size:13px;font-family:'Inter',sans-serif;}
.field textarea{resize:vertical;min-height:56px;}
.field-row{display:flex;gap:10px;}
.field-row .field{flex:1;}
.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;}
.err{color:var(--clay);font-size:11.5px;margin-top:4px;display:none;}

/* ---- Team ---- */
.team-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;}
.emp-card{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius);padding:16px;cursor:pointer;}
.emp-card:hover{border-color:var(--brass);}
.emp-card.selected{border-color:var(--brass);background:var(--brass-soft);}
.emp-name{font-weight:600;font-size:14px;margin:0 0 2px;}
.emp-meta{font-size:11.5px;color:var(--text-dim);margin:0 0 12px;}
.emp-stats{display:flex;gap:16px;}
.emp-stat b{display:block;font-size:17px;font-family:'Fraunces',serif;font-weight:500;}
.emp-stat span{font-size:10.5px;color:var(--text-dim);}
.remove-emp{float:right;background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:14px;}
.remove-emp:hover{color:var(--clay);}

.stagebar{display:flex;height:8px;border-radius:4px;overflow:hidden;margin-top:12px;background:var(--surface);}
.stagebar div{height:100%;}

.loading{padding:60px;text-align:center;color:var(--text-dim);font-size:13px;}
.import-drop{border:1.5px dashed var(--border);border-radius:10px;padding:22px;text-align:center;font-size:12.5px;color:var(--text-mute);margin-bottom:14px;}
.import-drop input[type=file]{margin-top:10px;}
.map-grid{display:grid;grid-template-columns:110px 1fr;gap:8px 10px;align-items:center;margin-bottom:14px;}
.map-grid label{font-size:12px;color:var(--text-mute);}
.import-count{font-size:12px;color:var(--sage);margin-bottom:10px;}

/* ==== Responsive ==== */

/* Tablet / mobile: sidebar becomes an off-canvas drawer opened by the topbar's hamburger button. */
@media (max-width: 860px){
  .app{min-height:100vh;}
  .topbar{display:flex;}
  .hamburger-btn{display:flex;}
  .sidebar-close-btn{display:block;}
  .main{padding:76px 18px 32px;}
  .sidebar{
    position:fixed;top:0;left:0;bottom:0;z-index:200;width:248px;max-width:82vw;
    background:var(--bg);box-shadow:2px 0 28px rgba(0,0,0,0.45);
    transform:translateX(-100%);transition:transform 0.25s ease;
    overflow-y:auto;
  }
  .sidebar.open{transform:translateX(0);}
  .stat-row{grid-template-columns:repeat(2,1fr);}
}

/* Phones: stacked form rows, single-column stats, and the leads/team tables
   switch from a grid to a stack of labeled cards (each <td> shows its
   column name via the data-label attribute set in app.js). */
@media (max-width: 620px){
  .main{padding:72px 14px 28px;}
  .view-title{font-size:20px;}
  .stat-row{grid-template-columns:1fr 1fr;gap:10px;}
  .stat-card{padding:13px 14px;}
  .stat-value{font-size:21px;}
  .section{padding:16px;}
  .field-row{flex-direction:column;gap:0;}
  .modal{padding:20px 16px;}
  .funnel-label{width:74px;font-size:11.5px;}
  .team-grid{grid-template-columns:1fr;}

  table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
  table, table tbody, table tr, table td{display:block;width:100%;}
  table tr{
    background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius);
    margin-bottom:10px;padding:2px 14px;
  }
  table tr:last-child{margin-bottom:0;}
  table td{
    display:flex;align-items:center;justify-content:space-between;gap:14px;text-align:right;
    padding:9px 0;border-bottom:1px solid var(--border-soft);
  }
  table tr td:last-child{border-bottom:none;}
  table td::before{
    content:attr(data-label);flex-shrink:0;text-align:left;
    font-size:10.5px;font-weight:600;color:var(--text-dim);text-transform:uppercase;letter-spacing:0.3px;
  }
  table td.td-primary{display:block;text-align:left;padding:11px 0 9px;}
  table td.td-primary::before{display:none;}
  table td.td-actions{justify-content:flex-end;}
  table td.td-actions::before{display:none;}
  table td .stage-select{max-width:170px;}
}

@media (max-width: 420px){
  .stat-row{grid-template-columns:1fr;}
  .auth-card{padding:26px 20px;}
}
