/* ============================================================
   Johannes Tree Care — CRM demo
   Client chrome = Johannes brand: clean BLACK & WHITE (matches
   johannestree.com — black circular badge, minimal, professional).
   Pipeline STATUS colors (STAGES) are functional data-viz, kept as-is
   so the Map / Pipeline / Calendar share one color language.
   HalyardCo badge = navy #12263a / brass #c08a2d (its own system).
   ============================================================ */
:root{
  /* Johannes Tree Care brand — monochrome */
  --ink:#16181b;           /* near-black wordmark ink */
  --ink-2:#3a3f45;
  --pine:#161616;          /* primary = near-black (buttons, active nav, links) */
  --pine-d:#000000;
  --leaf:#6b7280;          /* secondary neutral (tagline, hovers, swatches) */
  --moss:#f2f3f4;          /* light neutral surface */
  --sage-line:#e2e4e6;
  --bark:#6b4f3a;          /* earth brown — chip-drop data marker */
  --bark-l:#8a6d52;
  --amber:#d9a441;         /* estimate status accent (matches stage color) */
  --paper:#f5f5f6;         /* neutral off-white bg */
  --card:#ffffff;
  --muted:#6b7280;
  --line:#e5e6e8;
  --danger:#c0392b;
  --shadow:0 1px 2px rgba(17,18,20,.06),0 4px 16px rgba(17,18,20,.07);
  --shadow-lg:0 8px 40px rgba(17,18,20,.18);
  /* HalyardCo */
  --hc-navy:#12263a; --hc-brass:#c08a2d; --hc-gold:#e7c483; --hc-cream:#faf8f4;
  --sans:'Inter',system-ui,-apple-system,'Segoe UI',sans-serif;
  --serif:'Fraunces','Georgia',serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  font-family:var(--sans);color:var(--ink);background:var(--paper);
  -webkit-font-smoothing:antialiased;font-size:15px;line-height:1.5;
}
h1,h2,h3,h4{margin:0;font-weight:650;letter-spacing:-.01em}
button{font-family:inherit;cursor:pointer}
a{color:var(--pine)}
.hidden{display:none !important}
.mono{font-variant-numeric:tabular-nums}

/* ---------- Buttons ---------- */
.btn{border:1px solid var(--line);background:#fff;color:var(--ink);
  padding:8px 14px;border-radius:9px;font-weight:550;font-size:14px;
  display:inline-flex;align-items:center;gap:8px;transition:.14s;white-space:nowrap}
.btn:hover{border-color:var(--leaf);background:var(--moss)}
.btn.primary{background:var(--pine);color:#fff;border-color:var(--pine)}
.btn.primary:hover{background:var(--pine-d)}
.btn.amber{background:var(--amber);color:#3a2c07;border-color:var(--amber)}
.btn.ghost{background:transparent;border-color:transparent}
.btn.sm{padding:5px 10px;font-size:13px;border-radius:7px}
.btn:disabled{opacity:.5;cursor:not-allowed}

/* ============================================================
   GATE + ONBOARDING
   ============================================================ */
.overlay{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(120% 120% at 50% 0%,#2b2b2e 0%,#161618 55%,#0a0a0b 100%);padding:24px}
.gate-card{background:var(--card);border-radius:18px;box-shadow:var(--shadow-lg);
  width:100%;max-width:430px;padding:38px 34px;text-align:center;animation:pop .4s ease}
@keyframes pop{from{transform:translateY(14px) scale(.98);opacity:0}to{transform:none;opacity:1}}
.gate-card .logo-lockup{justify-content:center;margin-bottom:6px}
.gate-sub{color:var(--muted);font-size:14px;margin:2px 0 24px}
.gate-card input{width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:10px;
  font-size:15px;font-family:inherit;text-align:center;letter-spacing:.02em}
.gate-card input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px rgba(20,20,20,.13)}
.gate-err{color:var(--danger);font-size:13px;min-height:18px;margin-top:8px}
.gate-hint{margin-top:18px;font-size:12.5px;color:var(--muted);background:var(--moss);
  border:1px dashed var(--sage-line);border-radius:9px;padding:9px 12px}
.gate-hint b{color:var(--pine)}

/* Google sign-in onboarding */
.onboard-card{max-width:480px}
.onboard-hero{font-family:var(--serif);font-size:26px;line-height:1.2;margin:14px 0 6px}
.gbtn{width:100%;border:1px solid #dadce0;background:#fff;color:#3c4043;border-radius:10px;
  padding:13px;font-size:15px;font-weight:550;display:flex;align-items:center;justify-content:center;gap:12px;
  box-shadow:0 1px 2px rgba(60,64,67,.12);transition:.15s;margin-top:8px}
.gbtn:hover{box-shadow:0 2px 8px rgba(60,64,67,.22);background:#f8faff}
.gbtn svg{width:20px;height:20px}
.onboard-perks{text-align:left;margin:22px 0 4px;display:grid;gap:11px}
.onboard-perks li{list-style:none;display:flex;gap:11px;align-items:flex-start;font-size:13.5px;color:var(--ink-2)}
.onboard-perks .ic{width:26px;height:26px;border-radius:7px;background:var(--moss);display:flex;
  align-items:center;justify-content:center;flex:0 0 auto;font-size:15px}
.demo-note{font-size:11.5px;color:var(--muted);margin-top:18px}

/* fake google consent */
.gconsent{max-width:400px;text-align:left;padding:0;overflow:hidden}
.gconsent .gc-top{padding:26px 30px 18px;border-bottom:1px solid #eee;text-align:center}
.gconsent .gc-body{padding:20px 30px 26px}
.gc-acct{display:flex;align-items:center;gap:12px;border:1px solid #eee;border-radius:10px;padding:11px 13px;margin-bottom:14px}
.gc-avatar{width:36px;height:36px;border-radius:50%;background:var(--pine);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600}
.gc-scopes{font-size:13px;color:#5f6368;display:grid;gap:9px;margin:14px 0}
.gc-scopes li{list-style:none;display:flex;gap:10px;align-items:center}

.connecting{display:flex;flex-direction:column;align-items:center;gap:16px;padding:20px}
.spinner{width:38px;height:38px;border:3px solid var(--moss);border-top-color:var(--pine);border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.connect-log{font-size:13px;color:var(--muted);min-height:22px}

/* ============================================================
   APP SHELL
   ============================================================ */
#app{display:none;min-height:100vh}
.topbar{height:60px;background:var(--card);border-bottom:1px solid var(--line);
  display:flex;align-items:center;gap:16px;padding:0 20px;position:sticky;top:0;z-index:40}
.logo-lockup{display:flex;align-items:center;gap:11px}
.logo-lockup .mark{width:36px;height:36px;flex:0 0 auto;object-fit:contain;display:block}
.logo-lockup .wm{font-weight:700;letter-spacing:.05em;font-size:14.5px;line-height:1;color:var(--ink);text-transform:uppercase}
.logo-lockup .tl{font-size:9.5px;letter-spacing:.13em;color:var(--muted);text-transform:uppercase;margin-top:3px}
.topbar-search{flex:1;max-width:420px;position:relative}
.topbar-search input{width:100%;padding:8px 12px 8px 34px;border:1px solid var(--line);border-radius:9px;font-family:inherit;font-size:14px;background:var(--paper)}
.topbar-search input:focus{outline:none;border-color:var(--leaf);background:#fff}
.topbar-search .si{position:absolute;left:11px;top:8px;color:var(--muted)}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:14px}
.user-chip{display:flex;align-items:center;gap:9px;font-size:13px}
.user-chip .av{width:32px;height:32px;border-radius:50%;background:var(--pine);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:13px}
.gwired{font-size:11px;color:var(--leaf);display:flex;align-items:center;gap:4px}

.shell{display:flex;min-height:calc(100vh - 60px)}
.sidenav{width:210px;flex:0 0 auto;background:var(--card);border-right:1px solid var(--line);padding:14px 12px;display:flex;flex-direction:column;gap:3px}
.nav-item{display:flex;align-items:center;gap:11px;padding:9px 12px;border-radius:9px;color:var(--ink-2);font-weight:550;font-size:14px;border:none;background:none;width:100%;text-align:left;transition:.12s}
.nav-item:hover{background:var(--moss)}
.nav-item.active{background:var(--pine);color:#fff}
.nav-item .ni-ic{width:18px;text-align:center}
.nav-badge{margin-left:auto;background:var(--ink);color:#fff;font-size:11px;font-weight:700;border-radius:20px;padding:1px 7px}
.nav-item.active .nav-badge{background:#fff;color:var(--pine)}
.nav-spacer{flex:1}
.hc-badge{margin-top:10px;border-top:1px solid var(--line);padding-top:14px;font-size:10.5px;color:var(--muted);text-align:center;line-height:1.5}
.hc-badge .hc-lock{display:flex;align-items:center;justify-content:center;gap:6px;margin-top:5px;font-family:var(--serif);font-size:13px;color:var(--hc-navy)}
.hc-badge .hc-lock b{color:var(--hc-brass);font-weight:600}

.main{flex:1;min-width:0;overflow:auto}
.view{display:none;padding:22px 26px 60px}
.view.active{display:block}
.view-head{display:flex;align-items:flex-end;gap:14px;margin-bottom:18px;flex-wrap:wrap}
.view-head h1{font-family:var(--serif);font-size:24px;font-weight:600}
.view-head .sub{color:var(--muted);font-size:14px}
.view-head .spacer{flex:1}

/* ---------- Dashboard ---------- */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:22px}
.kpi{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:16px 18px;box-shadow:var(--shadow)}
.kpi .k-label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;font-weight:600}
.kpi .k-val{font-family:var(--serif);font-size:27px;font-weight:600;margin-top:6px;color:var(--ink)}
.kpi .k-sub{font-size:12.5px;color:var(--leaf);margin-top:3px}
.dash-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:18px}
@media(max-width:900px){.dash-grid{grid-template-columns:1fr}}
.panel{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:18px;box-shadow:var(--shadow)}
.panel h3{font-family:var(--serif);font-size:17px;font-weight:600;margin-bottom:12px}
.funnel-bar{display:flex;align-items:center;gap:10px;margin-bottom:9px;font-size:13px}
.funnel-bar .fb-label{width:130px;flex:0 0 auto;color:var(--ink-2)}
.funnel-bar .fb-track{flex:1;height:22px;background:var(--moss);border-radius:6px;overflow:hidden}
.funnel-bar .fb-fill{height:100%;border-radius:6px;display:flex;align-items:center;padding-left:8px;color:#fff;font-size:11px;font-weight:600}
.funnel-bar .fb-amt{width:74px;text-align:right;flex:0 0 auto;color:var(--muted);font-size:12.5px}

/* ---------- KANBAN ---------- */
.kanban-wrap{overflow-x:auto;padding-bottom:14px}
.kanban{display:flex;gap:13px;min-height:60vh;align-items:flex-start}
.kcol{flex:0 0 264px;background:#f0f1f2;border-radius:13px;padding:10px;display:flex;flex-direction:column;gap:9px;transition:.15s}
.kcol.dragover{background:#e4e6e8;box-shadow:inset 0 0 0 2px var(--ink)}
.kcol-head{display:flex;align-items:center;gap:8px;padding:2px 4px 4px}
.kcol-dot{width:9px;height:9px;border-radius:50%;flex:0 0 auto}
.kcol-title{font-weight:650;font-size:13px;letter-spacing:.01em}
.kcol-count{margin-left:auto;background:#fff;border-radius:20px;font-size:11px;font-weight:700;color:var(--muted);padding:1px 8px}
.kcol-sum{font-size:11px;color:var(--muted);padding:0 4px 4px}
.kcards{display:flex;flex-direction:column;gap:9px;min-height:16px}
.kcard{background:#fff;border-radius:10px;padding:11px 12px;box-shadow:var(--shadow);border-left:3px solid var(--leaf);cursor:grab;transition:.12s}
.kcard:hover{box-shadow:var(--shadow-lg);transform:translateY(-1px)}
.kcard.dragging{opacity:.45;cursor:grabbing}
.kcard .kc-name{font-weight:650;font-size:13.5px}
.kcard .kc-svc{font-size:12px;color:var(--ink-2);margin-top:2px}
.kcard .kc-meta{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:11.5px;color:var(--muted)}
.kcard .kc-amt{margin-left:auto;font-weight:700;color:var(--pine);font-variant-numeric:tabular-nums}
.kcard .kc-actions{margin-top:9px;display:flex;gap:6px}
.pin-flag{font-size:10px;background:#fdeaea;color:var(--danger);border-radius:5px;padding:1px 5px;font-weight:600}

/* ---------- MAP ---------- */
.map-layout{display:flex;gap:16px;height:calc(100vh - 150px)}
.map-side{width:240px;flex:0 0 auto;display:flex;flex-direction:column;gap:14px;overflow:auto}
#map{flex:1;border-radius:14px;box-shadow:var(--shadow);border:1px solid var(--line);min-height:400px}
.filter-group{background:var(--card);border:1px solid var(--line);border-radius:13px;padding:14px}
.filter-group h4{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:10px}
.chip-toggle{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:8px;cursor:pointer;font-size:13px;transition:.1s;user-select:none}
.chip-toggle:hover{background:var(--moss)}
.chip-toggle.off{opacity:.42}
.chip-toggle .sw{width:14px;height:14px;border-radius:4px;flex:0 0 auto;border:2px solid #fff;box-shadow:0 0 0 1px rgba(0,0,0,.12)}
.chip-toggle .cnt{margin-left:auto;font-size:11px;color:var(--muted);font-weight:600}
.view-pills{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.view-pill{border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 13px;font-size:12.5px;font-weight:600;color:var(--ink-2)}
.view-pill.active{background:var(--pine);color:#fff;border-color:var(--pine)}
.map-pin{border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 2px 5px rgba(0,0,0,.35);width:100%;height:100%}
.map-pin.chip{border-radius:5px;transform:none}
.leaflet-pin-label{font-weight:600}
.map-legend-note{font-size:11.5px;color:var(--muted);line-height:1.5}

/* ---------- Contacts ---------- */
.contacts-layout{display:grid;grid-template-columns:290px 1fr;gap:16px}
@media(max-width:820px){.contacts-layout{grid-template-columns:1fr}}
.contact-list{background:var(--card);border:1px solid var(--line);border-radius:13px;overflow:hidden;max-height:calc(100vh - 180px);overflow-y:auto}
.contact-row{padding:16px 16px;border-bottom:1px solid var(--line);cursor:pointer;transition:.1s;display:flex;flex-direction:column;align-items:flex-start;gap:5px;position:relative}
.contact-row:hover{background:var(--moss)}
.contact-row.active{background:var(--moss);border-left:3px solid var(--pine)}
.contact-row .cr-name{font-weight:600;font-size:14.5px;line-height:1.3;padding-right:26px}
.contact-row .cr-svc{font-size:12.5px;color:var(--muted);line-height:1.4}
.contact-detail .cd-head{display:flex;align-items:center;gap:14px;margin-bottom:6px}
.cd-avatar{width:48px;height:48px;border-radius:50%;background:var(--pine);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600;font-size:18px}
.cd-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px 20px;margin:16px 0;font-size:13.5px}
.cd-fields .lbl{color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em}
.gmail-thread{margin-top:8px}
.gmail-head{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);margin-bottom:10px;font-weight:600}
.email{border:1px solid var(--line);border-radius:10px;padding:11px 13px;margin-bottom:9px}
.email.out{background:var(--moss);border-color:var(--sage-line)}
.email .em-top{display:flex;justify-content:space-between;font-size:12px;margin-bottom:5px}
.email .em-from{font-weight:600}
.email .em-subj{font-size:12.5px;font-weight:600;margin-bottom:4px}
.email .em-body{font-size:13px;color:var(--ink-2);line-height:1.5}
.empty-thread{color:var(--muted);font-size:13px;padding:20px;text-align:center;background:var(--moss);border-radius:10px}

/* ---------- Documents (estimates/invoices) ---------- */
.doc-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:13px}
.doc-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:15px;box-shadow:var(--shadow)}
.doc-card .dc-type{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;padding:2px 8px;border-radius:20px;display:inline-block}
.dc-type.est{background:#fff3e0;color:#b3610a}
.dc-type.inv{background:#efe7fb;color:#6b3fbf}
.dc-type.paid{background:#e4f2ea;color:var(--pine)}
.doc-card .dc-no{font-family:var(--serif);font-size:16px;font-weight:600;margin:9px 0 3px}
.doc-card .dc-amt{font-size:22px;font-weight:700;color:var(--pine);font-variant-numeric:tabular-nums}

/* Printable doc */
.doc-sheet{background:#fff;max-width:720px;margin:0 auto;border:1px solid var(--line);border-radius:12px;padding:44px;box-shadow:var(--shadow-lg)}
.doc-sheet .ds-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:3px solid var(--pine);padding-bottom:18px;margin-bottom:22px}
.ds-head .ds-co{font-weight:700;letter-spacing:.05em;text-transform:uppercase;font-size:18px}
.ds-head .ds-tl{font-size:10px;letter-spacing:.14em;color:var(--leaf);text-transform:uppercase;margin-top:3px}
.ds-head .ds-meta{text-align:right;font-size:12.5px;color:var(--muted);line-height:1.7}
.ds-title{font-family:var(--serif);font-size:30px;font-weight:600;color:var(--pine)}
.ds-parties{display:flex;justify-content:space-between;margin:20px 0;font-size:13px}
.ds-parties .lbl{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:4px}
table.ds-table{width:100%;border-collapse:collapse;margin:14px 0;font-size:13px}
table.ds-table th{text-align:left;background:var(--moss);padding:9px 11px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--ink-2)}
table.ds-table td{padding:10px 11px;border-bottom:1px solid var(--line)}
table.ds-table td.r,table.ds-table th.r{text-align:right}
.ds-totals{margin-left:auto;width:250px;font-size:13.5px}
.ds-totals .tr{display:flex;justify-content:space-between;padding:5px 0}
.ds-totals .tr.grand{border-top:2px solid var(--pine);margin-top:6px;padding-top:9px;font-weight:700;font-size:16px;color:var(--pine)}
.ds-foot{margin-top:26px;padding-top:16px;border-top:1px solid var(--line);font-size:11.5px;color:var(--muted);display:flex;justify-content:space-between;align-items:center}
.paid-stamp{border:3px solid var(--pine);color:var(--pine);font-weight:800;font-size:22px;letter-spacing:.1em;padding:5px 16px;border-radius:8px;transform:rotate(-9deg);font-family:var(--serif)}

/* ---------- Calendar ---------- */
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;min-width:0}
.cal-dow{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);text-align:center;font-weight:700;padding:4px}
.cal-cell{background:var(--card);border:1px solid var(--line);border-radius:9px;min-height:92px;padding:6px 7px}
.cal-cell.other{background:var(--paper);opacity:.5}
.cal-cell.today{border-color:var(--pine);box-shadow:0 0 0 1px var(--pine)}
.cal-cell .cd-num{font-size:12px;font-weight:600;color:var(--ink-2)}
.cal-cell.today .cd-num{color:var(--pine)}
.cal-event{font-size:10.5px;border-radius:5px;padding:2px 5px;margin-top:3px;color:#fff;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cal-ev-job{background:var(--pine)}
.cal-ev-estimate{background:var(--amber);color:#3a2c07}
.cal-ev-internal{background:var(--bark-l)}
.gcal-note{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--muted);margin-bottom:14px}

/* ---------- Integrations ---------- */
.integ-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
.integ-card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px;box-shadow:var(--shadow);text-align:center}
.integ-logo{width:52px;height:52px;margin:0 auto 12px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:22px;color:#fff}
.integ-card h3{font-family:var(--serif);font-size:18px;margin-bottom:4px}
.integ-card p{font-size:13px;color:var(--muted);min-height:38px;margin-bottom:14px}
.integ-status{font-size:12px;font-weight:700;padding:3px 11px;border-radius:20px;display:inline-flex;align-items:center;gap:5px}
.integ-status.off{background:#f0f0ee;color:var(--muted)}
.integ-status.on{background:#e4f2ea;color:var(--pine)}
.integ-sync{margin-top:14px;font-size:12.5px;text-align:left;background:var(--moss);border-radius:9px;padding:11px}

/* ---------- Automations ---------- */
.auto-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:820px){.auto-grid{grid-template-columns:1fr}}
.auto-card .ac-top{display:flex;align-items:center;gap:10px;margin-bottom:8px}
.auto-toggle-badge{font-size:11px;font-weight:700;padding:2px 9px;border-radius:20px;background:#e4f2ea;color:var(--pine)}
.auto-log{max-height:none}
.log-item{display:flex;gap:11px;padding:10px 0;border-bottom:1px solid var(--line);font-size:13px}
.log-item .li-ic{width:30px;height:30px;border-radius:8px;flex:0 0 auto;display:flex;align-items:center;justify-content:center;background:var(--moss);font-size:14px}
.log-item .li-time{font-size:11px;color:var(--muted);margin-top:2px}
/* SMS bubble */
.sms-preview{background:#141416;border-radius:16px;padding:14px;max-width:290px}
.sms-bubble{background:#34c759;color:#fff;border-radius:16px 16px 4px 16px;padding:9px 12px;font-size:13px;margin-left:auto;max-width:88%;margin-bottom:4px}
.sms-to{font-size:11px;color:#8a97a4;text-align:center;margin-bottom:8px}
.sms-link{color:#d6ffe0;text-decoration:underline}
.form-row{margin-bottom:12px}
.form-row label{display:block;font-size:12px;font-weight:600;color:var(--ink-2);margin-bottom:5px}
.form-row input,.form-row select,.form-row textarea{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:9px;font-family:inherit;font-size:14px}
.form-row input:focus,.form-row select:focus,.form-row textarea:focus{outline:none;border-color:var(--leaf)}
.consent-row{display:flex;gap:9px;align-items:flex-start;font-size:12.5px;color:var(--ink-2)}
.consent-row input{width:auto;margin-top:2px}

/* ---------- Relic Agent panel ---------- */
.relic-fab{position:fixed;right:22px;bottom:22px;z-index:60;width:58px;height:58px;border-radius:50%;
  background:linear-gradient(145deg,var(--hc-navy),#1b3a57);color:#fff;border:none;box-shadow:var(--shadow-lg);
  display:flex;align-items:center;justify-content:center;font-size:24px;transition:.15s}
.relic-fab:hover{transform:scale(1.06)}
.relic-panel{position:fixed;right:22px;bottom:22px;z-index:61;width:370px;max-width:calc(100vw - 30px);height:540px;max-height:calc(100vh - 40px);
  background:var(--card);border-radius:16px;box-shadow:var(--shadow-lg);display:none;flex-direction:column;overflow:hidden;border:1px solid var(--line)}
.relic-panel.open{display:flex;animation:pop .25s ease}
.relic-head{background:linear-gradient(145deg,var(--hc-navy),#1b3a57);color:#fff;padding:14px 16px;display:flex;align-items:center;gap:11px}
.relic-head .rh-mark{width:32px;height:32px;border-radius:9px;background:rgba(255,255,255,.1);display:flex;align-items:center;justify-content:center}
.relic-head .rh-name{font-family:var(--serif);font-size:16px;font-weight:600;line-height:1.1}
.relic-head .rh-sub{font-size:11px;color:var(--hc-gold);letter-spacing:.03em}
.relic-head .rh-close{margin-left:auto;background:none;border:none;color:#fff;font-size:20px;opacity:.7}
.relic-body{flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;background:var(--paper)}
.rmsg{display:flex;gap:9px;max-width:100%}
.rmsg .rm-txt{padding:10px 13px;border-radius:13px;font-size:13.5px;line-height:1.5}
.rmsg.bot .rm-txt{background:#fff;border:1px solid var(--line);border-radius:13px 13px 13px 4px}
.rmsg.user{justify-content:flex-end}
.rmsg.user .rm-txt{background:var(--pine);color:#fff;border-radius:13px 13px 4px 13px}
.rmsg .rm-av{width:28px;height:28px;border-radius:8px;flex:0 0 auto;background:var(--hc-navy);color:var(--hc-gold);display:flex;align-items:center;justify-content:center;font-size:13px}
.rmsg .rm-txt .did{display:block;margin-top:7px;font-size:12px;color:var(--pine);font-weight:600;background:var(--moss);border-radius:7px;padding:6px 9px}
.relic-suggest{display:flex;gap:6px;flex-wrap:wrap;padding:0 14px 8px}
.relic-suggest button{font-size:11.5px;border:1px solid var(--line);background:#fff;border-radius:20px;padding:5px 11px;color:var(--ink-2)}
.relic-suggest button:hover{background:var(--moss);border-color:var(--leaf)}
.relic-input{display:flex;gap:8px;padding:12px 14px;border-top:1px solid var(--line);background:#fff}
.relic-input input{flex:1;border:1px solid var(--line);border-radius:10px;padding:9px 12px;font-family:inherit;font-size:14px}
.relic-input input:focus{outline:none;border-color:var(--leaf)}
.relic-input button{background:var(--pine);color:#fff;border:none;border-radius:10px;width:40px;font-size:16px}
.typing span{display:inline-block;width:6px;height:6px;background:var(--muted);border-radius:50%;margin:0 1px;animation:blink 1.2s infinite}
.typing span:nth-child(2){animation-delay:.2s}.typing span:nth-child(3){animation-delay:.4s}
@keyframes blink{0%,60%,100%{opacity:.25}30%{opacity:1}}

/* ---------- Modal ---------- */
.modal-back{position:fixed;inset:0;background:rgba(13,20,16,.55);z-index:70;display:none;align-items:center;justify-content:center;padding:24px;overflow:auto}
.modal-back.open{display:flex}
.modal{background:var(--card);border-radius:16px;box-shadow:var(--shadow-lg);width:100%;max-width:640px;max-height:90vh;overflow:auto;animation:pop .25s ease}
.modal-head{display:flex;align-items:center;padding:18px 22px;border-bottom:1px solid var(--line)}
.modal-head h3{font-family:var(--serif);font-size:19px;font-weight:600}
.modal-head .mh-close{margin-left:auto;background:none;border:none;font-size:22px;color:var(--muted)}
.modal-body{padding:22px}
.modal-foot{padding:14px 22px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}

/* ---------- Toasts ---------- */
.toast-wrap{position:fixed;top:70px;right:20px;z-index:90;display:flex;flex-direction:column;gap:10px}
.toast{background:var(--card);border:1px solid var(--line);border-left:4px solid var(--leaf);border-radius:11px;box-shadow:var(--shadow-lg);
  padding:12px 15px;max-width:340px;font-size:13.5px;display:flex;gap:11px;animation:slidein .3s ease}
.toast.amber{border-left-color:var(--amber)}.toast.navy{border-left-color:var(--hc-navy)}
.toast .t-ic{font-size:18px;flex:0 0 auto}
.toast .t-title{font-weight:650;margin-bottom:2px}
.toast .t-body{color:var(--muted);font-size:12.5px}
@keyframes slidein{from{transform:translateX(30px);opacity:0}to{transform:none;opacity:1}}

/* ---------- Print ---------- */
@media print{
  body *{visibility:hidden}
  #printArea,#printArea *{visibility:visible}
  #printArea{position:absolute;inset:0;padding:0}
  .doc-sheet{box-shadow:none;border:none;max-width:100%}
  .relic-fab,.relic-panel{display:none !important}
}
@media(max-width:760px){
  .sidenav{width:60px}.nav-item .ni-label,.hc-badge,.nav-badge{display:none}
  .topbar-search{display:none}
  .map-layout{flex-direction:column;height:auto}.map-side{width:100%;flex-direction:row;flex-wrap:wrap}
  #map{height:60vh}
}

/* ============================================================
   REVISION PASS — B&W rebrand add-ons
   ============================================================ */

/* ---------- Inline edit affordance (app-wide) ---------- */
.edit-btn{border:1px solid var(--line);background:#fff;color:var(--muted);width:27px;height:27px;border-radius:8px;
  display:inline-flex;align-items:center;justify-content:center;padding:0;transition:.12s;flex:0 0 auto;cursor:pointer}
.edit-btn:hover{border-color:var(--ink);color:var(--ink);background:var(--moss)}
.edit-btn svg{width:14px;height:14px}
.edit-btn.sm{width:23px;height:23px;border-radius:7px}
.kcard{position:relative}
/* Edit affordance is ALWAYS visible (no hover-hiding) so it can't be missed. */
.kcard .kc-edit{position:absolute;top:8px;right:8px;opacity:1;transition:.12s;width:24px;height:24px}
.kcard:hover .kc-edit{border-color:var(--ink);color:var(--ink)}
.kcard .kc-name{padding-right:30px}
.contact-row .cr-edit{position:absolute;top:14px;right:12px;opacity:1}
.contact-row:hover .cr-edit,.contact-row.active .cr-edit{border-color:var(--ink);color:var(--ink)}
.cd-head .cd-edit{margin-left:8px}
/* click-to-edit inline fields (contact detail showcase) */
.editable{cursor:text;border-radius:6px;padding:2px 5px;margin:-2px -5px;transition:.1s;border:1px dashed transparent;display:inline-block}
.editable:hover{background:var(--moss);border-color:var(--sage-line)}
.editable::after{content:"\270E";font-size:11px;color:var(--muted);margin-left:6px;opacity:0}
.editable:hover::after{opacity:.7}
.inline-input{border:1px solid var(--ink);border-radius:6px;padding:3px 6px;font-family:inherit;font-size:inherit;min-width:120px}

/* ---------- Calendar: toolbar, views, legend ---------- */
.cal-toolbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.cal-viewtoggle{display:inline-flex;border:1px solid var(--line);border-radius:9px;overflow:hidden}
.cal-viewtoggle button{border:none;background:#fff;padding:7px 15px;font-size:13px;font-weight:600;color:var(--ink-2);border-right:1px solid var(--line);cursor:pointer}
.cal-viewtoggle button:last-child{border-right:none}
.cal-viewtoggle button.active{background:var(--ink);color:#fff}
.cal-nav{display:inline-flex;gap:6px;align-items:center}
.cal-nav button{width:32px;height:32px;border:1px solid var(--line);background:#fff;border-radius:8px;font-size:15px;color:var(--ink-2);cursor:pointer;display:flex;align-items:center;justify-content:center}
.cal-nav button:hover{border-color:var(--ink);background:var(--moss)}
.cal-period{font-family:var(--serif);font-size:19px;font-weight:600;min-width:172px}
.cal-legend{display:flex;flex-wrap:wrap;gap:7px 15px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:11px;padding:10px 14px;margin-bottom:14px}
.cal-legend .lg-title{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;margin-right:2px}
.cal-legend .lg-item{display:flex;align-items:center;gap:6px;color:var(--ink-2);font-size:12px}
.cal-legend .lg-sw{width:11px;height:11px;border-radius:3px;flex:0 0 auto;box-shadow:0 0 0 1px rgba(0,0,0,.08)}
.cal-legend .lg-note{color:var(--muted);font-size:11.5px;margin-left:auto;font-style:italic}
.cal-layout{display:flex;gap:16px;align-items:flex-start}
.cal-gridarea{flex:1;min-width:0}
.cal-grid.week{grid-template-rows:auto 1fr}
.cal-grid.week .cal-cell{min-height:190px}
.cal-cell{cursor:pointer}
.cal-cell.sel{border-color:var(--ink);box-shadow:0 0 0 2px var(--ink)}
.cal-event{border:none}

/* ---------- Calendar: left 1/3 hourly day panel ---------- */
.cal-daypanel{flex:0 0 34%;max-width:360px;background:var(--card);border:1px solid var(--line);border-radius:13px;
  box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;max-height:calc(100vh - 250px)}
.cal-daypanel .dp-head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:9px}
.cal-daypanel .dp-head h3{font-family:var(--serif);font-size:16px;line-height:1.1}
.cal-daypanel .dp-head .dp-sub{font-size:11.5px;color:var(--muted)}
.cal-daypanel .dp-close{margin-left:auto;background:none;border:none;font-size:20px;color:var(--muted);cursor:pointer;line-height:1}
.hourlist{overflow-y:auto;padding:2px 0 8px}
.hourrow{display:flex;border-top:1px solid var(--line);min-height:44px}
.hourrow.biz{background:#fff}
.hourrow.off{background:var(--paper)}
.hourrow .hr-label{flex:0 0 56px;font-size:10.5px;color:var(--muted);padding:6px 8px 0;text-align:right;font-variant-numeric:tabular-nums}
.hourrow .hr-slot{flex:1;padding:4px 9px 4px 2px;display:flex;flex-direction:column;gap:4px}
.hr-event{border-radius:8px;padding:7px 10px;color:#fff;font-size:12px;line-height:1.3;cursor:pointer;box-shadow:var(--shadow);position:relative}
.hr-event .he-t{font-weight:650}
.hr-event .he-sub{font-size:11px;opacity:.92;margin-top:1px}
.hr-event .he-edit{position:absolute;top:5px;right:5px;color:#fff;opacity:.75;background:rgba(255,255,255,.18);border:none;border-radius:5px;width:20px;height:20px;font-size:11px;cursor:pointer}
.dp-empty{padding:26px 18px;text-align:center;color:var(--muted);font-size:13px}
@media(max-width:820px){.cal-layout{flex-direction:column}.cal-daypanel{flex:1 1 auto;max-width:none;width:100%;order:-1}}

/* ---------- Estimate / Invoice builder ---------- */
.modal.builder{max-width:1000px}
.builder-grid{display:grid;grid-template-columns:1.08fr .92fr;gap:22px}
@media(max-width:880px){.builder-grid{grid-template-columns:1fr}}
.bld-col h4{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:0 0 8px}
.bld-section{margin-bottom:18px}
.bld-meta{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.bld-meta label,.bld-field label{display:block;font-size:11px;font-weight:600;color:var(--ink-2);margin-bottom:4px}
.bld-meta input,.bld-meta select,.bld-field input,.bld-field textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-family:inherit;font-size:13px}
.li-table{width:100%;border-collapse:collapse;font-size:13px}
.li-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);padding:2px 5px;font-weight:700}
.li-table th.r,.li-table td.r{text-align:right}
.li-row td{padding:3px 4px;vertical-align:middle}
.li-row input,.li-row select{width:100%;border:1px solid var(--line);border-radius:7px;padding:6px 7px;font-family:inherit;font-size:12.5px}
.li-row .li-amt{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap;padding-right:4px}
.li-tools{display:flex;gap:2px}
.li-tools button{border:1px solid var(--line);background:#fff;border-radius:6px;width:24px;height:26px;cursor:pointer;color:var(--muted);font-size:12px;display:flex;align-items:center;justify-content:center;padding:0}
.li-tools button:hover{border-color:var(--ink);color:var(--ink)}
.li-tools .li-del:hover{color:var(--danger);border-color:var(--danger)}
.bld-add{margin-top:10px}
.bld-totals{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.bld-totrow{display:flex;align-items:center;gap:10px;justify-content:flex-end;margin-bottom:7px;font-size:13px}
.bld-totrow label{color:var(--muted)}
.bld-totrow input{width:90px;border:1px solid var(--line);border-radius:7px;padding:5px 7px;font-family:inherit;font-size:13px;text-align:right}
.bld-totrow select{border:1px solid var(--line);border-radius:7px;padding:5px 6px;font-family:inherit;font-size:12px}
.bld-totrow .val{min-width:88px;text-align:right;font-variant-numeric:tabular-nums}
.bld-totrow.grand{font-size:16px;font-weight:700;color:var(--ink);border-top:2px solid var(--ink);padding-top:9px}
.cfield-row{display:flex;gap:7px;margin-bottom:7px}
.cfield-row input{flex:1}
.tmpl-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:-4px 0 16px}
.tmpl-bar select{border:1px solid var(--line);border-radius:8px;padding:7px 9px;font-family:inherit;font-size:13px}
.bld-preview{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:14px;max-height:72vh;overflow:auto}
.bld-preview .doc-sheet{padding:28px;box-shadow:none;border:1px solid var(--line);max-width:100%}
.bld-preview-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-bottom:8px}

/* doc sheet uses badge logo now */
.ds-head .ds-logo{width:52px;height:52px;flex:0 0 auto;object-fit:contain}

/* ---------- Chat relay states ---------- */
.chat-status{font-size:11px;color:var(--muted);text-align:right;padding:0 2px 2px}
.chat-offline{background:#fff3e0;color:#b3610a;border-radius:8px;padding:6px 10px;font-size:11.5px;margin:0 14px 8px;text-align:center;line-height:1.4}
.rmsg.user .rm-txt{position:relative}

/* ---------- Map: dump-sites control ---------- */
.map-side .btn.full{width:100%;justify-content:center;margin-bottom:2px}
.dump-note{font-size:11px;color:var(--muted);line-height:1.45;margin-top:8px}
.dump-pop b{font-size:13px}
.dump-pop .dp-row{font-size:12px;color:#444;margin-top:2px}
.dump-badge{display:inline-block;font-size:10px;font-weight:700;border-radius:20px;padding:1px 8px;margin-top:5px}
.dump-badge.open{background:#e4f2ea;color:#1f5233}
.dump-badge.closed{background:#f0f0ee;color:#6b7280}

/* ============================================================
   Monochrome icon system — alignment (B&W rebrand)
   ============================================================ */
.mi{display:inline-block;vertical-align:-.16em;flex:0 0 auto}
/* nav icons: center in the 18px rail, inherit nav text color (inverts when active) */
.nav-item .ni-ic{display:flex;align-items:center;justify-content:center;width:18px;height:18px}
.nav-item .ni-ic .mi{vertical-align:0}
/* toast / log / alert icon chips */
.toast .t-ic{display:flex;align-items:center;justify-content:center;color:var(--ink)}
.toast.amber .t-ic{color:var(--amber)} .toast.navy .t-ic{color:var(--hc-navy)}
.log-item .li-ic{color:var(--ink)}
.log-item .li-ic .mi{vertical-align:0}
/* automations card header icon */
.ac-ic{display:inline-flex;align-items:center;justify-content:center;color:var(--ink)}
.ac-ic .mi{vertical-align:0}
/* pills & inline-in-text contexts that aren't flex */
.view-pill{display:inline-flex;align-items:center;gap:5px}
.gc-scopes li .mi,.connect-log .mi,.onboard-perks .ic .mi{vertical-align:-.2em}
.onboard-perks .ic{color:var(--ink-2)}
/* kanban card location pin sits inline with the muted meta text */
.kc-meta .mi{vertical-align:-.15em}
/* map popup title icons inherit dark popup text */
.leaflet-popup-content .mi{vertical-align:-.15em}
