/* ============================================================
   Auto Ascension · Lead Hunter
   Editorial. Quiet. Cream. Premium.
   ============================================================ */

:root {
  /* iOS / Square aesthetic — white surfaces, soft shadows, system font.
     Matches the window-cleaning CRM (wc.css). */
  --cream:        #F7F7F6;
  --cream-deeper: #F1F1F0;
  --ink:          #1A1A1A;
  --ink-soft:     #5A5F66;
  --muted:        #8A9099;
  --hairline:     #ECECEA;
  --hairline-2:   #E1E2E0;
  --bg-card:      #FFFFFF;

  /* status pills — soft pastels (cooled for the white theme) */
  --stone-bg:     #EDEEF0;  --stone-fg:    #57534A;
  --gold-bg:      #FBF1DA;  --gold-fg:     #9A6700;
  --lav-bg:       #ECEAFB;  --lav-fg:      #4B3FA6;
  --sage-bg:      #E4F4EC;  --sage-fg:     #137A4B;
  --terra-bg:     #FBE9E7;  --terra-fg:    #C0392B;

  --site-yes-bg: #E4F4EC;  --site-yes-fg: #137A4B;
  --site-no-bg:  #FBE9E7;  --site-no-fg:  #C0392B;

  --radius-pill:    999px;
  --radius:         14px;
  --shadow-inset:   inset 0 -1px 0 var(--hairline);
  --shadow-card:    0 1px 2px rgba(20,22,28,.05), 0 4px 16px -8px rgba(20,22,28,.10);

  --accent:       #1E64FF;
  --accent-soft:  #EAF0FF;

  --font-display: -apple-system, BlinkMacSystemFont, "Inter", "SF Pro Display", "Segoe UI", sans-serif;
  --font-head:    -apple-system, BlinkMacSystemFont, "Inter", "SF Pro Text", "Segoe UI", sans-serif;
  --font-body:    -apple-system, BlinkMacSystemFont, "Inter", "SF Pro Text", "Segoe UI", Roboto, sans-serif;
  --font-mono:    ui-monospace, "SF Mono", Menlo, monospace;
}

* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
body {
  background: var(--cream);
  color: var(--ink);
  font: 16px/1.5 var(--font-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

.container { max-width: 1200px; margin: 0 auto; padding: 0 20px; }
@media (min-width: 800px) { .container { padding: 0 32px; } }

a { color: var(--ink); }
a:hover { text-decoration-thickness: 2px; }

.visually-hidden { position: absolute; clip: rect(0 0 0 0); width: 1px; height: 1px; overflow: hidden; }

/* ----- header ----- */
.site-header { padding: 18px 0; border-bottom: 1px solid var(--hairline); background: var(--cream); }
.header-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; }
.brand {
  font-family: var(--font-display);
  font-size: 18px;
  letter-spacing: 0.18em;
  color: var(--ink);
  text-decoration: none;
}
@media (min-width: 800px) { .brand { font-size: 22px; } }
.nav { display: flex; gap: 18px; align-items: center; }
.nav a { font-size: 14px; text-decoration: none; color: var(--ink-soft); }
.nav a:hover { color: var(--ink); }
.logout-form { margin: 0; }
.link-button { background: none; border: none; padding: 0; font: inherit; color: var(--ink-soft); cursor: pointer; }
.link-button:hover { color: var(--ink); }

/* ----- main / footer ----- */
.main { padding: 28px 0 80px; }
.site-footer { padding: 30px 0; border-top: 1px solid var(--hairline); color: var(--muted); font-size: 13px; }
.footer-note { font-family: var(--font-mono); }

/* ----- typography ----- */
.display {
  font-family: var(--font-head);
  font-weight: 800;
  font-size: clamp(34px, 6vw, 56px);
  letter-spacing: -0.02em;
  margin: 0 0 6px;
}
.lede { color: var(--ink-soft); margin: 0 0 32px; font-size: 16px; }
.section-h {
  font-family: var(--font-head);
  font-weight: 800;
  font-size: clamp(20px, 2.5vw, 26px);
  letter-spacing: -0.01em;
  margin: 0 0 14px;
}
.mono   { font-family: var(--font-mono); font-size: 14px; }
.small  { font-size: 13px; }
.muted  { color: var(--muted); }
.empty  { color: var(--muted); font-style: italic; }

/* ----- blocks ----- */
.block {
  margin-bottom: 36px;
  padding-bottom: 26px;
  border-bottom: 1px solid var(--hairline);
}
.block:last-child { border-bottom: 0; }

/* ----- login ----- */
.login-wrap { max-width: 420px; margin: 60px auto 0; text-align: center; }
.login-form { display: flex; flex-direction: column; gap: 12px; margin-top: 12px; }
.login-form input {
  padding: 14px 18px;
  font: 16px var(--font-body);
  border: 1px solid var(--hairline-2);
  background: var(--bg-card);
  color: var(--ink);
  border-radius: var(--radius);
}
.login-form input:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.form-error { color: #B0392C; font-size: 14px; margin: 6px 0 0; }

/* ----- buttons ----- */
.btn-primary, .btn-secondary {
  display: inline-block;
  padding: 12px 22px;
  font: 14px/1 var(--font-body);
  font-weight: 500;
  letter-spacing: 0.02em;
  border-radius: var(--radius-pill);
  border: 1px solid var(--ink);
  cursor: pointer;
  text-decoration: none;
  transition: background 0.15s, color 0.15s;
}
.btn-primary { background: var(--ink); color: var(--cream); }
.btn-primary:hover { background: #000; }
.btn-secondary { background: transparent; color: var(--ink); }
.btn-secondary:hover { background: var(--ink); color: var(--cream); }
button { font-family: var(--font-body); }

/* ----- new-run form ----- */
.run-form { margin: 0; }
.run-fields {
  display: flex; gap: 10px;
  flex-direction: column;
}
.run-fields input {
  flex: 1; min-width: 0;
  padding: 12px 16px;
  font: 15px var(--font-body);
  border: 1px solid var(--hairline-2);
  background: var(--bg-card);
  color: var(--ink);
  border-radius: var(--radius);
}
.run-fields button { white-space: nowrap; }
@media (min-width: 700px) { .run-fields { flex-direction: row; } }
.form-hint { color: var(--muted); font-size: 13px; margin: 8px 0 0; min-height: 1.2em; }

/* ----- active job banner ----- */
.job-banner {
  margin-top: 18px;
  padding: 14px 18px;
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: var(--radius);
  display: flex; gap: 14px; align-items: center; flex-wrap: wrap;
}
.job-pulse {
  width: 10px; height: 10px; border-radius: 50%; background: #2F8A45;
  animation: pulse 1.4s ease-in-out infinite;
  flex: 0 0 auto;
}
@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.4; transform: scale(0.85); }
}
.job-label { font-size: 15px; }
.job-count { color: var(--muted); font-family: var(--font-mono); font-size: 13px; margin-left: auto; }

/* ----- KPI row ----- */
.kpi-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(110px, 1fr));
  gap: 12px;
}
.kpi {
  padding: 14px 16px;
  border: 1px solid var(--hairline);
  border-radius: var(--radius);
  background: var(--bg-card);
}
.kpi-label { color: var(--muted); font-size: 12px; letter-spacing: 0.08em; text-transform: uppercase; }
.kpi-value { font-family: var(--font-mono); font-size: 22px; margin-top: 4px; }

/* ----- filter form ----- */
.filter-form { margin: 0 0 20px; }
.filter-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 12px 14px;
}
.filter-grid label {
  display: flex; flex-direction: column; gap: 4px;
  font-size: 12px; color: var(--muted); letter-spacing: 0.05em; text-transform: uppercase;
}
.filter-grid select, .filter-grid input {
  padding: 9px 12px;
  font: 14px var(--font-body);
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: var(--radius);
  color: var(--ink);
}
.filter-grid select:focus, .filter-grid input:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.filter-actions { margin-top: 14px; display: flex; gap: 8px; flex-wrap: wrap; }
.results-line { color: var(--muted); margin: 14px 0 10px; font-size: 14px; }

/* ----- tables ----- */
.table-wrap { overflow-x: auto; border: 1px solid var(--hairline); border-radius: var(--radius); background: var(--bg-card); }
.data-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.data-table th, .data-table td {
  text-align: left;
  padding: 12px 14px;
  border-bottom: 1px solid var(--hairline);
  vertical-align: middle;
}
.data-table th {
  font-weight: 500;
  font-size: 12px;
  color: var(--muted);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  background: var(--cream-deeper);
}
.data-table tbody tr:last-child td { border-bottom: 0; }
.data-table.compact th, .data-table.compact td { padding: 8px 12px; }

.tap-call { font-weight: 500; text-decoration: none; }
.tap-call:hover { text-decoration: underline; }

/* ----- status pills ----- */
.status-pill, .site-pill {
  display: inline-block;
  padding: 4px 12px;
  font-size: 12px;
  font-family: var(--font-mono);
  border-radius: var(--radius-pill);
  letter-spacing: 0.03em;
  white-space: nowrap;
}
.status-pill.status-running { background: var(--gold-bg);  color: var(--gold-fg); }
.status-pill.status-done    { background: var(--sage-bg);  color: var(--sage-fg); }
.status-pill.status-failed  { background: var(--terra-bg); color: var(--terra-fg); }
.status-pill.status-captcha { background: var(--terra-bg); color: var(--terra-fg); }

.site-pill.site-yes { background: var(--site-yes-bg); color: var(--site-yes-fg); }
.site-pill.site-no  { background: var(--site-no-bg);  color: var(--site-no-fg); }

/* ----- editable status select pill ----- */
.status-select {
  border: 0; padding: 4px 12px;
  font: 12px var(--font-mono);
  border-radius: var(--radius-pill);
  letter-spacing: 0.03em;
  -webkit-appearance: none;
  appearance: none;
  cursor: pointer;
  padding-right: 22px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'><path d='M2 4l3 3 3-3' stroke='%231A1A1A' stroke-width='1.5' fill='none'/></svg>");
  background-repeat: no-repeat;
  background-position: right 7px center;
}
.status-select.status-cold   { background-color: var(--stone-bg); color: var(--stone-fg); }
.status-select.status-called { background-color: var(--gold-bg);  color: var(--gold-fg); }
.status-select.status-booked { background-color: var(--lav-bg);   color: var(--lav-fg); }
.status-select.status-won    { background-color: var(--sage-bg);  color: var(--sage-fg); }
.status-select.status-skip   { background-color: var(--terra-bg); color: var(--terra-fg); }
.status-select:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.status-select:disabled { opacity: 0.5; }

/* ----- expandable lead row ----- */
.lead-toggle {
  background: none; border: 0; padding: 0; margin: 0;
  font: inherit; color: var(--ink); cursor: pointer; text-align: left;
  font-weight: 500;
}
.lead-toggle:hover { text-decoration: underline; }
.lead-extra { margin-top: 10px; padding: 12px 0 4px; border-top: 1px dashed var(--hairline); }
.lead-detail-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 8px 18px;
  font-size: 13px;
}
@media (min-width: 700px) {
  .lead-detail-grid { grid-template-columns: repeat(2, 1fr); }
}
.lead-detail-grid > div { display: flex; flex-direction: column; gap: 2px; }
.lead-detail-grid .label { color: var(--muted); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; }
.notes-label { display: block; margin: 12px 0 4px; color: var(--muted); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; }
.lead-notes {
  width: 100%; padding: 8px 10px;
  border: 1px solid var(--hairline-2); border-radius: var(--radius);
  font: 14px var(--font-body); background: var(--bg-card); color: var(--ink);
  resize: vertical;
}
.lead-notes:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.lead-notes.notes-saved { border-color: var(--sage-fg); }

/* ----- mobile / desktop visibility ----- */
.hide-mobile { display: none; }
.show-mobile { display: flex; }
@media (min-width: 800px) {
  .hide-mobile { display: table-cell; }
  .show-mobile { display: none; }
}

/* small refinements on phone */
@media (max-width: 480px) {
  .main { padding: 18px 0 60px; }
  .data-table th, .data-table td { padding: 10px 10px; }
  .kpi-row { grid-template-columns: repeat(auto-fit, minmax(95px, 1fr)); }
  .kpi-value { font-size: 18px; }
}

/* ============================================================
   Stage 2.5 additions
   ============================================================ */

/* clickable rows (replaces expand pattern) */
.lead-row { cursor: pointer; }
.lead-row:hover { background: var(--cream-deeper); }
.lead-row:focus-visible { outline: 2px solid var(--ink); outline-offset: -2px; }
.lead-name { font-weight: 500; }
.lead-sub { margin-top: 3px; }

/* leads-head */
.leads-head { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }

/* view toggle */
.view-toggle {
  display: inline-flex; background: var(--bg-card);
  border: 1px solid var(--hairline-2); border-radius: var(--radius-pill); padding: 3px;
}
.view-btn {
  background: transparent; border: 0; padding: 7px 16px;
  font: 12px/1 var(--font-body); font-weight: 500; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--ink-soft); border-radius: var(--radius-pill); cursor: pointer;
  transition: background 0.2s, color 0.2s;
}
.view-btn.is-active { background: var(--ink); color: var(--cream); }
.view-btn:not(.is-active):hover { color: var(--ink); }

/* filter bar */
.filter-bar {
  margin: 0 0 18px;
  padding: 16px 18px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: var(--radius);
}
.filter-row { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.filter-row:last-child { margin-bottom: 0; }
.filter-row.sliders { gap: 28px; }
.filter-row input[type="search"] {
  flex: 1 1 100%; min-width: 0; padding: 11px 14px;
  font: 15px var(--font-body); border: 1px solid var(--hairline-2);
  background: var(--cream); color: var(--ink); border-radius: var(--radius);
}
.filter-row input[type="search"]:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.filter-label {
  font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--muted); font-family: var(--font-body); font-weight: 500;
}
.filter-label strong { color: var(--ink); font-family: var(--font-mono); font-weight: 500; }
.pill-group-row { gap: 10px; }
.pill-group { display: inline-flex; gap: 6px; flex-wrap: wrap; }
.pill {
  background: transparent; border: 1px solid var(--hairline-2);
  padding: 6px 14px; border-radius: var(--radius-pill);
  font: 12px var(--font-mono); color: var(--ink-soft); cursor: pointer;
  letter-spacing: 0.03em; transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.pill:hover { color: var(--ink); border-color: var(--ink); }
.pill.is-active { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.pill-group.multi .pill.is-active { background: var(--ink); color: var(--cream); }

/* sliders */
.slider-field { display: flex; flex-direction: column; gap: 8px; flex: 1 1 240px; min-width: 0; }
.slider-field input[type="range"] {
  -webkit-appearance: none; appearance: none;
  width: 100%; height: 4px; background: var(--hairline-2);
  border-radius: 2px; outline: none; padding: 0;
}
.slider-field input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 18px; height: 18px; background: var(--ink); border-radius: 50%; cursor: pointer;
}
.slider-field input[type="range"]::-moz-range-thumb {
  width: 18px; height: 18px; background: var(--ink); border-radius: 50%; cursor: pointer; border: 0;
}
.results-line { font-size: 13px; color: var(--muted); margin-left: auto; }
.results-line strong { color: var(--ink); font-family: var(--font-mono); font-weight: 500; }

/* ============= MODAL ============= */
.modal {
  position: fixed; inset: 0; z-index: 1000;
  display: flex; align-items: center; justify-content: center;
  padding: 30px;
  animation: modal-in 0.15s ease-out;
}
.modal[hidden] { display: none; }
.modal-backdrop {
  position: absolute; inset: 0;
  background: rgba(10, 10, 10, 0.45);
  backdrop-filter: blur(2px);
}
.modal-panel {
  position: relative;
  background: var(--cream);
  border: 1px solid var(--hairline);
  border-radius: 14px;
  width: 100%; max-width: 640px;
  max-height: calc(100vh - 60px);
  overflow: hidden;
  display: flex; flex-direction: column;
  box-shadow: 0 20px 60px rgba(10,10,10,0.18);
}
.modal-close {
  position: absolute; top: 14px; right: 14px;
  background: transparent; border: 0; padding: 8px;
  border-radius: 50%; cursor: pointer; color: var(--ink-soft);
  display: inline-flex; align-items: center; justify-content: center;
  transition: background 0.15s, color 0.15s; z-index: 2;
}
.modal-close:hover { background: var(--hairline); color: var(--ink); }
.modal-body { overflow-y: auto; padding: 28px 28px 24px; }
.modal-loading, .modal-error { padding: 40px; text-align: center; color: var(--muted); font-style: italic; }
.modal-error { color: #B0392C; }
.modal-photo {
  margin: -28px -28px 18px;
  height: 160px; overflow: hidden; background: var(--cream-deeper);
}
.modal-photo img { width: 100%; height: 100%; object-fit: cover; }
.modal-head { margin-bottom: 18px; padding-bottom: 14px; border-bottom: 1px solid var(--hairline); }
.modal-eyebrow {
  font-family: var(--font-mono); font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px;
}
.modal-title {
  font-family: var(--font-head); font-weight: 800;
  font-size: clamp(22px, 3.6vw, 30px); line-height: 1.1;
  letter-spacing: -0.01em; margin: 0 30px 6px 0;
}
.modal-rating { font-size: 13px; color: var(--ink-soft); }
.modal-fields {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px 24px; margin: 0;
}
.modal-fields > div { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.modal-fields .span-2 { grid-column: 1 / -1; }
.modal-fields dt {
  font-family: var(--font-body); font-size: 11px;
  letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); font-weight: 500;
}
.modal-fields dd { margin: 0; font-size: 14px; word-break: break-word; }
.modal-link {
  color: var(--ink); text-decoration: underline; text-decoration-thickness: 1px;
  text-underline-offset: 3px; word-break: break-all;
}
.modal-link:hover { text-decoration-thickness: 2px; }
.modal-notes {
  width: 100%; padding: 8px 10px;
  border: 1px solid var(--hairline-2); border-radius: var(--radius);
  font: 14px var(--font-body); background: var(--bg-card); color: var(--ink);
  resize: vertical;
}
.modal-notes:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.modal-notes.notes-saved { border-color: var(--sage-fg); }
.modal-actions {
  margin-top: 22px; padding-top: 18px;
  border-top: 1px solid var(--hairline);
  display: flex; gap: 10px; flex-wrap: wrap;
}

/* Companies House pills */
.ch-pill {
  display: inline-block; padding: 3px 10px; font: 11px var(--font-mono);
  letter-spacing: 0.06em; border-radius: var(--radius-pill); text-transform: uppercase;
}
.ch-pill.ch-active   { background: var(--sage-bg);  color: var(--sage-fg); }
.ch-pill.ch-notfound { background: var(--stone-bg); color: var(--stone-fg); }
.ch-pill.ch-other    { background: var(--terra-bg); color: var(--terra-fg); }

@keyframes modal-in { from { opacity: 0; transform: scale(0.98); } to { opacity: 1; transform: scale(1); } }

/* mobile: full-screen modal */
@media (max-width: 600px) {
  .modal { padding: 0; align-items: stretch; }
  .modal-panel {
    border-radius: 0; max-width: 100%; max-height: 100vh;
    height: 100vh; border: 0;
  }
  .modal-photo { margin: -28px -28px 18px; height: 200px; }
  .modal-fields { grid-template-columns: 1fr; gap: 12px; }
}

/* ============= MAP ============= */
.map-toolbar {
  display: flex; gap: 10px; align-items: center; flex-wrap: wrap;
  margin-bottom: 10px;
}
.map-meta { font-size: 12px; color: var(--muted); font-family: var(--font-mono); margin-left: auto; }
.map-geo-pending {
  font-size: 11px; color: var(--muted); font-family: var(--font-mono);
  letter-spacing: 0.05em; padding: 4px 10px;
  background: var(--cream-deeper); border-radius: var(--radius-pill);
}
.map-geo-pending:empty { display: none; }
#map {
  height: 65vh; min-height: 460px;
  border: 1px solid var(--hairline);
  border-radius: var(--radius);
  background: var(--cream-deeper);
}
@media (max-width: 600px) {
  #map { height: 70vh; min-height: 380px; }
  .map-toolbar { gap: 6px; }
  .map-meta { width: 100%; margin-left: 0; }
}
.leaflet-container { font-family: var(--font-body); }

/* ============================================================
   Stage 4 — Editorial polish (overrides earlier Stage 3 rules)
   ============================================================ */

:root {
  --pill-stone:    #ECEAE5;  --pill-stone-fg: #57534A;
  --pill-sky:      #E6EDF4;  --pill-sky-fg:   #2E4760;
  --pill-gold:     #F4ECD9;  --pill-gold-fg:  #6B5310;
  --pill-lav:      #EEE9F4;  --pill-lav-fg:   #3D2F73;
  --pill-peach:    #F5E8DF;  --pill-peach-fg: #6B411E;
  --pill-sage:     #EAF0E2;  --pill-sage-fg:  #2F4A33;
  --pill-terra:    #F5DDD6;  --pill-terra-fg: #6A3326;
}

.leads-section { padding-bottom: 0; border-bottom: 0; }

/* ----- SCRAPE BAR (top of page) ----- */
.scrape-bar {
  margin: 0 0 32px;
  padding: 0;
}
.scrape-form {
  display: flex; gap: 10px; align-items: stretch;
}
.scrape-form input[type="text"] {
  flex: 1 1 0; min-width: 0;
  height: 44px; padding: 0 14px;
  font: 15px var(--font-body);
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
  color: var(--ink);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.scrape-form input[type="text"]::placeholder { color: var(--muted); }
.scrape-form input[type="text"]:focus {
  outline: none; border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(10,10,10,0.04);
}
.scrape-form .scrape-run { height: 44px; padding: 0 22px; }
.scrape-status {
  margin-top: 12px;
  padding: 10px 16px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 999px;
  display: inline-flex; align-items: center; gap: 10px;
  font-size: 14px; color: var(--ink-soft);
}
.scrape-status[hidden] { display: none !important; }

/* Load-more progress bar (continuation scrape) */
.loadmore-progress {
  margin-top: 12px;
  padding: 10px 16px;
  background: var(--cream);
  border: 1px solid var(--hairline);
  border-radius: 14px;
}
.loadmore-progress[hidden] { display: none !important; }
.loadmore-progress .lmp-text {
  font-size: 13px; color: var(--ink-soft);
  margin-bottom: 6px; line-height: 1.4;
}
.loadmore-progress .lmp-label strong { color: var(--ink); font-weight: 600; }
.loadmore-progress .lmp-bar {
  height: 6px; background: var(--hairline);
  border-radius: 999px; overflow: hidden;
}
.loadmore-progress .lmp-fill {
  display: block; height: 100%; width: 0;
  background: var(--ink);
  transition: width 0.3s ease-out;
}
/* Indeterminate sweep while Google Maps is loading (no card count yet) */
.loadmore-progress.is-indeterminate .lmp-fill {
  width: 40% !important;
  transition: none;
  animation: lmp-indet 1.1s ease-in-out infinite;
}
@keyframes lmp-indet {
  0%   { margin-left: -40%; }
  100% { margin-left: 100%; }
}
.loadmore-progress .lmp-foot {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; margin-top: 8px;
}
.loadmore-progress .lmp-sub {
  font-size: 12px; color: var(--muted); line-height: 1.4;
}
.loadmore-progress .lmp-sub strong { color: var(--ink); font-weight: 600; }
.loadmore-progress .lmp-clock {
  font-variant-numeric: tabular-nums; color: var(--ink-soft);
}
.loadmore-progress .lmp-cancel {
  flex: 0 0 auto;
  padding: 5px 12px; font-size: 12px; font-weight: 600;
  color: var(--pill-terra-fg); background: var(--pill-terra);
  border: 1px solid rgba(106,51,38,0.18); border-radius: 999px;
  cursor: pointer;
}
.loadmore-progress .lmp-cancel:hover { filter: brightness(0.97); }
.loadmore-progress .lmp-cancel:disabled { opacity: 0.55; cursor: default; }

/* Floating toast bottom-right */
.lh-toast {
  position: fixed; right: 24px; bottom: 24px; z-index: 1500;
  padding: 12px 18px;
  background: var(--ink); color: var(--cream);
  border-radius: 14px;
  font: 14px var(--font-body);
  box-shadow: 0 12px 32px rgba(10,10,10,0.22);
  max-width: 360px;
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 0.2s, transform 0.2s;
  pointer-events: none;
}
.lh-toast[hidden] { display: none !important; }
.lh-toast.is-visible { opacity: 1; transform: translateY(0); }
.lh-toast .lh-toast-meta { font-size: 12px; opacity: 0.72; margin-top: 4px; }
.run-dot {
  width: 8px; height: 8px; border-radius: 50%; background: #2F8A45;
  animation: pulse 1.4s ease-in-out infinite;
  flex: 0 0 auto;
}
@media (max-width: 600px) {
  .scrape-form { flex-direction: column; }
  .scrape-form .scrape-run { width: 100%; }
}

/* ----- TAB BAR ----- */
.tab-bar-wrap {
  margin: 0 0 24px;
  border-bottom: 1px solid var(--hairline);
  overflow-x: auto;
  scrollbar-width: none;
  scroll-behavior: smooth;
}
.tab-bar-wrap::-webkit-scrollbar { display: none; }
.tab-bar {
  display: inline-flex; gap: 36px;
  min-width: 100%;
  padding: 0;
}
.tab {
  background: transparent; border: 0; padding: 14px 2px 18px; margin: 0;
  font-family: var(--font-body); font-size: 15px; font-weight: 500;
  letter-spacing: 0.04em;
  color: var(--muted); cursor: pointer; white-space: nowrap;
  position: relative;
  transition: color 0.15s ease-out;
}
.tab:hover { color: var(--ink); }
.tab.is-active { color: var(--ink); }
.tab.is-active::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: -1px;
  height: 2px; background: var(--ink);
  border-radius: 1px;
}
.tab-count {
  font-family: var(--font-mono); font-size: 12px;
  color: var(--muted); margin-left: 5px;
  letter-spacing: 0;
}
.tab.is-active .tab-count { color: var(--ink-soft); }
.tab-archive { opacity: 0.55; }
.tab-archive.is-active { opacity: 1; }
@media (min-width: 800px) {
  .tab-bar { gap: 48px; }
}

/* + Add lead — sits right after the New Leads tab */
.tab-add-lead {
  align-self: center;
  display: inline-flex; align-items: center; gap: 6px;
  margin: 0 0 4px; padding: 6px 12px;
  background: var(--ink); color: var(--cream, #FAF8F4);
  border: 0; border-radius: 999px;
  font-family: var(--font-body); font-size: 13px; font-weight: 600;
  letter-spacing: 0.02em; white-space: nowrap; cursor: pointer;
  transition: transform 0.12s ease-out, opacity 0.15s;
}
.tab-add-lead:hover { transform: translateY(-1px); opacity: 0.9; }
.tab-add-lead svg { display: block; }

/* Add-lead modal */
.add-lead-overlay {
  position: fixed; inset: 0; z-index: 1200;
  display: flex; align-items: center; justify-content: center; padding: 30px;
  background: rgba(10, 10, 10, 0.45); backdrop-filter: blur(2px);
  animation: modal-in 0.15s ease-out;
}
.add-lead-overlay[hidden] { display: none; }
.add-lead-modal {
  position: relative; background: var(--cream, #FAF8F4);
  border: 1px solid var(--hairline); border-radius: 14px;
  width: 100%; max-width: 560px; max-height: calc(100vh - 60px);
  overflow-y: auto; box-shadow: 0 20px 60px rgba(10,10,10,0.18);
}
.add-lead-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 24px 16px; border-bottom: 1px solid var(--hairline);
}
.add-lead-head h2 {
  margin: 0; font-family: var(--font-head); font-weight: 800;
  font-size: 21px; letter-spacing: -0.01em; color: var(--ink);
}
.add-lead-x {
  background: transparent; border: 0; font-size: 24px; line-height: 1;
  color: var(--ink-soft); cursor: pointer; padding: 2px 6px; border-radius: 8px;
  transition: background 0.15s, color 0.15s;
}
.add-lead-x:hover { background: var(--hairline); color: var(--ink); }
.add-lead-form {
  display: grid; grid-template-columns: 1fr 1fr; gap: 14px 18px;
  padding: 22px 24px 24px;
}
.al-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.al-field.al-full { grid-column: 1 / -1; }
.al-field > span {
  font-family: var(--font-body); font-size: 11px; font-weight: 500;
  letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted);
}
.al-field em { color: #B0392C; font-style: normal; }
.al-field input, .al-field textarea {
  font-family: var(--font-body); font-size: 14px; color: var(--ink);
  background: var(--bg-card); border: 1px solid var(--hairline-2);
  border-radius: 8px; padding: 9px 11px; width: 100%; resize: vertical;
}
.al-field input:focus, .al-field textarea:focus {
  outline: none; border-color: var(--ink-soft);
}
.al-actions {
  grid-column: 1 / -1; display: flex; align-items: center;
  justify-content: flex-end; gap: 10px; margin-top: 4px;
}
.al-error { margin-right: auto; color: #B0392C; font-size: 13px; }

/* Brand & media controls */
.al-brand-head {
  margin-top: 6px; padding-top: 14px; border-top: 1px solid var(--hairline);
}
.al-brand-head > span { color: var(--ink-soft); font-weight: 600; }
.al-hint { color: var(--muted); font-weight: 400; text-transform: none; letter-spacing: 0; }
.al-uploader { display: flex; flex-direction: column; gap: 8px; }
.al-upload-btn {
  align-self: flex-start;
  background: var(--bg-card); border: 1px dashed var(--hairline-2);
  border-radius: 8px; padding: 8px 14px; cursor: pointer;
  font-family: var(--font-body); font-size: 13px; color: var(--ink-soft);
  transition: border-color 0.15s, color 0.15s;
}
.al-upload-btn:hover { border-color: var(--ink-soft); color: var(--ink); }
.al-logo-preview { display: inline-flex; }
.al-logo-preview img {
  height: 48px; width: auto; max-width: 160px; object-fit: contain;
  border: 1px solid var(--hairline); border-radius: 8px; background: #fff; padding: 4px;
}
.al-colours { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.al-colour {
  -webkit-appearance: none; appearance: none;
  width: 34px; height: 34px; padding: 0; border: 1px solid var(--hairline-2);
  border-radius: 8px; cursor: pointer; background: none;
}
.al-colour::-webkit-color-swatch-wrapper { padding: 2px; }
.al-colour::-webkit-color-swatch { border: none; border-radius: 6px; }
.al-colour-add {
  width: 34px; height: 34px; border: 1px dashed var(--hairline-2);
  border-radius: 8px; background: var(--bg-card); cursor: pointer;
  font-size: 18px; line-height: 1; color: var(--ink-soft);
}
.al-colour-add:hover { border-color: var(--ink-soft); color: var(--ink); }
.al-photo-grid { display: flex; flex-wrap: wrap; gap: 8px; }
.al-photo-thumb {
  position: relative; width: 64px; height: 64px; border-radius: 8px;
  overflow: hidden; border: 1px solid var(--hairline);
}
.al-photo-thumb img { width: 100%; height: 100%; object-fit: cover; }
.al-photo-thumb .al-photo-x {
  position: absolute; top: 2px; right: 2px; width: 18px; height: 18px;
  border: 0; border-radius: 50%; background: rgba(10,10,10,0.6); color: #fff;
  font-size: 12px; line-height: 18px; cursor: pointer; padding: 0;
}

/* Brand strip in the lead detail modal */
.m5-brand { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.m5-brand-logo img {
  height: 44px; width: auto; max-width: 150px; object-fit: contain;
  border-radius: 6px; background: #fff; padding: 3px; border: 1px solid var(--hairline);
}
.m5-brand-palette { display: flex; gap: 6px; }
.m5-swatch {
  width: 26px; height: 26px; border-radius: 6px; border: 1px solid rgba(0,0,0,0.12);
}

/* ----- Filter shell (collapsible) ----- */
.filter-shell { margin: 0 0 20px; }
.filter-shell-head {
  display: flex; justify-content: space-between; align-items: center;
  gap: 12px; flex-wrap: wrap;
  margin-bottom: 12px;
}
.filter-shell-actions {
  display: inline-flex; align-items: center; gap: 10px;
}
.filter-toggle {
  display: inline-flex; align-items: center; gap: 7px;
  height: 36px; padding: 0 14px;
  background: transparent; border: 1px solid var(--hairline-2);
  color: var(--ink); border-radius: 999px;
  font: 13px var(--font-body); font-weight: 500;
  cursor: pointer;
  transition: background 0.15s ease-out, color 0.15s ease-out;
}
.filter-toggle:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.filter-toggle .chev { transition: transform 0.2s ease-out; }
.filter-toggle[aria-expanded="true"] .chev { transform: rotate(180deg); }
.filter-toggle .dot {
  width: 6px; height: 6px; border-radius: 50%;
  background: #2F8A45;
}
.filter-toggle .dot[hidden] { display: none; }

.filter-body {
  padding: 16px 18px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 14px;
  margin-top: 8px;
}
.filter-body[hidden] { display: none !important; }
.filter-tip { margin: 0 0 14px; font-size: 12px; line-height: 1.4; }
.filter-body .filter-row { gap: 12px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.filter-body .filter-row:last-child { margin-bottom: 0; }
.filter-body .filter-row.sliders { gap: 28px; }
.filter-body input[type="search"] {
  flex: 1 1 100%; min-width: 0;
  height: 44px; padding: 0 16px;
  font: 15px var(--font-body);
  background: var(--cream);
  border: 1px solid var(--hairline-2);
  color: var(--ink); border-radius: 999px;
  transition: border-color 0.15s, box-shadow 0.15s;
}
.filter-body input[type="search"]:focus {
  outline: none; border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(10,10,10,0.04);
}
.filter-body .filter-actions { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; }

/* View toggle in the filter head row */
.filter-shell .view-toggle { padding: 3px; }
.view-btn { height: 30px; }

/* ----- Won hero ----- */
.won-hero[hidden] { display: none !important; }
.won-hero {
  background: var(--pill-sage);
  border-radius: 12px;
  padding: 24px 28px;
  margin-bottom: 24px;
  display: flex; align-items: baseline; gap: 18px; flex-wrap: wrap;
  border: 1px solid rgba(47, 74, 51, 0.18);
}
.won-hero-label {
  font-family: var(--font-mono); font-size: 11px;
  letter-spacing: 0.18em; text-transform: uppercase;
  color: var(--pill-sage-fg);
}
.won-hero-value {
  font-family: var(--font-head); font-weight: 800;
  font-size: clamp(28px, 4vw, 40px);
  letter-spacing: -0.02em;
  color: var(--pill-sage-fg);
}

/* ----- Lead cards (Stage 4 spec) ----- */
.list-host { transition: opacity 0.2s ease-out; }
.list-host.is-leaving { opacity: 0; }
.lead-cards { display: flex; flex-direction: column; gap: 12px; }
.lead-card {
  position: relative;
  display: grid;
  grid-template-columns: 56px minmax(0, 1.55fr) minmax(140px, auto) auto minmax(180px, auto);
  gap: 18px; align-items: center;
  padding: 18px 20px;
  background: #FFFFFF;
  border: 1px solid var(--hairline);
  border-radius: 16px;
  cursor: pointer;
  transition: border-color 0.15s ease-out, box-shadow 0.15s ease-out, transform 0.15s ease-out;
}
.lead-card.is-selected { border-color: var(--ink); box-shadow: 0 0 0 1px var(--ink); }
/* Per-card select checkbox — top-left corner, subtle until hover/selected. */
.lc-check {
  position: absolute; top: 7px; left: 7px; z-index: 3;
  display: inline-flex; align-items: center; justify-content: center;
  width: 24px; height: 24px; border-radius: 7px;
  background: rgba(255,255,255,0.92); border: 1px solid var(--hairline);
  opacity: 0.5; transition: opacity 0.12s ease-out;
}
.lead-card:hover .lc-check, .lead-card.is-selected .lc-check { opacity: 1; }
.lc-check input { width: 15px; height: 15px; margin: 0; cursor: pointer; accent-color: var(--ink); }

/* Bulk-select toolbar above the list */
.bulk-toolbar {
  display: flex; align-items: center; gap: 16px;
  margin: 0 0 12px; padding: 9px 14px;
  background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 12px;
}
.bulk-selectall {
  display: inline-flex; align-items: center; gap: 8px;
  font-family: var(--font-body); font-size: 13px; font-weight: 600;
  color: var(--ink-soft); cursor: pointer; user-select: none;
}
.bulk-selectall input { width: 16px; height: 16px; cursor: pointer; accent-color: var(--ink); }
.bulk-actions { display: inline-flex; align-items: center; gap: 14px; margin-left: auto; }
.bulk-count { font-family: var(--font-mono); font-size: 13px; font-weight: 600; color: var(--ink); }
.bulk-archive-btn { cursor: pointer; }
.bulk-clear-btn {
  background: none; border: 0; color: var(--muted); font-size: 13px;
  cursor: pointer; text-decoration: underline; padding: 4px;
}
.bulk-clear-btn:hover { color: var(--ink); }
.lead-card:hover {
  border-color: #C9C4B8;
  box-shadow: 0 4px 12px rgba(0,0,0,0.05);
  transform: translateY(-1px);
}
.lead-card:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

/* Avatar — 56px rounded-square, photo when available else pastel initial */
.lc-avatar {
  width: 56px; height: 56px; border-radius: 12px;
  border: 1px solid var(--hairline-2);
  display: flex; align-items: center; justify-content: center;
  font-family: var(--font-head); font-weight: 600; font-size: 24px;
  color: var(--ink);
  user-select: none;
  flex: 0 0 auto;
  overflow: hidden;
  transition: box-shadow 0.15s ease-out, border-color 0.15s ease-out;
}
.lc-avatar.av-sage  { background: var(--pill-sage); color: var(--pill-sage-fg); border-color: rgba(47,74,51,0.18); }
.lc-avatar.av-lav   { background: var(--pill-lav);  color: var(--pill-lav-fg);  border-color: rgba(61,47,115,0.18); }
.lc-avatar.av-peach { background: var(--pill-peach); color: var(--pill-peach-fg); border-color: rgba(107,65,30,0.18); }
.lc-avatar.av-sky   { background: var(--pill-sky);  color: var(--pill-sky-fg);  border-color: rgba(46,71,96,0.18); }
.lc-avatar.av-stone { background: var(--pill-stone); color: var(--pill-stone-fg); border-color: rgba(87,83,74,0.18); }
.lc-avatar.av-gold  { background: var(--pill-gold);  color: var(--pill-gold-fg);  border-color: rgba(107,83,16,0.18); }
.lc-avatar.av-terra { background: var(--pill-terra); color: var(--pill-terra-fg); border-color: rgba(106,51,38,0.18); }
.lc-avatar-photo { background: var(--cream-deeper); }
.lc-avatar-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.lead-card:hover .lc-avatar { box-shadow: 0 0 0 3px rgba(10,10,10,0.04); border-color: #C9C4B8; }

/* Business info block */
.lc-info { min-width: 0; display: flex; flex-direction: column; gap: 3px; align-items: flex-start; }
.lc-name {
  font-family: var(--font-body); font-weight: 600; font-size: 17px;
  color: var(--ink); line-height: 1.25;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.lc-meta {
  font-family: var(--font-body); font-size: 10px;
  text-transform: uppercase; letter-spacing: 0.08em;
  color: #8B877F; font-weight: 500;
}
/* Recommendation pills row under the lead card */
.lc-recs {
  margin-top: 6px;
  display: flex; flex-wrap: wrap; gap: 5px;
}
.rec-pill {
  display: inline-flex; align-items: center; gap: 5px;
  padding: 3px 9px;
  font: 11px var(--font-body); font-weight: 500;
  border-radius: 999px;
  border: 1px solid transparent;
  white-space: nowrap;
  cursor: help;
}
.rec-pill-glyph { font-size: 10px; line-height: 1; }
.rec-pill.svc-web      { background: var(--pill-sage);  color: var(--pill-sage-fg);  border-color: rgba(47,74,51,0.12); }
.rec-pill.svc-reviews  { background: var(--pill-lav);   color: var(--pill-lav-fg);   border-color: rgba(61,47,115,0.12); }
.rec-pill.svc-email    { background: var(--pill-peach); color: var(--pill-peach-fg); border-color: rgba(107,65,30,0.12); }
.rec-pill.svc-command  { background: var(--pill-sky);   color: var(--pill-sky-fg);   border-color: rgba(46,71,96,0.12); }
.rec-pill.svc-ads      { background: var(--pill-gold);  color: var(--pill-gold-fg);  border-color: rgba(107,83,16,0.12); }
.rec-pill.svc-social   { background: var(--pill-stone); color: var(--pill-stone-fg); border-color: rgba(87,83,74,0.12); }
.rec-pill.svc-other    { background: var(--cream-deeper); color: var(--ink-soft); border-color: var(--hairline-2); }

/* Niche/area pill — Stage 5 polish */
.lc-tag {
  display: inline-block;
  margin-top: 2px;
  padding: 3px 10px;
  font-family: var(--font-body); font-size: 10px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--ink-soft); font-weight: 500;
  background: var(--cream-deeper);
  border: 1px solid var(--hairline);
  border-radius: 999px;
}
/* Business age (Companies House incorporated date) */
.lc-age {
  display: inline-flex; align-items: center; gap: 5px;
  margin-top: 3px;
  font-family: var(--font-mono); font-size: 11px;
  color: var(--muted); line-height: 1;
}
.lc-age .i-cal { color: var(--muted); opacity: 0.85; flex: 0 0 auto; }

.lc-phone {
  margin-top: 3px;
  display: flex; align-items: center; flex-wrap: wrap; gap: 6px 14px;
}
.lc-phone-link {
  display: inline-flex; align-items: center; gap: 6px;
  font-family: var(--font-mono); font-size: 13px;
  color: var(--ink); text-decoration: none;
}
.lc-phone-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.lc-phone-link .i-phone { color: var(--ink-soft); }

/* "Google ↗" link on a lead card → opens the business's Google profile */
.lc-google-link {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12px; font-weight: 600;
  color: var(--ink-soft); text-decoration: none;
  padding: 2px 8px; border-radius: 999px;
  border: 1px solid var(--hairline-2);
  line-height: 1.4; white-space: nowrap;
}
.lc-google-link:hover {
  color: var(--ink); border-color: var(--ink-soft);
  background: var(--hairline);
}
.lc-google-link .i-google { flex: 0 0 auto; }

/* Quick stats — micro 2-col */
.lc-stats {
  display: grid; grid-template-columns: auto 1fr; column-gap: 14px; row-gap: 2px;
  align-items: center;
  min-width: 0;
}
.qs-rating {
  font-family: var(--font-mono); font-size: 14px; color: var(--ink);
  display: inline-flex; align-items: center; gap: 4px;
}
.qs-rating .star { color: #C99E2B; font-size: 13px; }
.qs-reviews { font-family: var(--font-mono); font-size: 12px; color: var(--ink-soft); }
.qs-label   { font-family: var(--font-body); font-size: 10px; text-transform: uppercase; letter-spacing: 0.08em; color: #8B877F; }
.qs-site { grid-column: 1 / -1; margin-top: 4px; }
.qs-site .site-pill { font-size: 11px; height: 24px; padding: 0 10px; display: inline-flex; align-items: center; line-height: 1; }

/* Bigger status pill in cards */
.lc-status-wrap { display: flex; justify-content: flex-end; }
.lc-status-wrap .status-pill {
  height: 32px; padding: 0 14px; display: inline-flex; align-items: center;
  font-size: 12px; line-height: 1; border-radius: 999px;
  font-weight: 500;
  text-transform: none;
}
.lc-status-wrap .status-pill.status-won { font-weight: 600; }
.lc-status-wrap .status-select { height: 32px; font-size: 12px; padding-left: 14px; padding-right: 26px; }

/* Primary action — full pill with arrow */
.lc-action { display: flex; justify-content: flex-end; }
.btn-action {
  height: 40px; padding: 0 18px; border-radius: 999px;
  font: 13px var(--font-body); font-weight: 500; letter-spacing: 0.02em;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  cursor: pointer; white-space: nowrap;
  transition: background 0.15s ease-out, color 0.15s ease-out, border-color 0.15s ease-out, transform 0.15s ease-out;
  border: 1px solid var(--ink);
}
.btn-action.btn-primary {
  background: var(--ink); color: var(--cream);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.18);
}
.btn-action.btn-primary:hover:not(:disabled) {
  background: #000; transform: translateY(-1px);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.22), 0 2px 6px rgba(0,0,0,0.08);
}
.btn-action.btn-ghost {
  background: transparent; color: var(--ink); border-color: var(--hairline-2);
}
.btn-action.btn-ghost:hover:not(:disabled) {
  background: var(--ink); color: var(--cream); border-color: var(--ink);
}
.btn-action:disabled { opacity: 0.5; cursor: default; transform: none; }
.btn-action .i-arrow { flex: 0 0 auto; }

/* Stacked action (Call List tab) */
.action-stack { display: flex; flex-direction: column; gap: 6px; align-items: stretch; }
.action-stack .btn-action { width: 100%; }
.action-stack .btn-ghost { height: 32px; font-size: 12px; padding: 0 14px; }

/* Primary action + kebab menu wrap */
.action-wrap { display: inline-flex; align-items: center; gap: 6px; }
.action-stack > .action-wrap { width: 100%; }
.action-stack > .action-wrap > .btn-action:first-child { flex: 1; }

.lc-menu-btn {
  width: 36px; height: 36px;
  border-radius: 999px;
  border: 1px solid var(--hairline-2);
  background: transparent;
  color: var(--ink-soft);
  cursor: pointer;
  display: inline-flex; align-items: center; justify-content: center;
  flex: 0 0 auto;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.lc-menu-btn:hover {
  background: var(--ink); color: var(--cream); border-color: var(--ink);
}
.lc-menu-btn:focus-visible { outline: 2px solid var(--ink); outline-offset: 2px; }

/* Move-menu popover */
.move-menu {
  position: absolute;
  z-index: 60;
  background: #FFFFFF;
  border: 1px solid var(--hairline);
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(10,10,10,0.10);
  padding: 6px;
  min-width: 220px;
  display: flex; flex-direction: column; gap: 2px;
}
.move-menu-item {
  background: transparent; border: 0;
  text-align: left;
  padding: 9px 12px;
  font: 13px var(--font-body); color: var(--ink);
  border-radius: 8px;
  cursor: pointer;
  transition: background 0.1s, color 0.1s;
  white-space: nowrap;
}
.move-menu-item:hover { background: var(--cream-deeper); }
.move-menu-item:disabled { opacity: 0.5; cursor: default; }

/* ----- Status pills (Stage 3 colour set) ----- */
.status-pill {
  display: inline-block; padding: 5px 12px; border-radius: var(--radius-pill);
  font: 11px var(--font-mono); letter-spacing: 0.04em;
  white-space: nowrap; text-transform: capitalize;
}
.status-pill.status-cold,
.status-pill.status-follow_up_later   { background: var(--pill-stone); color: var(--pill-stone-fg); }
.status-pill.status-to_call           { background: var(--pill-sky);   color: var(--pill-sky-fg); }
.status-pill.status-called,
.status-pill.status-voicemail         { background: var(--pill-gold);  color: var(--pill-gold-fg); }
.status-pill.status-booked,
.status-pill.status-discovery_done    { background: var(--pill-lav);   color: var(--pill-lav-fg); }
.status-pill.status-proposal_sent,
.status-pill.status-negotiating       { background: var(--pill-peach); color: var(--pill-peach-fg); }
.status-pill.status-won               { background: var(--pill-sage);  color: var(--pill-sage-fg); font-weight: 600; }
.status-pill.status-not_interested    { background: var(--pill-terra); color: var(--pill-terra-fg); }
.status-pill.status-dead,
.status-pill.status-skip              { background: var(--pill-stone); color: var(--muted); }

/* Status-select keeps the same colour mapping */
.status-select.status-cold,
.status-select.status-follow_up_later { background-color: var(--pill-stone); color: var(--pill-stone-fg); }
.status-select.status-to_call         { background-color: var(--pill-sky);   color: var(--pill-sky-fg); }
.status-select.status-called,
.status-select.status-voicemail       { background-color: var(--pill-gold);  color: var(--pill-gold-fg); }
.status-select.status-booked,
.status-select.status-discovery_done  { background-color: var(--pill-lav);   color: var(--pill-lav-fg); }
.status-select.status-proposal_sent,
.status-select.status-negotiating     { background-color: var(--pill-peach); color: var(--pill-peach-fg); }
.status-select.status-won             { background-color: var(--pill-sage);  color: var(--pill-sage-fg); font-weight: 600; }
.status-select.status-not_interested  { background-color: var(--pill-terra); color: var(--pill-terra-fg); }
.status-select.status-dead,
.status-select.status-skip            { background-color: var(--pill-stone); color: var(--muted); }

/* ----- Sub-group headers (Active tab) ----- */
.subgroup-head {
  font-family: var(--font-head); font-weight: 800;
  font-size: 18px; letter-spacing: -0.01em;
  margin: 26px 0 16px; padding-bottom: 4px;
  display: flex; align-items: baseline; gap: 10px;
}
.lead-cards + .subgroup-head { margin-top: 30px; }
.subgroup-head:first-child { margin-top: 8px; }
.subgroup-count {
  font-family: var(--font-mono); font-size: 12px; color: var(--muted); font-weight: 400;
}

/* ----- Empty state ----- */
.empty-state {
  padding: 80px 24px;
  background: #FFFFFF;
  border: 1px solid var(--hairline);
  border-radius: 16px;
  text-align: center;
  display: flex; flex-direction: column; align-items: center; gap: 14px;
}
.empty-svg {
  width: 84px; height: 84px;
  color: var(--ink); opacity: 0.7;
  margin-bottom: 4px;
}
.empty-head {
  font-family: var(--font-head); font-weight: 800;
  font-size: clamp(22px, 2.6vw, 26px);
  letter-spacing: -0.01em; line-height: 1.15;
  color: var(--ink); margin: 0;
}
.empty-sub {
  font-family: var(--font-body); font-size: 14px;
  color: var(--muted); margin: 0;
  max-width: 36ch;
}
.empty-cta { margin-top: 16px; height: 40px; padding: 0 20px; }

/* ----- Mobile lead-card stacking ----- */
@media (max-width: 760px) {
  .lead-card {
    grid-template-columns: 56px 1fr;
    grid-template-areas:
      "avatar info"
      "stats  stats"
      "status status"
      "action action";
    gap: 10px 14px;
    padding: 16px;
  }
  .lc-avatar      { grid-area: avatar; }
  .lc-info        { grid-area: info; }
  .lc-stats       { grid-area: stats; display: flex; gap: 14px; align-items: center; padding-top: 4px; border-top: 1px solid var(--hairline); margin-top: 8px; padding-top: 12px; }
  .lc-stats .qs-rating, .lc-stats .qs-reviews { display: inline-flex; align-items: center; }
  .lc-stats .qs-site { grid-column: auto; margin-top: 0; margin-left: auto; }
  .lc-status-wrap { grid-area: status; justify-content: flex-start; }
  .lc-action      { grid-area: action; }
  .lc-action .action-stack { width: 100%; }
  .lc-action .action-wrap { display: flex; width: 100%; gap: 8px; }
  .lc-action .action-wrap > .btn-action { flex: 1; }
  .lc-action .action-wrap > .lc-menu-btn { flex: 0 0 auto; }
}

/* ============================================================
   Stage 4.3 — Companies House badges, banner, settings cog
   ============================================================ */
.ch-banner[hidden] { display: none !important; }
.ch-banner {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 16px;
  margin: 0 0 18px;
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
  font-size: 13px; color: var(--ink-soft);
}
.ch-banner-spinner {
  width: 14px; height: 14px; border-radius: 50%;
  border: 2px solid var(--hairline-2);
  border-top-color: var(--ink);
  animation: ch-spin 0.9s linear infinite;
  flex: 0 0 auto;
}
@keyframes ch-spin { to { transform: rotate(360deg); } }

/* DISSOLVED / Possible match badges on lead cards */
.ch-badge {
  display: inline-block;
  margin-left: 6px;
  padding: 2px 8px;
  font-family: var(--font-mono);
  font-size: 10px; letter-spacing: 0.08em; text-transform: uppercase;
  border-radius: 999px;
  vertical-align: middle;
  position: relative; top: -1px;
  font-weight: 500;
}
.ch-badge-dissolved {
  background: #E8E5DE; color: #6B6760;
  border: 1px solid rgba(10,10,10,0.06);
}
.ch-badge-maybe {
  background: #F4E8D6; color: #7A5A14;
  border: 1px solid rgba(122,90,20,0.18);
}

/* Settings cog button */
.settings-cog {
  display: inline-flex; align-items: center; justify-content: center;
  width: 36px; height: 36px;
  background: transparent;
  border: 1px solid var(--hairline-2);
  border-radius: 50%;
  color: var(--ink-soft);
  cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.15s;
}
.settings-cog:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); transform: rotate(20deg); }

/* Settings popover */
.settings-popover {
  position: absolute;
  margin-top: 8px;
  right: 0;
  min-width: 320px;
  background: #FFFFFF;
  border: 1px solid var(--hairline);
  border-radius: 14px;
  padding: 16px 18px;
  z-index: 50;
  box-shadow: 0 8px 24px rgba(10,10,10,0.06);
}
.settings-popover[hidden] { display: none !important; }
.settings-popover .settings-row + .settings-row {
  margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--hairline);
}
.settings-subrow { gap: 18px; }
.settings-subrow.settings-row { border-top: none; padding-top: 8px; margin-top: 8px; }
.settings-num { display: flex; flex-direction: column; gap: 4px; font-size: 12px; color: var(--muted); }
.settings-num input {
  width: 90px; padding: 6px 8px; border: 1px solid var(--hairline);
  border-radius: 8px; font: inherit; color: var(--ink); background: #FFFFFF;
}
.settings-num input:disabled { opacity: 0.5; cursor: not-allowed; }
.archive-reason-tag {
  display: inline-flex; align-items: center; padding: 3px 8px;
  font-size: 11px; font-weight: 600; border-radius: 999px;
  background: var(--pill-peach); color: var(--pill-peach-fg);
  border: 1px solid rgba(107,65,30,0.18); white-space: nowrap;
}
.settings-row { display: flex; gap: 12px; align-items: flex-start; }
.settings-row-text { flex: 1; min-width: 0; }
.settings-row-label {
  font-family: var(--font-body); font-weight: 500; font-size: 14px;
  color: var(--ink); line-height: 1.3;
}
.settings-row-help {
  margin-top: 4px;
  font-size: 12px; color: var(--muted); line-height: 1.4;
}

/* Toggle switch */
.switch { position: relative; display: inline-block; width: 40px; height: 22px; flex: 0 0 auto; margin-top: 2px; }
.switch input { opacity: 0; width: 0; height: 0; }
.switch-slider {
  position: absolute; inset: 0;
  background: var(--hairline-2);
  border-radius: 22px;
  transition: background 0.15s;
  cursor: pointer;
}
.switch-slider::before {
  content: "";
  position: absolute;
  left: 3px; top: 3px;
  width: 16px; height: 16px;
  background: #FFFFFF;
  border-radius: 50%;
  transition: transform 0.15s;
  box-shadow: 0 1px 2px rgba(10,10,10,0.15);
}
.switch input:checked + .switch-slider { background: var(--ink); }
.switch input:checked + .switch-slider::before { transform: translateX(18px); }

/* So popover positions relative to filter-shell-actions */
.filter-shell-head { position: relative; }
.filter-shell-actions { position: relative; }

.value-prefix {
  font-family: var(--font-mono); font-size: 14px; color: var(--ink); margin-right: 4px;
}
.value-input {
  padding: 7px 10px; font: 14px var(--font-mono); width: 7em;
  border: 1px solid var(--hairline-2); background: var(--bg-card);
  color: var(--ink); border-radius: var(--radius);
}
.value-input:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.value-input.notes-saved { border-color: var(--sage-fg); }

/* ============================================================
   Stage 6 — Two-column profile modal
   ============================================================ */

.modal { padding: 24px; }
.modal-panel {
  background: var(--cream);
  width: min(1480px, 95vw);
  max-width: 1480px;
  height: 90vh;
  max-height: 90vh;
  border: 1px solid var(--hairline);
  border-radius: 24px;
  overflow: hidden;
  display: flex; flex-direction: column;
  box-shadow: 0 24px 60px rgba(10,10,10,0.18);
}
.modal-body { padding: 0; overflow: hidden; flex: 1; display: flex; min-height: 0; }
.modal-close {
  position: absolute; top: 14px; right: 14px;
  background: rgba(255,255,255,0.92);
  backdrop-filter: blur(8px);
  border: 1px solid rgba(10,10,10,0.06);
  z-index: 5;
}
.modal-close:hover { background: #fff; }

/* Three-column grid: photo+map / call workspace / info sections */
.m5-grid {
  display: grid;
  grid-template-columns: 40% 30% 30%;
  width: 100%; height: 100%;
  min-height: 0;
}
.m5-left, .m5-middle, .m5-right {
  min-height: 0;
  min-width: 0;
}
.m5-left {
  display: grid;
  grid-template-rows: 1fr 1fr;
  border-right: 1px solid var(--hairline);
  background: var(--cream);
}
.m5-middle {
  display: flex; flex-direction: column;
  border-right: 1px solid var(--hairline);
  background: var(--cream-deeper);
  overflow-y: auto;
}
.m5-right {
  display: flex; flex-direction: column;
  background: var(--cream);
  overflow-y: auto;
}

/* LEFT — Photo pane (top half) */
.m5-photo-pane {
  display: flex; flex-direction: column;
  min-height: 0;
  padding: 16px 16px 8px;
  border-bottom: 1px solid var(--hairline);
}
.m5-photo-main {
  position: relative;
  flex: 1;
  min-height: 0;
  border-radius: 14px;
  overflow: hidden;
  background: var(--cream-deeper);
}
.m5-photo-main img {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center;
  display: block;
}
.m5-photo-placeholder {
  display: flex; align-items: center; justify-content: center;
  background: var(--pill-sage);
  width: 100%; height: 100%;
}
.m5-photo-placeholder .m5-hero-initial {
  font-family: var(--font-head); font-weight: 800;
  font-size: clamp(64px, 8vw, 96px);
  color: var(--pill-sage-fg);
  letter-spacing: -0.02em;
}
.m5-thumbs {
  display: flex; gap: 6px; margin-top: 10px;
  height: 56px; flex: 0 0 auto;
}
.m5-thumb {
  flex: 1; min-width: 0;
  height: 100%; padding: 0;
  border: 2px solid var(--hairline-2); border-radius: 8px;
  overflow: hidden; cursor: pointer; background: transparent;
  transition: border-color 0.15s;
}
.m5-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.m5-thumb:hover { border-color: var(--ink-soft); }
.m5-thumb.is-active { border-color: var(--ink); }

/* LEFT — Map pane (bottom half) */
.m5-map-pane {
  display: flex; flex-direction: column;
  min-height: 0;
  padding: 8px 16px 16px;
}
#m5-map-canvas {
  flex: 1;
  min-height: 0;
  border-radius: 14px;
  border: 1px solid var(--hairline);
  background: var(--cream-deeper);
  overflow: hidden;
  cursor: pointer;
}
.m5-map-link {
  display: inline-block; margin-top: 8px;
  font-size: 12px; color: var(--ink-soft);
  text-decoration: underline; text-underline-offset: 3px;
}
.m5-map-link:hover { color: var(--ink); }
.m5-map-placeholder {
  width: 100%; height: 100%;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 10px;
  font: 14px var(--font-body);
  color: var(--muted);
}
.m5-map-spinner {
  width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid var(--hairline-2);
  border-top-color: var(--ink);
  animation: ch-spin 0.9s linear infinite;
}
.m5-map-retry {
  background: transparent; border: 0; padding: 0;
  font: 13px var(--font-body); font-weight: 500;
  color: var(--ink); cursor: pointer;
  text-decoration: underline; text-underline-offset: 3px;
}
.m5-map-retry:hover { color: var(--ink-soft); }

/* ============================================================
   Polished Leaflet styling (modal + leads page)
   ============================================================ */

/* Map containers — rounded corners + clip child controls */
#m5-map-canvas, #map {
  border-radius: 12px;
  overflow: hidden;
}

/* Custom pin (.lh-pin) — divIcon wrapper */
.lh-pin {
  filter: drop-shadow(0 2px 4px rgba(0,0,0,0.18));
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  cursor: pointer;
}
.lh-pin:hover, .lh-pin:focus {
  transform: translateY(-3px);
}
.lh-pin svg { display: block; pointer-events: none; }

/* Zoom controls — top-right, white, hairline, ink */
.leaflet-top.leaflet-right { padding: 10px 10px 0 0; }
.leaflet-control-zoom {
  border: 1px solid var(--hairline-2) !important;
  border-radius: 8px !important;
  overflow: hidden;
  box-shadow: 0 1px 3px rgba(0,0,0,0.08) !important;
  background: #FFFFFF;
}
.leaflet-control-zoom a {
  width: 32px !important; height: 32px !important;
  line-height: 32px !important;
  background: #FFFFFF !important;
  color: var(--ink) !important;
  font: 600 18px/32px var(--font-body) !important;
  border: 0 !important;
  border-radius: 0 !important;
  transition: background 0.15s ease-out;
}
.leaflet-control-zoom a + a {
  border-top: 1px solid var(--hairline) !important;
}
.leaflet-control-zoom a:hover {
  background: var(--cream) !important;
  color: var(--ink) !important;
}
.leaflet-control-zoom-in   { border-radius: 8px 8px 0 0 !important; }
.leaflet-control-zoom-out  { border-radius: 0 0 8px 8px !important; }

/* Attribution — small + muted */
.leaflet-control-attribution {
  font: 9px/1.2 var(--font-body) !important;
  color: var(--muted) !important;
  background: rgba(255, 255, 255, 0.7) !important;
  padding: 2px 6px !important;
  border-radius: 4px 0 0 0 !important;
  letter-spacing: 0;
}
.leaflet-control-attribution a { color: var(--ink-soft) !important; text-decoration: none; }
.leaflet-control-attribution a:hover { text-decoration: underline; }

/* "Open in Google Maps ↗" floating button (top-left) */
.lh-map-openmaps {
  position: absolute;
  top: 10px; left: 10px;
  z-index: 600;
  display: inline-flex; align-items: center;
  padding: 7px 12px;
  background: #FFFFFF;
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
  font: 11px var(--font-body); font-weight: 500;
  letter-spacing: 0.02em;
  color: var(--ink); text-decoration: none;
  box-shadow: 0 1px 3px rgba(0,0,0,0.08);
  transition: background 0.15s, transform 0.15s;
}
.lh-map-openmaps:hover {
  background: var(--cream);
  transform: translateY(-1px);
}

/* Scroll-zoom hint overlay (centered pill, fades out on click) */
.lh-map-hint {
  position: absolute; inset: 0;
  z-index: 500;
  display: flex; align-items: center; justify-content: center;
  pointer-events: none;
  opacity: 1;
  transition: opacity 0.3s ease-out;
}
.lh-map-hint > span {
  background: rgba(255, 255, 255, 0.94);
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
  padding: 8px 16px;
  font: 12px var(--font-body); font-weight: 500;
  color: var(--ink);
  letter-spacing: 0.02em;
  box-shadow: 0 2px 8px rgba(0,0,0,0.08);
  backdrop-filter: blur(4px);
}
.lh-map-hint.is-hidden { opacity: 0; }

/* Pin popup */
.leaflet-popup.lh-popup .leaflet-popup-content-wrapper {
  background: var(--cream);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.10);
  padding: 0;
}
.leaflet-popup.lh-popup .leaflet-popup-content {
  margin: 10px 14px;
  font-family: var(--font-body);
}
.leaflet-popup.lh-popup .leaflet-popup-tip {
  background: var(--cream);
  border: 1px solid var(--hairline);
  box-shadow: none;
}
.lh-pop-name {
  font-family: var(--font-body); font-weight: 600;
  font-size: 14px; color: var(--ink);
  margin-bottom: 4px;
}
.lh-pop-link {
  font-family: var(--font-body); font-size: 12px;
  color: var(--ink-soft);
  text-decoration: underline; text-underline-offset: 3px;
}
.lh-pop-link:hover { color: var(--ink); }

/* Marker cluster — match brand */
.marker-cluster-small,
.marker-cluster-medium,
.marker-cluster-large {
  background: rgba(10,10,10,0.08) !important;
}
.marker-cluster-small div,
.marker-cluster-medium div,
.marker-cluster-large div {
  background: var(--ink) !important;
  color: var(--cream) !important;
  font-family: var(--font-body) !important;
  font-weight: 500 !important;
  border: 2px solid #FFFFFF !important;
  box-shadow: 0 2px 4px rgba(0,0,0,0.12);
}

/* RIGHT — Header */
.m5-head {
  display: flex; gap: 14px; align-items: flex-start;
  padding: 18px 24px 12px;
  border-bottom: 1px solid var(--hairline);
}
.m5-head-text { flex: 1; min-width: 0; }
.m5-title {
  font-family: var(--font-head); font-weight: 800;
  font-size: clamp(20px, 2.2vw, 26px);
  line-height: 1.12; letter-spacing: -0.02em;
  margin: 0 0 4px;
}
.m5-cat {
  font-family: var(--font-body); font-weight: 500;
  font-size: 11px; letter-spacing: 0.08em;
  color: var(--muted);
  margin: 4px 0 6px;
}
.m5-rating {
  font-family: var(--font-mono); font-size: 14px;
  color: var(--ink-soft);
}
.m5-star { color: #C99E2B; font-family: var(--font-body); }
.m5-head-status { flex: 0 0 auto; padding-top: 4px; }
.m5-head-status .status-select { height: 32px; font-size: 12px; padding-left: 14px; padding-right: 26px; }

/* RIGHT — Actions */
.m5-actions {
  display: grid;
  grid-template-columns: 1fr 1fr 1fr;
  gap: 8px;
  padding: 10px 24px 12px;
  border-bottom: 1px solid var(--hairline);
}
.m5-action {
  height: 40px; padding: 0 14px; border-radius: 999px;
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--ink); color: var(--cream);
  font: 13px var(--font-body); font-weight: 500; letter-spacing: 0.02em;
  text-decoration: none; white-space: nowrap;
  border: 1px solid var(--ink);
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.18);
  transition: background 0.15s, transform 0.15s;
}
.m5-action:hover { background: #000; transform: translateY(-1px); }
.m5-action.is-disabled { opacity: 0.35; pointer-events: none; }
.m5-action svg { flex: 0 0 auto; }

/* RIGHT — Sections */
.m5-sections { padding: 0; }
.m5-sec {
  padding: 12px 24px;
  border-bottom: 1px solid var(--hairline);
}
.m5-sec:last-child { border-bottom: 0; }
.m5-sec-h {
  font-family: var(--font-body); font-weight: 500;
  font-size: 10px; letter-spacing: 0.1em; text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 8px;
}
.m5-sec-body .m5-row { padding: 3px 0; }
.m5-sec-body .m5-row + .m5-row { padding-top: 4px; }
.m5-sec-h {
  font-family: var(--font-body); font-weight: 500;
  font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 12px;
}
.m5-sec-body {}

.m5-row {
  display: flex; gap: 14px; padding: 6px 0;
  align-items: baseline;
  font-size: 14px;
}
.m5-label {
  flex: 0 0 90px;
  font-family: var(--font-body); font-size: 11px;
  letter-spacing: 0.05em; text-transform: uppercase;
  color: var(--muted); font-weight: 500;
}
.m5-row .mono { font-family: var(--font-mono); font-size: 13px; }
.m5-row.m5-meta { font-size: 13px; padding: 4px 0; }

/* CH section */
.m5-ch { font-size: 14px; }
.m5-ch-line {
  display: flex; align-items: baseline; gap: 10px;
  padding: 3px 0;
}
.m5-ch-line + .m5-ch-line { padding-top: 2px; }
.m5-ch-line .m5-label { min-width: 110px; }

/* Hours */
.m5-hours-toggle {
  background: transparent; border: 0; padding: 6px 0;
  font: inherit; color: var(--ink); cursor: pointer;
  display: flex; align-items: center; gap: 8px; width: 100%; text-align: left;
}
.m5-hours-today { display: flex; align-items: center; gap: 8px; flex: 1; font-size: 14px; }
.m5-hours-today .is-open  { color: var(--pill-sage-fg); font-weight: 500; }
.m5-hours-today .is-closed { color: var(--pill-terra-fg); font-weight: 500; }
.m5-hours-chev { color: var(--muted); transition: transform 0.15s; }
.m5-hours-toggle.is-open .m5-hours-chev { transform: rotate(180deg); }
.m5-hours-list { margin-top: 10px; }
.m5-hours-list[hidden] { display: none !important; }
.m5-hours-row {
  display: flex; justify-content: space-between; padding: 5px 0;
  font-size: 13px;
  border-top: 1px solid var(--hairline);
}
.m5-hours-row:first-child { border-top: 0; }
.m5-hours-row.is-today { font-weight: 500; }
.m5-hours-day {
  font-family: var(--font-body); color: var(--ink-soft);
  width: 60px; flex: 0 0 60px;
  text-transform: uppercase; letter-spacing: 0.05em; font-size: 11px;
  padding-top: 2px;
}
.m5-hours-time { font-family: var(--font-mono); color: var(--ink); }

/* Amenity chips */
.m5-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.m5-chip {
  display: inline-flex; align-items: center;
  padding: 5px 11px;
  font: 12px var(--font-body); font-weight: 500;
  color: var(--ink-soft);
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
}

/* Recommendation cards in the modal */
.m5-recs { display: flex; flex-direction: column; gap: 10px; }
.m5-rec {
  padding: 10px 12px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 10px;
}
.m5-rec-head {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 6px;
}
.m5-rec-glyph { font-size: 13px; }
.m5-rec-name {
  flex: 1; min-width: 0;
  font-family: var(--font-head); font-weight: 800; font-size: 15px;
  color: var(--ink); letter-spacing: -0.01em;
}
.m5-rec-score {
  font-size: 12px; color: var(--ink-soft); font-weight: 500;
}
.m5-rec-bar {
  height: 4px; background: var(--hairline);
  border-radius: 2px; overflow: hidden;
  margin-bottom: 8px;
}
.m5-rec-bar > span {
  display: block; height: 100%;
  background: var(--ink);
  transition: width 0.3s ease-out;
}
.m5-rec-reason {
  font-family: var(--font-body); font-size: 13px;
  color: var(--ink-soft); line-height: 1.4;
}
.m5-rec.svc-web    { border-left: 3px solid var(--pill-sage-fg); }
.m5-rec.svc-reviews { border-left: 3px solid var(--pill-lav-fg); }
.m5-rec.svc-email   { border-left: 3px solid var(--pill-peach-fg); }
.m5-rec.svc-command { border-left: 3px solid var(--pill-sky-fg); }
.m5-rec.svc-ads     { border-left: 3px solid var(--pill-gold-fg); }
.m5-rec.svc-social  { border-left: 3px solid var(--pill-stone-fg); }

/* Recent review quote */
.m5-quote {
  margin: 0; padding: 10px 14px;
  background: var(--bg-card);
  border-left: 3px solid var(--hairline-2);
  border-radius: 4px;
}
.m5-quote-text {
  margin: 0;
  font-family: var(--font-head); font-style: italic;
  font-size: 14px; line-height: 1.5; color: var(--ink);
}
.m5-quote-attr {
  margin-top: 6px;
  font: 12px var(--font-body); color: var(--ink-soft);
}

/* Notes + value */
.m5-field-label {
  display: block;
  font-family: var(--font-body); font-size: 11px;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--muted); font-weight: 500;
  margin: 4px 0 6px;
}
.m5-value-row {
  display: flex; align-items: center; gap: 12px;
  margin-top: 8px;
}
.m5-value-row .m5-field-label { margin: 0; }
.m5-notes { width: 100%; }
.m5-notes {
  width: 100%; padding: 10px 12px;
  border: 1px solid var(--hairline-2); border-radius: 10px;
  font: 14px var(--font-body); background: var(--bg-card); color: var(--ink);
  resize: vertical;
}
.m5-notes:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.m5-value-wrap {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 12px;
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: 10px;
}
.m5-value-wrap .value-prefix { font-family: var(--font-mono); color: var(--ink-soft); }
.m5-value-wrap .value-input {
  border: 0; background: transparent;
  height: 32px; padding: 0;
  font: 14px var(--font-mono); color: var(--ink);
  width: 7em;
}
.m5-value-wrap .value-input:focus { outline: none; }
.m5-value-wrap:focus-within { border-color: var(--ink); }

/* =============================================================
   COLD-CALL WORKSPACE (modal middle column)
   ============================================================= */
.cw-root { padding: 14px 16px 18px; display: flex; flex-direction: column; gap: 12px; }
.cw-head {
  font-family: var(--font-head);
  font-size: 18px; font-weight: 600;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 0;
}

/* Sticky timer + start/end-call bar */
.cw-timerbar {
  position: sticky; top: 0; z-index: 3;
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
  padding: 10px 12px;
  background: var(--cream);
  border: 1px solid var(--hairline);
  border-radius: 12px;
  box-shadow: 0 1px 0 var(--hairline);
}
.cw-timer-readout {
  font-family: var(--font-body);
  font-variant-numeric: tabular-nums;
  font-size: 18px; font-weight: 600;
  color: var(--ink);
  letter-spacing: 0.04em;
}
.cw-timer-readout.is-live { color: #B0392C; }
.cw-callbtn {
  display: inline-flex; align-items: center; gap: 6px;
  height: 36px; padding: 0 16px;
  background: var(--ink); color: var(--cream);
  border: 0; border-radius: 999px;
  font: 600 13px var(--font-body);
  cursor: pointer;
  text-decoration: none;
}
.cw-callbtn:hover { background: var(--ink-soft); color: #fff; }
.cw-callbtn.is-active { background: #B0392C; }
.cw-callbtn.is-active:hover { background: #8E2C20; }
.cw-callbtn[disabled] { opacity: 0.5; cursor: not-allowed; }

/* Collapsible section block */
.cw-block {
  border: 1px solid var(--hairline);
  border-radius: 12px;
  background: var(--cream);
  overflow: hidden;
}
.cw-block-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 10px 14px;
  cursor: pointer;
  background: var(--cream);
  border: 0; width: 100%;
  text-align: left;
  font: 600 13px var(--font-body);
  color: var(--ink);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.cw-block-head .cw-chev { font-size: 12px; color: var(--ink-soft); transition: transform 0.15s; }
.cw-block.is-collapsed .cw-chev { transform: rotate(-90deg); }
.cw-block-body { padding: 10px 14px 14px; border-top: 1px solid var(--hairline); }
.cw-block.is-collapsed .cw-block-body { display: none; }

/* Pre-call checklist rows */
.cw-check { display: flex; flex-direction: column; gap: 6px; margin: 0; padding: 0; list-style: none; }
.cw-check li {
  display: flex; align-items: flex-start; gap: 8px;
  font-size: 13px; line-height: 1.45;
  color: var(--ink);
}
.cw-check .cw-tick { color: #2F7D44; font-weight: 700; flex: 0 0 14px; }
.cw-check .cw-cross { color: #B0392C; font-weight: 700; flex: 0 0 14px; }
.cw-check .cw-question { color: #A07300; font-weight: 700; flex: 0 0 14px; }
.cw-check .cw-key { color: var(--ink-soft); margin-right: 4px; }
.cw-check .cw-val { color: var(--ink); word-break: break-word; }
.cw-check .cw-muted { color: var(--muted); font-style: italic; }

.cw-ctps-warn {
  display: flex; flex-direction: column; gap: 8px;
  margin-top: 12px; padding: 10px 12px;
  background: #FFF6E6; border: 1px solid #E8C97A;
  border-radius: 10px;
  font-size: 12.5px; line-height: 1.5;
  color: #5A3F00;
}
.cw-ctps-warn .cw-ctps-icon { font-weight: 700; }
.cw-ctps-warn .cw-ctps-btn {
  align-self: flex-start;
  display: inline-flex; align-items: center; gap: 4px;
  background: #5A3F00; color: #FFF6E6;
  font: 600 12px var(--font-body);
  height: 28px; padding: 0 12px; border: 0; border-radius: 999px;
  text-decoration: none; cursor: pointer;
}
.cw-ctps-warn .cw-ctps-btn:hover { background: #8B6300; }

/* Script tabs */
.cw-tabs {
  display: flex; gap: 0; flex-wrap: wrap;
  border-bottom: 1px solid var(--hairline);
  margin-bottom: 10px;
}
.cw-tab {
  flex: 1 1 auto;
  background: transparent; border: 0;
  padding: 8px 10px;
  font: 600 11.5px var(--font-body);
  letter-spacing: 0.05em;
  color: var(--ink-soft);
  cursor: pointer;
  border-bottom: 2px solid transparent;
  text-transform: uppercase;
  transition: color 0.12s, border-color 0.12s;
}
.cw-tab:hover { color: var(--ink); }
.cw-tab.is-active {
  color: var(--ink);
  border-bottom-color: var(--ink);
}

.cw-script-area {
  width: 100%;
  min-height: 280px;
  background: var(--cream);
  border: 1px solid var(--hairline);
  border-radius: 10px;
  padding: 12px 14px;
  font: 13.5px/1.55 var(--font-body);
  color: var(--ink);
  resize: vertical;
  white-space: pre-wrap;
}
.cw-script-area:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.cw-script-area.is-saved { border-color: var(--sage-fg); }
.cw-script-foot {
  display: flex; align-items: center; justify-content: space-between;
  margin-top: 6px;
  font-size: 12px; color: var(--muted);
}
.cw-reset-btn {
  background: transparent; border: 0; padding: 0;
  font: 12px var(--font-body); color: var(--ink-soft);
  text-decoration: underline; text-underline-offset: 3px;
  cursor: pointer;
}
.cw-reset-btn:hover { color: var(--ink); }

/* Discovery prompts list (within Discovery tab) */
.cw-discovery-prompts { margin: 0 0 10px; padding-left: 18px; font-size: 13px; color: var(--ink); }
.cw-discovery-prompts li { margin-bottom: 4px; }

/* Live notes textarea + tag pills */
.cw-tagrow { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 6px; }
.cw-tag {
  display: inline-flex; align-items: center; gap: 4px;
  height: 26px; padding: 0 10px;
  font: 600 11.5px var(--font-body);
  background: var(--cream); color: var(--ink);
  border: 1px solid var(--hairline-2);
  border-radius: 999px; cursor: pointer;
}
.cw-tag:hover { background: var(--cream-deeper); }
.cw-tag.tag-pain    { background: #FDECEA; border-color: #F2B8B0; color: #8E2C20; }
.cw-tag.tag-goal    { background: #E8F1FF; border-color: #BBD1F2; color: #244B8C; }
.cw-tag.tag-budget  { background: #E8F4EA; border-color: #B6D6BA; color: #2F4A33; }
.cw-tag.tag-timing  { background: #FFF6E6; border-color: #E8C97A; color: #5A3F00; }
.cw-tag.tag-dm      { background: #F1E8FF; border-color: #C7B0E8; color: #4B2E80; }
.cw-tag.tag-cb      { background: #ECECEC; border-color: #C8C8C8; color: #3A3A3A; }

.cw-notes {
  width: 100%; min-height: 140px;
  background: var(--cream); border: 1px solid var(--hairline);
  border-radius: 10px; padding: 12px;
  font: 14px/1.55 var(--font-body); color: var(--ink);
  resize: vertical;
}
.cw-notes:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.cw-notes-status { font-size: 11.5px; color: var(--muted); margin-top: 4px; text-align: right; }

/* Outcome logger */
.cw-outcomes { display: grid; gap: 6px; margin-top: 8px; }
.cw-outcome-btn {
  display: flex; align-items: center; gap: 8px;
  width: 100%; padding: 9px 12px;
  background: var(--cream); border: 1px solid var(--hairline-2);
  border-radius: 10px; cursor: pointer;
  font: 13px var(--font-body); color: var(--ink); text-align: left;
}
.cw-outcome-btn:hover { background: var(--cream-deeper); }
.cw-outcome-btn .cw-out-dot { width: 8px; height: 8px; border-radius: 50%; flex: 0 0 8px; }
.cw-outcome-btn[data-out="booked"] .cw-out-dot       { background: #2F7D44; }
.cw-outcome-btn[data-out="email_requested"] .cw-out-dot { background: #244B8C; }
.cw-outcome-btn[data-out="follow_up_later"] .cw-out-dot { background: #A07300; }
.cw-outcome-btn[data-out="not_interested"] .cw-out-dot  { background: #B0392C; }
.cw-outcome-btn[data-out="voicemail"] .cw-out-dot       { background: #8B6300; }
.cw-outcome-btn[data-out="callback"] .cw-out-dot        { background: #4B2E80; }

/* Right-column call history timeline */
.cw-history { display: flex; flex-direction: column; gap: 8px; }
.cw-history-item {
  border: 1px solid var(--hairline);
  border-radius: 10px;
  background: var(--cream);
}
.cw-history-head {
  display: flex; align-items: center; justify-content: space-between;
  gap: 8px;
  padding: 10px 12px;
  width: 100%;
  background: transparent; border: 0;
  font: 13px var(--font-body); color: var(--ink);
  cursor: pointer; text-align: left;
}
.cw-history-head:hover { background: var(--cream-deeper); }
.cw-history-meta { font-size: 11.5px; color: var(--muted); margin-top: 2px; }
.cw-history-body { padding: 0 12px 12px; border-top: 1px solid var(--hairline); font-size: 13px; color: var(--ink); }
.cw-history-body p { margin: 8px 0; white-space: pre-wrap; }
.cw-history-item.is-collapsed .cw-history-body { display: none; }
.cw-history-empty { color: var(--muted); font-size: 13px; font-style: italic; }

/* UK legal banner (one-time) */
.cw-legal-overlay {
  position: fixed; inset: 0; z-index: 1200;
  background: rgba(10,10,10,0.55);
  display: flex; align-items: center; justify-content: center;
  padding: 24px;
}
.cw-legal-overlay[hidden] { display: none; }
.cw-legal-card {
  max-width: 540px; width: 100%;
  background: var(--cream); border: 1px solid var(--hairline);
  border-radius: 18px;
  padding: 28px;
  box-shadow: 0 24px 60px rgba(10,10,10,0.32);
}
.cw-legal-card h2 { font-family: var(--font-head); font-size: 22px; margin: 0 0 12px; }
.cw-legal-card ul { padding-left: 18px; margin: 10px 0 14px; }
.cw-legal-card li { margin-bottom: 6px; font-size: 14px; line-height: 1.5; }
.cw-legal-card a { color: var(--ink); text-decoration: underline; }
.cw-legal-confirm {
  margin-top: 12px; padding: 10px 18px;
  background: var(--ink); color: var(--cream);
  border: 0; border-radius: 999px;
  font: 600 14px var(--font-body); cursor: pointer;
}
.cw-legal-confirm:hover { background: var(--ink-soft); }

/* Tab toggle (<1200px wide screens) */
.cw-tabswitch {
  display: none;
  gap: 4px;
  padding: 8px 18px 0;
  background: var(--cream);
  border-bottom: 1px solid var(--hairline);
}
.cw-tabswitch button {
  flex: 1; padding: 8px 0;
  background: transparent; border: 0;
  font: 600 12px var(--font-body); letter-spacing: 0.04em;
  color: var(--ink-soft); cursor: pointer;
  border-bottom: 2px solid transparent;
  text-transform: uppercase;
}
.cw-tabswitch button.is-active { color: var(--ink); border-bottom-color: var(--ink); }

@media (max-width: 1200px) {
  .m5-grid { grid-template-columns: 50% 50%; }
  .m5-middle { display: none; border-right: 0; }
  .m5-grid.show-middle .m5-middle { display: flex; }
  .m5-grid.show-middle .m5-right  { display: none; }
  .cw-tabswitch { display: flex; }
}

/* MOBILE: single column, scroll, sticky actions */
@media (max-width: 768px) {
  .modal { padding: 0; align-items: stretch; }
  .modal-panel { width: 100%; max-width: 100%; height: 100vh; max-height: 100vh; border-radius: 0; border: 0; }
  .modal-body { display: block; overflow-y: auto; }
  .m5-grid { display: block; height: auto; }
  .m5-left {
    display: block;
    border-right: 0;
    border-bottom: 1px solid var(--hairline);
  }
  .m5-middle, .m5-right { overflow-y: visible; display: block; border-right: 0; }
  .m5-grid.show-middle .m5-middle { display: block; }
  .m5-grid.show-middle .m5-right  { display: block; }
  .cw-timerbar { position: static; }
  .cw-tabswitch { display: flex; position: sticky; top: 0; z-index: 2; }
  .m5-photo-pane { padding: 12px 14px 6px; }
  .m5-photo-main { aspect-ratio: 16/10; flex: none; }
  .m5-map-pane { padding: 6px 14px 12px; }
  #m5-map-canvas { height: 200px; flex: none; }
  .m5-head { padding: 16px 18px 12px; }
  .m5-head-status { display: none; }
  .m5-actions {
    padding: 10px 18px;
    grid-template-columns: 1fr 1fr;
    position: sticky; top: 0; z-index: 4;
    background: var(--cream);
  }
  .m5-actions .m5-action:nth-child(3) { grid-column: 1 / -1; }
  .m5-sec { padding: 14px 18px; }
  .m5-label { flex: 0 0 80px; }
}

/* Filter strip row 1 wraps better on phone */
@media (max-width: 540px) {
  .leads-section .filter-row:first-child { flex-direction: column; align-items: stretch; }
  .leads-section .view-toggle { align-self: flex-end; }
  /* In column-flex, the desktop's flex-basis 280px becomes HEIGHT — nuke it. */
  .leads-section .filter-row:first-child input[type="search"] {
    flex: 0 0 auto;
    width: 100%;
    height: 44px;
  }
}

/* =============================================================
   AUTOCOMPLETE WIDGET
   ============================================================= */
.ac-wrap { position: relative; display: inline-block; }
.scrape-form .ac-wrap { flex: 1 1 240px; display: block; }
.scrape-form .ac-wrap input[type="text"] { width: 100%; }
.multi-field .ac-wrap { display: block; width: 100%; }

.ac-dropdown {
  position: absolute; top: calc(100% + 4px); left: 0; right: 0;
  z-index: 60;
  background: #fff;
  border: 1px solid var(--hairline-2);
  border-radius: 12px;
  box-shadow: 0 8px 24px rgba(10,10,10,0.10);
  max-height: 320px; overflow-y: auto;
  padding: 4px 0;
}
.ac-dropdown[hidden] { display: none; }
.ac-item {
  display: flex; align-items: center; gap: 8px;
  height: 40px; padding: 0 14px;
  font: 14px var(--font-body); color: var(--ink-soft);
  cursor: pointer;
  border-left: 3px solid transparent;
  transition: background 0.1s, color 0.1s;
}
.ac-item:hover { background: var(--cream); color: var(--ink); }
.ac-item.is-active {
  background: var(--cream);
  color: var(--ink);
  border-left-color: var(--ink);
}
.ac-item .ac-text b {
  color: var(--ink); font-weight: 600;
}
.ac-item .ac-recent {
  display: inline-flex; align-items: center; justify-content: center;
  width: 16px; height: 16px;
  font-size: 11px; color: var(--muted);
  flex-shrink: 0;
}

@media (max-width: 540px) {
  .ac-dropdown {
    position: fixed; left: 8px; right: 8px; top: auto; bottom: 8px;
    max-height: 50vh;
    border-radius: 16px;
    box-shadow: 0 -8px 24px rgba(10,10,10,0.18);
  }
  .ac-item { height: 48px; font-size: 16px; }
}

/* =============================================================
   FILTER GROUPS (8-group expanded panel)
   ============================================================= */
.filter-group {
  padding: 12px 0;
  border-bottom: 1px solid var(--hairline);
}
.filter-group:last-of-type { border-bottom: 0; }
.filter-group-head {
  display: flex; align-items: center; gap: 8px;
  margin-bottom: 10px;
}
.filter-group-title {
  font: 11px var(--font-body); font-weight: 600;
  letter-spacing: 0.10em; text-transform: uppercase;
  color: var(--ink);
}
.filter-row.two-col { gap: 14px; }
.filter-row.two-col > * { flex: 1 1 240px; min-width: 0; }
.filter-row.checkrow { gap: 18px; }
.checkfield {
  display: inline-flex; align-items: center; gap: 7px;
  font: 13px var(--font-body); color: var(--ink-soft); cursor: pointer;
}
.checkfield input[type="checkbox"] { accent-color: var(--ink); }

.multi-field { display: flex; flex-direction: column; gap: 6px; }
.multi-chips {
  display: flex; flex-wrap: wrap; gap: 6px;
  min-height: 0;
}
.multi-chips:empty { display: none; }
.chip {
  display: inline-flex; align-items: center; gap: 6px;
  background: var(--ink); color: var(--cream);
  padding: 4px 6px 4px 10px;
  border-radius: var(--radius-pill);
  font: 12px var(--font-mono);
  letter-spacing: 0.02em;
}
.chip-x {
  background: transparent; border: 0; color: var(--cream);
  width: 18px; height: 18px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  cursor: pointer; padding: 0; font: 16px/1 var(--font-body);
  opacity: 0.75; transition: background 0.15s, opacity 0.15s;
}
.chip-x:hover { background: rgba(255,255,255,0.18); opacity: 1; }

.multi-input {
  width: 100%; height: 40px; padding: 0 14px;
  font: 14px var(--font-body);
  background: var(--cream);
  border: 1px solid var(--hairline-2);
  color: var(--ink); border-radius: 10px;
}
.multi-input:focus { outline: none; border-color: var(--ink); }

.num-field { display: flex; flex-direction: column; gap: 6px; }
.num-field input[type="number"] {
  height: 40px; padding: 0 14px;
  font: 14px var(--font-mono);
  background: var(--cream);
  border: 1px solid var(--hairline-2);
  color: var(--ink); border-radius: 10px;
}
.num-field input[type="number"]:focus { outline: none; border-color: var(--ink); }

/* Filter count badge on the toggle */
.filter-count-badge {
  display: inline-flex; align-items: center; justify-content: center;
  min-width: 18px; height: 18px;
  padding: 0 5px;
  margin-left: 4px;
  background: var(--ink);
  color: var(--cream);
  font: 11px var(--font-mono); font-weight: 500;
  border-radius: 9px;
  letter-spacing: 0;
}
.filter-count-badge[hidden] { display: none; }
.filter-toggle:hover .filter-count-badge {
  background: var(--cream); color: var(--ink);
}

/* =============================================================
   SMART PRESETS
   ============================================================= */
.preset-row {
  display: flex; flex-wrap: wrap; gap: 8px;
  align-items: center;
}
.preset-pill {
  background: var(--cream); border: 1px solid var(--hairline-2);
  padding: 7px 14px;
  border-radius: var(--radius-pill);
  font: 12px var(--font-body); font-weight: 500;
  color: var(--ink); cursor: pointer;
  transition: background 0.15s, border-color 0.15s, transform 0.1s;
  display: inline-flex; align-items: center; gap: 6px;
}
.preset-pill:hover { border-color: var(--ink); background: #fff; }
.preset-pill:active { transform: scale(0.97); }
.preset-pill.is-active {
  background: var(--ink); color: var(--cream); border-color: var(--ink);
}
.preset-save {
  background: transparent; border: 1px dashed var(--hairline-2);
  padding: 7px 12px; border-radius: var(--radius-pill);
  font: 12px var(--font-body); color: var(--muted);
  cursor: pointer; transition: color 0.15s, border-color 0.15s;
  margin-left: auto;
}
.preset-save:hover { color: var(--ink); border-color: var(--ink); }
.preset-divider {
  width: 1px; height: 22px; background: var(--hairline-2);
}
.preset-saved {
  background: #FBF6E8; border-color: #E8DDB0; color: #6B5310;
}
.preset-saved:hover { background: #FFF4D8; border-color: #C9B36C; }
.preset-x {
  background: transparent; border: 0; color: inherit;
  width: 18px; height: 18px;
  display: inline-flex; align-items: center; justify-content: center;
  border-radius: 50%; cursor: pointer; padding: 0;
  font: 16px/1 var(--font-body); opacity: 0.55;
  margin-left: 2px;
}
.preset-x:hover { opacity: 1; background: rgba(0,0,0,0.06); }


/* ============================================================
   BOOKED-IN CARD (variant of .lead-card)
   ============================================================ */
.lead-card-booked .lc-booked-block {
  display: flex; flex-direction: column; gap: 6px;
  min-width: 200px;
}
.booked-dt {
  height: 36px; padding: 0 10px; font: 13px var(--font-mono);
  background: var(--cream); border: 1px solid var(--hairline-2);
  color: var(--ink); border-radius: 8px;
}
.booked-dt:focus { outline: 2px solid var(--ink); outline-offset: 1px; }
.booked-cd {
  font: 12px var(--font-mono); font-weight: 500; letter-spacing: 0.02em;
  padding: 3px 9px; border-radius: 999px;
  display: inline-flex; align-items: center;
  align-self: flex-start;
}
.booked-cd-future { background: var(--sage-bg); color: var(--sage-fg); }
.booked-cd-soon   { background: var(--gold-bg); color: var(--gold-fg); }
.booked-cd-past   { background: var(--terra-bg); color: var(--terra-fg); }
.action-row-thin {
  display: flex; gap: 6px;
}
.action-row-thin .btn-action { height: 30px; font-size: 12px; padding: 0 12px; }

/* ============================================================
   WON KPI cards (replaces won-hero)
   ============================================================ */
.won-kpis[hidden] { display: none !important; }
.won-kpis {
  display: grid; grid-template-columns: 1fr 1fr; gap: 16px;
  margin-bottom: 24px;
}
.won-kpi {
  background: var(--sage-bg);
  border: 1px solid rgba(47, 74, 51, 0.15);
  border-radius: 14px;
  padding: 22px 26px;
}
.won-kpi-label {
  font: 11px var(--font-body); font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--sage-fg); margin-bottom: 6px;
}
.won-kpi-value {
  font: 44px var(--font-head); font-weight: 500;
  color: var(--ink); display: flex; align-items: baseline; gap: 2px;
}
.won-kpi-value .prefix { font-size: 28px; color: var(--ink-soft); margin-right: 2px; }
.won-kpi-value .suffix { font: 16px var(--font-body); color: var(--ink-soft); }
.won-kpi-sub {
  font: 13px var(--font-body); color: var(--sage-fg); margin-top: 4px;
}
@media (max-width: 720px) {
  .won-kpis { grid-template-columns: 1fr; }
  .won-kpi-value { font-size: 36px; }
}

/* ============================================================
   EMAILS — top control bar + three-column inbox
   ============================================================ */

/* Top bar (mirrors .scrape-bar height/margin so the page stack
   matches /leads exactly — no Y-shift when swapping tabs). */
.email-topbar {
  margin: 0 0 32px;
  padding: 0;
}
.email-topbar-row {
  display: flex; gap: 10px; align-items: stretch;
}
.email-search {
  position: relative; flex: 1 1 0; min-width: 0;
  display: flex; align-items: stretch;
}
.email-search-icon {
  position: absolute; left: 16px; top: 50%; transform: translateY(-50%);
  color: var(--muted); pointer-events: none;
}
.email-search input {
  width: 100%; height: 44px; padding: 0 14px 0 40px;
  font: 15px var(--font-body);
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
  color: var(--ink);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.email-search input::placeholder { color: var(--muted); }
.email-search input:focus {
  outline: none; border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(10,10,10,0.04);
}
.email-search input:disabled {
  cursor: text; opacity: 0.85;
}
.email-recipient {
  position: relative; flex: 0 0 auto;
}
.email-recipient select {
  height: 44px; padding: 0 36px 0 16px;
  font: 14px var(--font-body); color: var(--ink);
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
  appearance: none;
  cursor: pointer;
  min-width: 220px;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' fill='none' stroke='%238A867E' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='M3 5l3 3 3-3'/></svg>");
  background-repeat: no-repeat;
  background-position: right 14px center;
  background-size: 12px 12px;
}
.email-recipient select:hover { border-color: var(--ink); }
.email-recipient select:focus {
  outline: none; border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(10,10,10,0.04);
}
.email-compose {
  height: 44px; padding: 0 22px;
  display: inline-flex; align-items: center; gap: 8px;
  flex: 0 0 auto;
}
.email-compose svg { color: var(--cream); }

@media (max-width: 760px) {
  .email-topbar-row { flex-wrap: wrap; gap: 8px; }
  .email-recipient, .email-compose { flex: 1 1 auto; }
  .email-recipient select { min-width: 0; width: 100%; }
  .email-compose { justify-content: center; }
}

/* Three-column inbox */
.inbox {
  display: grid;
  grid-template-columns: 200px 400px 1fr;
  gap: 0;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 14px;
  overflow: hidden;
  min-height: 540px;
  box-shadow: 0 1px 0 rgba(10,10,10,0.02);
}

/* — Folders — */
.inbox-folders {
  padding: 18px 12px 22px;
  border-right: 1px solid var(--hairline);
  background: var(--cream-deeper);
  overflow-y: auto;
}
.folder-list {
  list-style: none; padding: 0; margin: 0 0 10px;
  display: flex; flex-direction: column; gap: 2px;
}
.folder {
  width: 100%;
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px; border-radius: 8px;
  background: transparent; border: 0; cursor: pointer;
  text-align: left;
  font: 14px var(--font-body); color: var(--ink-soft);
  transition: background 0.12s ease-out, color 0.12s ease-out;
}
.folder:hover { background: rgba(10,10,10,0.045); color: var(--ink); }
.folder.is-active {
  background: var(--ink); color: var(--cream);
}
.folder.is-active .folder-count { color: var(--cream); opacity: 0.75; }
.folder.is-active .folder-dot { box-shadow: 0 0 0 2px var(--ink); }
.folder-icon { font-size: 13px; line-height: 1; flex: 0 0 auto; }
.folder-name {
  flex: 1 1 auto; min-width: 0;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.folder-count {
  flex: 0 0 auto;
  font: 10px var(--font-mono); color: var(--muted);
  letter-spacing: 0.04em;
}
.folder-seq .folder-name { font-size: 13px; }
.folder-seq .folder-count { font-size: 10px; }
.folder-section-head {
  margin: 14px 4px 6px;
  font: 10px var(--font-body); font-weight: 600;
  letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--muted);
}
.folder-seq .folder-dot {
  width: 8px; height: 8px; border-radius: 50%;
  flex: 0 0 auto;
  background: var(--muted);
}
.folder-dot-cold       { background: #6B8FA3; }
.folder-dot-followup   { background: #C99E2B; }
.folder-dot-discovery  { background: #2F8A45; }

/* — Email list (middle) — */
.inbox-list {
  display: flex; flex-direction: column;
  border-right: 1px solid var(--hairline);
  background: var(--bg-card);
  min-width: 0;
}
.inbox-list-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 14px 18px;
  border-bottom: 1px solid var(--hairline);
}
.inbox-list-title {
  font: 600 15px var(--font-body); color: var(--ink);
  letter-spacing: 0.01em;
}
.inbox-list-meta {
  font: 11px var(--font-mono); color: var(--muted);
}
.inbox-list-body {
  flex: 1 1 auto; min-height: 0; overflow-y: auto;
}
.inbox-empty {
  text-align: center;
  padding: 56px 24px 36px;
  color: var(--ink-soft);
}
.inbox-empty-svg {
  width: 72px; height: 48px; color: var(--muted); margin-bottom: 16px;
}
.inbox-empty-head {
  font: 22px var(--font-head); font-weight: 800;
  color: var(--ink);
  margin: 0 0 6px;
}
.inbox-empty-sub {
  font: 13px var(--font-body); color: var(--muted);
  margin: 0 auto 18px; max-width: 280px; line-height: 1.45;
}
.inbox-connect-btn {
  height: 36px; padding: 0 18px;
}

.inbox-coming-card {
  margin: 32px 16px 12px;
  border: 1px solid var(--hairline);
  border-radius: 10px;
  background: var(--cream);
  text-align: left;
  padding: 14px 16px 12px;
}
.inbox-coming-head {
  font: 10px var(--font-body); font-weight: 600;
  letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--muted); margin-bottom: 8px;
}
.inbox-coming-list {
  list-style: none; padding: 0; margin: 0;
  font: 13px var(--font-body); color: var(--ink-soft);
}
.inbox-coming-list li {
  padding: 5px 0 5px 18px; position: relative;
  border-bottom: 1px solid var(--hairline);
}
.inbox-coming-list li:last-child { border-bottom: 0; }
.inbox-coming-list li:before {
  content: ""; position: absolute; left: 2px; top: 12px;
  width: 6px; height: 6px; border: 1px solid var(--muted);
  border-radius: 50%;
}

/* — Reader pane (right) — */
.inbox-reader {
  display: flex; align-items: center; justify-content: center;
  min-width: 0;
  background: var(--bg-card);
}
.inbox-reader-empty {
  text-align: center;
  color: var(--muted);
  padding: 32px;
}
.inbox-reader-empty svg {
  display: block; margin: 0 auto 14px; color: var(--muted); opacity: 0.65;
}
.inbox-reader-empty p {
  font: 14px var(--font-body); margin: 0;
}

/* — Connect Gmail modal — */
.connect-gmail-panel { max-width: 520px; }
.connect-gmail-body { padding: 30px 32px 26px; }
.connect-gmail-eyebrow {
  font: 11px var(--font-mono); color: var(--muted);
  letter-spacing: 0.18em; text-transform: uppercase;
  margin-bottom: 10px;
}
.connect-gmail-title {
  font: 800 26px var(--font-head); color: var(--ink);
  margin: 0 28px 14px 0; line-height: 1.15;
}
.connect-gmail-copy {
  font: 15px var(--font-body); color: var(--ink-soft);
  line-height: 1.55; margin: 0 0 18px;
}
.connect-gmail-copy .mono {
  font-family: var(--font-mono); font-size: 13px;
  background: var(--cream-deeper); padding: 1px 6px; border-radius: 4px;
}
.connect-gmail-list {
  list-style: none; padding: 0; margin: 0 0 24px;
  font: 14px var(--font-body); color: var(--ink-soft);
}
.connect-gmail-list li {
  padding: 8px 0 8px 22px; position: relative;
  border-bottom: 1px solid var(--hairline);
}
.connect-gmail-list li:last-child { border-bottom: 0; }
.connect-gmail-list li:before {
  content: ""; position: absolute; left: 2px; top: 13px;
  width: 8px; height: 8px; border: 1px solid var(--ink-soft);
  border-radius: 50%;
}
.connect-gmail-actions {
  display: flex; justify-content: flex-end; gap: 10px;
}

/* — Mobile inbox — */
@media (max-width: 768px) {
  .inbox {
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr;
    min-height: 0;
  }
  .inbox-folders {
    border-right: 0; border-bottom: 1px solid var(--hairline);
    padding: 10px 12px 12px;
    overflow-x: auto; overflow-y: hidden;
  }
  .inbox-folders .folder-section-head { display: none; }
  .inbox-folders .folder-list {
    display: flex; flex-direction: row; flex-wrap: nowrap;
    gap: 6px;
    overflow-x: auto;
    margin: 0; padding: 2px 0;
  }
  .inbox-folders .folder-list + .folder-list {
    margin-top: 8px;
  }
  .inbox-folders .folder {
    flex: 0 0 auto;
    padding: 7px 12px;
    border-radius: 999px;
    border: 1px solid var(--hairline);
    background: var(--cream);
  }
  .inbox-folders .folder.is-active {
    border-color: var(--ink);
  }
  .folder-name { white-space: nowrap; }
  .inbox-list { border-right: 0; }
  /* Reader hidden by default on mobile; reveal as full-screen takeover when
     a row is opened. Empty state hides entirely so we don't show two
     placeholders stacked. */
  .inbox-reader { display: none; }
  .inbox.is-open-reader .inbox-list { display: none; }
  .inbox.is-open-reader .inbox-reader {
    display: flex;
    position: fixed; inset: 0; z-index: 900;
    background: var(--cream);
    align-items: flex-start;
  }
}

/* Emails tab pill (kept from old layout) */
.tab-emails {
  color: var(--muted);
}
.tab-emails-soon {
  display: inline-block; margin-left: 4px;
  font: 9px var(--font-body); font-weight: 600; letter-spacing: 0.06em;
  background: var(--hairline-2); color: var(--ink-soft);
  padding: 1px 6px; border-radius: 999px;
  text-transform: uppercase; vertical-align: middle;
}

/* ============================================================
   PROJECT WORKSPACE
   ============================================================ */
.project-page { max-width: 1100px; margin: 0 auto; padding: 0 24px; }
.project-head {
  margin: 0 0 24px;
}
.project-back {
  display: inline-block; margin-bottom: 14px;
  font: 13px var(--font-body); color: var(--muted);
  text-decoration: none; transition: color 0.15s;
}
.project-back:hover { color: var(--ink); }
.project-title-row {
  display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap;
  justify-content: space-between;
}
.project-title {
  font: 42px var(--font-head); font-weight: 500;
  margin: 0; color: var(--ink); letter-spacing: -0.01em;
}
.project-head-meta {
  display: inline-flex; align-items: center; gap: 10px;
}
.btn-tiny { height: 28px; padding: 0 12px; font-size: 12px; }

.project-stats {
  display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px;
  margin: 0 0 32px;
}
.stat-card {
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 14px;
  padding: 18px 20px;
}
.stat-label {
  font: 11px var(--font-body); font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--muted); margin-bottom: 6px;
}
.stat-value {
  font: 26px var(--font-head); font-weight: 500;
  color: var(--ink); display: inline-flex; align-items: baseline;
}
.stat-suffix { font: 14px var(--font-body); color: var(--muted); margin-left: 2px; }
.stat-status {
  font: 14px var(--font-body); font-weight: 500;
  padding: 4px 12px; border-radius: 999px;
  background: var(--stone-bg); color: var(--stone-fg);
  display: inline-block;
}
.stat-status.pstatus-in_progress { background: var(--sage-bg); color: var(--sage-fg); }
.stat-status.pstatus-paused      { background: var(--gold-bg); color: var(--gold-fg); }
.stat-status.pstatus-completed   { background: var(--lav-bg);  color: var(--lav-fg); }
.stat-status.pstatus-cancelled   { background: var(--terra-bg); color: var(--terra-fg); }

@media (max-width: 880px) {
  .project-stats { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
  .project-stats { grid-template-columns: 1fr; }
  .project-title { font-size: 32px; }
}

/* Project tab nav */
.proj-tabs {
  display: flex; gap: 4px; flex-wrap: wrap;
  margin: 0 0 18px;
  border-bottom: 1px solid var(--hairline);
}
.proj-tab {
  background: transparent; border: 0;
  padding: 12px 16px;
  font: 13px var(--font-body); font-weight: 500;
  color: var(--ink-soft); cursor: pointer;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  transition: color 0.15s, border-color 0.15s;
}
.proj-tab:hover { color: var(--ink); }
.proj-tab.is-active { color: var(--ink); border-bottom-color: var(--ink); }
.proj-tab-meta { color: var(--muted); font: 11px var(--font-mono); margin-left: 4px; }

/* Panels */
.proj-pane[hidden] { display: none !important; }
.proj-card {
  background: var(--bg-card); border: 1px solid var(--hairline);
  border-radius: 14px; padding: 22px 26px; margin-bottom: 18px;
}
.proj-card-h {
  font: 18px var(--font-head); font-weight: 500;
  margin: 0 0 14px; color: var(--ink);
}
.proj-card-cols {
  display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px;
}
.proj-field { display: flex; flex-direction: column; gap: 6px; }
.proj-field-label {
  font: 11px var(--font-body); font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--muted);
}
.proj-field input, .proj-field select {
  height: 40px; padding: 0 12px;
  font: 14px var(--font-body);
  background: var(--cream); border: 1px solid var(--hairline-2);
  color: var(--ink); border-radius: 10px;
}
.proj-field input:focus, .proj-field select:focus {
  outline: none; border-color: var(--ink);
}
.proj-save-hint {
  display: inline-block; font: 12px var(--font-body);
  color: var(--sage-fg); margin-top: 8px;
}
@media (max-width: 540px) { .proj-card-cols { grid-template-columns: 1fr; } }

/* Services grid */
.services-grid {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px;
}
@media (max-width: 720px) { .services-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 420px) { .services-grid { grid-template-columns: 1fr; } }
.svc-check {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 14px; background: var(--cream);
  border: 1px solid var(--hairline-2); border-radius: 12px;
  cursor: pointer; transition: border-color 0.15s, background 0.15s;
  font: 13px var(--font-body); color: var(--ink-soft);
}
.svc-check:hover { border-color: var(--ink-soft); }
.svc-check input { accent-color: var(--ink); }
.svc-check input:checked + .svc-check-glyph + .svc-check-name { color: var(--ink); font-weight: 500; }
.svc-check-glyph { font-size: 16px; }

/* Discovery editor */
.discovery-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.discovery-actions { display: inline-flex; align-items: center; gap: 12px; }
.rt-toolbar {
  display: flex; gap: 4px; margin-bottom: 8px;
  border-bottom: 1px solid var(--hairline); padding-bottom: 8px;
}
.rt-toolbar button {
  background: transparent; border: 1px solid var(--hairline-2);
  width: 32px; height: 32px; border-radius: 8px;
  font: 13px var(--font-body); cursor: pointer; color: var(--ink-soft);
}
.rt-toolbar button:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.rt-editor {
  min-height: 280px; padding: 14px 16px;
  background: var(--cream); border: 1px solid var(--hairline-2);
  border-radius: 12px;
  font: 15px var(--font-body); line-height: 1.55; color: var(--ink);
}
.rt-editor:focus { outline: none; border-color: var(--ink); }
.rt-editor:empty:before {
  content: attr(data-placeholder);
  color: var(--muted); pointer-events: none;
}
.disc-suggest {
  margin-top: 14px; padding: 12px 14px;
  background: #FBF6E8; border: 1px solid #E8DDB0;
  border-radius: 10px;
  font: 13px var(--font-body); color: #6B5310;
  display: flex; flex-wrap: wrap; gap: 8px; align-items: center;
}
.disc-suggest strong { font-weight: 600; margin-right: 4px; }
.disc-suggest-btn {
  background: #fff; border: 1px solid #C9B36C;
  padding: 4px 10px; border-radius: 999px;
  font: 12px var(--font-body); color: #6B5310; cursor: pointer;
}
.disc-suggest-btn:hover { background: #FFF4D8; }

/* Tasks */
.tasks-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; flex-wrap: wrap; }
.tasks-filters { display: inline-flex; gap: 8px; }
.tasks-filters select {
  height: 32px; padding: 0 10px;
  background: var(--cream); border: 1px solid var(--hairline-2);
  border-radius: 999px;
  font: 12px var(--font-body); color: var(--ink);
}
.tasks-progress { margin-bottom: 16px; }
.tasks-progress-bar {
  height: 6px; background: var(--hairline);
  border-radius: 3px; overflow: hidden; margin-bottom: 4px;
}
.tasks-progress-bar span {
  display: block; height: 100%; background: var(--ink);
  width: 0%; transition: width 0.3s;
}
.tasks-progress-text { font: 12px var(--font-mono); color: var(--muted); }
.tasks-list { display: flex; flex-direction: column; gap: 6px; }
.task-row {
  display: flex; align-items: center; gap: 10px;
  padding: 10px 12px; background: var(--cream);
  border: 1px solid var(--hairline-2); border-radius: 10px;
  transition: opacity 0.2s, border-color 0.15s;
}
.task-row.dragging { opacity: 0.4; }
.task-row.task-status-done {
  background: var(--bg-card);
}
.task-row.task-status-done .task-name {
  text-decoration: line-through; color: var(--muted);
}
.task-grip { color: var(--muted); cursor: grab; font-size: 12px; padding: 0 4px; }
.task-body { flex: 1; display: flex; flex-direction: column; gap: 4px; }
.task-name {
  background: transparent; border: 0; padding: 0;
  font: 14px var(--font-body); color: var(--ink); width: 100%;
}
.task-name:focus { outline: none; }
.task-meta {
  display: inline-flex; align-items: center; gap: 10px;
  font: 11px var(--font-mono); color: var(--muted);
}
.task-svc, .task-due { white-space: nowrap; }
.task-status-select {
  height: 22px; padding: 0 6px; font: 11px var(--font-mono);
  background: var(--bg-card); border: 1px solid var(--hairline-2);
  border-radius: 999px; color: var(--ink-soft);
}
.task-del {
  background: transparent; border: 0; color: var(--muted);
  width: 24px; height: 24px; border-radius: 50%;
  cursor: pointer; font-size: 18px; line-height: 1;
}
.task-del:hover { background: var(--terra-bg); color: var(--terra-fg); }
.task-check { width: 18px; height: 18px; accent-color: var(--ink); }
.task-new-form {
  display: flex; gap: 8px; margin-top: 14px;
}
.task-new-form input, .task-new-form select {
  height: 38px; padding: 0 12px; font: 14px var(--font-body);
  background: var(--cream); border: 1px solid var(--hairline-2);
  border-radius: 10px;
}
.task-new-form input[type="text"] { flex: 1; }
.task-new-form .btn-primary { height: 38px; }

/* Credentials */
.creds-banner {
  font: 12px var(--font-body); color: var(--sage-fg);
  background: var(--sage-bg); padding: 10px 14px;
  border-radius: 10px; margin-bottom: 14px;
  border: 1px solid rgba(47, 74, 51, 0.15);
}
.creds-banner code {
  font: 11px var(--font-mono); background: rgba(255,255,255,0.4);
  padding: 1px 4px; border-radius: 3px;
}
.creds-list { display: flex; flex-direction: column; gap: 10px; margin-bottom: 12px; }
.cred-card {
  background: var(--cream); border: 1px solid var(--hairline-2);
  border-radius: 12px; padding: 14px 16px;
}
.cred-head { display: flex; align-items: center; gap: 10px; margin-bottom: 8px; flex-wrap: wrap; }
.cred-label { font: 15px var(--font-body); font-weight: 600; color: var(--ink); }
.cred-url {
  font-size: 12px; color: var(--ink-soft); text-decoration: none;
  border-bottom: 1px dotted var(--muted);
}
.cred-edit, .cred-del {
  background: transparent; border: 1px solid var(--hairline-2);
  padding: 3px 10px; border-radius: 999px;
  font: 11px var(--font-body); color: var(--ink-soft); cursor: pointer;
}
.cred-edit { margin-left: auto; }
.cred-del:hover { background: var(--terra-bg); color: var(--terra-fg); border-color: var(--terra-fg); }
.cred-row {
  display: flex; align-items: center; gap: 10px;
  padding: 6px 0;
}
.cred-field-label {
  font: 10px var(--font-body); font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase;
  color: var(--muted); flex: 0 0 80px;
}
.cred-value { font: 13px var(--font-mono); color: var(--ink); flex: 1; }
.cred-value.cred-hidden { letter-spacing: 0.1em; }
.cred-reveal, .cred-copy {
  background: var(--bg-card); border: 1px solid var(--hairline-2);
  padding: 4px 10px; border-radius: 999px;
  font: 11px var(--font-body); color: var(--ink-soft); cursor: pointer;
}
.cred-reveal:hover, .cred-copy:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.cred-notes {
  margin-top: 8px; padding-top: 8px;
  border-top: 1px solid var(--hairline);
  font: 13px var(--font-body); color: var(--ink-soft);
}

/* Files */
.files-drop {
  border: 2px dashed var(--hairline-2); border-radius: 14px;
  padding: 32px 20px; text-align: center;
  transition: border-color 0.15s, background 0.15s;
  margin-bottom: 16px;
}
.files-drop.is-drag { border-color: var(--ink); background: var(--cream); }
.files-drop-text { font: 14px var(--font-body); color: var(--ink-soft); margin: 0 0 4px; }
.files-pick { color: var(--ink); text-decoration: underline; cursor: pointer; }
.files-drop-help { margin: 0; }
.files-list { display: flex; flex-direction: column; gap: 6px; }
.file-row {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 14px;
  background: var(--cream); border: 1px solid var(--hairline-2);
  border-radius: 10px;
}
.file-name { font: 14px var(--font-body); flex: 1; color: var(--ink); }
.file-meta { font: 11px var(--font-mono); color: var(--muted); }
.file-dl {
  font: 12px var(--font-body); color: var(--ink-soft);
  text-decoration: none; padding: 4px 10px;
  border: 1px solid var(--hairline-2); border-radius: 999px;
}
.file-dl:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.file-del {
  background: transparent; border: 0; color: var(--muted);
  width: 26px; height: 26px; cursor: pointer; font-size: 18px;
}
.file-del:hover { color: var(--terra-fg); }

/* Timeline */
.timeline-list {
  position: relative;
  padding-left: 24px;
  border-left: 2px solid var(--hairline);
  margin: 0 0 16px;
}
.tl-item {
  position: relative;
  display: flex; align-items: center; gap: 12px;
  padding: 8px 0;
}
.tl-item:before {
  content: ""; position: absolute; left: -33px; top: 14px;
  width: 10px; height: 10px; background: var(--ink);
  border-radius: 50%; border: 2px solid var(--cream);
}
.tl-glyph { font-size: 18px; flex: 0 0 24px; text-align: center; }
.tl-date { font-size: 12px; color: var(--muted); flex: 0 0 110px; }
.tl-label { font: 14px var(--font-body); color: var(--ink); flex: 1; }
.tl-del {
  background: transparent; border: 0; color: var(--muted);
  width: 22px; height: 22px; cursor: pointer; font-size: 16px;
}
.tl-del:hover { color: var(--terra-fg); }
.milestone-form {
  display: flex; gap: 8px;
}
.milestone-form input {
  height: 38px; padding: 0 12px; font: 14px var(--font-body);
  background: var(--cream); border: 1px solid var(--hairline-2);
  border-radius: 10px;
}
.milestone-form input[type="text"] { flex: 1; }

/* Activity */
.activity-form { display: flex; gap: 8px; margin-bottom: 16px; }
.activity-form input {
  flex: 1; height: 38px; padding: 0 12px;
  font: 14px var(--font-body); background: var(--cream);
  border: 1px solid var(--hairline-2); border-radius: 10px;
}
.activity-list { display: flex; flex-direction: column; gap: 6px; }
.act-item {
  display: flex; align-items: center; gap: 12px;
  padding: 8px 12px;
  background: var(--cream); border: 1px solid var(--hairline-2);
  border-radius: 10px;
}
.act-type {
  font: 10px var(--font-mono); font-weight: 500;
  text-transform: uppercase; letter-spacing: 0.05em;
  padding: 3px 8px; border-radius: 999px;
  background: var(--bg-card); color: var(--ink-soft);
  flex: 0 0 auto;
}
.act-credential_revealed { background: var(--gold-bg); color: var(--gold-fg); }
.act-credential_added,
.act-credential_edited   { background: var(--sage-bg); color: var(--sage-fg); }
.act-credential_deleted,
.act-file_deleted        { background: var(--terra-bg); color: var(--terra-fg); }
.act-desc { font: 14px var(--font-body); color: var(--ink); flex: 1; }
.act-ts { color: var(--muted); }

/* Toasts */
.proj-toast-host {
  position: fixed; bottom: 24px; right: 24px; z-index: 2000;
  display: flex; flex-direction: column; gap: 8px;
}
.proj-toast {
  background: var(--ink); color: var(--cream);
  padding: 10px 16px; border-radius: 10px;
  font: 13px var(--font-body);
  box-shadow: 0 8px 24px rgba(0,0,0,0.18);
  animation: toast-in 0.2s ease-out;
}
.proj-toast.is-out { opacity: 0; transition: opacity 0.4s; }
@keyframes toast-in {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

/* Modal action — primary variant for "Open project" */
.m5-action-primary { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.m5-action-primary:hover { background: var(--ink); color: var(--cream); opacity: 0.92; }

/* ============================================================
   GLOBAL SEARCH BAR  (top of leads page)
   ============================================================ */
.gsearch-bar {
  display: flex; align-items: center; gap: 14px;
  margin: 0 0 14px;
}
.gsearch-input-wrap {
  position: relative;
  flex: 1 1 0; min-width: 0;
}
.gsearch-icon {
  position: absolute; left: 16px; top: 50%; transform: translateY(-50%);
  font-size: 15px; opacity: 0.55; pointer-events: none;
}
#gsearch-input {
  width: 100%; height: 48px;
  padding: 0 42px 0 42px;
  font: 16px var(--font-body);
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
  color: var(--ink);
  transition: border-color 0.15s, box-shadow 0.15s;
}
#gsearch-input::placeholder { color: var(--muted); }
#gsearch-input:focus {
  outline: none; border-color: var(--ink);
  box-shadow: 0 0 0 3px rgba(10,10,10,0.04);
}
.gsearch-clear {
  position: absolute; right: 14px; top: 50%; transform: translateY(-50%);
  width: 22px; height: 22px;
  border: none; background: var(--cream-deeper);
  border-radius: 50%; cursor: pointer;
  font: 15px/1 var(--font-body); color: var(--ink-soft);
  display: inline-flex; align-items: center; justify-content: center;
}
.gsearch-clear:hover { background: var(--ink); color: var(--cream); }
.gsearch-clear[hidden] { display: none !important; }
.gsearch-alltabs {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px;
  background: var(--bg-card);
  border: 1px solid var(--hairline-2);
  border-radius: 999px;
  font-size: 13.5px; color: var(--ink-soft); cursor: pointer;
  user-select: none;
  flex: 0 0 auto;
}
.gsearch-alltabs input { accent-color: var(--ink); margin: 0; }
.gsearch-alltabs:has(input:checked) {
  background: var(--ink); color: var(--cream); border-color: var(--ink);
}

/* Scrape-bar hint when niche/area inputs are filtering */
.scrape-hint {
  margin-top: 10px;
  display: inline-flex; align-items: center; gap: 8px;
  font-size: 12.5px; color: var(--ink-soft);
}
.scrape-hint[hidden] { display: none !important; }
.scrape-hint-dot {
  width: 6px; height: 6px; border-radius: 50%; background: var(--ink-soft);
  flex: 0 0 auto;
}
.scrape-hint strong { color: var(--ink); font-weight: 600; }

/* ============================================================
   ACTIVE FILTERS PILL BAR
   ============================================================ */
.active-filters-bar {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px;
  margin: 0 0 14px;
  padding: 10px 14px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 10px;
}
.active-filters-bar[hidden] { display: none !important; }
.afb-count {
  font-size: 13px; color: var(--ink-soft);
  font-family: var(--font-mono);
  flex: 0 0 auto;
  padding-right: 6px;
  border-right: 1px solid var(--hairline);
}
.afb-pills { display: inline-flex; flex-wrap: wrap; gap: 8px; }
.af-pill {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 4px 6px 4px 12px;
  background: var(--cream-deeper);
  border-radius: 999px;
  font-size: 12.5px; color: var(--ink);
  border: 1px solid var(--hairline);
}
.af-pill-extra {
  background: var(--ink); color: var(--cream);
  padding: 2px 8px; border-radius: 999px;
  font-size: 11px; letter-spacing: 0.02em;
}
.af-pill-x {
  appearance: none; border: none; background: transparent;
  width: 18px; height: 18px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  font: 14px/1 var(--font-body); color: var(--ink-soft); cursor: pointer;
}
.af-pill-x:hover { background: var(--ink); color: var(--cream); }
.afb-clear-all {
  margin-left: auto;
  appearance: none; border: 1px solid var(--hairline-2); background: transparent;
  border-radius: 999px;
  padding: 4px 12px;
  font-size: 12.5px; color: var(--ink-soft); cursor: pointer;
}
.afb-clear-all:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }

/* ============================================================
   AUTOCOMPLETE — free-text fallback row & match highlight
   ============================================================ */
.ac-item-fallback {
  border-top: 1px dashed var(--hairline-2);
  color: var(--ink-soft);
  font-style: italic;
}
.ac-item-fallback .ac-text b {
  font-style: normal; color: var(--ink); font-weight: 600;
}
.ac-fallback-icon {
  display: inline-block; margin-right: 6px; color: var(--ink-soft);
}
.ac-fallback-arrow { float: right; opacity: 0.6; }

/* Match highlight inside card business names / niche-area pills */
.lc-name .hl, .lc-tag .hl {
  background: var(--gold-bg); color: var(--ink); font-weight: 600;
  padding: 0 2px; border-radius: 3px;
}

@media (max-width: 600px) {
  .gsearch-bar { flex-direction: column; align-items: stretch; }
  .gsearch-alltabs { justify-content: center; }
}

/* ===================== Scrape Configuration panel ===================== */
.sc-gear {
  display: inline-flex; align-items: center; justify-content: center;
  position: relative; width: 38px; min-width: 38px; height: 38px;
  margin-left: 8px; padding: 0;
  border: 1px solid var(--hairline-2); border-radius: var(--radius);
  background: var(--bg-card); color: var(--ink-soft); cursor: pointer;
  transition: background .15s ease, color .15s ease, transform .2s ease;
}
.sc-gear:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.sc-gear[aria-expanded="true"] { background: var(--ink); color: var(--cream); }
.sc-gear .sc-gear-dot {
  position: absolute; top: 6px; right: 6px; width: 7px; height: 7px;
  border-radius: 50%; background: #C9A227; box-shadow: 0 0 0 2px var(--bg-card);
}
.sc-note { margin-top: 8px; font-size: 12px; color: var(--ink-soft); }
.sc-note .link-button { font-size: 12px; }

.scrape-config {
  overflow: hidden; max-height: 0; opacity: 0; margin-top: 0;
  border-radius: var(--radius); background: var(--bg-card);
  border: 1px solid transparent;
  transition: max-height .2s ease-out, opacity .2s ease-out,
              margin-top .2s ease-out, border-color .2s ease-out;
}
.scrape-config[hidden] { display: none; }
.scrape-config.open {
  max-height: 1600px; opacity: 1; margin-top: 12px;
  border-color: var(--hairline-2);
  box-shadow: 0 8px 30px rgba(26,26,26,.10);
}
.scrape-config .sc-inner { padding: 20px 22px; }
.sc-section { padding: 14px 0; }
.sc-section + .sc-section { border-top: 1px solid var(--hairline); }
.sc-section:first-child { padding-top: 4px; }
.sc-h {
  font-size: 12px; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: var(--muted); margin-bottom: 12px;
}
.sc-h em { font-style: normal; font-weight: 400; text-transform: none; }
.sc-row {
  display: flex; align-items: center; justify-content: space-between;
  gap: 16px; padding: 7px 0; font-size: 14px; color: var(--ink);
}
.sc-row.sc-col { flex-direction: column; align-items: flex-start; gap: 8px; }
.sc-row > span em { color: var(--muted); font-style: normal; font-size: 12px; }
.sc-row.sc-toggle { align-items: center; }
.sc-row.sc-toggle > span small { display: block; color: var(--muted); font-size: 11px; font-weight: 400; }
.auto-skip-reason { color: var(--muted); font-size: 11px; margin-top: 3px; max-width: 320px; line-height: 1.35; }
.sc-row input[type="number"] { width: 90px; }
.sc-row input[type="text"] { flex: 0 1 240px; }
.sc-row input[type="number"], .sc-row input[type="text"] {
  padding: 7px 10px; border: 1px solid var(--hairline-2);
  border-radius: var(--radius); background: var(--cream); color: var(--ink);
  font: inherit;
}
.sc-row input[type="range"] { flex: 0 1 240px; accent-color: var(--ink); }
.sc-row output { color: var(--muted); font-size: 12px; min-width: 48px; text-align: right; }
.sc-row.sc-toggle input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--ink); }
.sc-help { font-size: 12px; color: var(--muted); margin-top: 6px; }
.sc-pills { display: flex; flex-wrap: wrap; gap: 6px; }
.sc-pills .pill {
  padding: 5px 12px; font-size: 12px; border-radius: 999px;
  border: 1px solid var(--hairline-2); background: var(--cream);
  color: var(--ink-soft); cursor: pointer; transition: all .12s ease;
}
.sc-pills .pill:hover { border-color: var(--ink-soft); }
.sc-pills .pill.is-active {
  background: var(--ink); color: var(--cream); border-color: var(--ink);
}
.sc-actions {
  display: flex; align-items: center; gap: 10px;
  padding-top: 18px; margin-top: 6px; border-top: 1px solid var(--hairline);
}
.sc-actions .btn-ghost {
  background: transparent; border: 1px solid var(--hairline-2);
  color: var(--ink-soft); font: inherit; font-size: 13px;
  padding: 8px 16px; border-radius: var(--radius); cursor: pointer;
}
.sc-actions .btn-ghost:hover { color: var(--ink); border-color: var(--ink-soft); }
.sc-saved-note { font-size: 12px; color: var(--muted); margin-left: auto; }
.sc-actions #sc-cancel { margin-left: 0; }
@media (max-width: 600px) {
  .scrape-config .sc-inner { padding: 16px; }
  .sc-row { flex-direction: column; align-items: flex-start; gap: 6px; }
  .sc-row input[type="range"], .sc-row input[type="text"] { flex-basis: 100%; width: 100%; }
}

/* ====================== AUTO-SCRAPE CONTROL PANEL ====================== */
.auto-shell {
  margin: 0 0 20px;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 14px;
  overflow: hidden;
}
.auto-head {
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; flex-wrap: wrap;
}
.auto-switch { margin-top: 0; }
.auto-title { font-weight: 700; font-size: 14px; color: var(--ink); }
.auto-head-status {
  font: 12px var(--font-mono); letter-spacing: .03em;
  padding: 3px 10px; border-radius: var(--radius-pill);
  border: 1px solid var(--hairline-2); color: var(--ink-soft);
  background: transparent;
}
.auto-head-status.is-on   { color: #0B7A3B; border-color: #9FD9B6; background: #ECF7F0; }
.auto-head-status.is-run  { color: #1A1A1A; border-color: var(--ink); background: var(--cream-deeper); }
.auto-head-status.is-cool { color: #9A6A00; border-color: #E6C98A; background: #FBF3DF; }
.auto-head-sep { color: var(--muted); }
.auto-head-meta { font-size: 13px; color: var(--ink-soft); flex: 1 1 auto; }
.auto-expand {
  display: inline-flex; align-items: center; gap: 7px;
  height: 32px; padding: 0 12px;
  background: transparent; border: 1px solid var(--hairline-2);
  color: var(--ink); border-radius: 999px;
  font: 13px var(--font-body); font-weight: 500; cursor: pointer;
  transition: background .15s ease-out, color .15s ease-out;
}
.auto-expand:hover { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.auto-expand .chev { transition: transform .2s ease-out; }
.auto-expand[aria-expanded="true"] .chev { transform: rotate(180deg); }

.auto-body {
  padding: 4px 18px 20px;
  border-top: 1px solid var(--hairline);
}
.auto-body[hidden] { display: none !important; }
.auto-statusline {
  margin: 14px 0 4px; padding: 12px 14px;
  background: var(--cream); border: 1px solid var(--hairline);
  border-radius: 10px; font-size: 13px; color: var(--ink-soft);
}
.auto-section { padding: 16px 0; }
.auto-section + .auto-section { border-top: 1px solid var(--hairline); }
.auto-h {
  font-size: 12px; font-weight: 700; letter-spacing: .04em;
  text-transform: uppercase; color: var(--muted); margin-bottom: 12px;
}
.auto-actions { display: flex; align-items: center; gap: 12px; padding-top: 12px; }

.auto-hist-wrap { overflow-x: auto; }
table.auto-hist { width: 100%; border-collapse: collapse; font-size: 13px; }
table.auto-hist th {
  text-align: left; font-size: 11px; letter-spacing: .04em;
  text-transform: uppercase; color: var(--muted);
  padding: 6px 10px; border-bottom: 1px solid var(--hairline);
}
table.auto-hist th.num, table.auto-hist td.num { text-align: right; }
table.auto-hist td {
  padding: 8px 10px; border-bottom: 1px solid var(--hairline);
  color: var(--ink-soft); white-space: nowrap;
}
table.auto-hist tr[data-href] { cursor: pointer; }
table.auto-hist tr[data-href]:hover td { background: var(--cream); }
.auto-badge {
  display: inline-block; padding: 2px 8px; border-radius: var(--radius-pill);
  font: 11px var(--font-mono); letter-spacing: .03em;
  border: 1px solid var(--hairline-2); color: var(--ink-soft);
}
.auto-badge.s-done    { color: #0B7A3B; border-color: #9FD9B6; background: #ECF7F0; }
.auto-badge.s-running { color: #1A1A1A; border-color: var(--ink); }
.auto-badge.s-captcha { color: #9A6A00; border-color: #E6C98A; background: #FBF3DF; }
.auto-badge.s-failed  { color: #B23A2F; border-color: #E3B0AA; background: #FBEEEC; }
.auto-badge.s-skipped { color: var(--muted); }

.auto-pool-label { font-size: 13px; font-weight: 600; color: var(--ink-soft); margin: 10px 0 8px; }
.auto-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 6px; }
.auto-pill {
  display: inline-flex; align-items: center; gap: 7px;
  padding: 5px 8px 5px 12px; border-radius: var(--radius-pill);
  border: 1px solid var(--hairline-2); background: transparent;
  font: 12px var(--font-mono); color: var(--ink-soft);
}
.auto-pill button {
  border: none; background: var(--hairline); color: var(--ink-soft);
  width: 16px; height: 16px; border-radius: 50%; cursor: pointer;
  font-size: 11px; line-height: 1; padding: 0;
}
.auto-pill button:hover { background: #B23A2F; color: #fff; }
.auto-add { display: flex; gap: 8px; margin: 4px 0 6px; }
.auto-add input {
  flex: 0 1 240px; height: 32px; padding: 0 10px;
  border: 1px solid var(--hairline-2); border-radius: 8px;
  font: 13px var(--font-body); background: #fff; color: var(--ink);
}
.auto-add button { height: 32px; }

/* ============================================================
   Stage 10 — Calendly booking workflow
   ============================================================ */

/* "Book Call" action — sage accent: prominent, not overpowering */
.m5-action.m5-action-book {
  background: var(--sage-bg); color: var(--sage-fg);
  border-color: #BcD3B8;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.4);
}
.m5-action.m5-action-book:hover { background: #CADCC4; color: #243A28; }
.cw-bookbtn {
  display: inline-flex; align-items: center; gap: 6px;
  height: 36px; padding: 0 14px;
  background: var(--sage-bg); color: var(--sage-fg);
  border: 1px solid #BcD3B8; border-radius: 999px;
  font: 600 13px var(--font-body); cursor: pointer; white-space: nowrap;
}
.cw-bookbtn:hover { background: #CADCC4; color: #243A28; }

/* Booked-In card: "booking link sent via …" line */
.lc-booking-sent {
  margin-top: 6px; font-size: 12.5px; color: var(--sage-fg);
  background: var(--sage-bg); border-radius: 8px;
  padding: 3px 9px; display: inline-block; font-weight: 500;
}

/* ---- Booking modal (scoped overrides of the big lead-modal sizing) ---- */
.bk-panel, .intg-panel {
  width: min(560px, 95vw); max-width: 560px;
  height: auto; max-height: calc(100vh - 48px);
  border-radius: 18px;
}
.bk-body, .intg-body {
  padding: 26px 26px 22px; overflow-y: auto;
  display: block; flex: 1 1 auto; min-height: 0;
}
.bk-head { margin: 0 0 18px; }
.bk-head h2 {
  margin: 0; font: 700 22px/1.2 var(--font-head); color: var(--ink);
}
.bk-sub { margin: 4px 0 0; color: var(--ink-soft); font-size: 14px; }
.bk-form { display: flex; flex-direction: column; gap: 13px; }
.bk-field { display: flex; flex-direction: column; gap: 5px; }
.bk-lbl {
  font-size: 11px; letter-spacing: 0.07em; text-transform: uppercase;
  color: var(--muted); font-weight: 600;
}
.bk-lbl em { font-style: normal; text-transform: none; letter-spacing: 0;
  color: var(--muted); font-weight: 400; }
.bk-field input, .bk-field textarea,
.bk-message, #bk-subject {
  width: 100%; padding: 9px 11px;
  border: 1px solid var(--hairline-2); border-radius: 9px;
  font: 14px var(--font-body); background: #fff; color: var(--ink);
  resize: vertical;
}
.bk-field input:focus, .bk-field textarea:focus,
.bk-message:focus, #bk-subject:focus {
  outline: 2px solid var(--sage-fg); outline-offset: 0; border-color: var(--sage-fg);
}
.bk-sep { height: 1px; background: var(--hairline); margin: 18px 0; }
.bk-channel-label, .bk-preview-wrap .bk-lbl {
  display: block; font-size: 11px; letter-spacing: 0.07em;
  text-transform: uppercase; color: var(--muted); font-weight: 600;
  margin-bottom: 8px;
}
.bk-channels { display: flex; gap: 8px; flex-wrap: wrap; }
.bk-chan {
  flex: 1 1 auto; min-width: 84px; height: 38px; padding: 0 14px;
  border: 1px solid var(--hairline-2); border-radius: 999px;
  background: #fff; color: var(--ink-soft);
  font: 600 13px var(--font-body); cursor: pointer;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.bk-chan:hover { border-color: var(--ink); color: var(--ink); }
.bk-chan.is-active {
  background: var(--ink); color: var(--cream); border-color: var(--ink);
}
.bk-chan.is-disabled { opacity: 0.45; cursor: not-allowed; }
.bk-chan.is-disabled:hover { border-color: var(--hairline-2); color: var(--ink-soft); }
.bk-sms-hint {
  margin: 8px 0 0; font-size: 12.5px; color: #6A3326;
  background: var(--site-no-bg); border-radius: 8px; padding: 6px 10px;
}
.bk-sms-hint[hidden] { display: none; }
.bk-preview-wrap { margin-top: 18px; }
.bk-subj-field { display: flex; flex-direction: column; gap: 5px; margin-bottom: 10px; }
.bk-subj-field[hidden] { display: none; }
.bk-message { margin-top: 0; line-height: 1.5; }
.bk-link-line {
  margin-top: 7px; font-size: 12px; color: var(--muted);
  word-break: break-all;
}
.bk-link-line a { color: var(--sage-fg); }
.bk-actions {
  display: flex; justify-content: flex-end; gap: 10px;
  align-items: center; margin-top: 20px;
}
.bk-btn-cancel {
  height: 40px; padding: 0 18px; border-radius: 999px;
  border: 1px solid var(--hairline-2); background: transparent;
  color: var(--ink-soft); font: 500 13px var(--font-body); cursor: pointer;
}
.bk-btn-cancel:hover { background: var(--hairline); color: var(--ink); }
.bk-btn-send {
  height: 40px; padding: 0 22px; border-radius: 999px;
  border: 1px solid var(--sage-fg); background: var(--sage-fg); color: #fff;
  font: 600 13px var(--font-body); cursor: pointer;
  transition: background 0.15s, transform 0.15s;
}
.bk-btn-send:hover:not(:disabled) { background: #243A28; transform: translateY(-1px); }
.bk-btn-send:disabled { opacity: 0.6; cursor: default; }
.bk-status { margin-top: 10px; font-size: 13px; color: var(--sage-fg);
  text-align: right; min-height: 1.2em; }
.bk-status.is-error { color: #B0392C; }

/* ---- Settings popover: Integrations entry ---- */
.settings-row-link { padding-top: 4px; }
.settings-link-btn {
  width: 100%; display: flex; align-items: center; justify-content: space-between;
  gap: 10px; padding: 9px 11px; border-radius: 9px;
  border: 1px solid var(--hairline-2); background: var(--bg-card);
  color: var(--ink); font: 500 13px var(--font-body); cursor: pointer;
  text-align: left;
}
.settings-link-btn:hover { background: var(--hairline); }
.settings-link-btn .chev { color: var(--muted); }

/* ---- Integrations modal ---- */
.intg-body { display: block; }
.intg-title { margin: 0 0 6px; font: 700 22px/1.2 var(--font-head); color: var(--ink); }
.intg-sec { border-top: 1px solid var(--hairline); padding: 16px 0 4px; }
.intg-sec:first-of-type { border-top: 0; padding-top: 6px; }
.intg-sec h3 {
  margin: 0 0 12px; font: 600 13px var(--font-body);
  letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-soft);
  display: flex; align-items: center; gap: 10px;
}
.intg-tag {
  font-size: 11px; letter-spacing: 0; text-transform: none;
  color: var(--muted); font-weight: 400;
}
.intg-field { display: flex; flex-direction: column; gap: 5px; margin-bottom: 11px; }
.intg-field > span {
  font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--muted); font-weight: 600;
}
.intg-field > span em {
  font-style: normal; text-transform: none; letter-spacing: 0;
  color: var(--sage-fg); font-weight: 600; margin-left: 6px;
}
.intg-field input, .intg-field select, .intg-field textarea {
  width: 100%; padding: 9px 11px;
  border: 1px solid var(--hairline-2); border-radius: 9px;
  font: 14px var(--font-body); background: #fff; color: var(--ink);
  resize: vertical;
}
.intg-field input:focus, .intg-field select:focus, .intg-field textarea:focus {
  outline: 2px solid var(--ink); outline-offset: 0; border-color: var(--ink);
}
.intg-row2 { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.intg-clear, .intg-toggle {
  display: flex; align-items: center; gap: 8px;
  font-size: 13px; color: var(--ink-soft); margin: 2px 0 12px; cursor: pointer;
}
.intg-toggle { font-weight: 600; color: var(--ink); margin-bottom: 14px; }
.intg-help { margin: 0 0 12px; font-size: 12.5px; color: var(--muted); }
.intg-help code {
  font-family: var(--font-mono); font-size: 11.5px;
  background: var(--cream-deeper); padding: 1px 5px; border-radius: 4px;
}
.intg-reset {
  margin-left: auto; font: 500 12px var(--font-body);
  background: transparent; border: 1px solid var(--hairline-2);
  border-radius: 999px; padding: 4px 12px; color: var(--ink-soft);
  cursor: pointer; text-transform: none; letter-spacing: 0;
}
.intg-reset:hover { background: var(--hairline); color: var(--ink); }
.intg-actions {
  display: flex; align-items: center; gap: 10px;
  justify-content: flex-end; margin-top: 20px;
  padding-top: 16px; border-top: 1px solid var(--hairline);
}
.intg-status { margin-right: auto; font-size: 13px; color: var(--sage-fg); }
.intg-status.is-error { color: #B0392C; }

/* ============================================================
   Stage 11 — Specialised cold-call workspace (Call List tab)
   ============================================================ */
.cw2-modal { padding: 0; }
.cw2-panel {
  position: relative; z-index: 1; display: flex; flex-direction: column;
  width: 95vw; height: 95vh; background: var(--cream);
  border: 1px solid var(--hairline); border-radius: 18px; overflow: hidden;
  box-shadow: 0 24px 70px rgba(10,10,10,0.25);
}
.cw2-topbar {
  display: flex; align-items: center; justify-content: space-between;
  padding: 12px 18px; border-bottom: 1px solid var(--hairline);
  background: var(--bg-card); flex: 0 0 auto;
}
.cw2-session { font: 600 14px var(--font-body); color: var(--ink); }
.cw2-topbar-right { display: flex; align-items: center; gap: 12px; }
.cw2-advance-toggle {
  font: 500 12px var(--font-body); color: var(--ink-soft);
  background: transparent; border: 1px solid var(--hairline-2);
  border-radius: 999px; padding: 5px 12px; cursor: pointer;
}
.cw2-advance-toggle:hover { background: var(--hairline); color: var(--ink); }
.cw2-close { position: static; }
.cw2-grid {
  flex: 1 1 auto; min-height: 0; display: grid;
  grid-template-columns: 30fr 40fr 30fr; gap: 1px;
  background: var(--hairline);
}
.cw2-left, .cw2-right { background: var(--cream); overflow-y: auto; padding: 18px 20px; }
.cw2-mid { background: var(--cream-deeper); display: flex; flex-direction: column; min-height: 0; }
.cw2-loading { grid-column: 1 / -1; padding: 60px; text-align: center; color: var(--muted); }

/* LEFT — intel */
.cw2-photowrap { border-radius: 14px; overflow: hidden; }
.cw2-photo { aspect-ratio: 16/10; background: var(--cream-deeper); border-radius: 14px; overflow: hidden; }
.cw2-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cw2-photo-ph { display: flex; align-items: center; justify-content: center; }
.cw2-photo-ph span { font: 800 40px var(--font-head); color: var(--muted); }
.cw2-photowrap .m5-thumbs { display: flex; gap: 6px; margin-top: 6px; }
.cw2-photowrap .m5-thumb { width: 56px; height: 42px; border: 1px solid var(--hairline-2);
  border-radius: 6px; overflow: hidden; padding: 0; cursor: pointer; background: none; }
.cw2-photowrap .m5-thumb.is-active { outline: 2px solid var(--ink); }
.cw2-photowrap .m5-thumb img { width: 100%; height: 100%; object-fit: cover; }
.cw2-map { height: 200px; margin: 14px 0; border-radius: 14px; overflow: hidden;
  background: var(--cream-deeper); }
.cw2-biz { margin: 2px 0 8px; font-family: var(--font-head); font-weight: 800;
  font-size: clamp(20px, 2.2vw, 26px); line-height: 1.12; letter-spacing: -0.02em; color: var(--ink); }
.cw2-pills { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.cw2-pill { font-size: 11px; font-weight: 600; letter-spacing: 0.04em;
  background: var(--cream-deeper); color: var(--ink-soft);
  padding: 3px 9px; border-radius: 999px; text-transform: uppercase; }
.cw2-pill-cat { background: var(--lav-bg); color: var(--lav-fg); }
.cw2-phone { display: block; font: 700 24px var(--font-mono); color: var(--ink);
  text-decoration: none; margin: 6px 0 2px; }
.cw2-phone:hover { color: #B0392C; }
.cw2-dial { display: inline-flex; align-items: center; gap: 8px; margin: 4px 0 8px;
  height: 38px; padding: 0 16px; border-radius: 999px;
  background: var(--ink); color: var(--cream); border: 1px solid var(--ink);
  font: 500 13px var(--font-body); letter-spacing: 0.02em; cursor: pointer;
  box-shadow: inset 0 1px 0 rgba(255,255,255,0.18);
  transition: background 0.15s, transform 0.15s; }
.cw2-dial:hover { background: #000; transform: translateY(-1px); }
.cw2-dial svg { flex: 0 0 auto; }
.cw2-link { display: inline-block; color: var(--sage-fg); font-size: 13px;
  margin-bottom: 8px; word-break: break-all; }
.cw2-rating { font-family: var(--font-mono); font-size: 14px; color: var(--ink-soft); margin: 8px 0 6px; }
.cw2-star { color: #C99E2B; font-family: var(--font-body); }
.cw2-ch { font-size: 13px; margin: 10px 0; display: flex; flex-wrap: wrap;
  gap: 6px 10px; align-items: center; }
.cw2-ch .m5-ch-line, .cw2-ch .m5-label { font-size: 12px; }
/* Recent review — reuses the modal's .m5-quote look */
.cw2-quote-wrap { margin-top: 16px; }
.cw2-quote-wrap .m5-sec-h { margin: 0 0 8px; }

/* RIGHT — recs + stats (match the Auto-Leads modal) */
.cw2-rh { margin: 0 0 12px; font-family: var(--font-body); font-weight: 500;
  font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted); }
.cw2-recs + .cw2-rh, .cw2-stats + .cw2-rh { margin-top: 22px; }
.cw2-right .m5-recs { display: flex; flex-direction: column; gap: 10px; }
.cw2-stats { display: flex; flex-direction: column; gap: 8px; }
.cw2-stats > div { display: flex; justify-content: space-between; align-items: center;
  font-size: 13px; padding: 9px 12px; background: var(--bg-card);
  border: 1px solid var(--hairline); border-radius: 10px; }
.cw2-stats span { color: var(--muted); }
.cw2-stats b { color: var(--ink); }

/* MIDDLE — call flow */
.cw2-timerbar { display: flex; align-items: center; justify-content: space-between;
  gap: 12px; padding: 12px 14px; border-bottom: 1px solid var(--hairline);
  flex: 0 0 auto; background: var(--bg-card); }
.cw2-tabs { display: flex; gap: 6px; flex-wrap: wrap; }
.cw2-tab { height: 44px; padding: 0 18px; border-radius: 10px;
  border: 1px solid var(--hairline-2); background: #fff; color: var(--ink-soft);
  font: 600 14px var(--font-body); cursor: pointer; }
.cw2-tab:hover { border-color: var(--ink); color: var(--ink); }
.cw2-tab.is-active { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.cw2-timer { font: 700 26px var(--font-mono); font-variant-numeric: tabular-nums;
  background: #fff; border: 2px solid var(--hairline-2); color: var(--ink);
  border-radius: 12px; padding: 6px 16px; cursor: pointer; letter-spacing: 0.04em; }
.cw2-timer.is-running { border-color: #B0392C; color: #B0392C; }
.cw2-timer.t-30 { border-color: #C99A12; }
.cw2-timer.t-rapport.is-running { border-color: #2F4A33; color: #2F4A33; }
.cw2-timer.t-wrap { animation: cw2pulse 1.4s ease-in-out infinite; }
@keyframes cw2pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(176,57,44,0.4); }
  50% { box-shadow: 0 0 0 8px rgba(176,57,44,0); } }
.cw2-panes { flex: 1 1 auto; min-height: 0; position: relative; }
.cw2-pane { position: absolute; inset: 0; display: flex; flex-direction: column; }
.cw2-pane[hidden] { display: none; }
.cw2-scroll { overflow-y: auto; padding: 18px; flex: 1 1 auto; min-height: 0; }
.cw2-bigbtn { width: 100%; height: 56px; margin-top: 16px; border: 0;
  border-radius: 12px; background: var(--sage-fg); color: #fff;
  font: 700 17px var(--font-body); cursor: pointer; letter-spacing: 0.02em; }
.cw2-bigbtn:hover:not(:disabled) { background: #243A28; }
.cw2-bigbtn:disabled { opacity: 0.6; cursor: default; }
.cw2-endbtn { background: var(--ink); }
.cw2-endbtn:hover:not(:disabled) { background: #000; }

/* Pre-call checklist reuse */
.cw2-scroll .cw-check { list-style: none; padding: 0; margin: 0 0 14px;
  display: flex; flex-direction: column; gap: 7px; }
.cw2-scroll .cw-check li { display: flex; gap: 8px; font-size: 14px; align-items: baseline; }
.cw2-scroll .cw-key { color: var(--muted); min-width: 130px; }
.cw2-scroll .cw-val { color: var(--ink); }
.cw2-scroll .cw-ctps-warn { background: var(--site-no-bg); border-radius: 10px;
  padding: 12px 14px; font-size: 13px; color: #6A3326; }
.cw2-scroll .cw-ctps-btn { display: inline-block; margin-top: 8px; font-weight: 600;
  color: #6A3326; text-decoration: underline; }

/* Script tab */
.cw2-script { display: flex; flex-direction: column; height: 100%; }
.cw2-subtabs { display: flex; gap: 6px; padding: 14px 18px 10px; flex: 0 0 auto;
  position: sticky; top: 0; background: var(--cream); border-bottom: 1px solid var(--hairline); z-index: 2; }
.cw2-subtab { height: 38px; padding: 0 16px; border-radius: 999px;
  border: 1px solid var(--hairline-2); background: #fff; color: var(--ink-soft);
  font: 600 14px var(--font-body); cursor: pointer; }
.cw2-subtab.is-active { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.cw2-script-body { flex: 1 1 auto; overflow-y: auto; padding: 16px 18px; min-height: 0; }
.cw2-script-text { white-space: pre-wrap; font: 16px/1.65 var(--font-body); color: var(--ink); }
.cw2-script-text[hidden] { display: none; }
.cw2-qnotes { flex: 0 0 auto; border-top: 1px solid var(--hairline);
  padding: 10px 18px 14px; background: var(--bg-card); }
.cw2-qnotes label { font-size: 11px; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--muted); font-weight: 600; }
.cw2-qnotes label em { font-style: normal; text-transform: none; letter-spacing: 0; }
.cw2-qnotes textarea { width: 100%; margin-top: 5px; padding: 8px 10px;
  border: 1px solid var(--hairline-2); border-radius: 8px;
  font: 14px var(--font-body); background: #fff; color: var(--ink); resize: vertical; }

/* Book tab reuses .bk-* ; just spacing */
.cw2-book .bk-field, .cw2-book .bk-channels { margin-bottom: 12px; }
.cw2-book-locked { background: var(--site-no-bg); color: #6A3326;
  padding: 10px 12px; border-radius: 8px; font-size: 13px; }
.cw2-select { width: 100%; padding: 10px 11px; border: 1px solid var(--hairline-2);
  border-radius: 9px; font: 14px var(--font-body); background: #fff; color: var(--ink); }

/* Auto-advance overlay */
.cw2-advance { position: absolute; inset: 0; background: rgba(242,240,238,0.94);
  display: flex; align-items: center; justify-content: center; z-index: 10; }
.cw2-advbox { text-align: center; }
.cw2-advbox p { font: 600 18px var(--font-body); color: var(--ink); margin: 0 0 14px; }
.cw2-advbox b { font-size: 22px; }
.cw2-advbtns { display: flex; gap: 10px; justify-content: center; }
.cw2-advbtns button { height: 42px; padding: 0 20px; border-radius: 999px;
  font: 600 13px var(--font-body); cursor: pointer; border: 1px solid var(--ink); }
.cw2-advbtns button:first-child { background: var(--ink); color: var(--cream); }
.cw2-advbtns button:last-child { background: transparent; color: var(--ink);
  border-color: var(--hairline-2); }
.cw2-adv-hint { font-size: 12px !important; color: var(--muted) !important;
  font-weight: 400 !important; margin: 12px 0 0 !important; }

/* Keyboard legend */
.cw2-legend { display: flex; flex-wrap: wrap; gap: 16px; padding: 8px 18px;
  border-top: 1px solid var(--hairline); background: var(--bg-card);
  font-size: 12px; color: var(--muted); flex: 0 0 auto; }
.cw2-legend kbd { font: 600 11px var(--font-mono); background: var(--cream-deeper);
  border: 1px solid var(--hairline-2); border-radius: 4px; padding: 1px 6px;
  color: var(--ink); }
@media (max-width: 1100px) {
  .cw2-grid { grid-template-columns: 1fr; grid-auto-rows: min-content;
    overflow-y: auto; }
  .cw2-mid { min-height: 70vh; }
}

/* Stage 12 — book-a-slot-on-the-call block (Call Workspace → Book tab) */
.cw2-book-now { margin: 14px 0 4px; padding: 14px; border-radius: 12px;
  background: var(--sage-bg); border: 1px solid #BcD3B8; }
.cw2-book-now .bk-lbl { color: var(--sage-fg); }
.cw2-book-now-row { display: flex; gap: 10px; margin-top: 8px; align-items: stretch; }
.cw2-book-now-row input[type="datetime-local"] {
  flex: 1 1 auto; padding: 10px 12px; border: 1px solid #BcD3B8;
  border-radius: 9px; font: 15px var(--font-body); background: #fff; color: var(--ink); }
.cw2-sched-btn { width: auto !important; margin-top: 0 !important;
  height: auto; padding: 0 20px; white-space: nowrap; flex: 0 0 auto; }
.cw2-book-hint { margin: 8px 0 0; font-size: 12px; color: var(--sage-fg); }
.cw2-book-or { display: flex; align-items: center; gap: 12px;
  margin: 18px 0 14px; color: var(--muted); font-size: 12px;
  text-transform: uppercase; letter-spacing: 0.06em; }
.cw2-book-or::before, .cw2-book-or::after {
  content: ""; flex: 1; height: 1px; background: var(--hairline); }

/* Stage 13 — inline Calendly calendar in the Book tab */
.cw2-bk-ids { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 10px;
  margin-bottom: 14px; }
.cw2-cal-bar { display: flex; align-items: center; justify-content: space-between;
  margin-bottom: 8px; }
.cw2-cal-reload { font: 600 12px var(--font-body); color: var(--ink-soft);
  background: #fff; border: 1px solid var(--hairline-2); border-radius: 999px;
  padding: 5px 12px; cursor: pointer; }
.cw2-cal-reload:hover { background: var(--hairline); color: var(--ink); }
.cw2-cal { min-height: 640px; height: 70vh; border: 1px solid var(--hairline-2);
  border-radius: 12px; overflow: hidden; background: #fff; }
.cw2-cal iframe { width: 100% !important; height: 100% !important; border: 0; }
.cw2-cal-ph { display: flex; align-items: center; justify-content: center;
  height: 100%; min-height: 640px; color: var(--muted); font-size: 14px;
  text-align: center; padding: 24px; }
.cw2-book-more { margin-top: 16px; border-top: 1px solid var(--hairline);
  padding-top: 12px; }
.cw2-book-more > summary { cursor: pointer; font: 600 13px var(--font-body);
  color: var(--ink-soft); padding: 6px 0; list-style: none; }
.cw2-book-more > summary::-webkit-details-marker { display: none; }
.cw2-book-more > summary::before { content: "▸ "; color: var(--muted); }
.cw2-book-more[open] > summary::before { content: "▾ "; }
.cw2-book-more > summary:hover { color: var(--ink); }

/* ───────────────────────────────────────────────
   PREMIUM FROSTED GLASS NAV (iOS / macOS style)
   Adapted for the cream editorial theme — light values
   are the default; no dark-mode override (app is always light).
   ─────────────────────────────────────────────── */

/* Subtle background interest so the backdrop-blur reads as "frosted".
   Layered radial tints over the existing cream base. */
body {
  background:
    radial-gradient(ellipse at top left,  rgba(255, 107, 53, 0.05), transparent 42%),
    radial-gradient(ellipse at top right, rgba(37, 99, 235, 0.045), transparent 42%),
    var(--cream);
  background-attachment: fixed;
  min-height: 100vh;
}

.lh-nav {
  position: sticky;
  top: 16px;
  z-index: 1000;
  display: flex;
  justify-content: center;
  padding: 16px 16px 0;
  margin-bottom: 28px;
  pointer-events: none;
}

.lh-nav-inner {
  pointer-events: auto;
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: rgba(250, 248, 244, 0.72);
  -webkit-backdrop-filter: saturate(180%) blur(24px);
  backdrop-filter: saturate(180%) blur(24px);
  border: 1px solid rgba(255, 255, 255, 0.6);
  border-radius: 999px;
  box-shadow:
    0 1px 0 rgba(255, 255, 255, 0.7) inset,
    0 8px 32px rgba(26, 26, 26, 0.10),
    0 1px 2px rgba(26, 26, 26, 0.05);
  width: fit-content;
  max-width: calc(100% - 32px);
}

/* BRAND */
.lh-nav-brand {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 14px;
  text-decoration: none;
  color: var(--ink);
  font-family: var(--font-mono);
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.18em;
  border-radius: 999px;
  transition: background 0.2s ease;
}
.lh-nav-brand:hover { background: rgba(26, 26, 26, 0.04); }

.lh-nav-brand-mark {
  font-size: 0.875rem;
  background: linear-gradient(135deg, #ff6b35, #f7931e);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  font-weight: 700;
}

/* DIVIDER between brand and links */
.lh-nav-brand::after {
  content: '';
  display: block;
  width: 1px;
  height: 18px;
  background: rgba(26, 26, 26, 0.12);
  margin-left: 12px;
}

/* LINKS GROUP */
.lh-nav-links { display: flex; align-items: center; gap: 2px; }

.lh-nav-link {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  text-decoration: none;
  color: rgba(26, 26, 26, 0.62);
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', sans-serif;
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: -0.005em;
  border-radius: 999px;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
  position: relative;
  white-space: nowrap;
}
.lh-nav-link svg { opacity: 0.7; transition: opacity 0.2s ease; }
.lh-nav-link:hover { color: var(--ink); background: rgba(26, 26, 26, 0.05); }
.lh-nav-link:hover svg { opacity: 1; }
.lh-nav-link.active {
  color: var(--ink);
  background: rgba(26, 26, 26, 0.08);
  font-weight: 600;
}
.lh-nav-link.active svg { opacity: 1; color: #ff6b35; }

/* ACTIONS (logout) — rendered as a POST form with a styled button */
.lh-nav-actions {
  display: flex;
  align-items: center;
  margin: 0 0 0 8px;
  padding-left: 12px;
  border-left: 1px solid rgba(26, 26, 26, 0.12);
}

.lh-nav-logout {
  display: flex;
  align-items: center;
  gap: 6px;
  padding: 8px 14px;
  text-decoration: none;
  color: rgba(26, 26, 26, 0.55);
  font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'Inter', sans-serif;
  font-size: 0.8125rem;
  font-weight: 500;
  letter-spacing: -0.005em;
  border: 0;
  background: none;
  cursor: pointer;
  border-radius: 999px;
  transition: all 0.2s cubic-bezier(0.16, 1, 0.3, 1);
}
.lh-nav-logout svg { opacity: 0.6; transition: opacity 0.2s ease; }
.lh-nav-logout:hover { color: #d93838; background: rgba(217, 56, 56, 0.06); }
.lh-nav-logout:hover svg { opacity: 1; }

/* MOBILE — collapse to icon-only */
@media (max-width: 720px) {
  .lh-nav { top: 12px; padding: 12px 12px 0; }
  .lh-nav-inner { padding: 6px 8px; gap: 4px; }
  .lh-nav-brand-text { display: none; }
  .lh-nav-brand::after { display: none; }
  .lh-nav-link, .lh-nav-logout { padding: 8px 10px; }

  /* Hide text, show only icons */
  .lh-nav-links .lh-nav-link { font-size: 0; gap: 0; }
  .lh-nav-links .lh-nav-link svg { width: 16px; height: 16px; }

  .lh-nav-actions { padding-left: 6px; margin-left: 4px; }
  .lh-nav-logout { font-size: 0; gap: 0; }
  .lh-nav-logout svg { width: 16px; height: 16px; }
}

/* Content sits below the floating nav; gentle premium fade-in */
.lh-nav + .main,
main.main {
  padding-top: 8px;
}
.main {
  /* `backwards` (not `both`): play the entrance fade-up, but do NOT retain the
   * end-state transform afterwards. A lingering transform on .main makes it the
   * containing block for position:fixed children, which would pin modals/overlays
   * to the top of the page instead of centring them in the viewport. */
  animation: lh-fade-up 0.4s cubic-bezier(0.16, 1, 0.3, 1) backwards;
}
@keyframes lh-fade-up {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ───────────────────────────────────────────────
   PREVIEWS — cream editorial design system
   (.pv-* are namespaced; loaded globally, only used on
   the Previews pages.) White-on-cream, Fraunces + Geist,
   orange accent used sparingly. Dark reserved for CTAs.
   ─────────────────────────────────────────────── */

:root {
  --pv-card-bd:   rgba(10,10,10,0.08);
  --pv-card-sh:   0 8px 32px rgba(10,10,10,0.06), 0 1px 2px rgba(10,10,10,0.04);
  --pv-body:      rgba(10,10,10,0.65);
  --pv-faint:     rgba(10,10,10,0.5);
  --pv-hover:     rgba(10,10,10,0.04);
  --pv-accent:    #ff6b35;
}

/* PAGE HEADER — mono eyebrow + Fraunces title */
.pv-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:2rem;gap:1rem;flex-wrap:wrap}
.pv-eyebrow{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.22em;font-size:.7rem;color:var(--pv-faint);margin:0 0 .4rem}
.pv-head h1{font-family:var(--font-head);font-weight:700;font-size:2.6rem;line-height:1;letter-spacing:-.01em;color:#0A0A0A;margin:0}

/* BUTTONS
   .pv-btn        = primary dark CTA pill (near-black, cream text)
   .pv-btn.secondary = neutral white pill w/ hairline border
   .pv-btn.danger = white pill, red text, red fill on hover
   .pv-btn.blue   = (legacy) treated as neutral secondary */
.pv-btn{display:inline-flex;align-items:center;gap:.4rem;background:#0A0A0A;color:var(--cream);
  padding:.75rem 1.4rem;border:1px solid #0A0A0A;border-radius:999px;cursor:pointer;
  font-family:var(--font-body);font-size:.8125rem;font-weight:700;letter-spacing:.04em;
  text-transform:uppercase;text-decoration:none;transition:transform .18s cubic-bezier(.16,1,.3,1),box-shadow .18s,background .18s}
.pv-btn:hover{background:#000;transform:translateY(-1px);box-shadow:0 8px 24px rgba(10,10,10,.18)}
.pv-btn.secondary,.pv-btn.blue{background:#fff;color:var(--ink);border:1px solid var(--pv-card-bd);
  text-transform:none;font-weight:500;letter-spacing:-.005em}
.pv-btn.secondary:hover,.pv-btn.blue:hover{background:var(--pv-hover);transform:none;box-shadow:none;color:#0A0A0A}
.pv-btn.danger{background:#fff;color:#b3261e;border:1px solid rgba(179,38,30,.28);text-transform:none;font-weight:600;letter-spacing:-.005em}
.pv-btn.danger:hover{background:#b3261e;color:#fff;border-color:#b3261e;transform:none;box-shadow:none}

/* STAT CARDS */
.pv-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:1rem;margin-bottom:2rem}
.pv-stat{background:#fff;border:1px solid var(--pv-card-bd);border-radius:16px;padding:1.3rem 1.4rem;box-shadow:var(--pv-card-sh)}
.pv-stat .label{display:flex;align-items:center;gap:.5rem;font-family:var(--font-mono);font-size:.7rem;
  text-transform:uppercase;letter-spacing:.16em;color:var(--pv-faint)}
.pv-stat .label::before{content:"";width:7px;height:7px;border-radius:999px;background:var(--pv-accent);flex:none}
.pv-stat.live   .label::before{background:#2F8A45}
.pv-stat.sent   .label::before{background:#2563eb}
.pv-stat.viewed .label::before{background:#E0A11E}
.pv-stat .value{font-family:var(--font-head);font-size:2.5rem;font-weight:700;color:#0A0A0A;margin-top:.55rem;line-height:1}

/* FILTER ROW — white pills */
.pv-filters{display:flex;gap:.6rem;flex-wrap:wrap;margin-bottom:1.5rem;align-items:center}
.pv-filters input,.pv-filters select{background:#fff;border:1px solid var(--pv-card-bd);color:var(--ink);
  border-radius:999px;padding:.55rem 1rem;font-family:var(--font-body);font-size:.875rem;transition:background .15s,border-color .15s}
.pv-filters input:hover,.pv-filters select:hover{background:var(--pv-hover)}
.pv-filters input:focus,.pv-filters select:focus{outline:none;border-color:rgba(10,10,10,.25);background:#fff}
.pv-filters input[type=search]{min-width:240px}

/* TABLE */
.pv-table-wrap{background:#fff;border:1px solid var(--pv-card-bd);border-radius:16px;box-shadow:var(--pv-card-sh);overflow:hidden}
table.pv-table{width:100%;border-collapse:collapse;font-size:.875rem}
.pv-table th{text-align:left;padding:.85rem 1rem;border-bottom:1px solid var(--hairline);
  font-family:var(--font-mono);font-size:.65rem;text-transform:uppercase;letter-spacing:.14em;color:var(--pv-faint);white-space:nowrap;background:#FCFBF9}
.pv-table th a{color:var(--pv-faint);text-decoration:none}.pv-table th a:hover{color:#0A0A0A}
.pv-table td{padding:.8rem 1rem;border-bottom:1px solid var(--hairline);vertical-align:middle;color:var(--pv-body)}
.pv-table tbody tr:last-child td{border-bottom:0}
.pv-table tbody tr:hover td{background:rgba(10,10,10,.02)}
.pv-name{font-weight:600;color:#0A0A0A;text-decoration:none}.pv-name:hover{color:var(--pv-accent)}
.pv-tag{display:inline-block;background:rgba(10,10,10,.05);color:var(--pv-body);font-size:.7rem;
  padding:.18rem .6rem;border-radius:999px;text-transform:capitalize}
.pv-badge{display:inline-block;font-size:.68rem;padding:.2rem .6rem;border-radius:999px;font-weight:600;text-transform:capitalize}
.pv-badge.draft{background:var(--stone-bg);color:var(--stone-fg)}
.pv-badge.live{background:var(--sage-bg);color:var(--sage-fg)}
.pv-badge.archived{background:var(--terra-bg);color:var(--terra-fg)}
.pv-yes{color:#2F8A45;font-weight:700}.pv-no{color:rgba(10,10,10,.3)}
.pv-url{font-family:var(--font-mono);font-size:.72rem;color:var(--pv-faint)}
.pv-actions{display:flex;gap:.35rem;flex-wrap:wrap}
.pv-mini{display:inline-flex;align-items:center;background:#fff;color:var(--pv-body);border:1px solid var(--pv-card-bd);
  border-radius:999px;padding:.32rem .75rem;font-family:var(--font-body);font-size:.72rem;cursor:pointer;text-decoration:none;transition:background .15s,color .15s}
.pv-mini:hover{background:var(--pv-hover);color:#0A0A0A}
.pv-muted{color:var(--pv-faint);font-size:.75rem}

/* EMPTY STATE */
.pv-empty{text-align:center;padding:4rem 2rem;background:rgba(10,10,10,.02);
  border:1px dashed rgba(10,10,10,.15);border-radius:16px;
  font-family:var(--font-head);font-style:italic;font-size:1.15rem;color:var(--pv-body)}
.pv-empty strong{font-style:normal}
.pv-empty a{color:var(--pv-accent);text-decoration:none;font-style:normal;font-weight:600}
.pv-empty a:hover{text-decoration:underline}

/* TOAST (overlay notification — dark is fine) */
#pv-toast{position:fixed;bottom:1.5rem;left:50%;transform:translateX(-50%);background:#0A0A0A;color:var(--cream);
  padding:.65rem 1.2rem;border-radius:999px;font-family:var(--font-body);font-size:.82rem;opacity:0;
  transition:opacity .2s;pointer-events:none;z-index:1100;box-shadow:0 8px 24px rgba(10,10,10,.2)}
#pv-toast.show{opacity:1}

/* ── NEW-PREVIEW FORM ── */
.pv-form-wrap{max-width:720px;margin:0 auto}
.pv-crumb{margin-bottom:1.5rem}
.pv-crumb a{color:var(--pv-accent);text-decoration:none;font-size:.85rem}
.pv-crumb a:hover{text-decoration:underline}
.pv-field{margin-bottom:1.1rem}
.pv-field label{display:block;font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;
  letter-spacing:.16em;color:var(--pv-faint);margin-bottom:.45rem}
.pv-field .req{color:var(--pv-accent)}
.pv-field input,.pv-field select,.pv-field textarea{width:100%;background:#fff;border:1px solid var(--pv-card-bd);
  color:var(--ink);border-radius:12px;padding:.7rem .9rem;font-family:var(--font-body);font-size:.9rem;box-sizing:border-box;transition:border-color .15s}
.pv-field input:focus,.pv-field select:focus,.pv-field textarea:focus{outline:none;border-color:rgba(10,10,10,.25)}
.pv-field textarea{min-height:80px;resize:vertical}
.pv-slug-hint{font-size:.74rem;color:var(--pv-faint);margin-top:.35rem}
.pv-slug-hint code{font-family:var(--font-mono);color:var(--pv-body)}
.pv-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.pv-actions-row{display:flex;gap:.75rem;margin-top:1.75rem}
fieldset.pv-grp{border:1px solid var(--pv-card-bd);border-radius:14px;padding:1.3rem 1.4rem;margin:0 0 1.4rem;background:#fff;box-shadow:var(--pv-card-sh)}
/* float removes the legend from its border-straddling slot so the card border
   draws as a complete rounded box and the label sits inside the padding */
fieldset.pv-grp legend{float:left;width:100%;padding:0;margin:0 0 1rem;font-family:var(--font-mono);font-size:.66rem;text-transform:uppercase;letter-spacing:.18em;color:var(--pv-faint)}

/* ── Auto-fill from Google ── */
fieldset.pv-gpull{border-color:rgba(255,107,53,.35);background:linear-gradient(180deg,rgba(255,107,53,.04),#fff 60%)}
fieldset.pv-gpull legend{color:var(--pv-accent)}
.pv-gpull-warn{font-size:.8rem;color:#9a3434;background:rgba(196,69,69,.08);border-radius:8px;padding:.5rem .7rem;margin-bottom:.8rem}
.pv-gpull-warn code{font-family:var(--font-mono)}
.pv-gpull-search{display:flex;gap:.5rem;align-items:stretch}
.pv-gpull-search input{flex:1;background:#fff;border:1px solid var(--pv-card-bd);border-radius:10px;padding:.6rem .75rem;font-size:.92rem}
.pv-gpull-search input:focus{outline:none;border-color:var(--pv-accent)}
.pv-gpull-search .pv-btn{flex:none;white-space:nowrap}
.pv-gpull-status{font-size:.82rem;color:var(--pv-faint);margin-top:.6rem;min-height:1em}
.pv-gpull-cards{display:flex;flex-direction:column;gap:.5rem;margin-top:.7rem}
.pv-gcard{display:flex;gap:.7rem;align-items:center;text-align:left;width:100%;cursor:pointer;
  background:#fff;border:1px solid var(--pv-card-bd);border-radius:12px;padding:.55rem .65rem;
  transition:border-color .15s,box-shadow .15s,transform .08s}
.pv-gcard:hover{border-color:var(--pv-accent);box-shadow:0 4px 14px rgba(255,107,53,.10)}
.pv-gcard.sel{border-color:var(--pv-accent);box-shadow:0 0 0 2px rgba(255,107,53,.25)}
.pv-gcard:active{transform:scale(.995)}
.pv-gcard-thumb{width:54px;height:54px;border-radius:9px;object-fit:cover;flex:none;background:var(--cream-deeper)}
.pv-gcard-noimg{display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:.55rem;color:var(--pv-faint);text-align:center;line-height:1.1}
.pv-gcard-body{display:flex;flex-direction:column;gap:.12rem;min-width:0}
.pv-gcard-name{font-weight:600;font-size:.92rem;color:var(--pv-body);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-gcard-addr{font-size:.76rem;color:var(--pv-faint);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-gcard-rat{font-size:.76rem;color:#B88A3A}
.pv-gpull-picked{margin-top:.7rem;font-size:.86rem;color:#1f5a3a;background:rgba(61,139,92,.08);border-radius:9px;padding:.6rem .75rem;line-height:1.45}

/* manual photo upload zone */
.pv-mup{margin-top:1.1rem;border-top:1px dashed var(--pv-card-bd);padding-top:1rem}
.pv-mup-label{display:block;font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.04em;color:var(--pv-faint);margin-bottom:.5rem}
.pv-mup-zone{border:2px dashed var(--pv-card-bd);border-radius:12px;background:#fff;
  padding:1.2rem 1rem;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}
.pv-mup-zone:hover,.pv-mup-zone:focus{outline:none;border-color:var(--pv-accent);background:rgba(255,107,53,.03)}
.pv-mup-zone.over{border-color:var(--pv-accent);background:rgba(255,107,53,.08)}
.pv-mup-hint{font-size:.86rem;color:var(--pv-faint);line-height:1.5}
.pv-mup-browse{color:var(--pv-accent);text-decoration:underline}
.pv-mup-hint small{font-size:.72rem;color:var(--pv-faint)}
.pv-mup-msg{margin-top:.6rem;font-size:.78rem;line-height:1.45;color:var(--pv-accent);background:rgba(255,107,53,.07);border:1px solid rgba(255,107,53,.25);border-radius:8px;padding:.5rem .7rem}
.pv-mup-grid{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:.7rem}
.pv-mup-thumb{position:relative;width:78px}
.pv-mup-thumb img{width:78px;height:78px;object-fit:cover;border-radius:10px;border:1px solid var(--pv-card-bd);display:block;background:var(--cream-deeper)}
.pv-mup-cap{display:block;font-size:.6rem;color:var(--pv-faint);margin-top:.2rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-mup-x{position:absolute;top:-7px;right:-7px;width:20px;height:20px;border-radius:50%;border:0;
  background:#C44545;color:#fff;font-size:.9rem;line-height:1;cursor:pointer;
  display:flex;align-items:center;justify-content:center;padding:0;box-shadow:0 1px 4px rgba(0,0,0,.2)}
.pv-mup-x:hover{background:#a83636}
fieldset.pv-grp legend + *{clear:both}

/* ── DETAIL VIEW ── */
.pv-d-crumb{margin-bottom:1rem}
.pv-d-crumb a{color:var(--pv-accent);text-decoration:none;font-size:.85rem}
.pv-d-crumb a:hover{text-decoration:underline}
.pv-d-top{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;margin-bottom:1.5rem}
.pv-d-top h1{font-family:var(--font-head);font-weight:700;font-size:2rem;letter-spacing:-.01em;color:#0A0A0A;margin:0}
.pv-d-top .pv-badge{vertical-align:middle;margin-left:.7rem}
.pv-grid{display:grid;grid-template-columns:40% 60%;gap:1.5rem;align-items:start}
@media(max-width:980px){.pv-grid{grid-template-columns:1fr}}
.pv-card{background:#fff;border:1px solid var(--pv-card-bd);border-radius:16px;padding:1.4rem;margin-bottom:1.2rem;box-shadow:var(--pv-card-sh)}
.pv-card h2{font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.16em;color:var(--pv-faint);margin:0 0 1.1rem;font-weight:500}
.pv-urlbar{display:flex;gap:.5rem;align-items:center}
.pv-urlbar input{flex:1;font-family:var(--font-mono);font-size:.75rem;background:#fff;border:1px solid var(--pv-card-bd);color:var(--ink);border-radius:999px;padding:.5rem .9rem}
.pv-track{display:grid;grid-template-columns:1fr 1fr;gap:.7rem 1rem;font-size:.85rem}
.pv-track .k{font-family:var(--font-mono);color:var(--pv-faint);font-size:.62rem;text-transform:uppercase;letter-spacing:.1em}
.pv-track .v{font-weight:600;color:#0A0A0A;margin-top:.15rem}
.pv-toggle{display:flex;align-items:center;gap:.7rem;margin:.4rem 0;flex-wrap:wrap}
.pv-actions-grid{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:.2rem}
.pv-iframe-bar{display:flex;align-items:center;gap:.6rem;margin-bottom:.7rem;flex-wrap:wrap}
/* active viewport toggle (Desktop/Mobile) — shows which mode is live */
.pv-iframe-bar .pv-btn.active{background:#FF6B35;border-color:#FF6B35;color:#fff;box-shadow:0 2px 8px rgba(255,107,53,.3)}
.pv-iframe-bar-sp{flex:1}
#pv-edit-toggle.on{background:#FF6B35;border-color:#FF6B35;color:#fff;box-shadow:0 2px 8px rgba(255,107,53,.3)}
.pv-edit-tools{display:inline-flex;align-items:center;gap:.5rem}

/* ── Visual click-to-edit: floating control popup (rendered in the parent) ── */
.pv-ed-pop{position:fixed;z-index:1300;width:248px;max-height:80vh;overflow:auto;
  background:#FAF8F5;border:1px solid rgba(10,10,10,.12);border-radius:14px;
  box-shadow:0 18px 50px rgba(10,10,10,.22),0 2px 8px rgba(10,10,10,.08);
  font-family:var(--font-mono,monospace);animation:pvEdPopIn .14s ease}
@keyframes pvEdPopIn{from{opacity:0;transform:translateY(4px) scale(.98)}to{opacity:1;transform:none}}
.pv-ed-pop-head{display:flex;align-items:center;justify-content:space-between;
  padding:9px 12px;border-bottom:1px solid rgba(10,10,10,.08);
  font-size:.72rem;font-weight:600;color:#14110F;letter-spacing:.02em}
.pv-ed-pop-x{border:0;background:none;cursor:pointer;font-size:1.1rem;line-height:1;color:#888;padding:0 2px}
.pv-ed-pop-x:hover{color:#FF6B35}
.pv-ed-pop-body{padding:10px 12px;display:flex;flex-direction:column;gap:9px}
.pv-ed-row{display:flex;align-items:center;gap:8px}
.pv-ed-row>label{flex:0 0 64px;font-size:.68rem;color:#6b645d;text-transform:uppercase;letter-spacing:.04em}
.pv-ed-color{display:flex;align-items:center;gap:6px;flex:1}
.pv-ed-color input[type=color]{width:30px;height:26px;border:1px solid rgba(10,10,10,.15);border-radius:7px;background:none;padding:1px;cursor:pointer}
.pv-ed-hex{flex:1;min-width:0;border:1px solid rgba(10,10,10,.15);border-radius:7px;padding:4px 6px;font-size:.72rem;font-family:inherit;background:#fff}
.pv-ed-range{display:flex;align-items:center;gap:6px;flex:1}
.pv-ed-range input[type=range]{flex:1;min-width:0;accent-color:#FF6B35}
.pv-ed-num{width:46px;border:1px solid rgba(10,10,10,.15);border-radius:7px;padding:4px 5px;font-size:.72rem;font-family:inherit;background:#fff}
.pv-ed-unit{font-size:.62rem;color:#aaa}
.pv-ed-sel-ctrl{flex:1;min-width:0;border:1px solid rgba(10,10,10,.15);border-radius:7px;padding:4px 6px;font-size:.72rem;font-family:inherit;background:#fff;cursor:pointer}
.pv-ed-align{display:flex;gap:4px;flex:1}
.pv-ed-align button{flex:1;border:1px solid rgba(10,10,10,.15);background:#fff;border-radius:7px;padding:4px 0;font-size:.7rem;cursor:pointer;color:#6b645d}
.pv-ed-align button.on{background:#FF6B35;border-color:#FF6B35;color:#fff}
.pv-ed-wide{width:100%;justify-content:center}
.pv-ed-pick-hint{font-size:.68rem;color:#6b645d;margin-bottom:6px}
.pv-ed-pick{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}
.pv-ed-pick img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;border:1px solid rgba(10,10,10,.1);cursor:pointer;transition:.15s}
.pv-ed-pick img:hover{border-color:#FF6B35;transform:scale(1.04)}
/* hover element-type label, floats over the iframe */
#pv-ed-label{position:fixed;z-index:1290;display:none;pointer-events:none;
  background:#FF6B35;color:#fff;font-family:var(--font-mono,monospace);font-size:.62rem;
  font-weight:600;padding:2px 7px;border-radius:6px;letter-spacing:.03em;box-shadow:0 2px 6px rgba(0,0,0,.18)}
.pv-iframe-wrap{position:relative;background:var(--cream-deeper);border:1px solid var(--pv-card-bd);border-radius:16px;padding:.7rem;display:flex;justify-content:center;box-shadow:var(--pv-card-sh)}
/* soft brand-orange glow ring while a new version is loading; fades out on crossfade */
.pv-iframe-wrap::after{content:"";position:absolute;inset:0;border-radius:16px;pointer-events:none;opacity:0;
  box-shadow:inset 0 0 0 2px rgba(255,107,53,.35),0 0 26px rgba(255,107,53,.22);
  transition:opacity .4s ease}
.pv-iframe-wrap.updating::after{opacity:1;animation:pvGlowPulse 1.1s ease-in-out infinite}
@keyframes pvGlowPulse{0%,100%{opacity:.5}50%{opacity:1}}
/* stage holds the two stacked iframes; sizing/mobile toggle lives here now */
.pv-frame-stage{position:relative;width:100%;height:72vh;border-radius:10px;transition:width .2s}
.pv-frame-stage.mobile{width:390px;max-width:100%}
/* both iframes fill the stage; only .is-active is visible — crossfade via opacity */
iframe.pv-frame{position:absolute;inset:0;width:100%;height:100%;border:0;background:#fff;border-radius:10px;
  opacity:0;transition:opacity .35s cubic-bezier(.4,0,.2,1);
  /* The standby (faded) iframe must NOT intercept scroll. Without this the later-in-DOM
     iframe sat on top while invisible and ate all scroll until a manual Refresh swapped
     which one was active. Only the visible .is-active frame is interactive + on top. */
  pointer-events:none;z-index:1}
iframe.pv-frame.is-active{opacity:1;pointer-events:auto;z-index:2}
.pv-assets{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:.9rem}
.pv-asset{width:92px;text-align:center;font-size:.66rem;color:var(--pv-body);cursor:pointer}
.pv-asset img{width:92px;height:62px;object-fit:cover;border-radius:8px;border:1px solid var(--pv-card-bd);display:block}
.pv-asset .fn{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:.25rem}
.pv-asset .del{color:#b3261e;cursor:pointer}
.pv-filetile{width:92px;height:62px;background:var(--cream-deeper);border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:.6rem;color:var(--pv-faint);border:1px solid var(--pv-card-bd)}
.pv-drop{border:1.5px dashed rgba(10,10,10,.18);border-radius:12px;padding:1.2rem;text-align:center;color:var(--pv-faint);font-size:.82rem;cursor:pointer;transition:border-color .15s,background .15s}
.pv-drop.over{border-color:var(--pv-accent);background:rgba(255,107,53,.06);color:var(--pv-accent)}
.pv-saved{color:#2F8A45;font-size:.72rem;margin-left:.5rem;opacity:0;transition:opacity .2s}
.pv-saved.show{opacity:1}

/* ── HTML EDITOR ── */
.pv-ed-bar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-bottom:.9rem}
.pv-ed-bar h1{font-family:var(--font-head);font-weight:700;font-size:1.4rem;margin:0 .8rem 0 0;color:#0A0A0A}
.pv-ed-bar .spacer{flex:1}
.pv-autosave{font-family:var(--font-mono);font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;color:var(--pv-faint)}
.pv-ed-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;align-items:start}
@media(max-width:980px){.pv-ed-grid{grid-template-columns:1fr}}
.CodeMirror{height:74vh;border:1px solid var(--pv-card-bd);border-radius:14px;font-size:13px;box-shadow:var(--pv-card-sh)}
.pv-ed-frame-wrap{background:var(--cream-deeper);border:1px solid var(--pv-card-bd);border-radius:14px;padding:.6rem;box-shadow:var(--pv-card-sh)}
iframe.pv-ed-frame{border:0;background:#fff;border-radius:10px;width:100%;height:74vh}
.pv-form-wrap h1{font-family:var(--font-head);font-weight:700;font-size:2rem;letter-spacing:-.01em;color:#0A0A0A;margin:0 0 .25rem}

/* ───────────────────────────────────────────────
   FORM INPUT LEGIBILITY
   Bug: in OS/browser dark mode (and Safari/iOS via -webkit-text-fill-color,
   or on autofill), form text rendered light/invisible on the cream fields
   because the app never declared a colour-scheme. Fix = pin the page to light
   rendering + force near-black text on entry fields. COLOUR-ONLY: deliberately
   no width/padding/appearance overrides, so the status-pill <select>s, search
   bars, sliders and other components keep their existing sizing.
   ─────────────────────────────────────────────── */
html { color-scheme: light; }

input[type="text"], input[type="email"], input[type="tel"], input[type="url"],
input[type="number"], input[type="password"], input[type="search"], input[type="date"],
input[type="datetime-local"], input[type="time"], textarea {
  color: #0A0A0A;
  -webkit-text-fill-color: #0A0A0A;   /* Safari/iOS otherwise washes text out */
}
/* Selects keep their own colour (e.g. pastel status pills) but iOS can't wash it out */
select { -webkit-text-fill-color: currentColor; }

input::placeholder, textarea::placeholder {
  color: rgba(10, 10, 10, 0.4);
  -webkit-text-fill-color: rgba(10, 10, 10, 0.4);
}

/* Brand focus ring on free-text fields (selects/pills keep their existing outline,
   and components with a more specific :focus rule are unaffected) */
input[type="text"]:focus, input[type="email"]:focus, input[type="tel"]:focus,
input[type="url"]:focus, input[type="number"]:focus, input[type="password"]:focus,
input[type="search"]:focus, textarea:focus {
  outline: none;
  border-color: #ff6b35;
  box-shadow: 0 0 0 3px rgba(255, 107, 53, 0.12);
}

/* Autofill — browsers force their own background/text colour; pin to readable */
input:-webkit-autofill, input:-webkit-autofill:hover,
input:-webkit-autofill:focus, textarea:-webkit-autofill, select:-webkit-autofill {
  -webkit-text-fill-color: #0A0A0A;
  -webkit-box-shadow: 0 0 0 1000px #FFFFFF inset;
  transition: background-color 9999s ease-in-out 0s;
}

/* ── Preview detail: Details/Terminal tabs + embedded terminal ── */
.pv-tabs{display:flex;gap:.4rem;margin-bottom:1.3rem;border-bottom:1px solid var(--hairline)}
.pv-tab{background:none;border:0;border-bottom:2px solid transparent;padding:.6rem .95rem;margin-bottom:-1px;
  font-family:var(--font-body);font-size:.9rem;color:var(--pv-faint);cursor:pointer;border-radius:8px 8px 0 0;transition:color .15s,background .15s}
.pv-tab:hover{color:#0A0A0A;background:var(--pv-hover)}
.pv-tab.active{color:#0A0A0A;border-bottom-color:var(--pv-accent);font-weight:600}
.pv-term-split{display:grid;grid-template-columns:40% 60%;gap:1.5rem;align-items:start}
@media(max-width:980px){.pv-term-split{grid-template-columns:1fr}}
.pv-term-label{font-family:var(--font-mono);font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--pv-faint);flex:1}
.pv-term-shell{position:relative;background:#0a0a0a;border:1px solid var(--pv-card-bd);border-radius:16px;
  overflow:hidden;box-shadow:var(--pv-card-sh);height:72vh}
.pv-term-frame{border:0;width:100%;height:100%;display:block;background:#0a0a0a}
.pv-term-status{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-mono),'Geist Mono',monospace;font-size:.82rem;color:#f5ede2;background:#0a0a0a;text-align:center;padding:1rem;letter-spacing:.04em}

/* ── Preview detail v2: permanent 3-column layout (details | preview | terminal) ── */
.pv-grid3{display:grid;grid-template-columns:28% 40% 32%;gap:1.25rem;align-items:start}
.pv-col-mid,.pv-col-term{position:sticky;top:92px}
.pv-col-mid .pv-frame-stage{height:78vh}

/* ── Premium LIGHT terminal pane (Claude.ai chat × Notion AI × Linear, light) ── */
.pv-term-pane{display:flex;flex-direction:column;height:82vh;border-radius:20px;overflow:hidden;
  background:#FAF8F5;
  border:1px solid rgba(10,10,10,.08);
  box-shadow:0 24px 60px rgba(10,10,10,.06), 0 2px 8px rgba(10,10,10,.03), inset 0 1px 0 rgba(255,255,255,.8);
  transition:box-shadow .25s ease}
.pv-term-pane.focused{box-shadow:0 0 0 1px rgba(255,107,53,.15), 0 24px 60px rgba(10,10,10,.06), 0 2px 8px rgba(10,10,10,.03), inset 0 1px 0 rgba(255,255,255,.8)}
/* header bar */
.pv-term-head{display:flex;align-items:center;gap:.7rem;height:56px;flex:none;padding:0 16px;
  background:rgba(255,255,255,.6);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);
  border-bottom:1px solid rgba(10,10,10,.06)}
/* ✨ Auto-Build full-page button bar (top of the terminal pane) */
.pv-autobuild-bar{flex:none;padding:10px 14px;background:rgba(255,255,255,.55);display:flex;
  flex-wrap:wrap;gap:8px;align-items:center;
  -webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-bottom:1px solid rgba(10,10,10,.06)}
.pv-autobuild-btn{flex:1 1 100%;border:0;cursor:pointer;border-radius:11px;padding:.7rem 1rem;
  font-family:var(--font-mono);font-size:.8rem;font-weight:600;letter-spacing:.02em;color:#fff;
  background:linear-gradient(135deg,#FF6B35,#ff8a3d);box-shadow:0 4px 14px rgba(255,107,53,.28);
  transition:transform .1s ease,box-shadow .15s ease,opacity .15s}
.pv-autobuild-btn:hover{box-shadow:0 6px 20px rgba(255,107,53,.40)}
.pv-autobuild-btn:active{transform:scale(.985)}
.pv-autobuild-btn:disabled{opacity:.6;cursor:default;box-shadow:none}
/* 📚 Build-lessons capture controls + link */
.pv-lesson-btn{flex:1 1 0;min-width:0;border:1px solid rgba(10,10,10,.12);cursor:pointer;
  border-radius:9px;padding:.5rem .6rem;font-family:var(--font-mono);font-size:.72rem;font-weight:600;
  color:#1A1A1A;background:rgba(255,255,255,.7);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  transition:background .15s,border-color .15s,transform .1s}
.pv-lesson-btn:hover{background:#fff;border-color:rgba(255,107,53,.5)}
.pv-lesson-btn:active{transform:scale(.98)}
.pv-lesson-btn:disabled{opacity:.55;cursor:default}
.pv-lesson-link{flex:none;font-family:var(--font-mono);font-size:.72rem;font-weight:600;
  color:#FF6B35;text-decoration:none;padding:.5rem .2rem}
.pv-lesson-link:hover{text-decoration:underline}
/* lesson modals (Save Lesson + Suggested review) */
.pv-lmodal-bg{position:fixed;inset:0;z-index:1200;background:rgba(15,12,10,.5);
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;
  justify-content:center;padding:20px}
.pv-lmodal-bg[hidden]{display:none}
.pv-lmodal{background:#FAF8F5;border-radius:16px;max-width:520px;width:100%;max-height:88vh;
  overflow-y:auto;padding:22px 24px;box-shadow:0 30px 80px rgba(0,0,0,.35)}
.pv-lmodal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}
.pv-lmodal-head h3{margin:0;font-size:1.15rem;color:#1A1A1A}
.pv-lmodal-x{border:0;background:none;font-size:1.6rem;line-height:1;cursor:pointer;color:#888;padding:0 4px}
.pv-lmodal-x:hover{color:#1A1A1A}
.pv-lmodal-sub{margin:.2rem 0 1rem;font-size:.82rem;color:#6B6B6B;line-height:1.45}
.pv-lmodal-lbl{display:block;font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:#8a7a6a;margin:.7rem 0 .3rem}
.pv-lmodal-opt{font-weight:400;text-transform:none;letter-spacing:0;color:#b0a596}
.pv-lmodal-input{width:100%;box-sizing:border-box;border:1px solid rgba(10,10,10,.16);border-radius:9px;
  padding:.55rem .7rem;font-family:inherit;font-size:.9rem;background:#fff;color:#1A1A1A;resize:vertical}
.pv-lmodal-input:focus{outline:none;border-color:#FF6B35;box-shadow:0 0 0 3px rgba(255,107,53,.14)}
.pv-lmodal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:1.2rem}
.pv-suggest-list{display:flex;flex-direction:column;gap:10px;margin:.4rem 0}
.pv-suggest-item{display:flex;gap:10px;align-items:flex-start;padding:10px 12px;border:1px solid rgba(10,10,10,.1);
  border-radius:10px;background:#fff;cursor:pointer}
.pv-suggest-item input{margin-top:3px;flex:none;accent-color:#FF6B35}
.pv-suggest-body{min-width:0}
.pv-suggest-cat{display:inline-block;font-family:var(--font-mono);font-size:.66rem;font-weight:700;
  text-transform:uppercase;letter-spacing:.05em;color:#FF6B35;background:rgba(255,107,53,.1);
  padding:1px 7px;border-radius:5px;margin-bottom:4px}
.pv-suggest-rule{font-size:.9rem;color:#1A1A1A;line-height:1.4}
.pv-suggest-why{font-size:.76rem;color:#9a8f80;margin-top:3px;font-style:italic}
.pv-term-dots{display:flex;gap:7px;flex:none}
.pv-term-dots i{width:10px;height:10px;border-radius:50%;display:block}
.pv-term-dots .r{background:#D98C86}.pv-term-dots .y{background:#DBC07A}.pv-term-dots .g{background:#8FC0A0}
.pv-term-title{flex:1;min-width:0;text-align:center;font-family:'Geist Mono',ui-monospace,monospace;
  font-size:.8125rem;letter-spacing:.02em;color:#4A3A2E;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pv-term-tools{display:flex;align-items:center;gap:8px;flex:none}
.pv-term-live{width:8px;height:8px;border-radius:50%;background:#3D8B5C;box-shadow:0 0 0 0 rgba(61,139,92,.5);
  animation:pv-pulse 2s infinite}
@keyframes pv-pulse{0%{box-shadow:0 0 0 0 rgba(61,139,92,.45)}70%{box-shadow:0 0 0 6px rgba(61,139,92,0)}100%{box-shadow:0 0 0 0 rgba(61,139,92,0)}}
.pv-term-ico{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;
  background:transparent;border:0;color:rgba(74,58,46,.5);cursor:pointer;transition:background .15s,color .15s}
.pv-term-ico:hover{background:rgba(10,10,10,.05);color:#4A3A2E}
/* body shell — parent-side padding gives the inset look without disturbing xterm fit */
.pv-term-shell{position:relative;flex:1;min-height:0;height:auto;background:transparent;border:0;border-radius:0;
  box-shadow:none;overflow:hidden;padding:24px 28px}
.pv-term-frame{border:0;width:100%;height:100%;display:block;background:transparent;opacity:0;transition:opacity .35s ease}
.pv-term-frame.ready{opacity:1}
/* mask over Claude's pinned welcome banner — opaque cream fading to nothing,
   sits at the content-box top (aligned with the iframe's first rows). */
.pv-term-mask{position:absolute;top:0;left:0;right:0;height:2.4rem;z-index:2;pointer-events:none;
  background:linear-gradient(180deg,#FAF8F5 0,#FAF8F5 45%,rgba(250,248,245,0) 100%)}
/* loading state */
.pv-term-status{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.8rem;
  font-family:'Geist Mono',ui-monospace,monospace;font-style:italic;font-size:.82rem;color:#4A3A2E;
  background:transparent;text-align:center;padding:1rem;letter-spacing:.02em}
.pv-term-pulse{width:14px;height:14px;border-radius:50%;background:#FF6B35;
  box-shadow:0 0 18px 4px rgba(255,107,53,.30);animation:pv-glow 1.4s ease-in-out infinite}
@keyframes pv-glow{0%,100%{opacity:.4;transform:scale(.85)}50%{opacity:1;transform:scale(1.1)}}
/* corner pills (cosmetic; never block clicks) */
.pv-pill{position:absolute;bottom:14px;padding:4px 10px;border-radius:999px;font-family:'Geist Mono',ui-monospace,monospace;
  font-size:.62rem;letter-spacing:.02em;color:#4A3A2E;background:rgba(10,10,10,.04);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid rgba(10,10,10,.06);
  pointer-events:none;opacity:.9;z-index:3}
.pv-pill-user{left:18px}.pv-pill-model{right:18px}
/* ── Chat overlay: permanent "magic AI" UI layered over the (hidden) terminal.
   The xterm.js iframe stays mounted so we can paste keystrokes into it, but is
   invisible by default (Ctrl+` toggles .raw to reveal it for debug). Cosmetic
   pills (z:3) sit above the chat (z:2) so they remain visible. */
.pv-term-frame{opacity:0 !important;pointer-events:none;transition:none}
.pv-term-frame.ready{opacity:0 !important}
.pv-term-pane.raw .pv-term-frame{opacity:1 !important;pointer-events:auto;transition:opacity .15s ease}
.pv-term-pane.raw .pv-chat{display:none}

.pv-chat{position:absolute;inset:0;z-index:2;background:#FAF8F5;
  display:flex;flex-direction:column;overflow:hidden}
.pv-chat-drop-hint{position:absolute;inset:0;display:none;align-items:center;justify-content:center;
  font-family:'Fraunces','Cormorant Garamond',Georgia,serif;font-weight:500;font-size:1.5rem;
  color:#FF6B35;pointer-events:none;letter-spacing:-.01em;z-index:5;
  background:rgba(255,247,241,.85)}
.pv-chat.drop-over .pv-chat-drop-hint{display:flex}
.pv-chat.drop-over{outline:2px dashed #FF6B35;outline-offset:-12px;border-radius:8px}

/* scrollable message list (top → bottom) */
.pv-chat-scroll{flex:1;min-height:0;overflow-y:auto;padding:24px 24px 8px;
  scrollbar-width:thin;scrollbar-color:rgba(10,10,10,.12) transparent}
.pv-chat-scroll::-webkit-scrollbar{width:4px}
.pv-chat-scroll::-webkit-scrollbar-track{background:transparent}
.pv-chat-scroll::-webkit-scrollbar-thumb{background:rgba(10,10,10,.12);border-radius:99px}
.pv-chat-scroll::-webkit-scrollbar-thumb:hover{background:rgba(255,107,53,.40)}

.pv-chat-msgs{display:flex;flex-direction:column;gap:14px;max-width:62ch;margin:0 auto}

/* empty state (Fraunces, mirrors the old splash but lives inside the scroll area) */
.pv-chat-empty{display:flex;flex-direction:column;align-items:center;
  margin:18% auto 0;text-align:center;padding:0 28px;max-width:540px;color:#1A1A1A}
.pv-chat-empty-spark{width:56px;height:56px;border-radius:50%;flex:none;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,107,53,.12);margin-bottom:1.5rem}
.pv-chat-empty-h{margin:0;font-family:'Fraunces','Cormorant Garamond',Georgia,'Times New Roman',serif;
  font-weight:500;font-size:1.75rem;line-height:1.2;color:#1A1A1A;letter-spacing:-.01em}
.pv-chat-empty-sub{margin:.6rem 0 0;font-size:.9375rem;font-weight:400;color:#6B6B6B;line-height:1.4}

/* message bubbles */
.pv-chat-msg{font-family:'Geist',system-ui,-apple-system,sans-serif;font-size:.92rem;
  line-height:1.5;padding:10px 14px;border-radius:14px;word-break:break-word;
  max-width:82%;animation:pvChatIn .18s ease-out}
@keyframes pvChatIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.pv-chat-user{align-self:flex-end;background:#FF6B35;color:#fff;border-bottom-right-radius:4px}
.pv-chat-user .pv-chat-text{white-space:pre-wrap}
.pv-chat-assistant{align-self:flex-start;color:#1A1A1A;background:rgba(10,10,10,.04);
  border-bottom-left-radius:4px}
.pv-chat-completed{background:rgba(61,139,92,.08);color:#1f5a3a}
.pv-chat-completed.pv-chat-errmsg{background:rgba(196,69,69,.08);color:#9a3434}

.pv-chat-spark{color:#FF6B35;font-weight:600}
.pv-chat-work{color:#666;font-weight:500}
.pv-chat-check{color:#3D8B5C;font-weight:700;margin-right:6px}
.pv-chat-check-amber{color:#B88A3A}
.pv-chat-nochange .pv-act-title{color:#B88A3A}
.pv-chat-x{color:#C44545;font-weight:700;margin-right:6px}
.pv-chat-dots{display:inline-flex;gap:3px;margin-left:6px;vertical-align:middle}
.pv-chat-dots i{width:5px;height:5px;border-radius:50%;background:#FF6B35;
  animation:pvDot 1.2s infinite ease-in-out}
.pv-chat-dots i:nth-child(2){animation-delay:.15s}
.pv-chat-dots i:nth-child(3){animation-delay:.30s}
@keyframes pvDot{0%,80%,100%{opacity:.25;transform:scale(.7)}40%{opacity:1;transform:scale(1.05)}}

/* ── Live activity feed (the Working bubble streams what the Builder is doing) ── */
.pv-chat-msg.pv-act{max-width:88%}
.pv-act-head{display:flex;align-items:center;gap:.1rem;font-weight:600;color:#444}
.pv-act-head .pv-act-title{color:#666;font-weight:500;margin-left:2px}
.pv-act-done .pv-act-head{cursor:pointer;color:#1f5a3a}
.pv-act-toggle{margin-left:auto;font-size:.66rem;font-weight:500;color:#9a948c;
  letter-spacing:.03em;text-transform:lowercase;border:1px solid rgba(10,10,10,.12);
  border-radius:99px;padding:1px 8px;transition:.15s}
.pv-act-done .pv-act-head:hover .pv-act-toggle{color:#FF6B35;border-color:rgba(255,107,53,.4)}
/* the scrolling list */
.pv-act-feed{display:flex;flex-direction:column;gap:1px;margin-top:8px;
  max-height:230px;overflow-y:auto;
  border-left:2px solid rgba(255,107,53,.30);padding:2px 0 2px 12px}
.pv-act-feed::-webkit-scrollbar{width:4px}
.pv-act-feed::-webkit-scrollbar-thumb{background:rgba(10,10,10,.14);border-radius:99px}
.pv-act-item{font-size:.8rem;line-height:1.45;color:#4a4a4a;padding:2px 0;
  position:relative;animation:pvActIn .22s ease-out}
.pv-act-item::before{content:"";position:absolute;left:-15px;top:.62em;
  width:5px;height:5px;border-radius:50%;background:#FF6B35;opacity:.55}
.pv-act-item:last-child{color:#1A1A1A}
.pv-act-item:last-child::before{opacity:1;box-shadow:0 0 0 3px rgba(255,107,53,.14)}
@keyframes pvActIn{from{opacity:0;transform:translateX(-4px)}to{opacity:1;transform:none}}
/* after completion: de-emphasise the log; collapse on click */
.pv-act-done .pv-act-feed{max-height:150px;border-left-color:rgba(10,10,10,.12);opacity:.8}
.pv-act-done .pv-act-item:last-child::before{box-shadow:none}
.pv-act-collapsed .pv-act-feed{display:none}

/* questions surfaced from the CLI */
.pv-chat-q{margin-bottom:8px;font-weight:500;color:#1A1A1A}
.pv-chat-opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.pv-chat-opt{font-family:'Geist',system-ui,sans-serif;font-size:.85rem;
  border:1px solid #FF6B35;background:#fff;color:#FF6B35;
  padding:6px 12px;border-radius:999px;cursor:pointer;
  transition:background .15s,color .15s,transform .1s}
.pv-chat-opt:hover{background:#FF6B35;color:#fff}
.pv-chat-opt:active{transform:scale(.96)}

/* user-message inline thumbs (shown inside the user's own bubble after send) */
.pv-chat-bubthumbs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.pv-chat-bubthumb{width:60px;height:60px;border-radius:10px;overflow:hidden;
  border:1px solid rgba(255,255,255,.35)}
.pv-chat-bubthumb img{width:100%;height:100%;object-fit:cover;display:block}

/* form area: attach-row + input form, anchored at the bottom */
.pv-chat-formwrap{position:relative;padding:8px 20px 44px;
  background:linear-gradient(180deg,rgba(250,248,245,0) 0,#FAF8F5 24%,#FAF8F5 100%)}
.pv-chat-attach-row{display:none;flex-wrap:wrap;gap:8px;margin:0 auto 10px;
  max-width:62ch;padding:0 4px}
.pv-chat-attach-row.show{display:flex}
.pv-chat-thumb{position:relative;width:60px;height:60px;border-radius:10px;overflow:hidden;
  border:1px solid rgba(10,10,10,.08);background:#fff;flex:none}
.pv-chat-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.pv-chat-thumb-cap{position:absolute;left:0;right:0;bottom:0;
  font-family:'Geist Mono',ui-monospace,monospace;font-size:.55rem;
  background:rgba(0,0,0,.6);color:#fff;padding:2px 4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
.pv-chat-thumb-x{position:absolute;top:2px;right:2px;width:18px;height:18px;
  border-radius:50%;border:0;background:rgba(0,0,0,.55);color:#fff;font-size:.85rem;line-height:1;
  cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0}
.pv-chat-thumb-x:hover{background:#C44545}
.pv-chat-thumb-pending{opacity:.6}
.pv-chat-thumb-pending img{background:repeating-linear-gradient(45deg,#eee,#eee 4px,#fff 4px,#fff 8px)}

.pv-chat-form{max-width:62ch;margin:0 auto;
  display:flex;align-items:flex-end;gap:6px;
  padding:12px 14px;background:#fff;border:1px solid rgba(10,10,10,.08);border-radius:16px;
  box-shadow:0 4px 12px rgba(10,10,10,.04);
  transition:border-color .18s ease,box-shadow .18s ease}
.pv-chat-form:focus-within{border-color:#FF6B35;
  box-shadow:0 8px 24px rgba(255,107,53,.12),0 2px 10px rgba(10,10,10,.05)}
.pv-chat-attach-btn{flex:none;width:32px;height:32px;border-radius:8px;border:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;background:transparent;color:#6B6B6B;
  transition:background .15s,color .15s}
.pv-chat-attach-btn:hover{background:rgba(255,107,53,.08);color:#FF6B35}
.pv-chat-input{flex:1;border:0;outline:0;background:transparent;resize:none;padding:4px 0;
  font-family:'Geist',system-ui,-apple-system,sans-serif;font-size:.95rem;line-height:1.45;
  color:#1A1A1A;min-height:24px;max-height:160px;overflow-y:auto}
.pv-chat-input::placeholder{color:#9b9b97}
.pv-chat-send{flex:none;width:36px;height:36px;border-radius:50%;border:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;background:#FF6B35;
  transition:background .15s ease,transform .1s ease}
.pv-chat-send:hover{background:#ef5f2b}
.pv-chat-send:active{transform:scale(.94)}
/* maximize → full-screen modal (same iframe, session preserved) */
#pv-term-maxbg{position:fixed;inset:0;z-index:1199;background:rgba(74,58,46,.25);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.pv-term-pane.maximized{position:fixed;inset:24px;height:auto;z-index:1200;border-radius:20px}
.pv-term-toggle{display:none}

@media(max-width:1200px){
  .pv-grid3{grid-template-columns:1fr}
  .pv-col-mid,.pv-col-term{position:static}
  .pv-col-mid .pv-frame-stage{height:60vh}
  .pv-term-toggle{display:inline-flex;margin-bottom:.6rem}
  .pv-term-pane{display:none;height:70vh}
  .pv-term-pane.show{display:flex}
  .pv-term-pane.maximized{display:flex;inset:12px}
}

/* ── Preview detail: full-bleed width — kill the 1200px container crunch ──
   Scoped to this page only via :has(.pv-grid3); base.html's .container is
   untouched everywhere else. Columns: fixed sides, flex-grow middle so the
   preview renders at true desktop width. */
.container.main:has(.pv-grid3){max-width:none;width:100%;padding-left:24px;padding-right:24px}
.pv-grid3{grid-template-columns:320px minmax(0,1fr) 480px}
@media(max-width:1400px){ .pv-grid3{grid-template-columns:280px minmax(0,1fr) 400px} }
@media(max-width:1200px){ .pv-grid3{grid-template-columns:1fr} }

/* ── Locked app-shell layout (desktop only): the window itself never scrolls;
   nav + header bar stay fixed; each of the 3 columns scrolls in its own lane.
   Scoped to the detail page via :has(.pv-grid3); mobile (<1200px) keeps the
   existing stacked/normal-scroll behaviour untouched. ── */
@media(min-width:1200px){
  body:has(.pv-grid3){height:100vh;overflow:hidden;display:flex;flex-direction:column}
  body:has(.pv-grid3) .site-footer{display:none}                 /* reclaim the height for the panels */
  .container.main:has(.pv-grid3){flex:1;min-height:0;display:flex;flex-direction:column;
    overflow:hidden;margin-bottom:0;padding-bottom:0}
  .container.main:has(.pv-grid3) .pv-d-crumb{flex:none;margin-bottom:.6rem}
  .container.main:has(.pv-grid3) .pv-d-top{flex:none;margin-bottom:1rem}
  /* the three-column row fills the remaining height and clips its own overflow */
  .container.main:has(.pv-grid3) .pv-grid3{flex:1;min-height:0;align-items:stretch;
    grid-template-rows:minmax(0,1fr)}
  /* undo the old sticky offsets — columns are now flex/grid children of a fixed shell */
  .pv-col-mid,.pv-col-term{position:static;top:auto}
  /* LEFT: its own scroll */
  .pv-col-left{height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;padding-right:6px}
  /* MIDDLE: bar pinned, preview iframe fills the column and scrolls internally */
  .pv-col-mid{height:100%;min-height:0;display:flex;flex-direction:column}
  .pv-col-mid .pv-iframe-bar{flex:none}
  .pv-col-mid .pv-iframe-wrap{flex:1;min-height:0}
  .pv-col-mid .pv-frame-stage{height:100%}
  /* RIGHT: terminal pane fills the column; its chat scrolls, input stays pinned
     (handled inside .pv-term-pane). :not(.maximized) so full-screen mode is intact */
  .pv-col-term{height:100%;min-height:0;display:flex;flex-direction:column}
  .pv-col-term .pv-term-pane:not(.maximized){flex:1;min-height:0;height:auto}
  /* thin brand scrollbar for the left column (chat already has its own) */
  .pv-col-left::-webkit-scrollbar{width:4px}
  .pv-col-left::-webkit-scrollbar-track{background:transparent}
  .pv-col-left::-webkit-scrollbar-thumb{background:rgba(10,10,10,.12);border-radius:99px}
  .pv-col-left::-webkit-scrollbar-thumb:hover{background:rgba(255,107,53,.4)}
  .pv-col-left{scrollbar-width:thin;scrollbar-color:rgba(10,10,10,.18) transparent}
}

/* ── Brand context (CLAUDE.md) card ── */
.pv-cmd-area{width:100%;box-sizing:border-box;background:#fff;border:1px solid var(--pv-card-bd);
  color:var(--ink);border-radius:12px;padding:.7rem .8rem;font-family:'Geist Mono',ui-monospace,monospace;
  font-size:.76rem;line-height:1.5;resize:vertical;min-height:300px}
.pv-cmd-area:focus{outline:none;border-color:#ff6b35;box-shadow:0 0 0 3px rgba(255,107,53,.12)}
.pv-cmd-banner{background:rgba(255,107,53,.08);border:1px solid rgba(255,107,53,.28);color:#8a3b18;
  border-radius:10px;padding:.55rem .7rem;font-size:.74rem;margin-bottom:.6rem}

/* ===== Lead → Instant Preview ===== */
.preview-badge{display:inline-block;margin-left:6px;padding:2px 8px;border-radius:999px;
  font-family:var(--font-mono,monospace);font-size:10px;letter-spacing:.06em;font-weight:600;
  vertical-align:middle;text-transform:uppercase}
.preview-badge.preview-ready{background:#E8F5E9;color:#1E7d34;border:1px solid #b6e3bf}
.preview-badge.preview-building{background:#FFF4E6;color:#8B5A00;border:1px solid #f3d9ad}
.preview-badge.preview-error{background:#fdecec;color:#a12626;border:1px solid #f3c2c2}
.lc-prev-progress{opacity:.85;cursor:progress}
.lc-prev-stop{color:#B0392C;border-color:rgba(176,57,44,.4)}
.lc-prev-stop:hover{background:#fbeae7;border-color:#B0392C}
.lc-prev-view{font-weight:600}
.move-menu-sep{height:1px;margin:5px 6px;background:rgba(0,0,0,.10)}

/* template picker modal */
.tplpick-back{position:fixed;inset:0;z-index:9000;background:rgba(8,8,10,.55);
  display:flex;align-items:center;justify-content:center;padding:20px}
.tplpick{background:#fff;border-radius:14px;max-width:880px;width:100%;max-height:86vh;
  display:flex;flex-direction:column;overflow:hidden;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.tplpick-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;
  border-bottom:1px solid rgba(0,0,0,.08);font-weight:700;font-size:.95rem}
.tplpick-x{border:none;background:none;font-size:1.1rem;cursor:pointer;color:#666;line-height:1}
.tplpick-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;
  padding:18px;overflow:auto;
  /* The grid is a flex child shorter than its content; without these the rows
     collapse and stretch every card to a 4px line. Force rows to fit content. */
  grid-auto-rows:max-content;align-items:start}
.tplpick-card{border:2px solid transparent;border-radius:10px;background:#f6f6f7;padding:0;
  cursor:pointer;overflow:hidden;display:block;width:100%;text-align:left;transition:.15s}
.tplpick-card:hover{border-color:#ff6b35;transform:translateY(-2px);box-shadow:0 8px 20px rgba(0,0,0,.12)}
/* Fixed-aspect thumbnail WRAPPER — never relies on aspect-ratio on the <img>
   itself (that collapses to a thin line inside a flex column in some browsers). */
.tplpick-thumb{display:block;width:100%;aspect-ratio:1280/800;min-height:130px;
  background:#ddd;overflow:hidden}
.tplpick-card img{width:100%;height:100%;object-fit:cover;object-position:top;display:block}
.tplpick-name{display:block;padding:8px 10px 2px;font-size:.78rem;font-weight:600;color:#222}
.tplpick-ind{display:block;padding:0 10px 8px;font-size:.68rem;color:#999;text-transform:uppercase;letter-spacing:.04em}
.tplpick-card.is-match{border-color:#ffd9c7}
.tplpick-card.is-match .tplpick-ind{color:#d2521f}
.tplpick-head{align-items:flex-start}
.tplpick-head-text{display:flex;flex-direction:column;gap:3px;min-width:0}
.tplpick-title{font-weight:800;font-size:1.02rem;color:#1a1a1a}
.tplpick-sub{font-weight:400;font-size:.8rem;color:#666;line-height:1.35}
.tplpick-brand{display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:12px 18px;border-bottom:1px solid rgba(0,0,0,.06);background:#fafafa}
.tplpick-brand-logo{height:36px;width:auto;max-width:120px;object-fit:contain;
  background:#fff;border:1px solid rgba(0,0,0,.08);border-radius:6px;padding:3px}
.tplpick-brand-pal{display:flex;gap:5px}
.tplpick-swatch{width:22px;height:22px;border-radius:5px;border:1px solid rgba(0,0,0,.12)}
.tplpick-brand-note{font-size:.78rem;color:#888}
.tplpick-autobar{padding:12px 18px 0}
.tplpick-auto{width:100%;border:1px dashed #ff6b35;background:#fff7f3;color:#d2521f;
  border-radius:10px;padding:11px 14px;cursor:pointer;font-weight:700;font-size:.85rem;transition:.15s}
.tplpick-auto:hover{background:#ffe9df}
.tplpick-kit{padding:14px 18px 4px;display:flex;flex-direction:column;gap:11px;
  border-bottom:1px solid rgba(0,0,0,.06);background:#fafafa}
.tplpick-kit-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.tplpick-kit-lbl{font-size:.72rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
  color:#888;min-width:104px}
.tplpick-colours{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.tplpick-colour{-webkit-appearance:none;appearance:none;width:30px;height:30px;padding:0;
  border:1px solid rgba(0,0,0,.15);border-radius:7px;cursor:pointer;background:none}
.tplpick-colour::-webkit-color-swatch-wrapper{padding:2px}
.tplpick-colour::-webkit-color-swatch{border:none;border-radius:5px}
.tplpick-colour-add{width:30px;height:30px;border:1px dashed rgba(0,0,0,.25);border-radius:7px;
  background:#fff;cursor:pointer;font-size:16px;line-height:1;color:#666}
.tplpick-up{border:1px dashed rgba(0,0,0,.22);background:#fff;border-radius:8px;padding:6px 12px;
  cursor:pointer;font-size:.8rem;color:#444}
.tplpick-up:hover{border-color:#ff6b35;color:#d2521f}
.tplpick-up-note{font-size:.76rem;color:#999}

/* ===== Template-from-Reference modal ===== */
.tpl-tabs{display:flex;gap:4px;margin:0 0 12px;border-bottom:1px solid rgba(0,0,0,.10)}
.tpl-tab{appearance:none;border:none;background:none;padding:8px 14px;cursor:pointer;
  font-weight:600;font-size:.82rem;color:#777;border-bottom:2px solid transparent;margin-bottom:-1px}
.tpl-tab.active{color:#ff6b35;border-bottom-color:#ff6b35}
.tpl-ref-brief{margin-top:10px}
.tpl-ref-brief-h{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;
  color:#888;margin-bottom:4px}
#tpl-ref-brieftext{font-family:var(--font-mono,monospace);font-size:.72rem;white-space:pre}
.tpl-source-badge{display:inline-block;font-size:.62rem;padding:.15rem .5rem;border-radius:999px;
  background:rgba(96,165,250,.16);border:1px solid rgba(96,165,250,.35);color:#1c5f99;
  font-weight:700;text-transform:uppercase;letter-spacing:.04em}

/* ===================================================================
   LEADS FILTER PANEL — iOS-style premium redesign
   (overrides the base .filter-* rules above; appended so it wins on
   the cascade. Markup: templates/leads.html · logic: static/leads.js)
   =================================================================== */

/* ---- Panel shell: a calm, card-like surface ---- */
.filter-body {
  padding: 0;
  background: var(--bg-card);
  border: 1px solid var(--hairline);
  border-radius: 18px;
  margin-top: 10px;
  box-shadow: 0 10px 30px -18px rgba(20,18,14,0.35), 0 1px 0 rgba(255,255,255,0.6) inset;
  overflow: hidden;
}

/* ---- Sticky header: presets + search stay visible while scrolling ---- */
.filter-stickyhead {
  position: sticky; top: 0; z-index: 6;
  display: flex; flex-direction: column; gap: 12px;
  padding: 16px 18px;
  background: linear-gradient(var(--bg-card), var(--bg-card) 78%, rgba(250,248,244,0));
  border-bottom: 1px solid var(--hairline);
  backdrop-filter: saturate(1.2) blur(6px);
}
.filter-stickyhead .preset-row { gap: 8px; }

/* Search field with leading glyph */
.filter-search { position: relative; display: flex; align-items: center; }
.filter-search-icon {
  position: absolute; left: 16px; color: var(--muted); pointer-events: none;
}
.filter-body .filter-search input[type="search"] {
  flex: 1 1 100%; min-width: 0;
  height: 46px; padding: 0 16px 0 42px;
  font: 15px var(--font-body);
  background: var(--cream);
  border: 1px solid var(--hairline-2);
  color: var(--ink); border-radius: 13px;
  transition: border-color 0.18s, box-shadow 0.18s, background 0.18s;
}
.filter-body .filter-search input[type="search"]::placeholder { color: var(--muted); }
.filter-body .filter-search input[type="search"]:focus {
  outline: none; border-color: var(--ink); background: #fff;
  box-shadow: 0 0 0 4px rgba(20,18,14,0.05);
}

/* ---- Built-in Hot Leads preset + divider ---- */
.preset-pill--builtin {
  background: linear-gradient(135deg, #1f1d1a, #3a3631);
  color: var(--cream); border-color: #1f1d1a;
  font-weight: 600; box-shadow: 0 2px 8px -2px rgba(20,18,14,0.5);
}
.preset-pill--builtin:hover { background: #000; border-color: #000; }
.preset-pill--builtin.is-active { background: #000; }

/* ---- Section list ---- */
.filter-sections { padding: 6px 18px 4px; }

.filter-body .filter-group {
  padding: 0;
  border: none;
  border-bottom: 1px solid var(--hairline);
}
.filter-body .filter-group:last-child { border-bottom: 0; }

.filter-group-head {
  display: flex; align-items: center; justify-content: space-between;
  width: 100%; padding: 16px 2px;
  background: transparent; border: 0; cursor: pointer;
  text-align: left;
}
.filter-group-head .filter-group-title {
  font: 12px var(--font-body); font-weight: 600;
  letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--ink);
}
.filter-group-chev {
  color: var(--muted);
  transition: transform 0.28s cubic-bezier(.4,0,.2,1), color 0.15s;
}
.filter-group-head:hover .filter-group-chev { color: var(--ink); }
.filter-group.is-collapsed .filter-group-chev { transform: rotate(-90deg); }

/* Smooth expand / collapse (grid-rows 1fr<->0fr trick) */
.filter-group-body {
  display: grid; grid-template-rows: 1fr;
  transition: grid-template-rows 0.3s cubic-bezier(.4,0,.2,1);
}
.filter-group-body > .fg-inner { overflow: hidden; min-height: 0; }
.filter-group.is-collapsed > .filter-group-body { grid-template-rows: 0fr; }
.fg-inner { padding: 0 2px 18px; }
.fg-inner > .filter-row { margin-bottom: 16px; }
.fg-inner > .filter-row:last-child { margin-bottom: 0; }

/* Tidier label rhythm */
.filter-body .filter-label {
  font-size: 12px; letter-spacing: 0.01em; text-transform: none;
  color: var(--ink-soft); font-weight: 500;
}
.pill-group-row { align-items: center; gap: 14px; }
.pill-group-row > .filter-label { flex: 0 0 132px; }

/* ---- Segmented control (iOS pill toggle) ---- */
.pill-group.seg {
  display: inline-flex; gap: 2px;
  padding: 3px;
  background: var(--cream-deeper);
  border: 1px solid var(--hairline-2);
  border-radius: 12px;
}
.pill-group.seg .pill {
  border: 0; background: transparent;
  padding: 7px 16px; border-radius: 9px;
  font: 13px var(--font-body); font-weight: 500; letter-spacing: 0;
  color: var(--ink-soft);
  transition: background 0.18s ease, color 0.18s ease, box-shadow 0.18s ease;
}
.pill-group.seg .pill:hover { color: var(--ink); border: 0; background: rgba(255,255,255,0.5); }
.pill-group.seg .pill.is-active,
.pill-group.seg.multi .pill.is-active {
  background: #fff; color: var(--ink); font-weight: 600;
  box-shadow: 0 1px 3px rgba(20,18,14,0.16), 0 0 0 0.5px rgba(20,18,14,0.04);
}

/* ---- Free-wrap pills (tech / status / recs) — elevated chips ---- */
.pill-group:not(.seg) .pill {
  border-radius: 999px; padding: 7px 14px;
  font: 12.5px var(--font-body); font-weight: 500; letter-spacing: 0;
  background: var(--cream); border: 1px solid var(--hairline-2);
  color: var(--ink-soft);
  transition: background 0.15s, color 0.15s, border-color 0.15s, transform 0.08s;
}
.pill-group:not(.seg) .pill:hover { color: var(--ink); border-color: var(--ink-soft); }
.pill-group:not(.seg) .pill:active { transform: scale(0.96); }
.pill-group:not(.seg) .pill.is-active {
  background: var(--ink); color: var(--cream); border-color: var(--ink);
}

/* ---- Sliders with a value pill floating above the thumb ---- */
.filter-body .filter-row.sliders { gap: 26px 32px; flex-wrap: wrap; }
.slider-field { gap: 12px; flex: 1 1 240px; }
.slider-track { position: relative; padding-top: 30px; }
.slider-field input[type="range"] {
  -webkit-appearance: none; appearance: none;
  width: 100%; height: 6px; background: var(--hairline-2);
  border-radius: 999px; outline: none; padding: 0; margin: 0;
}
.slider-field input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none; appearance: none;
  width: 22px; height: 22px; border-radius: 50%;
  background: #fff; border: 1px solid rgba(20,18,14,0.12);
  box-shadow: 0 1px 4px rgba(20,18,14,0.28);
  cursor: pointer; transition: transform 0.12s;
}
.slider-field input[type="range"]:active::-webkit-slider-thumb { transform: scale(1.08); }
.slider-field input[type="range"]::-moz-range-thumb {
  width: 22px; height: 22px; border-radius: 50%;
  background: #fff; border: 1px solid rgba(20,18,14,0.12);
  box-shadow: 0 1px 4px rgba(20,18,14,0.28); cursor: pointer;
}
.slider-bubble {
  position: absolute; top: 0;
  left: calc(var(--p, 0) * (100% - 22px) + 11px);
  transform: translateX(-50%);
  min-width: 30px; padding: 3px 9px;
  background: var(--ink); color: var(--cream);
  border-radius: 8px; text-align: center;
  font: 12px var(--font-mono); line-height: 1.3;
  box-shadow: 0 2px 6px -1px rgba(20,18,14,0.4);
  transition: left 0.05s linear;
  pointer-events: none;
}
.slider-bubble::after {
  content: ""; position: absolute; left: 50%; top: 100%;
  transform: translateX(-50%);
  border: 4px solid transparent; border-top-color: var(--ink);
}
.slider-bubble strong { color: var(--cream); font-weight: 600; font-family: var(--font-mono); }

/* ---- Checkboxes (Companies House) as tidy rows ---- */
.filter-body .filter-row.checkrow { gap: 10px 22px; }
.filter-body .checkfield {
  display: inline-flex; align-items: center; gap: 9px;
  font: 13.5px var(--font-body); color: var(--ink); font-weight: 500;
  padding: 8px 12px; border-radius: 10px;
  background: var(--cream); border: 1px solid var(--hairline-2);
  cursor: pointer; transition: border-color 0.15s, background 0.15s;
}
.filter-body .checkfield:hover { border-color: var(--ink-soft); }
.filter-body .checkfield input[type="checkbox"] { width: 16px; height: 16px; accent-color: var(--ink); }

/* ---- Number + text inputs ---- */
.filter-body .num-field input[type="number"],
.filter-body .multi-input {
  height: 44px; border-radius: 12px;
}

/* ---- Footer actions ---- */
.filter-body .filter-actions {
  display: flex; gap: 10px; flex-wrap: wrap;
  padding: 16px 18px;
  border-top: 1px solid var(--hairline);
  background: rgba(236,232,226,0.4);
}
.filter-body .filter-actions .btn-secondary {
  border-radius: 11px; height: 42px;
  display: inline-flex; align-items: center;
}

/* ---- "Default view" chip in the filter header ---- */
.default-view-chip {
  display: inline-flex; align-items: center; gap: 8px;
  height: 32px; padding: 0 6px 0 12px;
  background: linear-gradient(135deg, #1f1d1a, #38332d);
  color: var(--cream); border: 0; border-radius: 999px;
  font: 12.5px var(--font-body); font-weight: 600; letter-spacing: 0.01em;
  cursor: pointer;
  box-shadow: 0 4px 14px -6px rgba(20,18,14,0.7);
  transition: transform 0.12s, box-shadow 0.18s;
}
.default-view-chip[hidden] { display: none; }
.default-view-chip:hover { transform: translateY(-1px); box-shadow: 0 6px 18px -6px rgba(20,18,14,0.8); }
.default-view-chip .dvc-spark { display: inline-flex; color: #F4C752; }
.default-view-chip .dvc-clear {
  display: inline-flex; align-items: center; justify-content: center;
  width: 20px; height: 20px; border-radius: 50%;
  background: rgba(255,255,255,0.16); color: var(--cream);
  transition: background 0.15s;
}
.default-view-chip:hover .dvc-clear { background: rgba(255,255,255,0.3); }

/* ---- Mobile: stack the panel cleanly on a phone ---- */
@media (max-width: 640px) {
  .filter-body { border-radius: 16px; }
  .filter-stickyhead { padding: 14px; }
  .filter-sections { padding: 4px 14px; }
  .fg-inner { padding: 0 0 16px; }
  .pill-group-row { flex-direction: column; align-items: stretch; gap: 8px; }
  .pill-group-row > .filter-label { flex: none; }
  .pill-group.seg { display: flex; }
  .pill-group.seg .pill { flex: 1 1 0; text-align: center; }
  .filter-body .filter-row.sliders { gap: 22px; }
  .slider-field { flex: 1 1 100%; }
  .filter-body .filter-row.two-col { flex-direction: column; }
  .filter-shell-head { gap: 8px; }
  .default-view-chip { order: 3; }
}

/* ===================================================================
   CALL WORKSPACE / LEAD DETAIL PANEL — calm macOS/iOS visual overhaul
   (overrides the .m5-* / .cw-* base rules above; appended to win the
   cascade. Markup generated in static/app.js → renderLead/renderWorkspaceHTML)
   =================================================================== */

:root { --font-ui: -apple-system, BlinkMacSystemFont, "Inter", "SF Pro Text", "Segoe UI", Roboto, sans-serif; }

/* ---- One clean sans-serif everywhere in this panel (kill the serif) ---- */
.m5-grid, .m5-grid input, .m5-grid textarea, .m5-grid select, .m5-grid button,
.cw-root, .cw-root textarea, .cw-root button {
  font-family: var(--font-ui);
}
.m5-title, .m5-rec-name, .m5-quote-text, .cw-head,
.m5-photo-placeholder .m5-hero-initial {
  font-family: var(--font-ui) !important;
}

/* ---- Three balanced columns with clean separators ----
   Desktop only (>1200px). Below that the responsive rules above own the grid,
   so this MUST stay inside the media query or it clobbers the mobile layout. */
@media (min-width: 1201px) {
  .m5-grid { grid-template-columns: 30% 40% 30%; }
}
.m5-left   { background: var(--cream); border-right: 1px solid var(--hairline); }
.m5-middle { background: #FBFAF7; border-right: 1px solid var(--hairline); }
.m5-right  { background: var(--cream); }

/* ---- LEFT — photos: clean main image + uniform thumbnail strip ---- */
.m5-photo-pane { padding: 22px 22px 12px; gap: 12px; }
.m5-photo-main { border-radius: 16px; background: var(--cream-deeper); }
.m5-photo-main img { object-fit: cover; object-position: center; }
.m5-photo-placeholder .m5-hero-initial { font-weight: 700; }
.m5-thumbs {
  display: grid; grid-auto-flow: column; grid-auto-columns: 1fr;
  gap: 8px; height: auto; margin-top: 0;
}
.m5-thumb {
  aspect-ratio: 4 / 3; height: auto; width: 100%;
  border: 2px solid transparent; border-radius: 10px;
  background: var(--cream-deeper);
  box-shadow: 0 0 0 1px var(--hairline) inset;
  transition: border-color 0.15s, transform 0.1s;
}
.m5-thumb img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; }
.m5-thumb:hover { border-color: var(--ink-soft); }
.m5-thumb.is-active { border-color: var(--ink); box-shadow: none; }
.m5-map-pane { padding: 12px 22px 22px; }
#m5-map-canvas { border-radius: 16px; }

/* ---- RIGHT — header ---- */
.m5-head { padding: 24px 24px 16px; gap: 16px; }
.m5-title {
  font-weight: 650; font-size: clamp(20px, 2vw, 24px);
  line-height: 1.18; letter-spacing: -0.015em; margin: 0 0 6px;
}
.m5-cat { font-size: 11px; letter-spacing: 0.09em; margin: 2px 0 8px; color: var(--muted); }
.m5-rating { font-family: var(--font-mono); font-size: 13px; display: flex; align-items: center; gap: 5px; }
.m5-star { display: inline-flex; color: #D4A017; }
.m5-star svg { display: block; }

/* ---- RIGHT — action buttons: one consistent system ---- */
.m5-actions {
  grid-template-columns: repeat(3, 1fr); gap: 9px;
  padding: 16px 24px 18px;
}
.m5-action {
  height: 42px; padding: 0 14px; border-radius: 11px; gap: 7px;
  background: #fff; color: var(--ink);
  border: 1px solid var(--hairline-2);
  box-shadow: none; font: 500 13px var(--font-ui); letter-spacing: 0;
  transition: background 0.15s, border-color 0.15s, transform 0.08s;
}
.m5-action:hover { background: var(--cream-deeper); border-color: var(--ink-soft); transform: none; color: var(--ink); }
.m5-action:active { transform: scale(0.98); }
.m5-action svg { color: var(--ink-soft); }
/* primary emphasis: Call, Dial’s sibling Book, Open project */
.m5-action[href^="tel:"], .m5-action-book, .m5-action-primary {
  background: var(--ink); color: var(--cream); border-color: var(--ink);
}
.m5-action[href^="tel:"]:hover, .m5-action-book:hover, .m5-action-primary:hover {
  background: #000; color: var(--cream); border-color: #000;
}
.m5-action[href^="tel:"] svg, .m5-action-book svg, .m5-action-primary svg { color: var(--cream); }
.m5-action.is-disabled { background: var(--cream-deeper); color: var(--muted); border-color: var(--hairline-2); }

/* ---- RIGHT — info sections: more air ---- */
.m5-sec { padding: 18px 24px; }
.m5-sec-h { font-size: 11px; letter-spacing: 0.09em; margin: 0 0 12px; color: var(--muted); }
.m5-row { padding: 5px 0; }

/* ---- RIGHT — recommendation cards: uniform, subtle, tidy ---- */
.m5-recs { gap: 12px; }
.m5-rec, .m5-rec[class*="svc-"] {
  padding: 14px 16px; border-radius: 14px;
  background: #fff; border: 1px solid var(--hairline); border-left: 1px solid var(--hairline);
}
.m5-rec-head { gap: 11px; align-items: center; margin-bottom: 11px; }
.m5-rec-glyph {
  display: inline-flex; align-items: center; justify-content: center;
  width: 30px; height: 30px; flex: 0 0 30px;
  border-radius: 9px; background: var(--cream-deeper); color: var(--ink-soft);
  font-size: 0;
}
.m5-rec-name { font-weight: 600; font-size: 14px; letter-spacing: -0.005em; }
.m5-rec-score {
  margin-left: auto; font-family: var(--font-mono);
  font-size: 13px; color: var(--muted); font-weight: 500;
}
.m5-rec-bar { height: 5px; border-radius: 999px; margin-bottom: 0; }
.m5-rec-bar > span { border-radius: 999px; }
.m5-rec-reason { font-size: 13px; line-height: 1.55; margin-top: 9px; }

/* ---- MIDDLE — call workspace ---- */
.cw-root { padding: 20px; gap: 16px; }
.cw-head {
  font-weight: 650; font-size: 17px; letter-spacing: -0.01em;
  margin: 2px 0; color: var(--ink);
}
.cw-timerbar { padding: 12px 14px; border-radius: 14px; box-shadow: none; gap: 12px; }
.cw-timer-readout { font-family: var(--font-mono); font-size: 17px; }
.cw-callbtn, .cw-bookbtn {
  display: inline-flex; align-items: center; gap: 7px;
  height: 38px; padding: 0 15px; border-radius: 10px;
  font: 600 13px var(--font-ui); cursor: pointer; border: 1px solid transparent;
}
.cw-callbtn { background: var(--ink); color: var(--cream); }
.cw-callbtn svg { color: var(--cream); }
.cw-bookbtn {
  background: #fff; color: var(--ink); border-color: var(--hairline-2);
}
.cw-bookbtn svg { color: var(--ink-soft); }
.cw-bookbtn:hover { background: var(--cream-deeper); border-color: var(--ink-soft); }

/* Collapsible blocks */
.cw-block { border-radius: 14px; border: 1px solid var(--hairline); }
.cw-block-head { padding: 14px 16px; font: 600 12px var(--font-ui); letter-spacing: 0.05em; }
.cw-block-head .cw-chev { color: var(--ink-soft); transition: transform 0.2s ease; }
.cw-block.is-collapsed .cw-chev { transform: rotate(-90deg); }
.cw-block-body { padding: 4px 16px 18px; border-top: 1px solid var(--hairline); }

/* Pre-call checklist — aligned rows with circular SVG status icons */
.cw-check { gap: 10px; }
.cw-check li { gap: 11px; align-items: flex-start; font-size: 13px; line-height: 1.5; }
.cw-check .cw-ic {
  flex: 0 0 18px; width: 18px; height: 18px; margin-top: 1px;
  border-radius: 50%; display: inline-flex; align-items: center; justify-content: center;
  font-weight: 400;
}
.cw-check .cw-tick { background: rgba(47,125,68,0.12); color: #2F7D44; }
.cw-check .cw-cross { background: rgba(176,57,44,0.10); color: #B0392C; }
.cw-check .cw-question { background: rgba(160,115,0,0.12); color: #A07300; }
.cw-check .cw-key { color: var(--muted); margin-right: 2px; font-weight: 500; }

/* TPS warning — one tidy alert card */
.cw-ctps-warn {
  display: grid; grid-template-columns: auto 1fr; gap: 6px 11px;
  align-items: start; margin-top: 14px; padding: 14px 15px;
  background: #FBF4E2; border: 1px solid #EAD7A6; border-radius: 14px;
  font-size: 12.5px; line-height: 1.5; color: #6B4E12;
}
.cw-ctps-icon { grid-column: 1; grid-row: 1; display: inline-flex; color: #B8860B; margin-top: 1px; }
.cw-ctps-text { grid-column: 2; grid-row: 1; }
.cw-ctps-warn .cw-ctps-btn {
  grid-column: 2; grid-row: 2; justify-self: start; margin-top: 2px;
  height: 30px; padding: 0 14px; border-radius: 9px;
  background: #6B4E12; color: #FBF4E2; font: 600 12px var(--font-ui);
}
.cw-ctps-warn .cw-ctps-btn:hover { background: #8A6418; }

/* Call script — segmented tabs + readable textarea */
.cw-tabs {
  display: flex; gap: 4px; padding: 4px; margin-bottom: 14px;
  background: var(--cream-deeper); border: 0; border-radius: 11px;
}
.cw-tab {
  flex: 1 1 0; padding: 8px 6px; border: 0; border-radius: 8px;
  font: 600 11px var(--font-ui); letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--ink-soft); transition: background 0.18s, color 0.18s, box-shadow 0.18s;
}
.cw-tab:hover { color: var(--ink); }
.cw-tab.is-active {
  background: #fff; color: var(--ink); border-bottom: 0;
  box-shadow: 0 1px 3px rgba(20,18,14,0.14);
}
.cw-script-area {
  min-height: 300px; max-height: 46vh;
  border: 1px solid var(--hairline); border-radius: 14px;
  padding: 16px 18px; background: #fff;
  font: 14px/1.65 var(--font-ui); color: var(--ink);
}
.cw-script-area:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(20,18,14,0.05); }
.cw-script-foot { margin-top: 12px; }

/* Section switcher (narrow screens) */
.cw-tabswitch button { font-family: var(--font-ui); }

/* Quote uses sans now (not italic serif) */
.m5-quote { border-radius: 12px; padding: 14px 16px; }
.m5-quote-text { font-style: normal; font-size: 13.5px; line-height: 1.6; }

/* ---- Responsive: keep the action grid from wrapping into a mess ---- */
@media (max-width: 1100px) {
  .m5-actions { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 720px) {
  .m5-actions { grid-template-columns: 1fr 1fr; }
  .cw-root { padding: 16px; }
  .m5-head, .m5-sec { padding-left: 18px; padding-right: 18px; }
}

/* ===================================================================
   OUTREACH BLOCK — Draft email / Draft IG DM (lead detail panel)
   =================================================================== */
.lh-toast.is-error { background: #8E2C20; color: #fff; }

.m5-outreach {
  display: flex; flex-direction: column; gap: 10px;
  padding: 16px 24px 18px;
  border-bottom: 1px solid var(--hairline);
}
.m5-outreach-h {
  font: 600 11px var(--font-ui, var(--font-body));
  letter-spacing: 0.09em; text-transform: uppercase;
  color: var(--muted);
}
.m5-outreach-row { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.m5-outreach-row .m5-action { flex: 0 0 auto; }
.m5-outreach-dm .m5-action { width: 100%; }
.m5-outreach-to {
  font-size: 12.5px; color: var(--ink-soft);
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; flex: 1;
}
.m5-outreach-noemail .m5-action { flex: 0 0 auto; }
.m5-outreach-input {
  flex: 1 1 160px; min-width: 0; height: 42px;
  padding: 0 14px; border-radius: 11px;
  border: 1px solid var(--hairline-2); background: #fff;
  font: 14px var(--font-ui, var(--font-body)); color: var(--ink);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.m5-outreach-input::placeholder { color: var(--muted); }
.m5-outreach-input:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(20,18,14,0.05); }
.m5-outreach-input.is-error { border-color: #B0392C; box-shadow: 0 0 0 3px rgba(176,57,44,0.12); }
.m5-outreach-hint { font-size: 12px; color: var(--muted); line-height: 1.4; }

/* Kebab-menu outreach items inherit .move-menu-item styling automatically. */

/* ---- Outreach template editor modal ---- */
.outreach-modal { max-width: 640px; width: min(640px, 94vw); }
.outreach-modal-body { padding: 4px 0 8px; display: flex; flex-direction: column; gap: 4px; }
.outreach-ph { margin: 0 0 8px; line-height: 1.6; }
.outreach-ph code {
  font-family: var(--font-mono); font-size: 11.5px;
  background: var(--cream-deeper); padding: 1px 6px; border-radius: 6px; color: var(--ink-soft);
}
.outreach-modal textarea {
  width: 100%; resize: vertical;
  border: 1px solid var(--hairline-2); border-radius: 12px;
  padding: 12px 14px; background: #fff; color: var(--ink);
  font: 13.5px/1.55 var(--font-ui, var(--font-body));
}
.outreach-modal textarea:focus, .outreach-modal #ot-subject:focus {
  outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(20,18,14,0.05);
}
.outreach-modal #ot-subject {
  width: 100%; height: 44px; padding: 0 14px; border-radius: 11px;
  border: 1px solid var(--hairline-2); background: #fff; color: var(--ink);
  font: 14px var(--font-ui, var(--font-body));
}

/* ===================================================================
   CALL WORKSPACE — wider on desktop + roomier call script
   =================================================================== */
@media (min-width: 1201px) {
  .modal-panel { width: min(1840px, 97vw); max-width: 1840px; }
  /* Give the call script real room so it isn't crammed at the bottom. */
  .cw-root { padding: 22px 26px 26px; gap: 18px; }
  .cw-script-area { min-height: 380px; max-height: 60vh; font-size: 14.5px; }
}
@media (min-width: 1601px) {
  .cw-script-area { min-height: 460px; }
}

/* ===================================================================
   CALL WORKSPACE — fit the detail column without scrolling (desktop)
   =================================================================== */
@media (min-width: 1201px) {
  .modal-panel { height: 94vh; max-height: 94vh; }

  /* Tighter vertical rhythm so everything fits in view */
  .m5-head    { padding: 18px 22px 12px; }
  .m5-actions { padding: 12px 22px; gap: 8px; }
  .m5-outreach{ padding: 12px 22px; gap: 8px; }
  .m5-sec     { padding: 13px 22px; }
  .m5-sec-h   { margin-bottom: 9px; }
  .m5-row     { padding: 4px 0; }

  /* Recommendations: 2-up compact grid (6 cards -> 3 rows, not 6) */
  .m5-recs {
    display: grid; grid-template-columns: 1fr 1fr;
    gap: 10px; align-items: start;
  }
  .m5-rec { padding: 11px 13px; border-radius: 12px; }
  .m5-rec-head { margin-bottom: 8px; gap: 9px; }
  .m5-rec-glyph { width: 26px; height: 26px; flex-basis: 26px; border-radius: 8px; }
  .m5-rec-name { font-size: 13px; }
  .m5-rec-reason { font-size: 12px; line-height: 1.45; margin-top: 7px; }

  /* Recent review: keep it from hogging height */
  .m5-quote-text { font-size: 13px; line-height: 1.5; }
}

/* Map-failure: place the retry / maps links on one tidy row */
.m5-map-actions { display: flex; gap: 14px; align-items: center; }
.m5-map-actions a.m5-map-retry { text-decoration: underline; text-underline-offset: 3px; }

/* ===================================================================
   DEEP CONTACT ENRICHMENT — editable contact fields + bulk report
   =================================================================== */
.m5-outreach-h {
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.m5-deepenrich-btn {
  display: inline-flex; align-items: center; gap: 6px;
  height: 30px; padding: 0 12px; border-radius: 9px;
  background: var(--ink); color: var(--cream); border: 0;
  font: 600 12px var(--font-ui, var(--font-body)); cursor: pointer;
  transition: background 0.15s;
}
.m5-deepenrich-btn:hover { background: #000; }
.m5-deepenrich-btn:disabled { opacity: 0.6; cursor: default; }
.m5-deepenrich-btn svg { color: var(--cream); }

.m5-spin {
  width: 12px; height: 12px; border-radius: 50%;
  border: 2px solid rgba(242,240,238,0.4); border-top-color: var(--cream);
  display: inline-block; animation: ch-spin 0.8s linear infinite;
}

.m5-enrich-result {
  font: 12.5px var(--font-ui, var(--font-body)); line-height: 1.45;
  padding: 9px 11px; border-radius: 10px; margin-top: 2px;
  background: var(--cream-deeper); color: var(--ink-soft);
}
.m5-enrich-result.is-hit { background: #E4F0E4; color: #2F5A33; }
.m5-enrich-result.is-miss { background: #F2EFEA; color: var(--ink-soft); }

.m5-cfield { display: flex; flex-direction: column; gap: 6px; }
.m5-cfield-label {
  display: flex; align-items: center; gap: 8px;
  font: 600 11px var(--font-ui, var(--font-body));
  letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted);
}
.m5-cfield-row { display: flex; gap: 8px; align-items: center; }
.m5-cinput {
  flex: 1 1 auto; min-width: 0; height: 40px;
  padding: 0 13px; border-radius: 10px;
  border: 1px solid var(--hairline-2); background: #fff; color: var(--ink);
  font: 13.5px var(--font-ui, var(--font-body));
  transition: border-color 0.15s, box-shadow 0.15s;
}
.m5-cinput::placeholder { color: var(--muted); }
.m5-cinput:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(20,18,14,0.05); }
.m5-cfield-row .m5-action { height: 40px; flex: 0 0 auto; }
.m5-cfield-src { font: 11.5px var(--font-mono); color: var(--muted); }
.m5-cfield-hint { font-size: 11.5px; color: var(--muted); line-height: 1.4; margin-top: 2px; }

.m5-conf {
  display: inline-flex; align-items: center;
  padding: 2px 8px; border-radius: 999px;
  font: 600 10px var(--font-ui, var(--font-body)); letter-spacing: 0.02em;
  text-transform: none;
}
.m5-conf-good { background: #DCEFDD; color: #2F7D44; }
.m5-conf-mid  { background: #FBEFD2; color: #8A6418; }
.m5-conf-low  { background: #EFE7DC; color: #8A6a3a; }
.m5-conf-manual { background: var(--cream-deeper); color: var(--ink-soft); }

/* Bulk report card (bottom-right) */
.de-report {
  position: fixed; right: 24px; bottom: 24px; z-index: 1400;
  width: 320px; max-width: calc(100vw - 32px);
  background: var(--bg-card); border: 1px solid var(--hairline);
  border-radius: 16px; padding: 18px 20px;
  box-shadow: 0 18px 44px -16px rgba(20,18,14,0.5);
}
.de-report[hidden] { display: none; }
.de-report-x {
  position: absolute; top: 10px; right: 12px;
  background: transparent; border: 0; font-size: 22px; line-height: 1;
  color: var(--muted); cursor: pointer;
}
.de-report-h { font: 650 15px var(--font-ui, var(--font-body)); margin-bottom: 12px; }
.de-report-body .de-row { font: 13.5px var(--font-ui, var(--font-body)); color: var(--ink); padding: 3px 0; }
.de-report-body .de-row b { font-size: 16px; font-weight: 700; margin-right: 4px; }
.de-report-body .de-row em { color: var(--muted); font-style: normal; }
.de-report-body .de-sub { font-size: 12px; color: var(--muted); padding: 2px 0 8px; }

/* ===================================================================
   COLD-CALL PIPELINE — tab journey + detail-panel stage block
   =================================================================== */
.tab-journey-sep {
  width: 1px; height: 20px; align-self: center; margin: 0 4px;
  background: var(--hairline-2);
}
.tab.tab-clients.is-active { /* Clients — Active emphasis when selected */ }
.tab.tab-clients { font-weight: 500; }

/* Stage block in the lead detail panel */
.m5-pipe {
  display: flex; flex-direction: column; gap: 12px;
  padding: 16px 24px 18px;
  border-bottom: 1px solid var(--hairline);
  background: #FBFAF7;
}
.m5-pipe-h {
  display: flex; align-items: center; justify-content: space-between;
  font: 600 11px var(--font-ui, var(--font-body));
  letter-spacing: 0.09em; text-transform: uppercase; color: var(--muted);
}
.m5-pipe-stage {
  text-transform: none; letter-spacing: 0; font-weight: 600; font-size: 11.5px;
  padding: 3px 10px; border-radius: 999px;
  background: var(--cream-deeper); color: var(--ink);
}
.m5-pipe-stage.stage-call   { background: #E0E8F0; color: #2E4A6B; }
.m5-pipe-stage.stage-booked { background: #FBEFD2; color: #8A6418; }
.m5-pipe-stage.stage-client { background: #DCEFDD; color: #2F7D44; }
.m5-pipe-row { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; }
.m5-pipe-label { font: 600 12px var(--font-ui, var(--font-body)); color: var(--ink-soft); }
.m5-pipe-btns { display: inline-flex; gap: 6px; }
.m5-pipe-block { display: flex; flex-direction: column; gap: 8px; padding-top: 4px; }
.m5-pipe-zoom { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.m5-zoom-dt {
  flex: 1 1 170px; min-width: 0; height: 36px; padding: 0 10px;
  border: 1px solid var(--hairline-2); border-radius: 9px; background: #fff;
  font: 13px var(--font-ui, var(--font-body)); color: var(--ink);
}
.m5-booked-time { font: 13px var(--font-mono); color: var(--ink); }

/* mini buttons */
.m5-mini {
  display: inline-flex; align-items: center; justify-content: center; gap: 5px;
  height: 34px; padding: 0 13px; border-radius: 9px;
  background: #fff; color: var(--ink); border: 1px solid var(--hairline-2);
  font: 600 12.5px var(--font-ui, var(--font-body)); cursor: pointer;
  text-decoration: none; white-space: nowrap; transition: background 0.15s, border-color 0.15s;
}
.m5-mini:hover { background: var(--cream-deeper); border-color: var(--ink-soft); }
.m5-mini-primary { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.m5-mini-primary:hover { background: #000; color: var(--cream); }
.m5-mini-go { background: #2F7D44; color: #fff; border-color: #2F7D44; width: 100%; height: 38px; }
.m5-mini-go:hover { background: #276537; }
.m5-pipe-cta { width: 100%; height: 38px; }
.m5-pill-ready { color: #2F7D44; font-weight: 700; font-size: 11px; }
.m5-pill-building { color: #8A6418; font-weight: 700; font-size: 11px; }
.m5-pill-none { color: var(--muted); font-weight: 600; font-size: 11px; }

/* payment plans */
.m5-pay { gap: 10px; }
.m5-pay-plans { display: flex; flex-direction: column; gap: 7px; }
.m5-plan {
  display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px;
  padding: 9px 11px; border: 1px solid var(--hairline-2); border-radius: 10px;
  background: #fff; cursor: pointer; font: 13px var(--font-ui, var(--font-body));
}
.m5-plan:has(input:checked) { border-color: var(--ink); box-shadow: 0 0 0 2px rgba(20,18,14,0.06); }
.m5-plan input { accent-color: var(--ink); }
.m5-plan-name { font-weight: 600; }
.m5-plan-price { font-family: var(--font-mono); font-size: 12.5px; color: var(--ink-soft); }
.m5-plan-blurb { grid-column: 2 / -1; font-size: 11.5px; color: var(--muted); }
.m5-pay-send { display: flex; gap: 7px; }
.m5-pay-note { font-size: 11.5px; color: var(--muted); line-height: 1.4; word-break: break-word; }

/* ===================================================================
   CLIENTS — ACTIVE page
   =================================================================== */
.clients-section { max-width: 1080px; margin: 0 auto; }
.clients-head { margin: 8px 0 18px; }
.clients-title { font: 650 24px var(--font-ui, var(--font-body)); margin: 0; letter-spacing: -0.01em; }
.clients-sub { margin: 4px 0 0; color: var(--muted); font-size: 14px; }

.cl-summary {
  display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px;
  margin: 0 0 22px;
}
.cl-stat {
  background: var(--bg-card); border: 1px solid var(--hairline);
  border-radius: 16px; padding: 18px 20px;
  box-shadow: 0 8px 22px -16px rgba(20,18,14,0.4);
}
.cl-stat-n { font: 700 28px var(--font-ui, var(--font-body)); letter-spacing: -0.02em; color: var(--ink); }
.cl-stat-n.mono { font-family: var(--font-mono); }
.cl-stat-n .cl-prefix { font-size: 20px; color: var(--ink-soft); margin-right: 1px; }
.cl-stat-l { margin-top: 4px; font-size: 12px; letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); }

.clients-host { display: flex; flex-direction: column; gap: 14px; }
.cl-empty { text-align: center; padding: 60px 20px; }
.cl-empty h3 { margin: 0 0 8px; font: 600 18px var(--font-ui, var(--font-body)); }

.cl-card {
  background: var(--bg-card); border: 1px solid var(--hairline);
  border-left: 4px solid var(--hairline-2);
  border-radius: 16px; padding: 18px 20px;
  display: flex; flex-direction: column; gap: 14px;
  box-shadow: 0 6px 18px -14px rgba(20,18,14,0.4);
}
.cl-card.pay-paid { border-left-color: #2F7D44; }
.cl-card.pay-overdue { border-left-color: #C0392B; }
.cl-card.pay-paused { border-left-color: #B7791F; }
.cl-card.pay-cancelled { border-left-color: var(--hairline-2); opacity: 0.72; }

.cl-card-main { display: grid; grid-template-columns: 1.3fr 1fr; gap: 18px; align-items: start; }
.cl-name { font: 650 17px var(--font-ui, var(--font-body)); letter-spacing: -0.01em; }
.cl-meta { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 5px; font-size: 13px; color: var(--ink-soft); }
.cl-meta .mono { font-family: var(--font-mono); font-size: 12.5px; }
.cl-meta a { color: var(--ink-soft); text-decoration: none; }
.cl-meta a:hover { color: var(--ink); text-decoration: underline; }
.cl-since { margin-top: 7px; font-size: 12.5px; color: var(--muted); }
.cl-since b { color: var(--ink-soft); font-weight: 600; }
.cl-site-row { display: flex; gap: 8px; align-items: center; }

.cl-field-label { display: block; font: 600 10.5px var(--font-ui, var(--font-body)); letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin-bottom: 5px; }
.cl-input {
  width: 100%; height: 38px; padding: 0 11px; border-radius: 10px;
  border: 1px solid var(--hairline-2); background: #fff; color: var(--ink);
  font: 13.5px var(--font-ui, var(--font-body));
}
.cl-input:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(20,18,14,0.05); }
.cl-textarea { height: auto; padding: 9px 11px; resize: vertical; line-height: 1.5; }

.cl-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.cl-pay-select { font-weight: 600; }

.cl-actions { display: flex; flex-wrap: wrap; gap: 8px; padding-top: 2px; border-top: 1px solid var(--hairline); margin-top: 2px; padding-top: 14px; }
.cl-mini {
  display: inline-flex; align-items: center; justify-content: center;
  height: 34px; padding: 0 14px; border-radius: 9px;
  background: #fff; color: var(--ink); border: 1px solid var(--hairline-2);
  font: 600 12.5px var(--font-ui, var(--font-body)); cursor: pointer; text-decoration: none;
  transition: background 0.15s, border-color 0.15s;
}
.cl-mini:hover { background: var(--cream-deeper); border-color: var(--ink-soft); }
.cl-mini:disabled { opacity: 0.45; cursor: default; }
.cl-mini-primary { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.cl-mini-primary:hover { background: #000; color: var(--cream); }
.cl-mini-danger { color: #C0392B; }
.cl-mini-danger:hover { background: #F6E5E2; border-color: #C0392B; }

@media (max-width: 720px) {
  .cl-summary { grid-template-columns: 1fr; }
  .cl-card-main { grid-template-columns: 1fr; }
  .cl-grid { grid-template-columns: 1fr 1fr; }
}

/* ===================================================================
   AUTO-SCRAPE PANEL — simplified (Schedule / What to find / Advanced)
   =================================================================== */
.auto-h-sub { font-weight: 400; text-transform: none; letter-spacing: 0; font-size: 11px; color: var(--muted); margin-left: 8px; }

.ag-row {
  display: flex; align-items: center; justify-content: space-between; gap: 16px;
  padding: 11px 0; border-bottom: 1px solid var(--hairline);
}
.ag-row:last-of-type { border-bottom: 0; }
.ag-label { display: flex; flex-direction: column; gap: 2px; font: 500 14px var(--font-ui, var(--font-body)); color: var(--ink); }
.ag-help { font: 400 12px var(--font-ui, var(--font-body)); color: var(--muted); line-height: 1.4; }
.ag-control { display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; }
.ag-control input[type="number"], .ag-control input[type="time"] {
  height: 36px; padding: 0 10px; border-radius: 9px;
  border: 1px solid var(--hairline-2); background: var(--cream); color: var(--ink);
  font: 14px var(--font-mono); width: 84px; text-align: right;
}
.ag-control input[type="time"] { width: 104px; font-size: 13px; }
.ag-control input:focus { outline: none; border-color: var(--ink); }
.ag-unit, .ag-to { font-size: 12px; color: var(--muted); }
.ag-actions { display: flex; align-items: center; gap: 12px; padding-top: 14px; }

.ag-pool { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--hairline); }
.ag-pool-col .auto-pool-label { font: 600 11px var(--font-ui, var(--font-body)); letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }

/* Advanced collapse */
.auto-advanced { padding-top: 4px; }
.auto-adv-head {
  display: flex; align-items: center; gap: 8px; width: 100%;
  background: transparent; border: 0; cursor: pointer; padding: 8px 0; text-align: left;
}
.auto-adv-head .chev { color: var(--muted); transition: transform 0.2s; }
.auto-advanced:not(.is-collapsed) .auto-adv-head .chev { transform: rotate(180deg); }
.auto-adv-body { overflow: hidden; }
.auto-advanced.is-collapsed .auto-adv-body { display: none; }
.ag-note { padding-top: 10px; line-height: 1.5; }

/* Clean recent-scrapes table */
.auto-hist-simple { width: 100%; border-collapse: collapse; font: 13px var(--font-ui, var(--font-body)); }
.auto-hist-simple th {
  text-align: left; font: 600 10.5px var(--font-ui, var(--font-body));
  letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted);
  padding: 6px 10px 8px; border-bottom: 1px solid var(--hairline);
}
.auto-hist-simple td { padding: 9px 10px; border-bottom: 1px solid var(--hairline); vertical-align: top; }
.auto-hist-simple tr[data-href] { cursor: pointer; }
.auto-hist-simple tr[data-href]:hover td { background: var(--cream-deeper); }
.auto-hist-simple .auto-t { color: var(--ink-soft); white-space: nowrap; font-family: var(--font-mono); font-size: 12px; }
.auto-result { font-weight: 500; }
.auto-result.r-good { color: #2F7D44; }
.auto-result.r-zero { color: var(--ink-soft); }
.auto-result.r-defer { color: #8A6418; }
.auto-result.r-skip { color: var(--muted); }
.auto-result.r-bad { color: #C0392B; }
.auto-result.r-run { color: #2E4A6B; }

/* ===================================================================
   CLIENT PROFILE PAGE
   =================================================================== */
.cp-section { max-width: 1000px; margin: 0 auto; }
.cp-back { display: inline-block; margin: 4px 0 14px; color: var(--ink-soft); text-decoration: none; font-size: 13px; }
.cp-back:hover { color: var(--ink); }
.cp-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; margin-bottom: 16px; }
.cp-title { font: 650 24px var(--font-ui, var(--font-body)); margin: 0; letter-spacing: -0.01em; }
.cp-sub { margin-top: 5px; color: var(--muted); font-size: 13.5px; }
.cp-badge { display: inline-flex; padding: 4px 12px; border-radius: 999px; font: 600 12px var(--font-ui, var(--font-body)); text-transform: capitalize; background: var(--cream-deeper); color: var(--ink); }
.cp-pay-paid { background: #DCEFDD; color: #2F7D44; }
.cp-pay-overdue { background: #F6E2DE; color: #C0392B; }
.cp-pay-paused { background: #FBEFD2; color: #8A6418; }
.cp-pay-cancelled { background: var(--cream-deeper); color: var(--muted); }
.cl-name-link { text-decoration: none; color: var(--ink); }
.cl-name-link:hover { text-decoration: underline; }

.cp-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--hairline); margin-bottom: 20px; flex-wrap: wrap; }
.cp-tab {
  background: transparent; border: 0; padding: 10px 16px; cursor: pointer;
  font: 600 13.5px var(--font-ui, var(--font-body)); color: var(--ink-soft);
  border-bottom: 2px solid transparent; margin-bottom: -1px;
}
.cp-tab:hover { color: var(--ink); }
.cp-tab.is-active { color: var(--ink); border-bottom-color: var(--ink); }
.cp-pane { display: none; flex-direction: column; gap: 16px; }
.cp-pane.is-active { display: flex; }
.cp-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }

.cp-card { background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 16px; padding: 18px 20px; box-shadow: 0 6px 18px -16px rgba(20,18,14,0.4); display: flex; flex-direction: column; gap: 12px; }
.cp-card-h { margin: 0 0 2px; font: 600 12px var(--font-ui, var(--font-body)); letter-spacing: 0.05em; text-transform: uppercase; color: var(--muted); }
.cp-f { display: flex; flex-direction: column; gap: 5px; }
.cp-f > span { font: 500 12px var(--font-ui, var(--font-body)); color: var(--ink-soft); }
.cp-hint { color: var(--muted); font-weight: 400; }
.cp-f input, .cp-f select, .cp-textarea {
  width: 100%; height: 38px; padding: 0 11px; border-radius: 10px;
  border: 1px solid var(--hairline-2); background: #fff; color: var(--ink);
  font: 13.5px var(--font-ui, var(--font-body));
}
.cp-textarea { height: auto; padding: 9px 11px; resize: vertical; line-height: 1.5; }
.cp-f input:focus, .cp-f select:focus, .cp-textarea:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(20,18,14,0.05); }
.cp-row-static { display: flex; justify-content: space-between; font-size: 13px; color: var(--ink-soft); padding-top: 4px; }

.cp-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.cp-btn { display: inline-flex; align-items: center; height: 38px; padding: 0 16px; border-radius: 10px; background: #fff; color: var(--ink); border: 1px solid var(--hairline-2); font: 600 13px var(--font-ui, var(--font-body)); cursor: pointer; text-decoration: none; }
.cp-btn:hover { background: var(--cream-deeper); border-color: var(--ink-soft); }
.cp-btn:disabled { opacity: 0.5; cursor: default; }
.cp-btn-primary { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.cp-btn-primary:hover { background: #000; color: var(--cream); }
.cp-note { font-size: 12.5px; color: var(--muted); line-height: 1.5; margin: 4px 0 0; }

.cp-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.cp-tag { display: inline-flex; align-items: center; gap: 6px; padding: 4px 6px 4px 11px; border-radius: 999px; background: var(--ink); color: var(--cream); font: 12px var(--font-mono); }
.cp-tag button { background: transparent; border: 0; color: var(--cream); cursor: pointer; font-size: 14px; opacity: 0.75; }
.cp-add { display: flex; gap: 8px; }
.cp-add input { flex: 1 1 auto; height: 36px; padding: 0 11px; border-radius: 9px; border: 1px solid var(--hairline-2); background: #fff; font: 13px var(--font-ui, var(--font-body)); }
.cp-add input[type="date"] { flex: 0 0 150px; }
.cp-checks { display: flex; flex-direction: column; gap: 8px; }
.cp-check { display: flex; align-items: center; gap: 9px; font-size: 13.5px; cursor: pointer; }
.cp-check input { width: 16px; height: 16px; accent-color: var(--ink); }
.cp-log { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; font-size: 13px; }
.cp-log li { padding: 6px 0; border-bottom: 1px solid var(--hairline); }
.cp-act-date { font-family: var(--font-mono); font-size: 12px; color: var(--muted); margin-right: 8px; }

.cp-channels .cp-toggle-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--hairline); }
.cp-toggle-row span { display: flex; flex-direction: column; gap: 2px; }
.cp-toggle-row em { font-style: normal; font-size: 12px; color: var(--muted); }
.cp-toggle-row.is-stub { opacity: 0.85; }
.cp-coming { display: inline-flex; padding: 5px 12px; border-radius: 999px; background: #FBEFD2; color: #8A6418; font: 600 11.5px var(--font-ui, var(--font-body)); }

.cp-activity { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.cp-act { display: flex; gap: 14px; padding: 10px 0; border-bottom: 1px solid var(--hairline); font-size: 13.5px; }
.cp-act:last-child { border-bottom: 0; }
.cp-act-when { flex: 0 0 130px; font-family: var(--font-mono); font-size: 12px; color: var(--muted); }
.cp-act-via { font-size: 11px; color: var(--muted); background: var(--cream-deeper); padding: 1px 7px; border-radius: 999px; margin-left: 4px; }

@media (max-width: 720px) { .cp-grid2 { grid-template-columns: 1fr; } }

/* Recent-scrapes collapse: cap height + scroll when open so it never dominates */
#auto-recent .auto-adv-body { max-height: 320px; overflow-y: auto; }
.auto-recent-count { font-weight: 400; color: var(--muted); font-size: 11px; margin-left: 4px; }

/* TEST/sandbox client marker */
.cl-test-badge { display: inline-flex; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: #FBEFD2; color: #8A6418; font: 700 10px var(--font-ui, var(--font-body)); letter-spacing: 0.06em; vertical-align: middle; }
.cl-card-test { border-left-color: #B7791F; }

/* ===================================================================
   CLIENTS list — minimal roster rows (full editing lives in the profile)
   =================================================================== */
.clients-host { gap: 8px; }
.cl-row {
  display: grid;
  grid-template-columns: 1fr auto auto 96px 18px;
  align-items: center; gap: 18px;
  padding: 14px 18px;
  background: var(--bg-card); border: 1px solid var(--hairline);
  border-left: 4px solid var(--hairline-2); border-radius: 14px;
  text-decoration: none; color: var(--ink);
  transition: border-color 0.15s, box-shadow 0.15s, transform 0.05s;
}
.cl-row:hover { border-color: var(--ink-soft); box-shadow: 0 6px 18px -14px rgba(20,18,14,0.5); }
.cl-row:active { transform: scale(0.997); }
.cl-row.pay-paid { border-left-color: #2F7D44; }
.cl-row.pay-overdue { border-left-color: #C0392B; }
.cl-row.pay-paused { border-left-color: #B7791F; }
.cl-row.pay-cancelled { border-left-color: var(--hairline-2); opacity: 0.7; }
.cl-row-test { border-left-color: #B7791F; }

.cl-row-id { min-width: 0; }
.cl-row-name { font: 600 15px var(--font-ui, var(--font-body)); letter-spacing: -0.01em; display: flex; align-items: center; }
.cl-row-meta { margin-top: 3px; font-size: 12.5px; color: var(--muted); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cl-row-plan { text-align: right; white-space: nowrap; }
.cl-row-planname { display: block; font: 500 13px var(--font-ui, var(--font-body)); color: var(--ink); }
.cl-row-price { display: block; font: 12px var(--font-mono); color: var(--ink-soft); margin-top: 2px; }
.cl-row-pay { text-align: right; }
.cl-pay-pill {
  display: inline-flex; padding: 3px 10px; border-radius: 999px;
  font: 600 11px var(--font-ui, var(--font-body)); text-transform: capitalize;
  background: var(--cream-deeper); color: var(--ink-soft);
}
.cl-row.pay-paid .cl-pay-pill { background: #DCEFDD; color: #2F7D44; }
.cl-row.pay-overdue .cl-pay-pill { background: #F6E2DE; color: #C0392B; }
.cl-row.pay-paused .cl-pay-pill { background: #FBEFD2; color: #8A6418; }
.cl-row-since { text-align: right; font-size: 12px; color: var(--muted); white-space: nowrap; }
.cl-row-arrow { color: var(--muted); font-size: 16px; text-align: center; }
.cl-row:hover .cl-row-arrow { color: var(--ink); }

@media (max-width: 720px) {
  .cl-row { grid-template-columns: 1fr auto; grid-template-areas: "id pay" "meta plan"; gap: 6px 12px; }
  .cl-row-id { grid-area: id; } .cl-row-pay { grid-area: pay; }
  .cl-row-plan { grid-area: plan; text-align: left; } .cl-row-since, .cl-row-arrow { display: none; }
}

/* ===================================================================
   CLIENT COMMAND CENTRE — KPIs, engine, server, onboarding
   =================================================================== */
.cp-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin: 4px 0 16px; }
.cp-kpi { background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 14px; padding: 14px 16px; }
.cp-kpi-n { font: 700 24px var(--font-ui, var(--font-body)); letter-spacing: -0.02em; color: var(--ink); }
.cp-kpi-unit { font-size: 14px; color: var(--ink-soft); font-weight: 600; }
.cp-kpi-l { font: 600 11px var(--font-ui, var(--font-body)); letter-spacing: 0.04em; text-transform: uppercase; color: var(--muted); margin-top: 3px; }
.cp-kpi-sub { font-size: 11.5px; color: var(--muted); margin-top: 4px; }
.cp-kpi-bar, .cp-engine-stats span { font-size: 12px; }
.cp-kpi-bar { height: 6px; background: var(--cream-deeper); border-radius: 999px; margin-top: 8px; overflow: hidden; }
.cp-kpi-bar > span { display: block; height: 100%; background: var(--ink); border-radius: 999px; }

.cp-onboard-banner { margin-bottom: 16px; }
.cp-onboard-banner[hidden] { display: none; }
.cp-ob-banner-in { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 18px; background: #FBF4E2; border: 1px solid #EAD7A6; border-radius: 14px; font-size: 13.5px; color: #6B4E12; }

.cp-tabs { overflow-x: auto; }

.cp-stat-card { align-items: flex-start; }
.cp-stat-n { font: 700 36px var(--font-ui, var(--font-body)); letter-spacing: -0.03em; }
.cp-stat-l { font: 600 13px var(--font-ui, var(--font-body)); color: var(--ink-soft); margin-top: 2px; display: flex; align-items: center; gap: 8px; }
.cp-stat-sub { font-size: 12px; color: var(--muted); margin-top: 6px; line-height: 1.5; }
.cp-live-dot { width: 8px; height: 8px; border-radius: 50%; background: #2F7D44; display: inline-block; box-shadow: 0 0 0 3px rgba(47,125,68,.18); }
.cp-coming { display: inline-flex; padding: 3px 9px; border-radius: 999px; background: #FBEFD2; color: #8A6418; font: 600 10.5px var(--font-ui, var(--font-body)); }
.cp-ok { display: inline-flex; padding: 3px 9px; border-radius: 999px; background: #DCEFDD; color: #2F7D44; font: 600 10.5px var(--font-ui, var(--font-body)); margin-left: 6px; }

.cp-engine-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.cp-switch-row { display: flex; align-items: center; gap: 10px; font-size: 12.5px; color: var(--ink-soft); }
.cp-engine-stats { display: flex; gap: 16px; font-size: 12.5px; color: var(--ink-soft); margin: 4px 0 2px; }
.cp-engine-stats b { color: var(--ink); }
.cp-blogs { list-style: none; margin: 8px 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.cp-blog { display: flex; align-items: center; gap: 10px; padding: 8px 0; border-bottom: 1px solid var(--hairline); font-size: 13px; }
.cp-blog-st { flex: 0 0 auto; font: 600 10px var(--font-ui, var(--font-body)); text-transform: uppercase; letter-spacing: .04em; padding: 3px 8px; border-radius: 999px; }
.cp-blog-st.st-planned { background: var(--cream-deeper); color: var(--ink-soft); }
.cp-blog-st.st-queued { background: #FBEFD2; color: #8A6418; }
.cp-blog-st.st-published { background: #DCEFDD; color: #2F7D44; }
.cp-blog-t { flex: 1; min-width: 0; }
.cp-blog-acts { display: flex; gap: 10px; flex: 0 0 auto; }
.cp-mini-link { background: none; border: 0; color: var(--ink-soft); cursor: pointer; font: 600 12px var(--font-ui, var(--font-body)); text-decoration: underline; text-underline-offset: 2px; padding: 0; }
.cp-mini-link:hover { color: var(--ink); }
.cp-mini-link.cp-del { text-decoration: none; font-size: 16px; color: var(--muted); }

.cp-srv-status { font: 600 11px var(--font-ui, var(--font-body)); padding: 4px 11px; border-radius: 999px; text-transform: capitalize; }
.cp-srv-status.srv-not_provisioned { background: var(--cream-deeper); color: var(--ink-soft); }
.cp-srv-status.srv-provisioning { background: #FBEFD2; color: #8A6418; }
.cp-srv-status.srv-live { background: #DCEFDD; color: #2F7D44; }
.cp-code { position: relative; background: #14130F; color: #E8E5DE; border-radius: 12px; padding: 14px 16px; font: 12.5px/1.7 var(--font-mono); white-space: pre-wrap; word-break: break-word; overflow-x: auto; }
.cp-copy { position: absolute; top: 8px; right: 8px; background: rgba(255,255,255,.1); border: 0; color: #E8E5DE; width: 26px; height: 26px; border-radius: 7px; cursor: pointer; font-size: 13px; }
.cp-copy:hover { background: rgba(255,255,255,.2); }

.cp-onboard { list-style: none; counter-reset: ob; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.cp-ob-step { display: flex; gap: 13px; padding: 14px 0; border-bottom: 1px solid var(--hairline); }
.cp-ob-step:last-child { border-bottom: 0; }
.cp-ob-check { position: relative; flex: 0 0 22px; }
.cp-ob-check input { position: absolute; opacity: 0; width: 22px; height: 22px; cursor: pointer; }
.cp-ob-tick { display: block; width: 22px; height: 22px; border-radius: 7px; border: 2px solid var(--hairline-2); background: #fff; transition: all .15s; }
.cp-ob-check input:checked + .cp-ob-tick { background: #2F7D44; border-color: #2F7D44; }
.cp-ob-check input:checked + .cp-ob-tick::after { content: "✓"; color: #fff; display: flex; align-items: center; justify-content: center; height: 100%; font-size: 13px; font-weight: 700; }
.cp-ob-label { font: 600 14px var(--font-ui, var(--font-body)); }
.cp-ob-step.is-done .cp-ob-label { color: var(--muted); text-decoration: line-through; }
.cp-ob-how { font-size: 12.5px; color: var(--muted); line-height: 1.5; margin-top: 3px; }
.cp-ob-body .cp-mini-link { margin-top: 6px; display: inline-block; }

@media (max-width: 720px) { .cp-kpis { grid-template-columns: 1fr 1fr; } }
.cl-summary-note { margin: -10px 0 18px; font-size: 12.5px; color: var(--muted); }
.cl-summary-note[hidden] { display: none; }

/* GBP playbook on the SEO tab */
.cp-gbp-status { height: 36px; padding: 0 10px; border-radius: 9px; border: 1px solid var(--hairline-2); background: #fff; font: 13px var(--font-ui, var(--font-body)); }
.cp-gbp-sub { background: var(--cream-deeper); border-radius: 12px; padding: 14px 16px; margin: 4px 0 6px; }
.cp-gbp-steps-h { font: 600 11px var(--font-ui, var(--font-body)); letter-spacing: 0.05em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }
.cp-gbp-ol { margin: 0 0 10px; padding-left: 18px; font-size: 13px; line-height: 1.7; color: var(--ink); }
.cp-gbp-ol b { font-weight: 600; }
.cp-gbp-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-top: 8px; }
.cp-checks-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 8px 16px; }
.cp-grid3 { display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 12px; }
@media (max-width: 720px) { .cp-checks-2, .cp-grid3 { grid-template-columns: 1fr; } }

/* Review-request system (Customer Flows tab) */
.cp-rev-counts { display: flex; gap: 16px; font-size: 13px; color: var(--ink-soft); }
.cp-rev-counts b { color: var(--ink); font-size: 16px; margin-right: 3px; }
.cp-rev-send { background: var(--cream-deeper); border-radius: 12px; padding: 14px 16px; margin: 4px 0; }
.cp-rev-send-h, .cp-gbp-steps-h { font: 600 11px var(--font-ui, var(--font-body)); letter-spacing: .05em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }
.cp-rev-actions { display: flex; gap: 10px; align-items: center; margin-top: 10px; }
.cp-rev-actions select { height: 38px; padding: 0 10px; border-radius: 10px; border: 1px solid var(--hairline-2); background: #fff; font: 13px var(--font-ui, var(--font-body)); }
.cp-rev-list { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 2px; }
.cp-rev-req { display: flex; align-items: center; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--hairline); font-size: 13px; }
.cp-rev-tick { flex: 0 0 auto; }
.cp-rev-cust { flex: 1; min-width: 0; font-weight: 500; }
.cp-rev-ch { font: 600 10px var(--font-ui, var(--font-body)); text-transform: uppercase; padding: 3px 8px; border-radius: 999px; background: var(--cream-deeper); color: var(--ink-soft); }
.cp-rev-ch.ch-email { background: #E0E8F0; color: #2E4A6B; }
.cp-rev-ch.ch-sms { background: #FBEFD2; color: #8A6418; }
.cp-rev-when { font-family: var(--font-mono); font-size: 11.5px; color: var(--muted); }
.cp-rev-done { color: #2F7D44; font-weight: 600; font-size: 12px; }
.cp-rev-tick span { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--hairline-2); display: block; }
.cp-rev-tick input { position: absolute; opacity: 0; }
.cp-rev-tick input:checked + span { background: #2F7D44; border-color: #2F7D44; }

/* ===================================================================
   BASE CRM  (crm.autoascension.com)
   =================================================================== */
.crm-body { background: var(--cream); }
.crm-nav { background: var(--ink); color: var(--cream); }
.crm-nav-in { max-width: 1100px; margin: 0 auto; padding: 14px 24px; display: flex; align-items: center; justify-content: space-between; }
.crm-brand { color: var(--cream); text-decoration: none; font: 600 16px var(--font-ui, var(--font-body)); display: inline-flex; align-items: center; gap: 8px; letter-spacing: 0.02em; }
.crm-brand-mark { color: #F4C752; }
.crm-brand-sub { font-family: var(--font-mono); font-size: 11px; letter-spacing: 0.18em; opacity: 0.65; padding: 2px 7px; border: 1px solid rgba(242,240,238,0.3); border-radius: 6px; }
.crm-brand-lg { font-size: 22px; color: var(--ink); }
.crm-brand-lg .crm-brand-sub { color: var(--ink-soft); border-color: var(--hairline-2); }
.crm-logout { background: transparent; border: 1px solid rgba(242,240,238,0.3); color: var(--cream); height: 32px; padding: 0 14px; border-radius: 8px; font: 500 13px var(--font-ui, var(--font-body)); cursor: pointer; }
.crm-logout:hover { background: rgba(242,240,238,0.12); }
.crm-main { max-width: 1100px; padding: 26px 24px 60px; }
.crm-login { max-width: 360px; margin: 12vh auto; text-align: center; display: flex; flex-direction: column; align-items: center; gap: 14px; }
.crm-login .login-form { display: flex; flex-direction: column; gap: 10px; width: 100%; }

.crm-h1 { font: 650 26px var(--font-ui, var(--font-body)); letter-spacing: -0.02em; margin: 0; }
.crm-sub { color: var(--muted); font-size: 14px; margin-top: 4px; }
.crm-home .crm-sub { margin-bottom: 20px; }
.crm-biz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 14px; }
.crm-biz-card { position: relative; display: block; background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 16px; padding: 18px 20px; text-decoration: none; color: var(--ink); transition: border-color 0.15s, box-shadow 0.15s; }
.crm-biz-card:hover { border-color: var(--ink-soft); box-shadow: 0 8px 22px -16px rgba(20,18,14,0.5); }
.crm-biz-name { font: 600 16px var(--font-ui, var(--font-body)); display: flex; align-items: center; }
.crm-biz-meta { font-size: 12.5px; color: var(--muted); margin-top: 3px; }
.crm-biz-stats { display: flex; gap: 14px; margin-top: 12px; font-size: 12.5px; color: var(--ink-soft); }
.crm-biz-stats b { color: var(--ink); }
.crm-biz-arrow { position: absolute; right: 18px; bottom: 16px; color: var(--muted); }

.crm-dash-head { margin: 10px 0 16px; }
.crm-kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 18px; }
.crm-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 14px; }
.crm-search { flex: 1; max-width: 360px; height: 40px; padding: 0 13px; border-radius: 11px; border: 1px solid var(--hairline-2); background: #fff; font: 14px var(--font-ui, var(--font-body)); }

/* Jobs board */
.crm-board { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; }
.crm-col { background: var(--cream-deeper); border-radius: 14px; padding: 10px; min-height: 120px; }
.crm-col-h { font: 600 11px var(--font-ui, var(--font-body)); letter-spacing: 0.05em; text-transform: uppercase; color: var(--ink-soft); padding: 4px 6px 10px; display: flex; align-items: center; gap: 6px; }
.crm-col-n { background: #fff; border-radius: 999px; padding: 1px 8px; font-size: 11px; color: var(--ink-soft); }
.crm-col-body { display: flex; flex-direction: column; gap: 8px; }
.crm-col-empty { text-align: center; padding: 8px 0; }
.crm-job { background: #fff; border: 1px solid var(--hairline); border-radius: 11px; padding: 11px 12px; }
.crm-job-top { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.crm-job-type { font: 600 13.5px var(--font-ui, var(--font-body)); }
.crm-job-price { font: 12px var(--font-mono); color: var(--ink-soft); }
.crm-job-cust { font-size: 12.5px; color: var(--ink-soft); margin-top: 2px; }
.crm-job-meta { font-size: 11.5px; color: var(--muted); margin-top: 4px; }
.crm-job-acts { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 9px; }
.crm-mini { height: 28px; padding: 0 10px; border-radius: 8px; border: 1px solid var(--hairline-2); background: #fff; font: 600 11.5px var(--font-ui, var(--font-body)); cursor: pointer; }
.crm-mini:hover { background: var(--cream-deeper); }
.crm-mini-go { background: #2F7D44; color: #fff; border-color: #2F7D44; }
.crm-mini-go:hover { background: #276537; }
.crm-mini-x { color: #C0392B; }

/* Customers */
.crm-cust-list { display: flex; flex-direction: column; gap: 8px; }
.crm-cust { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 12px; padding: 12px 15px; }
.crm-cust-name { font: 600 14px var(--font-ui, var(--font-body)); }
.crm-cust-meta { font-size: 12.5px; color: var(--muted); margin-top: 3px; }
.crm-cust-notes { font-size: 12.5px; color: var(--ink-soft); margin-top: 5px; }
.crm-cust-acts { display: flex; gap: 6px; flex: 0 0 auto; }

/* Modal */
.crm-modal-ov { position: fixed; inset: 0; background: rgba(20,18,14,0.45); display: flex; align-items: center; justify-content: center; z-index: 2000; padding: 16px; }
.crm-modal { background: var(--bg-card); border-radius: 18px; width: min(520px, 96vw); max-height: 92vh; overflow-y: auto; box-shadow: 0 24px 60px rgba(10,10,10,0.4); }
.crm-modal-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 22px 8px; }
.crm-modal-head h3 { margin: 0; font: 650 17px var(--font-ui, var(--font-body)); }
.crm-modal-x { background: none; border: 0; font-size: 24px; color: var(--muted); cursor: pointer; line-height: 1; }
.crm-modal-body { padding: 8px 22px; display: flex; flex-direction: column; gap: 12px; }
.crm-modal-foot { display: flex; justify-content: flex-end; gap: 10px; padding: 14px 22px 20px; }
.crm-modal .cp-f input, .crm-modal .cp-f select, .crm-modal .cp-f textarea { width: 100%; height: 38px; padding: 0 11px; border-radius: 10px; border: 1px solid var(--hairline-2); background: #fff; font: 13.5px var(--font-ui, var(--font-body)); }
.crm-modal .cp-textarea { height: auto; padding: 9px 11px; }

@media (max-width: 820px) { .crm-board, .crm-kpis { grid-template-columns: 1fr 1fr; } }
@media (max-width: 520px) { .crm-board { grid-template-columns: 1fr; } }

/* ===== CRM auth — sign in / signed out ===== */
.auth-wrap { min-height: 100vh; min-height: 100dvh; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 22px; padding: 32px 20px; background: radial-gradient(120% 80% at 50% -10%, #FBFAF7 0%, var(--cream) 58%); }
.auth-card { width: 100%; max-width: 400px; background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 22px; padding: 40px 38px 34px; text-align: center; box-shadow: inset 0 1px 0 rgba(255,255,255,0.7), 0 26px 60px -36px rgba(20,18,14,0.5); }
.auth-brand { display: inline-flex; align-items: center; gap: 9px; text-decoration: none; margin-bottom: 26px; }
.auth-brand-mark { color: #E8B23A; font-size: 18px; line-height: 1; }
.auth-brand-name { font: 700 18px var(--font-body); color: var(--ink); letter-spacing: -0.01em; }
.auth-card .crm-brand-sub { color: var(--ink-soft); border-color: var(--hairline-2); }
.auth-title { margin: 0; font-family: var(--font-ui, var(--font-body)); font-weight: 700; font-size: 27px; line-height: 1.1; letter-spacing: -0.02em; color: var(--ink); }
.auth-sub { margin: 9px 0 0; color: var(--muted); font-size: 14.5px; }
.auth-form { display: flex; flex-direction: column; gap: 14px; margin-top: 26px; text-align: left; }
.auth-field { display: flex; flex-direction: column; gap: 7px; }
.auth-field > span { font: 500 11px var(--font-mono); letter-spacing: 0.14em; text-transform: uppercase; color: var(--muted); }
.auth-field input { height: 50px; padding: 0 16px; font: 16px var(--font-body); color: var(--ink); background: #fff; border: 1px solid var(--hairline-2); border-radius: 13px; transition: border-color .15s, box-shadow .15s; }
.auth-field input::placeholder { color: #C4BEB2; letter-spacing: 0.12em; }
.auth-field input:focus { outline: none; border-color: var(--ink); box-shadow: 0 0 0 3px rgba(26,26,26,0.08); }
.auth-btn { height: 50px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; background: var(--ink); color: var(--cream); border: 1px solid var(--ink); border-radius: var(--radius-pill); font: 600 15px var(--font-body); cursor: pointer; text-decoration: none; transition: transform .08s ease, background .15s; }
.auth-btn:hover { background: #000; transform: translateY(-1px); }
.auth-btn:active { transform: translateY(0); }
.auth-btn { white-space: nowrap; }
.auth-btn svg { width: 17px; height: 17px; flex: 0 0 auto; stroke: currentColor; }
.auth-btn-link { width: 100%; margin-top: 28px; }
.auth-error { margin: 2px 0 0; color: #B0392C; font-size: 13.5px; text-align: center; }
.auth-foot { font: 11px var(--font-mono); letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); }
.auth-icon { width: 60px; height: 60px; margin: 4px auto 20px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--sage-bg); color: var(--sage-fg); }
.auth-icon svg { width: 27px; height: 27px; stroke: currentColor; }
@media (max-width: 460px) { .auth-card { padding: 32px 24px 28px; border-radius: 18px; } .auth-title { font-size: 26px; } }

/* ===================== Connect to CRM modal (crm_connect.js) ===================== */
.crmc-overlay {
  position: fixed; inset: 0; z-index: 1300;
  display: flex; align-items: center; justify-content: center; padding: 30px;
  background: rgba(10, 10, 10, 0.45); backdrop-filter: blur(2px);
  animation: modal-in 0.15s ease-out;
}
.crmc-modal {
  position: relative; background: var(--cream, #FAF8F4);
  border: 1px solid var(--hairline); border-radius: 14px;
  width: 100%; max-width: 580px; max-height: calc(100vh - 60px);
  overflow-y: auto; box-shadow: 0 20px 60px rgba(10,10,10,0.18);
}
.crmc-head {
  display: flex; align-items: center; justify-content: space-between;
  padding: 20px 24px 16px; border-bottom: 1px solid var(--hairline);
  position: sticky; top: 0; background: var(--cream, #FAF8F4); z-index: 1;
}
.crmc-head h2 {
  margin: 0; font-family: var(--font-head); font-weight: 800;
  font-size: 21px; letter-spacing: -0.01em; color: var(--ink);
}
.crmc-x {
  background: transparent; border: 0; font-size: 24px; line-height: 1;
  color: var(--ink-soft); cursor: pointer; padding: 2px 6px; border-radius: 8px;
}
.crmc-x:hover { background: var(--hairline); color: var(--ink); }
.crmc-body { padding: 18px 24px 6px; display: flex; flex-direction: column; gap: 16px; }
.crmc-muted { color: var(--muted); font-size: 13px; }

.crmc-card { border: 1px solid var(--hairline); border-radius: 12px; padding: 14px 16px; background: var(--bg-card); }
.crmc-card-h {
  font-family: var(--font-body); font-size: 11px; font-weight: 600;
  letter-spacing: 0.07em; text-transform: uppercase; color: var(--ink-soft);
  margin-bottom: 10px;
}
.crmc-card-h .crmc-muted { text-transform: none; letter-spacing: 0; font-weight: 400; }

.crmc-pf { display: grid; grid-template-columns: 1fr 1fr; gap: 6px 18px; }
.crmc-pf-row { display: flex; flex-direction: column; min-width: 0; }
.crmc-pf-row span { font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); }
.crmc-pf-row b { font-size: 13.5px; color: var(--ink); font-weight: 600; word-break: break-word; }

.crmc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.crmc-field { display: flex; flex-direction: column; gap: 5px; min-width: 0; }
.crmc-field > span {
  font-size: 11px; font-weight: 500; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--muted);
}
.crmc-field select, .crmc-field input {
  font-family: var(--font-body); font-size: 14px; color: var(--ink);
  background: #fff; border: 1px solid var(--hairline-2);
  border-radius: 8px; padding: 9px 11px; width: 100%;
}
.crmc-field select:focus, .crmc-field input:focus { outline: none; border-color: var(--ink-soft); }
.crmc-url { margin-top: 12px; }

.crmc-webs { display: flex; flex-direction: column; gap: 8px; }
.crmc-web {
  display: flex; gap: 10px; align-items: flex-start; cursor: pointer;
  border: 1px solid var(--hairline-2); border-radius: 10px; padding: 11px 13px;
  background: #fff; transition: border-color 0.15s, box-shadow 0.15s;
}
.crmc-web input { margin-top: 3px; }
.crmc-web.is-sel { border-color: var(--ink); box-shadow: 0 0 0 1px var(--ink); }
.crmc-web-title { font-size: 14px; font-weight: 600; color: var(--ink); }
.crmc-web-help { font-size: 12.5px; color: var(--ink-soft); margin-top: 2px; line-height: 1.4; }

.crmc-feat {
  margin-top: 12px; display: flex; flex-direction: column; gap: 3px;
  border-radius: 9px; padding: 10px 12px; font-size: 12.5px; line-height: 1.45;
  border: 1px solid var(--hairline);
}
.crmc-feat-tag { font-weight: 700; font-size: 12px; }
.crmc-feat.is-on  { background: var(--sage-bg);  color: var(--sage-fg); border-color: transparent; }
.crmc-feat.is-opt { background: var(--gold-bg);  color: var(--gold-fg); border-color: transparent; }
.crmc-feat.is-off { background: var(--stone-bg); color: var(--stone-fg); border-color: transparent; }

.crmc-url-row { display: flex; gap: 8px; align-items: center; }
.crmc-url-row input {
  flex: 1; font-family: var(--font-mono); font-size: 12.5px; color: var(--ink);
  background: #fff; border: 1px solid var(--hairline-2); border-radius: 8px; padding: 9px 11px;
}
.crmc-open { margin-top: 10px; }
.crmc-site { margin-top: 8px; word-break: break-all; }
.crmc-core-list { margin: 0; padding: 0; list-style: none; display: flex; flex-wrap: wrap; gap: 6px; }
.crmc-core-list li {
  font-size: 12px; background: var(--sage-bg); color: var(--sage-fg);
  border-radius: var(--radius-pill); padding: 4px 11px; font-weight: 500;
}
.btn-sm { padding: 8px 14px; font-size: 13px; }

.crmc-foot {
  display: flex; align-items: center; justify-content: flex-end; gap: 10px;
  padding: 14px 24px 20px; position: sticky; bottom: 0;
  background: var(--cream, #FAF8F4); border-top: 1px solid var(--hairline);
}
.crmc-err { margin-right: auto; color: #B0392C; font-size: 13px; }

@media (max-width: 560px) {
  .crmc-grid, .crmc-pf { grid-template-columns: 1fr; }
}

/* Connect-to-CRM triggers on the roster + profile header */
.cl-row-pay { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; }
.cl-crm-btn {
  font: 600 11px var(--font-body); letter-spacing: 0.04em; cursor: pointer;
  background: var(--lav-bg); color: var(--lav-fg); border: 0;
  border-radius: var(--radius-pill); padding: 3px 10px;
}
.cl-crm-btn:hover { filter: brightness(0.96); }
.cp-head-meta { display: inline-flex; align-items: center; gap: 12px; flex-wrap: wrap; }

/* Website-status chip on CRM home cards */
.crm-biz-foot { margin-top: 10px; }
.crm-web-chip {
  display: inline-block; font-size: 11px; font-weight: 600; letter-spacing: 0.03em;
  border-radius: var(--radius-pill); padding: 3px 10px;
}
.crm-web-chip.is-on  { background: var(--sage-bg);  color: var(--sage-fg); }
.crm-web-chip.is-opt { background: var(--gold-bg);  color: var(--gold-fg); }
.crm-web-chip.is-off { background: var(--stone-bg); color: var(--stone-fg); }

/* ===================== CRMs tab (crms.js / crms.html) ===================== */
.crms-host { margin-top: 8px; }
.crm-filter { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 18px; }
.crm-fpill {
  font: 500 13px var(--font-body); cursor: pointer; color: var(--ink-soft);
  background: var(--bg-card); border: 1px solid var(--hairline-2);
  border-radius: var(--radius-pill); padding: 6px 14px;
}
.crm-fpill b { color: var(--ink); margin-left: 3px; }
.crm-fpill.is-on { background: var(--ink); color: var(--cream); border-color: var(--ink); }
.crm-fpill.is-on b { color: var(--cream); }

.crm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(310px, 1fr)); gap: 14px; }
.crm-card {
  display: flex; flex-direction: column; gap: 12px;
  background: var(--bg-card); border: 1px solid var(--hairline);
  border-radius: 14px; padding: 16px 18px;
}
.crm-card-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.crm-card-name { font: 600 15px var(--font-body); letter-spacing: -0.01em; color: var(--ink); display: flex; align-items: center; gap: 6px; }
.crm-card-meta { font-size: 12.5px; color: var(--muted); margin-top: 2px; }
.crm-card-vert {
  flex: 0 0 auto; font-size: 11px; font-weight: 600; letter-spacing: 0.02em;
  background: var(--lav-bg); color: var(--lav-fg);
  border-radius: var(--radius-pill); padding: 4px 11px; white-space: nowrap;
}
.crm-card-vert.is-pending { background: var(--stone-bg); color: var(--stone-fg); }
.crm-card-stats { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; font-size: 13px; color: var(--ink-soft); }
.crm-card-stats b { color: var(--ink); }
.crm-card-plan {
  font-size: 11px; font-weight: 600; text-transform: capitalize;
  background: var(--gold-bg); color: var(--gold-fg);
  border-radius: var(--radius-pill); padding: 3px 10px;
}
.crm-card-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 2px; }
.crm-card-pending { border-style: dashed; }

.crm-pending-sec { margin-top: 28px; }
.crm-sec-h { font: 600 15px var(--font-head); color: var(--ink); margin: 0 0 12px; }

/* Vertical chip on the core CRM dashboard header */
.crm-dash-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.crm-vert-chip {
  flex: 0 0 auto; font-size: 11.5px; font-weight: 600; letter-spacing: 0.02em;
  background: var(--lav-bg); color: var(--lav-fg);
  border-radius: var(--radius-pill); padding: 5px 12px; white-space: nowrap;
}

/* ===================== CRM Studio — previews (crms.js) ===================== */
.crm-mode { display: inline-flex; gap: 4px; background: var(--cream-deeper); border: 1px solid var(--hairline); border-radius: var(--radius-pill); padding: 4px; margin: 0 0 18px; }
.crm-mode-btn { font: 600 13px var(--font-body); cursor: pointer; border: 0; background: transparent; color: var(--ink-soft); border-radius: var(--radius-pill); padding: 7px 16px; }
.crm-mode-btn.is-on { background: var(--ink); color: var(--cream); }

.crm-pv-note { font-size: 13px; color: var(--ink-soft); background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 10px; padding: 11px 14px; margin: 0 0 18px; }

/* Shape groups — cards grouped by their underlying engine (rounds/jobs/projects/bookings) */
.crm-pv-shape { margin: 0 0 26px; }
.crm-pv-shape-head { margin: 0 0 12px; }
.crm-pv-shape-h { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; margin: 0 0 4px; }
.crm-pv-shape-tag { font-size: 11px; font-weight: 600; letter-spacing: 0.02em; background: var(--lav-bg); color: var(--lav-fg); border-radius: var(--radius-pill); padding: 3px 10px; white-space: nowrap; }
.crm-pv-shape-desc { font-size: 12.5px; color: var(--muted); margin: 0; line-height: 1.45; max-width: 64ch; }

.crm-pv-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 14px; }
.crm-pv-card { display: flex; flex-direction: column; gap: 11px; background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 14px; padding: 16px 18px; }
.crm-pv-top { display: flex; align-items: flex-start; justify-content: space-between; gap: 10px; }
.crm-pv-name { font: 600 15px var(--font-body); letter-spacing: -0.01em; color: var(--ink); }
.crm-pv-blurb { font-size: 12.5px; color: var(--muted); margin-top: 3px; line-height: 1.4; }
.crm-pv-kind { flex: 0 0 auto; font-size: 11px; font-weight: 700; border-radius: var(--radius-pill); padding: 4px 11px; white-space: nowrap; }
.crm-pv-kind.is-full { background: var(--sage-bg); color: var(--sage-fg); }
.crm-pv-kind.is-core { background: var(--gold-bg); color: var(--gold-fg); }
.crm-pv-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.crm-pv-tag { font-size: 11px; color: var(--ink-soft); background: var(--cream-deeper); border-radius: var(--radius-pill); padding: 3px 9px; text-transform: capitalize; }
.crm-pv-extras { border-top: 1px solid var(--hairline); padding-top: 10px; }
.crm-pv-extras-h { font-size: 10.5px; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; }
.crm-pv-extras ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 4px; }
.crm-pv-extras li { font-size: 12.5px; color: var(--ink-soft); padding-left: 16px; position: relative; }
.crm-pv-extras li::before { content: "›"; position: absolute; left: 3px; color: var(--muted); }
.crm-pv-foot { display: flex; gap: 8px; margin-top: 2px; }
.crm-pv-kind.is-skin { background: var(--lav-bg); color: var(--lav-fg); }

/* Auto-derived build-status badge (Built / In progress / Planned) */
.crm-pv-status { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px;
  font-size: 11px; font-weight: 700; border-radius: var(--radius-pill); padding: 4px 11px; white-space: nowrap; }
.crm-pv-status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: currentColor; }
.crm-pv-status-built    { background: var(--sage-bg); color: var(--sage-fg); }
.crm-pv-status-progress { background: var(--gold-bg); color: var(--gold-fg); }
.crm-pv-status-planned  { background: var(--cream-deeper); color: var(--muted); }

/* ---- Per-trade status / detail page (crm_status.html) ---- */
.crm-status .cp-back { display: inline-block; font-size: 13px; color: var(--ink-soft); text-decoration: none; margin-bottom: 14px; }
.crm-status .cp-back:hover { color: var(--ink); }
.crm-status-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; margin-bottom: 18px; }
.crm-status-head .clients-sub { margin-top: 4px; }
.crm-status-head .crm-pv-status { font-size: 12px; padding: 6px 13px; margin-top: 6px; }
.crm-status-note { display: flex; gap: 11px; align-items: flex-start; border-radius: 12px; padding: 13px 16px;
  font-size: 13.5px; line-height: 1.5; color: var(--ink); margin-bottom: 22px; border: 1px solid var(--hairline); }
.crm-status-note.planned  { background: var(--cream-deeper); }
.crm-status-note.progress { background: var(--gold-bg); border-color: transparent; }
.crm-status-note-ic { flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%; display: grid; place-items: center;
  font-weight: 800; font-size: 13px; color: #fff; }
.crm-status-note.planned .crm-status-note-ic  { background: var(--muted); }
.crm-status-note.progress .crm-status-note-ic { background: var(--gold-fg); font-size: 10px; }
.crm-status-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
@media (max-width: 640px) { .crm-status-cols { grid-template-columns: 1fr; } }
.crm-status-col { background: var(--bg-card); border: 1px solid var(--hairline); border-radius: 14px; padding: 16px 18px; }
.crm-status-col-h { display: flex; align-items: center; gap: 8px; font: 600 13px var(--font-body); color: var(--ink); margin: 0 0 11px; }
.crm-status-planned-h { margin-top: 24px; }
.crm-status-dot { width: 9px; height: 9px; border-radius: 50%; flex: 0 0 auto; }
.crm-status-dot.ok { background: var(--sage-fg); box-shadow: 0 0 0 3px var(--sage-bg); }
.crm-status-dot.pending { background: var(--muted); box-shadow: 0 0 0 3px var(--cream-deeper); }
.crm-status-list { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 7px; }
.crm-status-list li { font-size: 13px; color: var(--ink-soft); padding-left: 18px; position: relative; line-height: 1.45; }
.crm-status-list li::before { content: "✓"; position: absolute; left: 0; color: var(--sage-fg); font-weight: 700; }
.crm-status-list.is-pending li::before { content: "○"; color: var(--muted); font-weight: 400; }
.crm-status-grid-list { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px 18px; }
.crm-status-foot { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; margin-top: 26px;
  padding-top: 18px; border-top: 1px solid var(--hairline); }

/* ===================== iOS / Square polish (app-wide) ===================== */
body { -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; }

/* Soft shadows + lift on the main card surfaces (matches the WC CRM) */
.lead-card, .cl-row, .stat-card, .proj-card, .cred-card, .crm-card, .crm-pv-card,
.cl-card, .add-lead-modal, .crmc-modal {
  box-shadow: var(--shadow-card);
}
.lead-card:hover { box-shadow: 0 2px 4px rgba(20,22,28,.06), 0 12px 28px -12px rgba(20,22,28,.18); transform: translateY(-1px); }

/* Headings: tighter iOS tracking now that we're on the system font */
h1, h2, h3, .clients-title, .cp-title, .crm-h1 { letter-spacing: -0.02em; }

/* Floating nav pill -> clean white Square bar */
.lh-nav-inner { box-shadow: var(--shadow-card); border-color: var(--hairline) !important; }

/* Inputs / selects: rounder, softer (iOS form feel) */
input, select, textarea { border-radius: 10px; }

/* ============================================================================
   Shared CRM vertical picker (static/crm_picker.js) — search + browse.
   Mounted in the Connect-to-CRM setup step and the "Change CRM type" row.
   ========================================================================== */
.cpick {
  display: flex; flex-direction: column; max-height: 46vh;
  border: 1px solid var(--hairline-2); border-radius: 12px;
  background: var(--bg-card); overflow: hidden;
}
.cpick-loading, .cpick-error, .cpick-empty {
  padding: 22px 16px; text-align: center; color: var(--muted); font-size: 13px;
}
.cpick-error { color: #B0392C; }

.cpick-search {
  position: sticky; top: 0; z-index: 2; display: flex; align-items: center; gap: 8px;
  padding: 10px 12px; background: var(--cream, #FAF8F4);
  border-bottom: 1px solid var(--hairline);
}
.cpick-search svg { width: 16px; height: 16px; color: var(--muted); flex: none; }
.cpick-q {
  flex: 1; border: 0; background: transparent; font: 14px var(--font-body);
  color: var(--ink); padding: 2px 0;
}
.cpick-q:focus { outline: none; }

.cpick-list { overflow-y: auto; padding: 6px; }

.cpick-group { border-radius: 9px; }
.cpick-group + .cpick-group { margin-top: 2px; }
.cpick-sum {
  display: flex; align-items: center; gap: 8px; width: 100%;
  background: transparent; border: 0; cursor: pointer; text-align: left;
  padding: 9px 8px; border-radius: 8px; color: var(--ink);
}
.cpick-sum:hover { background: var(--hairline); }
.cpick-cat { font-size: 13px; font-weight: 650; letter-spacing: -0.01em; }
.cpick-num {
  font-size: 11px; font-weight: 600; color: var(--ink-soft);
  background: var(--stone-bg); border-radius: var(--radius-pill); padding: 1px 8px;
}
.cpick-chev { margin-left: auto; color: var(--muted); display: inline-flex; transition: transform 0.18s ease; }
.cpick-chev svg { width: 16px; height: 16px; }
.cpick-group.is-open .cpick-chev { transform: rotate(180deg); }

/* Smooth expand/collapse via grid-rows (0fr -> 1fr). */
.cpick-rows-wrap { display: grid; grid-template-rows: 0fr; transition: grid-template-rows 0.22s ease; }
.cpick-group.is-open .cpick-rows-wrap { grid-template-rows: 1fr; }
.cpick-rows { overflow: hidden; display: flex; flex-direction: column; gap: 2px; padding: 2px 2px 6px; }

.cpick-row {
  display: grid; grid-template-columns: auto 1fr auto auto; align-items: center; gap: 10px;
  width: 100%; text-align: left; cursor: pointer;
  background: #fff; border: 1px solid var(--hairline-2); border-radius: 9px;
  padding: 8px 11px; transition: border-color 0.14s, background 0.14s, box-shadow 0.14s;
}
.cpick-row:hover { border-color: var(--ink-soft); }
.cpick-row.is-sel { border-color: var(--accent); box-shadow: 0 0 0 1px var(--accent); background: var(--accent-soft); }
.cpick-row.is-planned { cursor: default; opacity: 0.62; }
.cpick-row.is-planned:hover { border-color: var(--hairline-2); }

.cpick-arch {
  flex: none; width: 22px; height: 22px; display: inline-flex; align-items: center; justify-content: center;
  font: 700 11px var(--font-mono); border-radius: 6px;
  background: var(--lav-bg); color: var(--lav-fg);
}
.cpick-name { font-size: 13.5px; font-weight: 550; color: var(--ink); min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cpick-badge {
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.03em; text-transform: uppercase;
  border-radius: var(--radius-pill); padding: 2px 9px; flex: none;
}
.cpick-badge.is-built { background: var(--sage-bg); color: var(--sage-fg); }
.cpick-badge.is-planned { background: var(--stone-bg); color: var(--stone-fg); }
.cpick-tick { width: 16px; display: inline-flex; color: var(--accent); }
.cpick-tick svg { width: 16px; height: 16px; }

/* "CRM type" row at the top of THEIR CRM ACCESS (the Change affordance). */
.crmc-crmtype {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 12px; margin-bottom: 12px;
  border: 1px solid var(--hairline-2); border-radius: 10px; background: var(--bg-card);
}
.crmc-crmtype-label { font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted); }
.crmc-crmtype-val { display: inline-flex; align-items: center; gap: 8px; margin-top: 3px; }
.crmc-crmtype-val b { font-size: 14.5px; color: var(--ink); font-weight: 650; }
.crmc-typepick { margin-bottom: 12px; }
