:root{
  --bg:#eef2f7; --panel:#ffffff; --panel2:#f5f8fc; --line:#93d3ee;
  --text:#111827; --muted:#4b5563; --brand:#0ea5e9; --brand2:#0284c7;
  --high:#16a34a; --med:#d97706; --low:#6b7280;
  --emer:#dc2626; --same:#d97706; --ink-dim:#4b5563;
  --radius:14px;
}
*{box-sizing:border-box}
body{
  margin:0;background:var(--bg);color:var(--text);
  font:15px/1.5 'Inter',system-ui,-apple-system,sans-serif;
}
a{color:var(--brand);text-decoration:none}

.topbar{
  display:flex;align-items:flex-start;gap:24px;
  padding:14px 22px;border-bottom:1px solid var(--line);background:#ffffff;
}
.brand{display:flex;align-items:center;gap:10px;margin-top:6px}
.logo{color:var(--brand);font-size:22px}
.brand .name{font-weight:700;letter-spacing:.3px}
.brand .tag{color:var(--muted);font-size:12px;border-left:1px solid var(--line);padding-left:10px}
.newcall{
  display:flex;align-items:center;justify-content:center;
  width:100%;height:42px;padding:0 10px;
  font-size:13px;font-weight:600;white-space:nowrap;
  background:var(--brand2);color:#fff;
  border:none;border-radius:10px;cursor:pointer;
  text-decoration:none;box-sizing:border-box;
}
.newcall:hover{background:var(--brand);color:#fff}
.newcall-primary{background:var(--high);color:#fff}
.newcall-primary:hover{background:#15803d;color:#fff}

/* Gear icon — Setup & log out */
.nav-gear{flex-shrink:0;margin-top:6px}
.topbar-gear{
  display:flex;align-items:center;justify-content:center;
  width:42px;height:42px;border-radius:10px;
  background:var(--panel2);border:1px solid var(--line);
  font-size:19px;cursor:pointer;list-style:none;color:var(--text);
  box-shadow:0 1px 3px rgba(0,0,0,0.05);
}
.topbar-gear::-webkit-details-marker{display:none}
.nav-gear[open] .topbar-gear{background:var(--brand2);color:#fff;border-color:var(--brand2)}
/* right-anchor the gear menu. Compound selector so it beats the later
   `.nav-dd-menu{left:0}` rule (equal specificity would let source order win). */
.nav-dd-menu.nav-dd-right{left:auto;right:0}
.nav-divider{border:none;border-top:1px solid var(--line);margin:4px 0}
.lock-link{display:flex;align-items:center;font-size:20px;margin-top:4px;color:var(--muted)}

.wrap{max-width:1600px;margin:26px auto;padding:0 28px}
.wrap-wide{max-width:1800px}
.foot{text-align:center;color:var(--muted);font-size:12px;padding:24px}

.card{
  background:var(--panel);border:1px solid var(--line);
  border-radius:var(--radius);padding:20px;
  box-shadow:0 2px 8px rgba(0,0,0,0.06), 0 8px 24px rgba(14,165,233,0.07);
}

/* intake */
.grid{display:grid;grid-template-columns:1.4fr .9fr;gap:18px}
h1{font-size:22px;margin:0 0 4px}
.sub{color:var(--muted);margin:0 0 16px;font-size:13.5px}
label{display:block;margin-bottom:14px;font-size:13px;color:var(--muted)}
input[type=text],textarea{
  width:100%;margin-top:6px;background:var(--panel);border:1px solid var(--line);
  color:var(--text);border-radius:10px;padding:11px 12px;font-size:14px;
  box-shadow:0 1px 3px rgba(0,0,0,0.05);
}
textarea{resize:vertical}
input:focus,textarea:focus{outline:none;border-color:var(--brand)}
label small{display:block;color:var(--low);margin-top:5px;font-size:11.5px}
.upload input{margin-top:6px}
button.primary,.primary{
  background:linear-gradient(180deg,var(--brand),var(--brand2));
  color:#fff;border:none;border-radius:10px;padding:12px 18px;
  font-size:14px;font-weight:600;cursor:pointer;display:inline-block;
}
button.primary:hover{filter:brightness(1.08)}

/* voice intake */
.voice-intake{
  width:100%;background:rgba(77,163,255,.12);border:1px solid var(--brand);
  color:var(--brand);border-radius:10px;padding:12px;font-size:14px;font-weight:600;
  cursor:pointer;margin-bottom:8px;
}
.voice-intake:hover{background:rgba(77,163,255,.2)}
.voice-intake:disabled{opacity:.6;cursor:default}
.max-acc{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text);
  margin:2px 0 2px;cursor:pointer}
.max-acc input{width:16px;height:16px;margin:0}
.max-acc.disabled{color:var(--low);cursor:not-allowed}
.max-acc-hint{display:block;color:var(--low);font-size:11px;margin:0 0 8px}
.voice-status{color:var(--brand);font-size:12.5px;min-height:16px;margin:0 0 12px}
.field{display:block;margin-bottom:14px}
.field-label{display:block;font-size:13px;color:var(--muted)}
.field small{display:block;color:var(--low);margin-top:5px;font-size:11.5px}
.field select{width:100%;margin-top:6px;background:var(--panel);border:1px solid var(--line);
  color:var(--text);border-radius:10px;padding:11px 12px;font-size:14px;
  box-shadow:0 1px 3px rgba(0,0,0,0.05)}
.input-mic{display:flex;gap:8px;align-items:flex-start;margin-top:6px}
.input-mic input,.input-mic textarea{margin-top:0;flex:1}
.mic{
  flex:0 0 auto;width:42px;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;cursor:pointer;font-size:16px;color:var(--text);align-self:stretch;
}
.mic:hover{border-color:var(--brand)}
.mic.recording{background:var(--emer);border-color:var(--emer);color:#fff;animation:pulse 1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.55}}

.samples-card h2{font-size:15px;margin:0 0 4px}
.samples{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.sample{
  width:100%;text-align:left;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;padding:10px 12px;cursor:pointer;color:var(--text);
}
.sample:hover{border-color:var(--brand)}
.s-issue{display:block;font-size:13px}
.s-addr{display:block;color:var(--muted);font-size:11.5px;margin-top:3px}

/* result */
.result{display:flex;flex-direction:column;gap:16px}
.head-card{display:flex;justify-content:space-between;align-items:flex-start}
.head-left h1{margin:0}
.addr{color:var(--muted);margin:4px 0}
.issue{font-style:italic;margin:8px 0 0}
.urgency{padding:7px 12px;border-radius:20px;font-size:12.5px;font-weight:600}
.urgency-emergency{background:rgba(255,93,93,.15);color:var(--emer);border:1px solid var(--emer)}
.urgency-sameday{background:rgba(245,166,35,.15);color:var(--same);border:1px solid var(--same)}
.urgency-standard{background:var(--panel2);color:var(--muted);border:1px solid var(--line)}

.scores{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.score-card{display:flex;flex-direction:column;gap:8px;min-height:128px}
.score-label{color:var(--muted);font-size:12px;text-transform:uppercase;letter-spacing:.4px}
.score-num{font-size:34px;font-weight:700}
.score-num.small{font-size:20px}
.score-num span{font-size:15px;color:var(--muted);font-weight:400}
.score-money{font-size:22px;font-weight:700}
.muted{color:var(--muted);font-size:12.5px}
.hot{color:var(--high);font-weight:600}

.band{display:inline-block;padding:3px 10px;border-radius:20px;font-size:12px;font-weight:700;width:fit-content}
.band-high{background:rgba(46,204,113,.16);color:var(--high);border:1px solid var(--high)}
.band-medium{background:rgba(245,166,35,.16);color:var(--med);border:1px solid var(--med)}
.band-low{background:rgba(122,134,153,.16);color:var(--low);border:1px solid var(--low)}

.staffing-card{display:flex;flex-direction:column;gap:10px}
.staffing{display:flex;gap:10px;flex-wrap:wrap}
.role-chip{font-size:22px;font-weight:800;color:var(--brand);background:rgba(77,163,255,.12);
  border:1px solid var(--brand);border-radius:11px;padding:11px 18px;letter-spacing:.2px}

.lower{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(300px,1fr);gap:16px;align-items:start}
.lower h2{font-size:15px;margin:0 0 12px}
.facts{width:100%;border-collapse:collapse}
.facts td{padding:7px 0;border-bottom:1px solid var(--line);font-size:13.5px}
.facts td:first-child{color:var(--muted);width:42%}

/* Solo mode — the right rail held ONLY the owner-only "Why this score" panel,
   so for every other role it's an empty 300px column. Collapse the grid and let
   the intelligence card have the page. The home facts then reflow into as many
   columns as fit, so a wide screen reads dense instead of one stretched list.
   Scoped to .facts-home on purpose: .facts.permits has its own column sizing. */
.lower-solo{grid-template-columns:minmax(0,1fr)}
.lower-solo .facts-home{display:block}
/* min(340px,100%) not a bare 340px: auto-fit keeps the track at its floor even
   when the container is narrower, which pushed the card off a phone screen. */
.lower-solo .facts-home tbody{display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(340px,100%),1fr));column-gap:34px}
.lower-solo .facts-home tr{display:flex;align-items:baseline;gap:14px;
  border-bottom:1px solid var(--line)}
.lower-solo .facts-home td{border-bottom:none;flex:1 1 auto}
.lower-solo .facts-home td:first-child{width:auto;flex:0 0 148px}
/* Same idea for the permit / opportunity / equipment lists: at full width a
   single stacked column strands each score badge ~1200px from its label, so
   pack the rows two-up instead. */
.lower-solo .opp-grid{display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(460px,100%),1fr));gap:7px 32px}

.reasons{margin:0;padding-left:18px}
.reasons li{margin-bottom:7px;font-size:13.5px}
.disclaimer{color:var(--low);font-size:11.5px;margin-top:14px;border-top:1px solid var(--line);padding-top:10px}
.back{margin-top:4px;width:fit-content}

.topnav{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:8px;flex:1}
.nav-dd{position:relative;display:block}
.nav-dd>summary{list-style:none;cursor:pointer;user-select:none}
.nav-dd>summary::-webkit-details-marker{display:none}
.nav-dd[open]>summary{background:var(--brand);color:#fff}
.nav-dd-menu{position:absolute;top:calc(100% + 8px);left:0;z-index:50;display:flex;
  flex-direction:column;gap:2px;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;padding:6px;min-width:195px;max-width:calc(100vw - 24px);
  box-shadow:0 4px 20px rgba(0,0,0,0.12), 0 8px 32px rgba(14,165,233,0.08)}
.nav-dd-menu a{font-size:13.5px;font-weight:500;padding:9px 12px;border-radius:8px;white-space:nowrap;color:var(--text)}
.nav-dd-menu a:hover{background:var(--panel2);color:var(--brand2)}

/* interview */
.intro-card{margin-bottom:16px}
.saved-banner{margin-bottom:16px;border-color:var(--high);color:var(--high);background:rgba(46,204,113,.08)}
.saved-banner a{margin-left:8px}
form .card{margin-bottom:16px}
.interview-tbl{width:100%;border-collapse:collapse}
.interview-tbl th{text-align:left;color:var(--muted);font-size:11.5px;text-transform:uppercase;
  letter-spacing:.4px;padding:0 8px 10px;border-bottom:1px solid var(--line)}
.interview-tbl td{padding:9px 8px;border-bottom:1px solid var(--line);vertical-align:middle}
.ci-label{font-size:13.5px;font-weight:600;width:21%}
.ci-range{white-space:nowrap}
.ci-range input{width:74px;display:inline-block;margin-top:0;padding:7px 8px}
.dollar{color:var(--muted)}.dash{color:var(--muted);margin:0 4px}
.ci-upsell{min-width:200px;margin-top:0;padding:7px 9px}
.ci-keywords{min-width:200px;margin-top:0;padding:7px 9px;font-size:12.5px}
.interview-tbl select{background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:8px;padding:7px 8px}
.ci-emer{text-align:center}
.ci-emer input{width:18px;height:18px}
.field-row{display:flex;gap:16px;flex-wrap:wrap}
.field-row label{flex:1;min-width:200px}
.field-row select{width:100%;margin-top:6px;background:var(--panel2);border:1px solid var(--line);
  color:var(--text);border-radius:10px;padding:11px 12px}
.field-row .dollar{margin-right:2px}
.field-row input[type=number]{width:120px}

/* admin login */
.login-wrap{max-width:440px;margin:40px auto}
.login-card{text-align:center}
.lock-big{font-size:40px;margin-bottom:6px}
.login-card h1{font-size:22px;margin:0 0 6px}
.login-card form{margin-top:14px}
.login-card input[type=password]{width:100%;background:var(--panel2);border:1px solid var(--line);
  color:var(--text);border-radius:10px;padding:12px;font-size:15px;margin-bottom:10px}
.login-card .primary{width:100%}
.login-error{color:var(--emer);font-size:13px;margin:6px 0}
.login-card .back-link{display:inline-block;margin-top:14px;color:var(--muted);font-size:12.5px}
.foot{display:flex;align-items:center;justify-content:center;gap:14px}
.lock-link{color:var(--low);text-decoration:none;font-size:14px;opacity:.6}
.lock-link:hover{opacity:1}

/* backup & restore */
.backup-card{margin-top:16px}
.backup-row{display:flex;gap:14px;flex-wrap:wrap;align-items:flex-start;margin-top:6px}
.import-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.import-form input[type=file]{color:var(--muted);font-size:12.5px}
.ok-banner{color:var(--high);font-size:13px;margin:6px 0}

/* editable call-type cards */
.issue-card{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px;background:var(--panel2)}
.issue-head{display:flex;gap:10px;align-items:center;margin-bottom:10px}
.issue-label-in{flex:1;margin-top:0;font-weight:600;font-size:14.5px;background:var(--panel);
  border:1px solid var(--line);color:var(--text);border-radius:9px;padding:9px 11px}
.remove-issue{flex:0 0 auto;background:transparent;border:1px solid var(--line);color:var(--low);
  border-radius:8px;padding:7px 10px;font-size:12px;cursor:pointer}
.remove-issue:hover{border-color:var(--emer);color:var(--emer)}
.issue-grid{display:flex;flex-wrap:wrap;gap:10px 14px;align-items:flex-end}
.issue-grid label,.issue-grid .ig-field{flex:1;min-width:140px;font-size:12px;color:var(--muted);margin-bottom:0}
.issue-grid .ig-wide{flex:2;min-width:240px}
.issue-grid .ig-label{display:block}
.issue-grid input,.issue-grid select{width:100%;margin-top:5px;background:var(--panel);
  border:1px solid var(--line);color:var(--text);border-radius:9px;padding:9px 10px;font-size:13.5px}
.issue-grid .range2{display:flex;align-items:center;gap:5px;margin-top:5px}
.issue-grid .range2 input{flex:1;min-width:64px;margin-top:0}
.emer-lbl{display:flex !important;align-items:center;gap:7px;flex:0 0 auto !important;
  min-width:0 !important;color:var(--text) !important;font-size:13px !important;white-space:nowrap}
.emer-lbl input{width:16px !important;height:16px;margin:0 !important}
.issue-techs{margin-top:12px;border-top:1px solid var(--line);padding-top:11px}
.issue-techs textarea{width:100%;margin-top:8px;background:var(--panel);border:1px solid var(--line);
  color:var(--text);border-radius:9px;padding:9px 11px;font-size:13px;resize:vertical}
.add-issue{width:100%;background:rgba(77,163,255,.1);border:1px dashed var(--brand);color:var(--brand);
  border-radius:10px;padding:12px;font-size:14px;font-weight:600;cursor:pointer;margin-top:4px}
.add-issue:hover{background:rgba(77,163,255,.18)}
.staffing-note{color:var(--text);font-size:16px;font-weight:700;margin:6px 0 0}

.calib-badge{display:inline-block;font-size:11px;padding:3px 9px;border-radius:20px;
  border:1px solid var(--high);color:var(--high);background:rgba(46,204,113,.1);margin-left:8px}
.calib-badge.draft{border-color:var(--low);color:var(--low);background:rgba(122,134,153,.1)}

/* scenarios list */
.progress{display:flex;align-items:center;gap:12px;margin-top:14px}
.progress-bar{flex:1;height:8px;background:var(--panel2);border-radius:6px;overflow:hidden}
.progress-bar span{display:block;height:100%;background:var(--high)}
.progress-text{color:var(--muted);font-size:12.5px;white-space:nowrap}
.cat-header{display:flex;align-items:baseline;justify-content:space-between;margin:22px 0 10px}
.cat-header h2{font-size:16px;margin:0}
.cat-count{color:var(--muted);font-size:12px}
.scenario-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}
.scenario-link{display:flex;align-items:center;gap:14px;background:var(--panel);
  border:1px solid var(--line);border-radius:12px;padding:14px 16px;color:var(--text)}
.scenario-link:hover{border-color:var(--brand)}
.scenario-link.done{border-color:rgba(46,204,113,.4)}
.sc-status{font-size:18px;color:var(--low);width:18px}
.scenario-link.done .sc-status{color:var(--high)}
.sc-body{flex:1}
.sc-issue{display:block;font-size:14px}
.sc-meta{display:block;color:var(--muted);font-size:12px;margin-top:3px}
.sc-go{color:var(--brand);font-size:13px;white-space:nowrap}

/* scenario scoring */
.scenario-head{display:flex;justify-content:space-between;gap:18px;margin-bottom:16px}
.back-link{font-size:12.5px;color:var(--muted)}
.scenario-head h1{margin:6px 0 2px}
.home-mini{text-align:right;color:var(--muted);font-size:13px;line-height:1.7;min-width:150px}
.part{border-top:1px solid var(--line);padding:16px 0}
.part:first-of-type{border-top:none}
.part-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:9px}
.part-name{font-weight:600;font-size:14.5px}
.app-guess{color:var(--muted);font-size:12.5px;text-align:right}
.part-input{margin-bottom:9px}
.part-input select{background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:9px;padding:9px 11px;font-size:14px;min-width:170px}
.range-input{display:flex;align-items:center;gap:6px}
.range-input input{width:110px;margin-top:0;padding:9px 10px}
.part textarea{width:100%;background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:9px;padding:9px 11px;font-size:13.5px;resize:vertical}
.checkbox-grid{display:flex;flex-wrap:wrap;gap:8px}
.check{display:flex;align-items:center;gap:7px;background:var(--panel2);border:1px solid var(--line);
  border-radius:9px;padding:8px 12px;font-size:13.5px;cursor:pointer;color:var(--text)}
.check input{width:16px;height:16px;margin:0}
.check:hover{border-color:var(--brand)}

@media(max-width:880px){
  .grid,.lower{grid-template-columns:1fr}
  .scores{grid-template-columns:repeat(2,1fr)}
  .interview-tbl,.interview-tbl tbody,.interview-tbl tr,.interview-tbl td{display:block;width:100%}
  .interview-tbl thead{display:none}
  .interview-tbl tr{border:1px solid var(--line);border-radius:10px;margin-bottom:10px;padding:6px}
  .scenario-head{flex-direction:column}
  .home-mini{text-align:left}
}

/* --- Product tiers / Property Intelligence gating --- */
.tier-card .tier-form{display:flex;flex-wrap:wrap;gap:10px;align-items:stretch}
.tier-opt{flex:1 1 200px;display:block;margin:0;cursor:pointer;color:var(--text);
  background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:12px 14px}
.tier-opt:hover{border-color:var(--brand)}
.tier-opt.on{border-color:var(--brand);background:rgba(77,163,255,.12)}
.tier-opt input{width:16px;height:16px;margin:0 0 6px}
.tier-opt-name{display:block;font-weight:600;font-size:14.5px}
.tier-opt-tag{display:block;color:var(--muted);font-size:12.5px;margin-top:3px}
.tier-save{margin-top:12px;width:auto;padding:11px 20px}

.tier-badge{font-size:11px;font-weight:600;padding:3px 9px;border-radius:999px;
  text-transform:uppercase;letter-spacing:.04em}
.tier-on{background:rgba(77,163,255,.16);color:var(--brand);border:1px solid var(--brand)}
.tier-off{background:rgba(147,160,181,.14);color:var(--muted);border:1px solid var(--line)}
.intel-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:6px}
.intel-head h2{margin:0}
.intel-sub{font-size:13.5px;color:var(--brand);margin:16px 0 7px;
  border-top:1px solid var(--line);padding-top:13px}
.intel-sub:first-of-type{border-top:none;padding-top:0;margin-top:8px}
.facts.permits td:first-child{white-space:nowrap;color:var(--muted);width:54px;vertical-align:top}
.pill{display:inline-block;font-size:11px;color:var(--muted);border:1px solid var(--line);
  border-radius:999px;padding:1px 8px;margin-left:6px;vertical-align:middle}
.intel-locked{border-style:dashed;opacity:.92}
.intel-locked .lock-tag{color:var(--brand);font-weight:600;font-size:13.5px;margin:0 0 8px}

/* --- Permit trade chips --- */
.trade-summary{margin:0 0 10px;color:var(--muted);font-size:13px}
.trade-chip{display:inline-block;font-size:11px;font-weight:600;text-transform:uppercase;
  letter-spacing:.03em;padding:2px 8px;border-radius:999px;margin:0 5px 4px 0;
  border:1px solid transparent;vertical-align:middle}
.trade-plumbing{background:rgba(77,163,255,.16);color:#7ab8ff;border-color:#3a6ea5}
.trade-hvac{background:rgba(255,159,67,.16);color:#ffb066;border-color:#a5662a}
.trade-electrical{background:rgba(255,214,77,.16);color:#ffd84d;border-color:#a58a2a}
.trade-pool{background:rgba(56,209,201,.16);color:#5fe0d8;border-color:#2a9a93}
.trade-gas{background:rgba(255,107,107,.16);color:#ff8a8a;border-color:#a53e3e}
.trade-roofing{background:rgba(180,140,255,.16);color:#c4a6ff;border-color:#7a5ea5}

/* --- Expandable permit rows --- */
.permit-list{display:flex;flex-direction:column;gap:6px}
.permit-row{background:var(--panel2);border:1px solid var(--line);border-radius:10px;overflow:hidden}
.permit-row[open]{border-color:var(--brand)}
.permit-row summary{display:flex;gap:10px;align-items:baseline;padding:9px 12px;cursor:pointer;
  list-style:none;font-size:13.5px}
.permit-row summary::-webkit-details-marker{display:none}
.permit-row summary::before{content:"▸";color:var(--muted);font-size:11px;line-height:1.5;flex:0 0 auto}
.permit-row[open] summary::before{content:"▾";color:var(--brand)}
.permit-row summary:hover{background:rgba(77,163,255,.06)}
.permit-year{color:var(--muted);white-space:nowrap;flex:0 0 auto;font-variant-numeric:tabular-nums}
.permit-main{flex:1 1 auto;min-width:0}
.permit-detail{padding:2px 12px 12px 32px;border-top:1px solid var(--line);background:var(--panel)}
.permit-desc{margin:10px 0 8px;font-size:13.5px;line-height:1.5;white-space:pre-wrap}
.permit-meta{margin:0;font-size:12px}

/* --- Replacement-opportunity scoring (the marketing brain) --- */
.opp-panel{margin:12px 0 16px;padding:12px 14px;background:var(--panel2);
  border:1px solid var(--line);border-radius:12px}
.opp-title{margin:0 0 10px;font-size:13.5px;font-weight:600;color:var(--text)}
.opp-grid{display:flex;flex-direction:column;gap:7px}
.opp-row{display:grid;grid-template-columns:minmax(200px,230px) 1fr 44px auto;gap:10px;align-items:center;font-size:13px}
.opp-work{color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.opp-bar{height:8px;background:rgba(255,255,255,.07);border-radius:5px;overflow:hidden}
.opp-fill{display:block;height:100%;border-radius:5px}
.opp-score{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap;text-align:right}
.opp-age{white-space:nowrap;font-size:12px}
.opp-hot .opp-fill{background:#ff6b6b}.opp-hot .opp-score{color:#ff8a8a}
.opp-warm .opp-fill{background:#ffb066}.opp-warm .opp-score{color:#ffb066}
.opp-cool .opp-fill{background:#5fe0d8}.opp-cool .opp-score{color:#5fe0d8}
.opp-unknown{margin:10px 0 0;font-size:12px}
@media(max-width:560px){.opp-row{grid-template-columns:120px 1fr 40px;}.opp-age{display:none}}

/* --- Permit signals (Tier 2) --- */
.signals{margin:6px 0 0;padding-left:18px}
.signals li{font-size:13.5px;line-height:1.5;margin-bottom:6px;color:var(--text)}

/* --- Targeting / Find prospects --- */
.tgt-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:14px;margin-bottom:14px}
.tgt-check{display:flex;align-items:center;gap:8px;align-self:end;color:var(--text)}
.tgt-check input{width:16px;height:16px;margin:0}
/* pill action buttons (shared: equipment, pipe, inspection, home record) */
.insp-actions{display:flex;align-items:center;gap:10px;flex:none;flex-wrap:wrap}
.insp-pill{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;
  white-space:nowrap;min-width:150px;height:38px;box-sizing:border-box;line-height:1;
  border:1px solid #93d3ee;border-radius:10px;padding:0 14px;margin:0;vertical-align:middle;
  font-family:inherit;font-size:13px;font-weight:500;appearance:none;-webkit-appearance:none;
  background:#fff;color:#111;box-shadow:3px 3px 0 #b8e0f0, 0 1px 3px rgba(0,0,0,0.10)}
.insp-pill:hover{border-color:var(--brand);box-shadow:0 2px 5px rgba(0,0,0,.25)}
.insp-pill input{display:none}
.insp-pill.blue{background:var(--brand2);color:#fff;border-color:var(--brand2);font-weight:600}
.insp-pill.blue:hover{background:var(--brand);border-color:var(--brand)}
.insp-pill.green{background:var(--high);color:#04240f;border-color:var(--high);font-weight:600}
.insp-pill.green:hover{filter:brightness(1.08)}
/* text field sized to sit inline with the pills */
.insp-field{height:38px;box-sizing:border-box;width:200px;line-height:1;border:1px solid #93d3ee;
  border-radius:10px;padding:0 12px;margin:0;font-family:inherit;font-size:13px;background:#fff;color:#111;
  box-shadow:0 1px 3px rgba(0,0,0,0.05)}
/* fixed widths so grouped buttons are uniform + balanced (never content-sized) */
.insp-pill.fixed{width:320px}
.insp-pill.fixed-sm{width:200px}

/* editable equipment rows — aligned columns: system | brand | year | age | badge | save | del */
.eq-cols{display:grid;grid-template-columns:165px minmax(150px,1fr) 78px 96px 70px 66px 44px;
  gap:10px;align-items:center}
.eq-head{padding:2px 0 7px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.eq-row{padding:10px 0;border-top:1px solid var(--line)}
.eq-row .eq-label{font-weight:500;line-height:1.25}
.eq-row input[type=text],.eq-row input[type=number]{width:100%}
.eq-age{font-size:12.5px;color:var(--text);white-space:nowrap}
.eq-na{color:var(--muted);font-size:12px}
.eq-badge .band{font-size:11px}
.eq-row .newcall{width:100%;height:34px}
.eq-row .eq-nofilt{display:flex;align-items:center;gap:6px;font-size:13px;white-space:nowrap;cursor:pointer}
.eq-row .eq-nofilt input{width:16px;height:16px;margin:0}

/* price book — search + arrange toolbar */
.pb-toolbar{display:flex;align-items:center;gap:12px;margin:0 0 16px;flex-wrap:wrap}
#pb-search{flex:1;min-width:260px;max-width:540px;background:var(--panel2);
  border:1px solid var(--line);color:var(--text);border-radius:999px;
  padding:12px 20px;font-size:14.5px}
#pb-search:focus{outline:none;border-color:var(--brand2)}
body.pb-arranging .pb-pill{cursor:grab;border-style:dashed;border-color:var(--brand2)}
body.pb-arranging .pb-pill:active{cursor:grabbing}
.pb-pill.pb-dragging{opacity:.35}

/* price book — aligned catalog rows + add form */
.pb-add{display:grid;grid-template-columns:minmax(200px,1.5fr) 160px 110px 130px minmax(160px,1.5fr) max-content;
  gap:10px;align-items:center}
.pb-add input{width:100%}
.pb-cols{display:grid;grid-template-columns:minmax(220px,1fr) 170px 110px 120px 66px 44px;
  gap:10px;align-items:center}
.pb-head{padding:2px 0 7px;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.pb-row{padding:9px 0;border-top:1px solid var(--line)}
.pb-row input{width:100%}
.pb-row .newcall{width:100%;height:34px}
/* clickable item pills → detail edit page — 2 columns, half width, no price */
/* 2 balanced columns that fill TOP-TO-BOTTOM (so 1/2/3-bath variants stack together),
   not left-right per row like a grid would. A .pb-family (standard/deluxe/premium of
   one item) is atomic — it never splits across the columns. */
.pb-list{columns:2;column-gap:10px}
.pb-family{break-inside:avoid}
/* hand-arranged sections: two EXPLICIT columns, rendered exactly as Mark placed them */
.pb-2col{display:grid;grid-template-columns:1fr 1fr;gap:0 10px;align-items:start}
.pb-col{min-height:52px}
body.pb-arranging .pb-col{outline:1px dashed rgba(245,166,35,.35);outline-offset:4px;border-radius:10px}
@media(max-width:640px){.pb-2col{grid-template-columns:1fr}}
.pb-pill{display:flex;align-items:center;gap:10px;break-inside:avoid;margin:0 0 10px;
  background:#fff;color:#111;border:1px solid #93d3ee;border-radius:10px;padding:12px 16px;
  text-decoration:none;box-shadow:0 1px 2px rgba(0,0,0,.2)}
.pb-pill:hover{border-color:var(--brand2);box-shadow:0 2px 6px rgba(0,0,0,.3)}
.pb-pill .pb-name{font-size:14px;font-weight:500;color:#111;text-decoration:none;flex:1}
.pb-pill .pb-name:hover{color:var(--brand2);text-decoration:underline}
/* multi-select tick box on each item */
.pb-check{display:flex;align-items:center;cursor:pointer;flex:none}
.pb-check input{position:absolute;opacity:0;width:0;height:0}
.pb-checkmark{width:21px;height:21px;border-radius:6px;border:2px solid #9aa7b4;background:#fff;
  display:flex;align-items:center;justify-content:center;transition:.12s}
.pb-check input:checked + .pb-checkmark{background:var(--brand);border-color:var(--brand)}
.pb-check input:checked + .pb-checkmark::after{content:'✓';color:#fff;font-size:14px;font-weight:800}
.pb-check input:focus-visible + .pb-checkmark{box-shadow:0 0 0 3px rgba(77,163,255,.35)}
.pb-pick.is-picked{border-color:var(--brand);background:rgba(77,163,255,.07);
  box-shadow:0 0 0 1px var(--brand)}
/* sticky "add these to the estimate" bar */
/* display:flex below would otherwise beat the `hidden` attribute, and the
   "0 selected" bar sat on screen permanently with nothing ticked. */
.pb-bar[hidden]{display:none}
.pb-bar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;align-items:center;gap:12px;
  padding:12px 20px;background:var(--panel);border-top:2px solid var(--brand);
  box-shadow:0 -4px 18px rgba(0,0,0,.14);margin:0}
.pb-bar-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.pb-bar-info strong{font-size:14px}
.pb-bar-info small{font-size:11.5px;color:var(--muted);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
body.pb-has-bar{padding-bottom:76px}
@media(max-width:640px){
  .pb-list{columns:1}
  .pb-bar-info small{display:none}
}
/* detail edit form */
.pb-edit{max-width:100%}
.pb-edit label{display:block;margin:0 0 15px;font-size:12.5px;color:var(--muted)}
.pb-edit input[type=number]{width:100%;margin-top:6px;background:var(--panel2);border:1px solid var(--line);
  color:var(--text);border-radius:10px;padding:11px 12px;font-size:14px}
.pb-grid3{display:grid;grid-template-columns:1fr 1fr 150px;gap:14px}
.pb-grid4{display:grid;grid-template-columns:1fr 170px 1.1fr 1.5fr;gap:14px}
/* estimate builder — balanced contact fields + one-box segmented address */
.est-fields{display:grid;grid-template-columns:1fr 165px 1fr;gap:16px}
.est-fields label,.est-addr-wrap>label,.est-assignee{display:block;font-size:12px;color:var(--muted);margin:0}
.est-fields input{width:100%;margin-top:5px}
.est-addr-wrap{margin-top:16px}
.est-assignee{margin-top:16px;max-width:380px}
.est-assignee select{width:100%;margin-top:5px}
.addr-box{display:flex;align-items:stretch;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;overflow:hidden;margin-top:5px}
.addr-box input{border:none;background:transparent;color:var(--text);padding:12px 13px;
  font-size:14px;min-width:0;width:auto;margin:0;border-radius:0}
.addr-box input:focus{outline:none;background:rgba(77,163,255,.10)}
.addr-box .a-street{flex:3}
.addr-box .a-city{flex:2}
.addr-box .a-state{flex:0 0 130px}
.addr-box .a-zip{flex:0 0 140px}
.addr-box .a-div{width:1px;background:var(--line);margin:8px 0;flex:none}
.pb-grid4{display:grid;grid-template-columns:1fr 1fr 130px 130px;gap:14px;align-items:end}
.pb-internal{border:1px solid rgba(245,166,35,.45);background:rgba(245,166,35,.07);
  border-radius:12px;padding:15px 17px;margin:4px 0 18px}
.pb-lock{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--med);margin-bottom:4px}
.pb-note{font-size:12px;color:var(--muted);margin:0 0 12px}
.pb-saved{display:inline-block;background:rgba(46,204,113,.15);color:var(--high);
  border:1px solid rgba(46,204,113,.4);border-radius:999px;padding:3px 12px;font-size:12.5px;
  font-weight:600;margin-left:12px;vertical-align:middle}

/* Pro Price Book — licensed catalog items */
.pb-pro{display:inline-block;padding:1px 7px;border-radius:5px;margin-left:6px;
  font-size:10.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;vertical-align:1px;
  color:var(--brand);background:rgba(77,163,255,.1);border:1px solid rgba(77,163,255,.35)}
.pb-pill .pb-pro{flex:none;margin-left:auto}
/* A deterrent, not a lock: stops casual select-and-copy of licensed wording.
   Anyone who can see a price can still write it down — the license agreement is
   what actually protects the catalog. */
.pb-lic .pb-name,.pb-readonly{-webkit-user-select:none;user-select:none}
.pb-ro{display:grid;grid-template-columns:max-content 1fr;gap:8px 18px;margin:0 0 14px}
.pb-ro dt{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;padding-top:2px}
.pb-ro dd{margin:0}
.pb-ro-price{font-size:22px;font-weight:800;font-variant-numeric:tabular-nums}

/* import card + the result banner */
.pb-import{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px}
.pb-mode{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;cursor:pointer}
.pb-template{font-size:13px}
.pb-label{flex:0 1 240px}
.pb-result{margin:0 0 14px;padding:12px 16px;border-radius:12px;font-size:14px;
  background:rgba(46,204,113,.08);border:1px solid rgba(46,204,113,.35)}
.pb-result-bad{background:rgba(231,76,60,.08);border-color:rgba(231,76,60,.4)}
.pb-undo{display:block;margin:10px 0 0}
.pb-result-skips{margin-top:8px;font-size:13px;color:var(--muted)}
.pb-result-skips ul{margin:4px 0 0;padding-left:18px}

/* estimate / options builder */
/* 96px tier columns: at 56px the labels ran together ("PREFERREDPREMIUM") */
.est-cols{display:grid;grid-template-columns:minmax(220px,1fr) 100px 64px 96px 96px 96px 90px 44px;
  gap:10px;align-items:center}
.est-cols input[type=number]{width:100%}
.est-tiercol{text-align:center}
/* package column header doubles as select-all/clear for that column */
.est-tierhead{width:100%;cursor:pointer;font:inherit;font-size:10.5px;font-weight:700;
  text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:none;
  border:1px dashed var(--line);border-radius:7px;padding:4px 2px}
.est-tierhead:hover{color:var(--brand);border-color:var(--brand)}
.est-tierhead.all-on{color:var(--brand);border-style:solid;border-color:var(--brand);
  background:rgba(77,163,255,.10)}
/* whole cell is the tap target (techs use this on a tablet) */
.est-tiertoggle{display:flex;flex-direction:column;align-items:center;gap:3px;cursor:pointer;
  padding:6px 2px;border-radius:9px;border:1px solid transparent}
.est-tiertoggle:hover{background:var(--panel2);border-color:var(--line)}
.est-tiertoggle input{position:absolute;opacity:0;width:0;height:0}
/* neutral grey when OFF — var(--line) is a sky blue too close to the ON state */
.est-tiermark{width:22px;height:22px;border-radius:6px;border:2px solid #9aa7b4;
  background:var(--panel);display:flex;align-items:center;justify-content:center;transition:.12s}
.est-tiertoggle input:checked + .est-tiermark{background:var(--brand);border-color:var(--brand)}
.est-tiertoggle input:checked + .est-tiermark::after{content:'✓';color:#fff;font-size:14px;font-weight:800}
.est-tiertoggle input:focus-visible + .est-tiermark{box-shadow:0 0 0 3px rgba(77,163,255,.35)}
.est-tiername{font-size:9.5px;font-weight:700;color:var(--muted);text-transform:uppercase;
  letter-spacing:.03em}
.est-tiertoggle input:checked ~ .est-tiername{color:var(--brand)}
.est-tierhelp{margin:-4px 0 12px;font-size:12.5px}
.est-samewarn{margin:12px 0 0;font-size:12.5px;font-weight:600;color:var(--brand2);
  background:rgba(245,166,35,.10);border:1px solid rgba(245,166,35,.4);
  border-radius:9px;padding:9px 12px}
@media(max-width:760px){
  .est-cols{grid-template-columns:minmax(150px,1fr) 84px 56px 74px 74px 74px 80px 40px;gap:7px}
  .est-tiername{font-size:8.5px}
}
.est-name{font-size:14px;font-weight:500}
.est-desc{font-size:12px;color:var(--muted);margin-top:2px}
.est-linetotal{text-align:right;font-weight:600;font-size:14px}
.est-x{padding:6px 12px;min-width:0}
.est-totals{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:14px}
.est-total-card{background:var(--panel2);border:1px solid var(--line);border-radius:12px;
  padding:14px 18px;text-align:center}
.est-total-sold{border-color:rgba(46,204,113,.6)}
.est-total-label{font-size:12px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.est-total-amt{font-size:24px;font-weight:600;margin-top:4px}
.est-badge{display:inline-block;border-radius:999px;padding:3px 12px;font-size:12px;
  font-weight:600;margin-left:10px;vertical-align:middle;border:1px solid var(--line);
  color:var(--muted);text-transform:capitalize}
.est-draft{}
.est-presented{color:var(--brand2);border-color:rgba(245,166,35,.4);background:rgba(245,166,35,.1)}
.est-sold{color:var(--high);border-color:rgba(46,204,113,.4);background:rgba(46,204,113,.12)}
.est-unsold{color:#e74c3c;border-color:rgba(231,76,60,.4);background:rgba(231,76,60,.1)}
.est-canceled{color:var(--muted);border-color:var(--line);background:var(--panel2);
  text-decoration:line-through}
/* home-record estimates rows */
.hest-cols{display:grid;
  grid-template-columns:92px minmax(120px,1fr) 82px 82px 82px 118px 132px 70px;
  gap:10px;align-items:center}

.fu-capture{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:7px}

/* company & team rows — aligned columns per the button/alignment standard */
.emp-cols{display:grid;gap:10px;align-items:center;
  grid-template-columns:minmax(140px,1fr) 170px 130px minmax(150px,1.2fr) 110px 96px 86px 62px 44px}
.emp-cols input[type=text],.emp-cols select{width:100%;background:var(--panel2);
  border:1px solid var(--line);color:var(--text);border-radius:10px;padding:9px 10px;font-size:13.5px}
.emp-add{padding:4px 0 2px}
.emp-cols .newcall{width:100%;height:34px}
.emp-inactive{opacity:.5}

/* full-width wrap for the calendar board */
.wrap-full{max-width:none;margin:20px auto;padding:0 24px}

/* schedule — full-page calendar grid (time slots × people) */
.sch-head{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.sch-head .insp-pill{min-width:0;padding:0 16px}
.sch-cal-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
.sch-cal{width:100%;border-collapse:collapse;table-layout:fixed;min-width:900px}
.sch-cal th,.sch-cal td{border:1px solid var(--line);vertical-align:top}
.sch-cal thead th{position:sticky;top:0;z-index:2;background:var(--panel2);padding:10px 8px;text-align:center}
.sch-time-h{width:96px}
.sch-person{font-weight:600;font-size:14px}
.sch-person-role{font-size:11px;color:var(--muted);font-weight:400;margin-top:2px}
.sch-unassigned-h .sch-person{color:var(--muted)}
.sch-time{width:96px;background:var(--panel2);color:var(--muted);font-size:12.5px;font-weight:600;
  text-align:right;padding:12px 10px;white-space:nowrap;position:sticky;left:0;z-index:1}
.sch-cell{padding:8px;min-height:96px;height:96px;transition:background .1s}
.sch-cell.sch-over{background:rgba(77,163,255,.12);box-shadow:inset 0 0 0 2px var(--brand)}
.sch-card{background:var(--panel2);border:1px solid var(--line);border-left:4px solid var(--low);
  border-radius:9px;padding:9px 11px;margin-bottom:8px;cursor:grab}
.sch-card:last-child{margin-bottom:0}
.sch-card:active{cursor:grabbing}
.sch-card.sch-emergency{border-left-color:var(--emer)}
.sch-card.sch-sameday{border-left-color:var(--same)}
.sch-card.sch-st-done{opacity:.6}
.sch-card.sch-st-done .sch-card-top strong{text-decoration:line-through}
.sch-card-top{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13.5px}
.sch-urg{font-size:10px;font-weight:700;border-radius:999px;padding:2px 7px;white-space:nowrap}
.sch-urg-e{background:rgba(255,93,93,.15);color:var(--emer)}
.sch-urg-s{background:rgba(245,166,35,.15);color:var(--same)}
.sch-addr{font-size:12px;margin:4px 0}
.sch-issue{font-size:11.5px;color:var(--muted);font-style:italic;margin:3px 0}
.sch-meta{display:flex;gap:10px;flex-wrap:wrap;font-size:11.5px;margin:3px 0 8px}
.sch-val{color:var(--high);font-weight:600}
.sch-card-form{display:grid;grid-template-columns:1fr 34px;gap:6px}
.sch-card-form select{background:var(--panel);border:1px solid var(--line);color:var(--text);
  border-radius:8px;padding:5px 6px;font-size:11.5px;width:100%}
.sch-del{padding:5px 0;text-align:center}
/* booked-confirmation bar */
.sch-confirm{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:14px;
  border:1.5px solid var(--high);background:rgba(46,204,113,.09);border-radius:var(--radius);
  padding:12px 18px;font-size:14px}
.sch-confirm{flex-wrap:wrap}
.sch-confirm .insp-pill{min-width:0;padding:0 16px}

/* schedule-from-call card (result page) */
.sect-head{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;
  letter-spacing:.08em;margin:0 0 16px;padding-bottom:11px;border-bottom:1px solid var(--line)}
.sch-book{display:flex;flex-direction:column;gap:16px}
.sch-fields{display:grid;grid-template-columns:200px 1fr 1.7fr;gap:16px;align-items:end}
.sch-label{display:flex;flex-direction:column;font-size:12px;font-weight:600;
  color:var(--muted);letter-spacing:.02em;height:100%}
/* label text sits on one line; the hint rides inline so a longer caption can
   never push its control out of line with the others */
.sch-lbl-txt{display:block;margin-bottom:7px;white-space:nowrap}
/* display:inline overrides the global `label small{display:block}` (line ~72),
   which would otherwise drop the hint onto its own line and unbalance the row */
.sch-label small{display:inline;font-size:11px;color:var(--brand);font-weight:400;
  letter-spacing:0;margin:0 0 0 6px;text-transform:none}
/* margin-top:auto bottom-aligns every control, so the row reads as one line */
.sch-label input[type=date],.sch-label select{
  display:block;margin-top:auto;background:var(--panel2);border:1px solid var(--line);
  color:var(--text);border-radius:10px;padding:0 13px;height:44px;font-size:14px;width:100%}
.sch-label input[type=date]:focus,.sch-label select:focus{outline:none;border-color:var(--brand)}
.sch-btns{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.sch-btns .insp-pill{min-width:0;padding:0 18px;height:42px}

/* ---- booking calendar (result page) ---- */
.sch-cal-panel{border:1px solid var(--line);border-radius:12px;background:var(--panel2);
  padding:14px;display:grid;grid-template-columns:minmax(240px,300px) 1fr;gap:18px}
.sch-cal-top{grid-column:1/-1;display:flex;align-items:center;gap:10px}
.sch-cal-top strong{font-size:14px;min-width:132px;text-align:center}
.sch-cal-hint{font-size:12px;margin-left:auto}
.sch-btns .insp-pill.sm,.sch-cal-top .insp-pill.sm{height:30px;padding:0 11px;font-size:14px;min-width:0}
.sch-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:4px}
.sch-dow span{text-align:center;font-size:10.5px;font-weight:700;color:var(--muted)}
.sch-days{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.sch-day{position:relative;aspect-ratio:1/1;border:1px solid transparent;border-radius:8px;
  background:var(--panel);color:var(--text);cursor:pointer;font:inherit;padding:0;
  display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1}
.sch-day.blank{background:none;cursor:default;pointer-events:none}
.sch-day:hover:not(.blank){border-color:var(--brand)}
.sch-day.today{border-color:var(--muted);font-weight:700}
.sch-day.sel{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:700}
.sch-dnum{font-size:12.5px}
.sch-dcount{font-size:9px;margin-top:2px;padding:0 4px;border-radius:6px;
  background:var(--brand);color:#fff;font-weight:700}
.sch-day.sel .sch-dcount{background:#fff;color:var(--brand)}
.sch-grid-wrap{min-width:0;display:flex;flex-direction:column}
.sch-grid-head{font-size:12.5px;font-weight:700;margin-bottom:8px}
.sch-grid-scroll{overflow-x:auto;flex:1}
.sch-book-grid{border-collapse:separate;border-spacing:4px;width:100%}
.sch-book-grid th{font-size:10.5px;color:var(--muted);font-weight:700;vertical-align:bottom;
  padding:0 2px 3px;text-align:center}
.sch-bg-slot{white-space:nowrap;text-align:right !important;font-size:10.5px}
.sch-bg-name{font-size:11px;color:var(--text)}
.sch-bg-role{font-size:9.5px;font-weight:400;color:var(--muted)}
.sch-bg-cell{width:100%;min-width:62px;height:30px;border:1px dashed var(--line);
  border-radius:7px;background:var(--panel);color:var(--muted);font:inherit;font-size:10.5px;
  cursor:pointer;padding:0}
.sch-bg-cell:hover{border-style:solid;border-color:var(--brand);color:var(--brand)}
.sch-bg-cell.busy{border-style:solid;background:var(--panel2);color:var(--text);font-weight:600}
.sch-bg-cell.picked{background:var(--brand);border:1px solid var(--brand);color:#fff;font-weight:700}
.sch-cal-foot{font-size:12px;margin:9px 0 0}

.sch-jobno{font-size:10px;font-weight:700;color:var(--muted);letter-spacing:.03em;
  font-variant-numeric:tabular-nums;margin:1px 0 2px}

/* quiet tech-only back links on the customer-facing option screens */
.opt-navback{display:flex;gap:16px;align-items:center;margin:0 0 14px;font-size:13px}
.opt-navback a{color:var(--muted);text-decoration:none;font-weight:600}
.opt-navback a:hover{color:var(--brand);text-decoration:underline}

/* ---- schedule timeline: crews down the left, the day across ---- */
.tl{border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden}
.tl-head,.tl-row{display:grid;grid-template-columns:186px 1fr;align-items:stretch}
.tl-head{position:sticky;top:0;z-index:5;background:var(--panel2);border-bottom:1px solid var(--line)}
.tl-who{padding:9px 12px;border-right:1px solid var(--line);display:flex;
  flex-direction:column;justify-content:center;min-width:0}
.tl-who-head{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.07em;
  color:var(--muted)}
.tl-name{font-size:13.5px;font-weight:700;line-height:1.2;overflow:hidden;text-overflow:ellipsis}
.tl-role{font-size:11px;color:var(--muted);margin-top:1px}
.tl-track{position:relative;min-height:62px}
.tl-ruler{min-height:30px}
.tl-hour{position:absolute;top:0;bottom:0;border-left:1px solid var(--line)}
.tl-hour span{position:absolute;top:7px;left:5px;font-size:10.5px;font-weight:700;color:var(--muted)}
.tl-grid{position:absolute;top:0;bottom:0;border-left:1px solid var(--line);opacity:.5}
.tl-group{padding:6px 12px;font-size:10.5px;font-weight:800;text-transform:uppercase;
  letter-spacing:.08em;color:var(--muted);background:var(--panel2);
  border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.tl-row{border-bottom:1px solid var(--line)}
.tl-row:last-child{border-bottom:none}
.tl-row-un .tl-who{background:rgba(245,166,35,.07)}
.tl-drop{touch-action:pan-y}            /* let vertical scroll through, we own horizontal */
/* a job block */
/* top/height are set inline per lane so overlapping jobs stack instead of hiding */
.tl-job{position:absolute;border-radius:9px;overflow:hidden;
  background:var(--panel2);border:1px solid var(--brand);cursor:grab;
  box-shadow:0 1px 3px rgba(0,0,0,.16);min-width:34px;user-select:none}
.tl-job.is-dragging{cursor:grabbing;opacity:.85;box-shadow:0 6px 18px rgba(0,0,0,.3);z-index:9}
.tl-job-body{display:flex;flex-direction:column;gap:1px;padding:6px 14px 6px 9px;height:100%;
  text-decoration:none;color:var(--text);overflow:hidden;box-sizing:border-box}
.tl-job-cust{font-size:12.5px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-job-meta{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-job-issue{font-size:10.5px;color:var(--muted);white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;font-style:italic}
/* ⇄ reassign button on each block + its menu */
.tl-assign{position:absolute;top:3px;right:13px;z-index:3;width:20px;height:20px;padding:0;
  cursor:pointer;border:1px solid var(--line);border-radius:6px;background:var(--panel);
  color:var(--brand);font-size:12px;font-weight:800;line-height:1;display:flex;
  align-items:center;justify-content:center;opacity:.85}
.tl-assign:hover{opacity:1;background:var(--brand);color:#fff;border-color:var(--brand)}
.tl-menu{position:absolute;z-index:80;min-width:210px;max-height:60vh;overflow:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:11px;padding:6px;
  box-shadow:0 8px 28px rgba(0,0,0,.22)}
.tl-menu-h{font-size:10.5px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;
  color:var(--muted);padding:5px 9px 7px}
.tl-menu-date{display:flex;gap:6px;padding:0 9px 6px}
.tl-menu-date input{flex:1;min-width:0;background:var(--panel2);border:1px solid var(--line);
  color:var(--text);border-radius:8px;padding:0 8px;height:34px;font-size:13px}
.tl-menu-date .insp-pill{height:34px;min-width:0;padding:0 12px;font-size:12.5px}
.tl-menu-i{display:flex;flex-direction:column;align-items:flex-start;gap:1px;width:100%;
  text-align:left;cursor:pointer;background:none;border:none;border-radius:8px;
  padding:8px 10px;font:inherit;font-size:13.5px;font-weight:600;color:var(--text)}
.tl-menu-i small{font-size:11px;font-weight:400;color:var(--muted)}
.tl-menu-i:hover{background:var(--panel2);color:var(--brand2)}
.tl-menu-i.is-current{background:rgba(77,163,255,.12);color:var(--brand)}
.tl-menu-i.is-current::after{content:' ✓'}

.tl-resize{position:absolute;right:0;top:0;bottom:0;width:11px;cursor:ew-resize;
  background:linear-gradient(90deg,transparent,rgba(0,0,0,.10))}
.tl-resize:hover{background:var(--brand)}
/* urgency + status colouring, matching the old cards */
.tl-job.sch-emergency{border-color:var(--emer);background:rgba(220,38,38,.10)}
.tl-job.sch-sameday{border-color:var(--brand2);background:rgba(245,166,35,.10)}
.tl-st-done{opacity:.6;border-style:dashed}
.tl-st-on-my-way{box-shadow:inset 3px 0 0 var(--brand)}
.tl-st-arrived{box-shadow:inset 3px 0 0 var(--brand2)}
@media(max-width:760px){
  .tl-head,.tl-row{grid-template-columns:118px 1fr}
  .tl-job-issue{display:none}
}

/* multi-day work */
.tl-multi{border-style:dashed;border-width:2px}
.tl-daytag{font-size:9.5px;font-weight:800;background:var(--brand);color:#fff;
  border-radius:5px;padding:1px 5px;margin-right:3px;vertical-align:middle}
/* sold-work / payment card on an install job */
.sale-card{border-width:2px}
.sale-paid{border-color:var(--high)}
.sale-unpaid{border-color:var(--brand2)}
.sale-row{display:grid;grid-template-columns:1fr 1fr auto;gap:16px;align-items:center}
.sale-num{font-size:30px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.sale-lbl{font-size:12.5px;color:var(--muted);margin-top:5px}
.sale-badge{display:inline-block;font-size:13.5px;font-weight:800;border-radius:999px;padding:5px 14px}
.sale-badge.ok{background:rgba(46,204,113,.16);color:var(--high)}
.sale-badge.due{background:rgba(245,166,35,.16);color:var(--brand2)}
.sale-badge.none{background:var(--panel2);color:var(--muted)}
.sale-acts{display:flex;gap:9px;flex-wrap:wrap;justify-content:flex-end}
.sale-warn{margin:14px 0 0;font-size:13px;font-weight:700;color:var(--brand2);
  background:rgba(245,166,35,.10);border:1px solid rgba(245,166,35,.45);
  border-radius:9px;padding:10px 13px}
/* board badge on an install block */
.tl-paid{font-size:9.5px;font-weight:800;border-radius:5px;padding:1px 5px;margin-right:3px;
  vertical-align:middle}
.tl-paid.ok{background:var(--high);color:#fff}
.tl-paid.due{background:var(--brand2);color:#fff}
@media(max-width:760px){ .sale-row{grid-template-columns:1fr} .sale-acts{justify-content:flex-start} }

/* reschedule / reassign editor on the job page */
.resch{display:grid;grid-template-columns:1.1fr 1fr 1fr 1fr 1.5fr auto;gap:12px;align-items:end}
.resch .sch-label{height:auto}
.resch-go{height:44px;min-width:0;padding:0 22px}
@media(max-width:900px){ .resch{grid-template-columns:1fr 1fr} .resch-go{grid-column:1/-1} }

.job-extras{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:14px}
.job-span{display:flex;align-items:center;gap:8px;margin:0;font-size:13px}
.job-span label{color:var(--muted);font-weight:600}
.job-span select{background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:9px;padding:0 10px;height:38px;font-size:13.5px}

/* dispatcher's Needs-scheduling queue */
.ns-card{border-color:var(--brand2);box-shadow:inset 0 0 0 1px rgba(245,166,35,.25)}
.ns-row{display:grid;grid-template-columns:1fr 150px 108px 96px 150px auto;gap:9px;align-items:center;
  padding:11px;border:1px solid var(--line);border-radius:11px;background:var(--panel2);
  margin-bottom:9px}
.ns-info{min-width:0}
.ns-top{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.ns-val{font-weight:800}
.ns-wait{font-size:11px;font-weight:700;color:var(--brand2)}
.ns-sub{font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ns-row input,.ns-row select{background:var(--panel);border:1px solid var(--line);
  color:var(--text);border-radius:9px;padding:0 10px;height:40px;font-size:13.5px;width:100%}
.ns-go{height:40px;min-width:0;padding:0 16px}
@media(max-width:760px){ .ns-row{grid-template-columns:1fr 1fr} .ns-info{grid-column:1/-1} }

/* "installing now or later?" prompt after a tech sells */
.inst-ask{margin:18px 0 0;padding:18px;border:2px solid var(--brand);border-radius:14px;
  background:rgba(77,163,255,.07)}
.inst-ask-q{font-size:19px;font-weight:800;margin-bottom:14px;text-align:center}
.inst-ask-btns{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.inst-btn{display:flex;flex-direction:column;align-items:center;gap:4px;width:100%;
  cursor:pointer;font:inherit;font-size:17px;font-weight:800;color:#fff;border:none;
  border-radius:12px;padding:16px 12px}
.inst-btn small{font-size:12px;font-weight:500;opacity:.92}
.inst-now{background:var(--high)}
.inst-later{background:var(--brand)}
.inst-btn:hover{filter:brightness(1.06)}
.inst-queued{margin:16px 0 0;font-size:15px;font-weight:700;color:var(--brand);
  background:rgba(77,163,255,.10);border:1px solid var(--brand);border-radius:10px;
  padding:11px 14px;text-align:center}
.inst-queued-now{color:var(--high);background:rgba(46,204,113,.10);border-color:var(--high)}
@media(max-width:640px){ .inst-ask-btns{grid-template-columns:1fr} }

.je-cancel{color:var(--brand2);border-color:rgba(245,166,35,.5)}
.je-cancel:hover{background:rgba(245,166,35,.10);border-color:var(--brand2)}
.je-del{color:var(--emer);border-color:rgba(220,38,38,.45)}
.je-del:hover{background:rgba(220,38,38,.09);border-color:var(--emer)}

/* "back to the job I'm on" banner (price book) */
.backjob{display:flex;align-items:center;gap:12px;margin:0 0 14px;padding:12px 16px;
  border:1px solid var(--brand);border-radius:12px;background:rgba(77,163,255,.08);
  text-decoration:none;color:var(--text)}
.backjob:hover{background:rgba(77,163,255,.15)}
.backjob-arrow{font-size:26px;font-weight:800;color:var(--brand);line-height:1;flex:none}
.backjob-main{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.backjob-main strong{font-size:15px}
.backjob-main small{font-size:12px;color:var(--muted);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.backjob-tag{flex:none;font-size:12.5px;font-weight:700;color:var(--brand);
  background:var(--panel);border:1px solid var(--line);border-radius:999px;padding:5px 12px}
@media(max-width:640px){ .backjob-tag{display:none} }

/* new-call segmented address (street on its own row, then city/state/ZIP) */
.addr-parts{display:grid;grid-template-columns:1fr 90px 130px;gap:8px;margin-top:8px}
.addr-parts input{width:100%;box-sizing:border-box}
.a-state{text-transform:uppercase}
.addr-bad{border-color:var(--low) !important;background:rgba(239,68,68,.06)}
.addr-err{margin:9px 0 0;font-size:13px;font-weight:600;color:var(--low);
  background:rgba(239,68,68,.08);border:1px solid rgba(239,68,68,.35);
  border-radius:9px;padding:9px 11px}
@media(max-width:640px){ .addr-parts{grid-template-columns:1fr 70px 100px} }

/* jobs list on the home record */
.hjob{border:1px solid var(--line);border-radius:12px;padding:13px 15px;margin-bottom:10px;background:var(--panel2)}
.hjob-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.hjob-no{font-weight:800;color:var(--brand);text-decoration:none;font-variant-numeric:tabular-nums}
.hjob-no:hover{text-decoration:underline}
.hjob-date{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}
.hjob-tech{font-size:12.5px}
.hjob-total{margin-left:auto;font-weight:800;font-size:15px}
.hjob-issue{font-size:13px;font-style:italic;color:var(--muted);margin-top:6px}
.hjob-ests{display:flex;flex-direction:column;gap:6px;margin-top:9px}
.hjob-est{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--text);
  background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:7px 11px;font-size:13px}
.hjob-est:hover{border-color:var(--brand)}
.hjob-est-val{margin-left:auto;font-weight:700}
.hjob-noest{font-size:12.5px;margin-top:8px}

/* job card: open-job affordance */
.sch-card-open{font-weight:700;color:var(--text);text-decoration:none}
.sch-card-open:hover{color:var(--brand);text-decoration:underline}
.sch-open-btn{display:block;text-align:center;margin:8px 0 0;padding:6px;border-radius:8px;
  font-size:12px;font-weight:700;text-decoration:none;color:#fff;background:var(--brand2)}
.sch-open-btn:hover{background:var(--brand)}
.sch-st-on-my-way{box-shadow:inset 3px 0 0 var(--brand)}
.sch-st-arrived{box-shadow:inset 3px 0 0 var(--brand2)}

.nav-whoami{padding:8px 13px 7px;font-size:12.5px;font-weight:700;color:var(--text)}
.nav-whoami span{display:block;font-weight:400;font-size:11px;color:var(--muted);margin-top:1px}

/* ---- access & permissions ---- */
.acc-people{display:flex;flex-direction:column;gap:10px}
.acc-person{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:14px;align-items:end;
  padding:11px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.acc-who{display:flex;flex-direction:column;gap:2px;font-size:13px}
.acc-who .muted{font-size:11.5px}
.acc-badge{font-size:10.5px;font-weight:700;margin-top:3px}
.acc-badge.on{color:var(--high)}
.acc-badge.off{color:var(--muted)}
.acc-person input[type=text]{background:var(--panel);border:1px solid var(--line);
  color:var(--text);border-radius:10px;padding:0 13px;height:44px;font-size:14px;width:100%;
  margin-top:auto}
.acc-actions{display:flex;gap:8px}
.acc-actions .insp-pill{height:44px;padding:0 16px;min-width:0}
.acc-matrix-scroll{overflow-x:auto}
.acc-matrix{border-collapse:collapse;width:100%;font-size:12.5px}
.acc-matrix th,.acc-matrix td{border:1px solid var(--line);padding:7px 9px}
.acc-matrix thead th{vertical-align:top;text-align:center;min-width:104px;background:var(--panel2)}
.acc-matrix thead th.is-locked{opacity:.6}
.acc-cap-h{text-align:left !important;min-width:230px}
.acc-role{font-weight:700;font-size:12px}
.acc-role-note{font-weight:400;font-size:10px;color:var(--muted);margin-top:3px;
  line-height:1.3;white-space:normal}
.acc-cap{text-align:left}
.acc-cell{text-align:center}
.acc-cell input{width:17px;height:17px;cursor:pointer}
.acc-cell input:disabled{cursor:not-allowed;opacity:.32}
.acc-group td{background:var(--panel2);font-weight:700;font-size:10.5px;
  text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}
/* copy deterrent for roles without copy rights (NOT a security control) */
body.no-copy{-webkit-user-select:none;-moz-user-select:none;user-select:none}
body.no-copy input,body.no-copy textarea,body.no-copy .allow-copy,
body.no-copy .allow-copy *{-webkit-user-select:text;-moz-user-select:text;user-select:text}
@media(max-width:640px){ .acc-person{grid-template-columns:1fr} }

/* ---- month calendar (/schedule?view=month) ---- */
.mon-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;margin-bottom:6px}
.mon-dow span{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;
  letter-spacing:.06em;padding-left:2px}
.mon-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.mon-cell{display:flex;flex-direction:column;gap:3px;min-height:118px;padding:7px;
  border:1px solid var(--line);border-radius:10px;background:var(--panel);
  text-decoration:none;color:inherit;overflow:hidden}
.mon-cell.blank{background:none;border-color:transparent}
a.mon-cell:hover{border-color:var(--brand)}
.mon-cell.today{border-color:var(--brand);box-shadow:inset 0 0 0 1px var(--brand)}
.mon-cell-top{display:flex;align-items:center;justify-content:space-between}
.mon-dnum{font-size:12.5px;font-weight:700}
.mon-count{font-size:9.5px;font-weight:700;background:var(--brand);color:#fff;
  border-radius:7px;padding:1px 6px}
.mon-job{font-size:10.5px;line-height:1.25;background:var(--panel2);border-radius:6px;
  padding:3px 5px;border-left:3px solid var(--brand);overflow:hidden;
  text-overflow:ellipsis;white-space:nowrap}
.mon-job.is-done{opacity:.55;border-left-color:var(--muted)}
.mon-job-slot{font-weight:700;margin-right:3px}
.mon-job-who{display:block;color:var(--muted);font-size:9.5px}
.mon-more{font-size:9.5px;color:var(--muted);font-weight:600;padding-left:4px}
@media(max-width:640px){
  .mon-cell{min-height:74px;padding:4px}
  .mon-job-who,.mon-job{display:none}
}

/* customer contact card (result page) */
.contact-strip{display:flex;flex-direction:column;gap:0}
.contact-fields{display:grid;grid-template-columns:1fr 1.3fr;gap:16px;margin-bottom:14px}
.contact-field{display:flex;flex-direction:column;gap:6px}
.contact-field input[type=text]{margin-top:0;width:100%}
.contact-action{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.contact-action .insp-pill{min-width:0;padding:0 16px}
.field-lbl{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}

/* equipment scanner controls (result page) */
.eq-scanner{display:flex;flex-direction:column;gap:11px}
.eq-capture{display:flex;gap:10px;flex-wrap:wrap}
.eq-date-row{display:flex;flex-direction:column;gap:6px}
.eq-date-row .insp-field{width:100%;max-width:280px}
.eq-scan-row{display:flex;flex-direction:column;gap:5px}
.eq-scan-row .insp-pill{min-width:0;padding:0 20px;width:240px}

@media(max-width:760px){
  .sch-fields{grid-template-columns:1fr}
  .sch-cal-panel{grid-template-columns:1fr}
  .sch-cal-hint{display:none}
  .contact-fields{grid-template-columns:1fr}
  .eq-scan-row .insp-pill{width:100%}
}

/* follow-ups-due work list (one-tap send) */
.fu-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:12px 0;border-top:1px solid var(--line)}
.fu-row:first-of-type{border-top:none}
.fu-who{flex:1;min-width:300px}
.fu-preview{font-size:12.5px;color:var(--muted);font-style:italic;margin-top:5px;line-height:1.45;max-width:640px}
.fu-acts{flex:none}
.fu-acts .insp-pill{min-width:0;padding:0 14px}

/* follow-up aging (recapture clock) */
.fu-badge{display:inline-block;border-radius:999px;padding:3px 11px;font-size:11.5px;font-weight:600;white-space:nowrap}
.fu-hot{background:rgba(46,204,113,.16);color:var(--high);border:1px solid rgba(46,204,113,.45)}
.fu-warm{background:rgba(245,166,35,.14);color:var(--med);border:1px solid rgba(245,166,35,.4)}
.fu-cold{background:rgba(122,134,153,.14);color:var(--low);border:1px solid rgba(122,134,153,.4)}
/* open-estimate recapture banner on the call result */
.recapture-banner{display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  border:1.5px solid var(--high);background:rgba(46,204,113,.09);border-radius:var(--radius);
  padding:13px 18px}
.recapture-banner .rc-main{flex:1;min-width:260px;font-size:14px;color:var(--text)}
.recapture-banner .rc-main strong{color:var(--high)}
.recapture-banner .insp-pill{min-width:0;padding:0 16px}
.recapture-banner .rc-reply{margin:6px 0 4px;padding:8px 12px;background:var(--panel2);
  border-left:3px solid var(--brand);border-radius:6px;font-style:italic;
  white-space:pre-wrap;max-height:120px;overflow:auto}

.est-filters{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 14px}
.est-filters .insp-pill{padding:6px 14px}
.est-list-cols{display:grid;
  grid-template-columns:92px minmax(110px,1fr) minmax(140px,1.3fr) 44px 78px 78px 78px 118px 128px 70px;
  gap:10px;align-items:center}
/* customer-facing option cards — professional pricing-page look; the tier color is a
   top accent band + chip + checkmarks (Good red / Better green / Best yellow) */
.opt-head{text-align:center;max-width:900px;margin:0 auto}
.opt-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:24px;
  max-width:1500px;margin:0 auto;padding-top:16px}
.opt-card.opt-better{border:2px solid #2ecc71}
.opt-card{background:#fff;color:#16233a;border:1px solid #e3e7ee;border-radius:18px;
  cursor:pointer;position:relative;overflow:visible;padding:38px 34px 28px;
  box-shadow:0 12px 32px rgba(0,0,0,.28);display:flex;flex-direction:column;
  transition:transform .15s,box-shadow .15s}
.opt-card:hover{transform:translateY(-4px);box-shadow:0 18px 44px rgba(0,0,0,.38)}
.opt-card::before{content:"";position:absolute;top:0;left:0;right:0;height:8px;
  border-radius:18px 18px 0 0}
.opt-good::before{background:#e74c3c}
.opt-better::before{background:#2ecc71}
.opt-best::before{background:#f5a623}
.opt-chip{display:inline-block;align-self:center;font-size:21px;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;padding:7px 20px;border-radius:999px;
  margin:0 0 18px}
.opt-good .opt-chip,.optd-good .opt-chip{background:rgba(231,76,60,.1);color:#c0392b}
.opt-better .opt-chip,.optd-better .opt-chip{background:rgba(46,204,113,.12);color:#1e8f4d}
.opt-best .opt-chip,.optd-best .opt-chip{background:rgba(245,166,35,.16);color:#a96f0e}
.opt-popular{position:absolute;top:-14px;left:50%;transform:translateX(-50%);
  background:#1e8f4d;color:#fff;border-radius:999px;padding:5px 18px;font-size:14px;
  font-weight:700;white-space:nowrap;box-shadow:0 3px 10px rgba(0,0,0,.25)}
.opt-desc{font-size:15px;line-height:1.5;color:#5b6b83;margin:10px 0 2px;min-height:68px;text-align:center}
.optd-desc{font-size:17px;line-height:1.55;color:#5b6b83;margin:8px auto 4px;max-width:640px}
.opt-chosen{margin:24px auto 0;width:max-content;max-width:100%;background:rgba(46,204,113,.12);
  color:#1e8f4d;border:1px solid rgba(46,204,113,.45);border-radius:999px;
  padding:8px 22px;font-size:21px;font-weight:700;text-align:center}
/* a subtly highlighted card border when this option was the one accepted */
.opt-card.opt-accepted{border-color:rgba(46,204,113,.55);box-shadow:0 0 0 1px rgba(46,204,113,.35)}
.opt-monthly{font-size:58px;font-weight:700;letter-spacing:-.02em;color:#16233a;line-height:1.05}
.opt-monthly .opt-mo{font-size:25px;font-weight:500;color:#8a94a3;letter-spacing:0}
.opt-fullprice{display:none;font-size:29px;font-weight:600;color:#3a4354;margin:8px 0 0}
.opt-fullprice.show{display:block}
.opt-lines{flex:1;margin-top:24px}
.opt-line-name{font-size:24px;font-weight:500;color:#2a3140;line-height:1.35;
  border-top:1px solid #eef1f5;padding:14px 0;display:flex;gap:14px;align-items:baseline}
.opt-check{font-weight:700;flex:none}
.opt-good .opt-check{color:#e74c3c}
.opt-better .opt-check{color:#2ecc71}
.opt-best .opt-check{color:#f5a623}
.opt-view{margin-top:26px;text-align:center;border:1.5px solid #d4dae3;border-radius:12px;
  padding:15px;font-size:23px;font-weight:600;color:#2a3140;transition:background .15s}
.opt-card:hover .opt-view{background:#f4f6f9}
.opt-finance-note{font-size:19px;color:var(--muted);margin:20px auto 0;text-align:center;max-width:900px}
/* the "show full price" switch */
.opt-switch{display:inline-flex;align-items:center;gap:12px;cursor:pointer;margin:14px 0 0;user-select:none}
.opt-switch input{display:none}
.opt-slider{width:52px;height:30px;background:#93d3ee;border-radius:999px;position:relative;
  transition:background .15s;flex:none}
.opt-slider::after{content:"";position:absolute;top:3px;left:3px;width:24px;height:24px;
  background:#fff;border-radius:50%;transition:left .15s;box-shadow:0 1px 2px rgba(0,0,0,.3)}
.opt-switch input:checked + .opt-slider{background:#2ecc71}
.opt-switch input:checked + .opt-slider::after{left:25px}
.opt-switch-text{font-size:21px;color:#6b7684}
/* full-screen option detail + sign & accept — centered, wide, same design language */
.optd{background:#fff;color:#16233a;border:1px solid #e3e7ee;border-radius:20px;
  position:relative;overflow:hidden;padding:48px 58px 38px;max-width:1200px;margin:0 auto;
  box-shadow:0 12px 32px rgba(0,0,0,.28)}
.optd::before{content:"";position:absolute;top:0;left:0;right:0;height:10px}
.optd-good::before{background:#e74c3c}
.optd-better::before{background:#2ecc71}
.optd-best::before{background:#f5a623}
.optd-head{text-align:center}
.optd-head .opt-chip{margin:6px 0 10px}
.optd-customer{font-size:23px;color:#6b7684;margin:0 0 6px}
/* total + monthly side by side, equal size, balanced across the card */
.optd-prices{display:flex;justify-content:space-evenly;align-items:center;gap:28px;
  flex-wrap:wrap;margin:14px 0 4px}
.optd-price-cap{font-size:21px;font-weight:600;color:#8a94a3;text-transform:uppercase;
  letter-spacing:.1em;margin:0 0 2px}
.optd-total{font-size:76px;font-weight:700;letter-spacing:-.02em;margin:0;line-height:1.05}
.optd-permo{font-size:34px;font-weight:500;color:#8a94a3;letter-spacing:0}
.optd-terms{font-size:20px;color:#8a94a3;margin-top:6px}
.optd-price-div{width:1.5px;align-self:stretch;background:#e8ecf1}
.optd-lines{margin:26px 0 6px}
.optd-line{border-top:1px solid #eef1f5;padding:18px 0}
.optd-line-name{font-size:31px;font-weight:600;line-height:1.25}
.optd-line-desc{font-size:25px;color:#3a4354;margin-top:8px;white-space:pre-line;line-height:1.45}
.optd-sign{border-top:2px solid #eef1f5;margin-top:16px;padding-top:20px}
.optd-sign-title{font-size:29px;font-weight:600;margin:0 0 12px}
.optd-sign-name{display:block;width:100%;max-width:560px;margin:0 0 12px;background:#fff;
  border:1px solid #93d3ee;border-radius:10px;padding:12px 14px;font-size:27px;color:#16233a}
#sig-pad{display:block;width:100%;max-width:640px;background:#fafbfc;
  border:1.5px dashed #9aa3af;border-radius:10px;cursor:crosshair;
  touch-action:none;user-select:none;-webkit-user-select:none}
.optd-accepted{border-top:2px solid #e8eaee;margin-top:14px;padding-top:16px}
.optd-sigimg{display:block;max-width:420px;border:1px solid #e0e3e8;border-radius:10px;background:#fafbfc}

/* inspection photo thumbnails — large, fill the row, white rounded frame */
.insp-room{margin:18px 0 9px;font-size:15px;font-weight:600;color:var(--text)}
.insp-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(158px,1fr));gap:16px;margin:0 0 6px}
.insp-thumb{margin:0;text-align:center}
.insp-thumb img{width:100%;aspect-ratio:1;object-fit:cover;display:block;border-radius:14px;
  border:3px solid #fff;box-shadow:0 2px 7px rgba(0,0,0,.4)}
.insp-thumb a:hover img{box-shadow:0 4px 13px rgba(0,0,0,.55)}
.insp-thumb figcaption{font-size:13.5px;line-height:1.3;margin-top:8px;color:var(--text)}

.tgt-tbl{width:100%;border-collapse:collapse;margin-top:6px}
.tgt-tbl th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.04em;
  color:var(--muted);padding:8px 10px;border-bottom:1px solid var(--line)}
.tgt-tbl td{padding:9px 10px;border-bottom:1px solid var(--line);vertical-align:top;font-size:14px}
.tgt-tbl td:first-child{white-space:nowrap}
.tgt-tbl summary{cursor:pointer;list-style:none}
.tgt-tbl summary::-webkit-details-marker{display:none}
.tgt-tbl summary::before{content:"▸ ";color:var(--muted);font-size:11px}
.tgt-tbl details[open] summary::before{content:"▾ ";color:var(--brand)}
.tgt-tbl .reasons{margin:8px 0 4px;padding-left:18px}
.tgt-tbl .reasons li{font-size:13px;line-height:1.45;margin-bottom:4px;color:var(--muted)}
.tgt-tbl .band{min-width:34px;text-align:center;border-radius:8px}

/* --- Campaign Manager (App 2) --- */
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:12px;margin-bottom:16px}
.kpi{text-align:center;padding:16px 12px}
.kpi-label{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.kpi-num{font-size:24px;font-weight:700;margin-top:6px}
.kpi.hero{border-color:var(--brand);background:rgba(77,163,255,.08)}
.kpi.hero .kpi-num{color:var(--brand)}
.camp-list{display:flex;flex-direction:column;gap:10px}
.camp{background:var(--panel2);border:1px solid var(--line);border-radius:11px;padding:13px 15px}
.camp.has-flag{border-color:#a5662a}
.camp-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.camp-name{font-weight:600;font-size:15px}
.camp-meta{color:var(--muted);font-size:12.5px;margin:5px 0 9px}
.camp-stats{display:flex;flex-wrap:wrap;gap:16px;font-size:13px;color:var(--muted)}
.camp-stats b{color:var(--text);font-size:14px}
.camp-stats .cpb b{color:var(--brand)}
.status{font-size:10px;font-weight:700;text-transform:uppercase;padding:2px 8px;border-radius:999px;margin-left:6px}
.status-active{background:rgba(46,204,113,.16);color:var(--high)}
.status-paused{background:rgba(245,166,35,.16);color:var(--med)}
.status-ended{background:rgba(122,134,153,.16);color:var(--low)}
.flags{margin:11px 0 0;padding-left:2px;list-style:none}
.flags li{font-size:13px;line-height:1.45;margin-bottom:6px;padding:7px 10px;border-radius:8px}
.flag-stop{background:rgba(220,38,38,.08);color:#b91c1c;border:1px solid #dc2626}
.flag-warn{background:rgba(215,119,0,.08);color:#92400e;border:1px solid #d97706}
.form-actions{display:flex;align-items:center;gap:16px;margin-top:18px}
.danger-link{background:none;border:none;color:#ff8a8a;cursor:pointer;font-size:13px;text-decoration:underline}

/* Theme number/date inputs + selects inside the new app forms (targeting + campaigns) */
.tgt-grid input[type=number],.tgt-grid input[type=date],.tgt-grid input[type=text],.tgt-grid select{
  width:100%;margin-top:6px;background:var(--panel2);border:1px solid var(--line);
  color:var(--text);border-radius:10px;padding:10px 11px;font-size:14px}
.tgt-grid input:focus,.tgt-grid select:focus{outline:none;border-color:var(--brand)}
.tgt-grid label small{display:inline;color:var(--low)}

/* --- Launch playbook --- */
.pb-pick{display:flex;gap:16px;flex-wrap:wrap;margin-top:6px}
.pb-pick label{margin:0}
.pb-pick select{margin-top:6px;background:var(--panel2);border:1px solid var(--line);color:var(--text);
  border-radius:10px;padding:10px 11px;font-size:14px;min-width:200px}
.pb-steps{display:flex;flex-direction:column;gap:14px;margin-top:8px}
.pb-step{display:flex;gap:14px}
.pb-num{flex:0 0 auto;width:32px;height:32px;border-radius:50%;background:var(--brand);color:#fff;
  font-weight:700;display:flex;align-items:center;justify-content:center}
.pb-body{flex:1 1 auto;min-width:0}
.pb-body h3{margin:2px 0 4px;font-size:15.5px}
.pb-sub{margin:8px 0}
.pb-tag{display:inline-block;font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;
  color:var(--brand);background:rgba(77,163,255,.12);border:1px solid var(--brand);border-radius:999px;padding:2px 9px}
.pb-sub ul{margin:6px 0 0;padding-left:18px}
.pb-sub li{font-size:13.5px;margin-bottom:4px}
.pb-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:10px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.pb-channel{padding:11px 0;border-bottom:1px solid var(--line)}
.pb-channel:last-child{border-bottom:none}
.pb-ch-head{display:flex;justify-content:space-between;align-items:center;gap:10px}
.pb-setup{cursor:pointer;color:var(--brand);font-size:13px}
.pb-ol{margin:8px 0 0;padding-left:20px}
.pb-ol li{font-size:13.5px;margin-bottom:5px}
.pb-dont{list-style:none;margin:8px 0 0;padding:0}
.pb-dont li{font-size:13.5px;margin-bottom:6px;color:#ffb066}
.pb-setup-lq{color:var(--med)}
.pb-setup-meta{color:var(--brand2)}
.pb-setup-search{color:#7c3aed}
.pb-setup-mail{color:#0d9488}
.pb-tag-teal{background:rgba(13,148,136,.12);color:#0d9488}
.pb-ms-audiences{display:flex;flex-direction:column;gap:10px}
.pb-ms-aud{padding:12px 14px;background:var(--panel2);border:1px solid var(--line);border-radius:10px}
.pb-ms-aud-head{display:flex;align-items:center;gap:10px;margin-bottom:2px}
.pb-ms-roi{font-size:12px;font-weight:600;color:var(--high);margin:0}
.pb-tag-blue{background:rgba(14,165,233,.12);color:var(--brand2)}
.pb-lq{margin-top:10px;padding:14px 16px;background:var(--panel2);border:1px solid var(--line);border-radius:12px}
.pb-lq-note{font-size:13.5px;font-weight:600;color:var(--text);margin:0 0 4px}
.pb-lq-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}
.pb-lq-col{border-radius:10px;padding:12px 14px}
.pb-lq-col ul{margin:6px 0 0;padding-left:18px}
.pb-lq-col ul li{font-size:13px;margin-bottom:4px}
.pb-lq-on{background:rgba(22,163,74,.07);border:1px solid rgba(22,163,74,.25)}
.pb-lq-off{background:rgba(220,38,38,.06);border:1px solid rgba(220,38,38,.2)}
.pb-lq-label{font-size:11.5px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}
.pb-lq-ll{margin-top:14px;padding:11px 14px;background:rgba(14,165,233,.08);border:1px solid rgba(14,165,233,.25);border-radius:9px;font-size:13px;color:var(--text)}
@media(max-width:880px){.grid-2{grid-template-columns:1fr}}

/* --- On-demand permit check + score adjustment --- */
.permit-check-form{margin:10px 0 4px}
.score-adjusted{margin:8px 0 12px;padding:11px 14px;border-radius:10px;font-size:14px}
.score-adjusted strong{font-size:16px}
.score-adjusted.down{background:rgba(220,38,38,.08);border:1px solid #dc2626;color:#b91c1c}
.score-adjusted.up{background:rgba(22,163,74,.08);border:1px solid var(--high);color:#166534}

/* --- Saved-to-marketing confirmation --- */
.saved-note{font-size:13px;color:var(--high);background:rgba(46,204,113,.08);
  border:1px solid rgba(46,204,113,.3);border-radius:8px;padding:7px 11px;margin:6px 0 10px}

/* --- Live Accela lookup note --- */
.live-lookup-note{font-size:13px;color:var(--brand);background:rgba(77,163,255,.08);
  border:1px solid rgba(77,163,255,.3);border-radius:8px;padding:8px 12px;margin:6px 0 10px}

/* --- Manual trade-tagger (records trades per permit) --- */
.trade-tagger{margin:10px 0 2px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.tagger-label{font-size:12.5px;color:var(--muted)}
.tag-toggle{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.03em;
  padding:4px 10px;border-radius:999px;cursor:pointer;background:transparent;
  border:1px dashed var(--line);color:var(--muted)}
.tag-toggle:hover{border-color:var(--brand);color:var(--text)}
.tag-toggle.on{border-style:solid}
.tag-toggle.on.trade-plumbing{background:rgba(77,163,255,.16);color:#7ab8ff;border-color:#3a6ea5}
.tag-toggle.on.trade-hvac{background:rgba(255,159,67,.16);color:#ffb066;border-color:#a5662a}
.tag-toggle.on.trade-electrical{background:rgba(255,214,77,.16);color:#ffd84d;border-color:#a58a2a}
.tag-toggle.on.trade-pool{background:rgba(56,209,201,.16);color:#5fe0d8;border-color:#2a9a93}
.tag-toggle.on.trade-gas{background:rgba(255,107,107,.16);color:#ff8a8a;border-color:#a53e3e}
.tag-saved{font-size:12px;color:var(--high);opacity:0;transition:opacity .2s}
.tag-saved.show{opacity:1}

/* --- Permit sub-type chips (granular) --- */
.subtype-chip{display:inline-block;font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;
  margin:0 4px 3px 0;background:rgba(77,163,255,.10);color:var(--brand);border:1px solid var(--brand);
  vertical-align:middle}
/* Sub-type chips take their PARENT trade's color (so blue = only plumbing). */
.subtype-chip.trade-plumbing{background:rgba(77,163,255,.10);color:#7ab8ff;border-color:#3a6ea5}
.subtype-chip.trade-hvac{background:rgba(255,159,67,.10);color:#ffb066;border-color:#a5662a}
.subtype-chip.trade-electrical{background:rgba(255,214,77,.10);color:#ffd84d;border-color:#a58a2a}
.subtype-chip.trade-pool{background:rgba(56,209,201,.10);color:#5fe0d8;border-color:#2a9a93}
.subtype-chip.trade-gas{background:rgba(255,107,107,.10);color:#ff8a8a;border-color:#a53e3e}
.subtype-chip.trade-roofing{background:rgba(180,140,255,.10);color:#c4a6ff;border-color:#7a5ea5}
/* Competitor ad spy */
.ad-cat{margin:20px 0 8px;font-size:14px}
.ad-card{border:1px solid var(--line);border-radius:10px;padding:11px 14px;
  margin:0 0 10px;background:var(--panel2)}
.ad-meta{display:flex;gap:10px;align-items:center;margin-bottom:5px;font-size:12px}
.ad-price{background:rgba(56,209,201,.16);color:#5fe0d8;border:1px solid #2a9a93;font-weight:700}
.ad-copy{margin:3px 0 8px;line-height:1.45}
.ad-link{font-size:13px;font-weight:600}
.ww-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px}
.ww-row{display:flex;gap:8px;align-items:baseline;margin:0 0 7px;font-size:13px}
.ww-proven{background:rgba(180,140,255,.16);color:#c4a6ff;border:1px solid #7a5ea5;
  font-weight:700;flex:none}
.ww-bar-row{display:flex;align-items:center;gap:9px;margin:0 0 7px;font-size:13px}
.ww-bar-label{width:210px;flex:none}
.ww-bar{display:inline-block;height:10px;border-radius:5px;flex:none;
  background:linear-gradient(90deg,#4da3ff,#5fe0d8)}
@media(max-width:760px){.ww-grid{grid-template-columns:1fr;gap:6px}.ww-bar-label{width:150px}}
.company-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0 4px}
/* customer search on the CRM page */
.crm-search{display:flex;gap:9px;align-items:center;margin:12px 0 0}
.crm-search input[type=search]{flex:1;min-width:0;background:var(--panel);
  border:1px solid var(--line);color:var(--text);border-radius:10px;
  padding:0 14px;height:42px;font-size:14px}
.crm-search input[type=search]:focus{outline:none;border-color:var(--brand)}
.crm-search .insp-pill{height:42px;min-width:0;padding:0 18px}
@media(max-width:640px){ .crm-search{flex-wrap:wrap} .crm-search input[type=search]{flex:1 1 100%} }

/* stage tabs: sized to their label, not stretched full-width */
.crm-tabs .insp-pill{min-width:0;padding:0 14px}
.crm-tab-n{font-weight:700;opacity:.75;margin-left:2px}
.company-tab{font-size:13px;font-weight:600;padding:5px 12px;border-radius:999px;
  border:1px solid rgba(255,255,255,.14);color:var(--ink-dim,#9fb0c0);text-decoration:none}
.company-tab.on{background:rgba(77,163,255,.16);color:#7ab8ff;border-color:#3a6ea5}
/* Neighborhood sweep */
.sweep-form{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-start;margin-top:12px}
.sweep-form select,.sweep-form textarea{padding:9px 11px;border-radius:8px;
  border:1px solid var(--line);background:var(--panel2);color:inherit;
  font-size:14px;font-family:inherit}
.sweep-form textarea{flex:1;min-width:240px;resize:vertical}
.sweep-permit{margin:4px 0;font-size:13px;line-height:1.55}
.zs-bar{height:12px;border-radius:6px;background:var(--panel2);border:1px solid var(--line);overflow:hidden;margin-top:4px}
.zs-fill{height:100%;background:linear-gradient(90deg,#4da3ff,#5fe0d8);transition:width .3s}
.zs-row{display:flex;justify-content:space-between;gap:12px;padding:6px 0;
  border-bottom:1px solid var(--line);font-size:13px}

/* ============================================================
   Mobile pass (≤640px) — makes the app usable/presentable on a
   phone for demos. Customer-facing pages (sign, pay) have their
   own tuned rules; this handles the internal app shell.
   ============================================================ */
@media(max-width:640px){
  .wrap,.wrap-wide,.wrap-full{max-width:none;margin:14px auto;padding:0 12px}
  h1{font-size:24px!important;line-height:1.15}
  .card{padding:16px 14px}

  /* 16px is a hard iOS Safari threshold, not a style preference: tapping any
     input smaller than that makes Safari zoom the whole page in — and it does
     not zoom back out. A tech filling in an estimate would be pinching back out
     after every single field. Desktop keeps 14px; this applies on phones only. */
  input[type=text],input[type=tel],input[type=email],input[type=number],
  input[type=date],input[type=search],input[type=password],
  textarea,select,.field select{font-size:16px}

  /* top nav: compact, horizontally scrollable instead of a tall wrap stack */
  header .brand .tag{display:none}
  .topnav{display:flex;flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;
    gap:8px;padding-bottom:6px;scrollbar-width:none}
  .topnav::-webkit-scrollbar{display:none}
  .topnav .newcall,.nav-dd>summary{width:auto;white-space:nowrap;flex:none;font-size:13px;height:38px;padding:0 13px}
  /* full-width on phones — the compound selector matches .nav-dd-right too, so
     the gear menu also spans the screen instead of a narrow right-anchored box */
  .nav-dd-menu,.nav-dd-menu.nav-dd-right{position:fixed;left:12px;right:12px;top:auto;
    max-width:none;max-height:60vh;overflow:auto}

  /* action button rows: full-width, stacked, easy thumb targets */
  .insp-actions{gap:8px}
  .insp-actions .insp-pill,.insp-actions button,.insp-actions .newcall{flex:1 1 100%;
    min-width:0;text-align:center;justify-content:center}
  .insp-pill.fixed,.insp-pill.fixed-sm{width:100%;min-width:0}

  /* estimate builder contact fields stack */
  .est-fields{grid-template-columns:1fr;gap:12px}
  .addr-box{flex-wrap:wrap}
  .addr-box .a-street{flex:1 1 100%}
  .addr-box .a-div{display:none}
  .addr-box .a-city{flex:1 1 100%}
  .addr-box .a-state,.addr-box .a-zip{flex:1 1 45%}

  /* wide tables scroll inside their own box rather than blowing out the page */
  .scroll,.inv-list,.inv-table,.sch-cal{display:block;overflow-x:auto;max-width:100%}

  /* dense two/three-column grids collapse */
  .est-totals{grid-template-columns:1fr}
  .recapture-banner{flex-direction:column;align-items:stretch}
  .recapture-banner .insp-pill{width:100%}
}

/* schedule job-card one-tap messages */
.sch-msgs{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.sch-msg-btn{font-size:12px;font-weight:600;padding:5px 10px;border-radius:8px;text-decoration:none;
  background:rgba(77,163,255,.14);color:var(--brand);border:1px solid rgba(77,163,255,.3)}
.sch-msg-btn:hover{background:rgba(77,163,255,.22)}
.sch-msg-rev{background:rgba(46,204,113,.14);color:var(--high);border-color:rgba(46,204,113,.32)}
