:root {
  --bg: #ffffff;
  --bg-alt: #f5f8fc;
  --surface: #ffffff;
  --surface-2: #f8fafc;
  --border: #e2e8f0;
  --border-strong: #cbd5e1;
  --text: #0f172a;
  --muted: #64748b;
  --muted-2: #94a3b8;
  --accent: #3b82f6;
  --accent-2: #60a5fa;
  --accent-strong: #2563eb;
  --accent-soft: rgba(59, 130, 246, 0.08);
  --accent-glow: rgba(59, 130, 246, 0.28);
  --shadow-sm: 0 1px 2px rgba(15, 23, 42, 0.04), 0 2px 6px rgba(15, 23, 42, 0.04);
  --shadow-md: 0 8px 24px -8px rgba(15, 23, 42, 0.08);
  --shadow-lg: 0 24px 48px -20px rgba(15, 23, 42, 0.14);
  --serif: 'Instrument Serif', 'Iowan Old Style', Georgia, serif;
  --radius: 14px;
  --radius-lg: 22px;
  --max: 1140px;
}

/* Dark theme — applied via data-theme="dark" on <html> */
[data-theme="dark"] {
  --bg: #08080a;
  --bg-alt: #100f13;
  --surface: #161519;
  --surface-2: #1f1e23;
  --border: #2a2930;
  --border-strong: #3b3a42;
  --text: #f5f5f7;
  --muted: #a1a1aa;
  --muted-2: #71717a;
  --accent: #5ea2ff;
  --accent-2: #8fc0ff;
  --accent-strong: #0a84ff;
  --accent-soft: rgba(94, 162, 255, 0.14);
  --accent-glow: rgba(94, 162, 255, 0.30);
  --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.5), 0 2px 8px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 12px 32px -12px rgba(0, 0, 0, 0.6);
  --shadow-lg: 0 30px 70px -24px rgba(0, 0, 0, 0.7);
}
/* Mesh + grid adjustments for dark mode */
[data-theme="dark"] .mesh-1 {
  background: radial-gradient(circle at center, rgba(94, 162, 255, 0.20), transparent 68%);
}
[data-theme="dark"] .mesh-2 {
  background: radial-gradient(circle at center, rgba(94, 162, 255, 0.10), transparent 68%);
}
[data-theme="dark"] .mesh-3 {
  background: radial-gradient(circle at center, rgba(255, 255, 255, 0.03), transparent 68%);
}
[data-theme="dark"] .mesh { opacity: 0.4; }
[data-theme="dark"] .grid-overlay {
  background-image:
    linear-gradient(to right, rgba(255, 255, 255, 0.022) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(255, 255, 255, 0.022) 1px, transparent 1px);
}
[data-theme="dark"] .nav {
  background: rgba(8, 8, 10, 0.55);
  border-bottom-color: rgba(255, 255, 255, 0.05);
}
[data-theme="dark"] .nav.is-scrolled {
  background: rgba(8, 8, 10, 0.82);
  border-bottom-color: rgba(255, 255, 255, 0.08);
}
[data-theme="dark"] .stat-num,
[data-theme="dark"] .pricing-amount,
[data-theme="dark"] .calc-summary-num {
  background: linear-gradient(180deg, #e9eef5 0%, #94a3b8 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
[data-theme="dark"] .stack-cta strong { color: var(--accent-2); }
[data-theme="dark"] .live-pill {
  background: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.10);
  color: var(--muted);
  box-shadow: none;
}
[data-theme="dark"] .completion-modal-backdrop,
[data-theme="dark"] .call-modal-backdrop {
  background: rgba(0, 0, 0, 0.6);
}
[data-theme="dark"] .login-error {
  background: rgba(239, 68, 68, 0.12);
  border-color: rgba(239, 68, 68, 0.35);
  color: #fca5a5;
}
[data-theme="dark"] .outcome-meeting-booked {
  background: rgba(16, 185, 129, 0.18);
  color: #6ee7b7;
}
[data-theme="dark"] .outcome-follow-up {
  background: rgba(99, 102, 241, 0.2);
  color: #a5b4fc;
}
[data-theme="dark"] .outcome-disqualified {
  background: rgba(239, 68, 68, 0.18);
  color: #fca5a5;
}
[data-theme="dark"] .outcome-nurture {
  background: rgba(139, 92, 246, 0.22);
  color: #c4b5fd;
}
[data-theme="dark"] .outcome-hot-lead {
  background: rgba(249, 115, 22, 0.22);
  color: #fdba74;
}
[data-theme="dark"] .outcome-warm-lead {
  background: rgba(245, 158, 11, 0.22);
  color: #fcd34d;
}
[data-theme="dark"] .outcome-email-sent {
  background: rgba(148, 163, 184, 0.15);
  color: #94a3b8;
}

/* Theme toggle button */
.theme-toggle {
  width: 34px;
  height: 34px;
  border: 1px solid var(--border-strong);
  background: transparent;
  border-radius: 999px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--muted);
  transition: color 0.15s ease, border-color 0.15s ease, background 0.15s ease;
  padding: 0;
  flex-shrink: 0;
}
.theme-toggle:hover {
  color: var(--text);
  border-color: var(--accent);
}
.theme-icon-light, .theme-icon-dark {
  width: 16px;
  height: 16px;
  display: none;
}
.theme-icon-light { display: inline-block; }
[data-theme="dark"] .theme-icon-light { display: none; }
[data-theme="dark"] .theme-icon-dark { display: inline-block; }

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  [data-reveal] { opacity: 1 !important; transform: none !important; }
}

body {
  margin: 0;
  padding: 0;
  background: var(--bg);
  color: var(--text);
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
  font-size: 17px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  /* decorative bleeds (hero glow) must never create sideways scroll on phones */
  overflow-x: clip;
}

a { color: inherit; text-decoration: none; }
img { max-width: 100%; }

.container {
  width: 100%;
  max-width: var(--max);
  margin: 0 auto;
  padding: 0 24px;
}

.serif {
  font-family: var(--serif);
  font-weight: 400;
  font-style: italic;
  letter-spacing: -0.01em;
  color: var(--accent);
}

/* Reveal-on-scroll */
[data-reveal] {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.7s cubic-bezier(.2,.7,.2,1), transform 0.7s cubic-bezier(.2,.7,.2,1);
  will-change: opacity, transform;
}
[data-reveal].is-visible {
  opacity: 1;
  transform: none;
}

/* Cross-promo banner (sits above the sticky nav) */
.cross-promo {
  background: var(--surface-2);
  border-bottom: 1px solid var(--border);
  color: var(--muted);
  font-size: 13px;
  text-align: center;
  padding: 9px 16px;
}
.cross-promo a {
  color: var(--accent);
  font-weight: 600;
  text-decoration: none;
  margin-left: 4px;
}
.cross-promo a:hover {
  text-decoration: underline;
}
[data-theme="dark"] .cross-promo {
  background: rgba(255, 255, 255, 0.035);
  border-bottom-color: rgba(255, 255, 255, 0.07);
  color: var(--muted);
}
[data-theme="dark"] .cross-promo a { color: var(--accent-2); }
@media (max-width: 540px) {
  .cross-promo { font-size: 12px; padding: 8px 12px; }
}

/* Nav */
.nav {
  position: sticky;
  top: 0;
  z-index: 30;
  background: rgba(255, 255, 255, 0.7);
  backdrop-filter: saturate(160%) blur(14px);
  -webkit-backdrop-filter: saturate(160%) blur(14px);
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s ease, background 0.2s ease;
}
.nav.is-scrolled {
  border-color: var(--border);
  background: rgba(255, 255, 255, 0.92);
}
.nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  height: 68px;
}
.brand { display: inline-flex; align-items: center; gap: 8px; font-weight: 700; }
.brand-mark { color: var(--accent); display: inline-flex; }
.brand-name { letter-spacing: -0.01em; font-size: 16px; }
.brand-tag {
  font-family: 'Instrument Serif', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: 17px;
  color: var(--muted);
  letter-spacing: -0.005em;
  margin-left: 2px;
}
.nav-links { display: flex; align-items: center; gap: 26px; }
.nav-links > a:not(.btn) { color: var(--muted); font-size: 14px; font-weight: 500; transition: color 0.15s ease; }
.nav-links > a:not(.btn):hover { color: var(--text); }
.nav-links > a.is-active { color: var(--accent); }
.nav-links > a.nav-login {
  color: var(--text);
  font-weight: 600;
  padding: 6px 12px;
  border-radius: 999px;
  border: 1px solid var(--border-strong);
  transition: background 0.15s ease, border-color 0.15s ease;
}
.nav-links > a.nav-login:hover {
  background: var(--surface-2);
  border-color: var(--accent);
  color: var(--accent);
}

/* Login page */
.login-main {
  position: relative;
  min-height: calc(100vh - 68px);
  display: flex;
  align-items: center;
  isolation: isolate;
  overflow: hidden;
  padding: 64px 0;
}
.login-main .hero-bg { z-index: -1; }
.login-main .mesh { opacity: 0.55; }
.login-container { width: 100%; }
.login-card {
  max-width: 440px;
  margin: 0 auto;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 40px;
  box-shadow: var(--shadow-lg);
}
.login-card h1 {
  font-size: clamp(28px, 4vw, 36px);
  letter-spacing: -0.02em;
  margin: 8px 0 12px;
  font-weight: 800;
  line-height: 1.1;
}
.login-sub { color: var(--muted); margin: 0 0 28px; }
.login-form { display: grid; gap: 16px; }
.login-submit { width: 100%; margin-top: 6px; }
.login-error {
  margin: 0 0 20px;
  padding: 12px 14px;
  border-radius: 10px;
  font-size: 14px;
  background: rgba(239, 68, 68, 0.08);
  border: 1px solid rgba(239, 68, 68, 0.3);
  color: #b91c1c;
}
.login-error-soft {
  background: var(--accent-soft);
  border-color: rgba(59, 130, 246, 0.3);
  color: var(--accent-strong);
}
.login-help {
  text-align: center;
  margin: 24px 0 0;
  font-size: 13px;
  color: var(--muted);
}
.login-help a { color: var(--accent); }
.login-help a:hover { text-decoration: underline; }

/* Client portal pages */
.portal-user {
  font-size: 13px;
  color: var(--muted);
  font-weight: 500;
}
.portal-user [data-portal-name] { color: var(--text); font-weight: 600; }

/* Client portal compact header */
.portal-header {
  padding: 28px 0 0;
}
.portal-header h1 {
  font-size: clamp(24px, 3.4vw, 32px);
  font-weight: 800;
  letter-spacing: -0.02em;
  margin: 0;
  color: var(--text);
  line-height: 1.15;
}
@media (max-width: 880px) {
  .portal-header { padding: 20px 0 0; }
}

/* Portal stats wrapper section — tighter padding than default .section */
.portal-stats-section { padding: 18px 0 0; border-bottom: none; }

/* Portal tabs */
.portal-tabs-bar {
  border-bottom: 1px solid var(--border);
  background: var(--bg);
  position: sticky;
  top: 68px;
  z-index: 5;
  margin-top: 16px;
}
.portal-tabs {
  display: flex;
  gap: 4px;
}
.portal-tab {
  background: transparent;
  border: none;
  padding: 14px 4px;
  margin-right: 24px;
  font-size: 15px;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  position: relative;
  font-family: inherit;
  transition: color 0.15s ease, border-bottom-color 0.15s ease;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
}
.portal-tab:hover { color: var(--text); }
.portal-tab.is-active {
  color: var(--accent);
  border-bottom-color: var(--accent);
}
.portal-pane[hidden] { display: none; }
.portal-pane { padding-top: 24px; padding-bottom: 48px; }

/* Insights tab — daily rows + aggregate cards */
.insights-content {
  display: grid;
  gap: 24px;
  max-width: 920px;
}
.insight-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 28px;
  box-shadow: var(--shadow-sm);
}
.insight-card-compact { padding: 20px 22px; }
.insight-kicker {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 14px;
}
.insight-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 10px;
}
.insight-list li {
  position: relative;
  padding-left: 22px;
  color: var(--text);
  font-size: 14.5px;
  line-height: 1.55;
}
.insight-list li::before {
  content: "→";
  position: absolute;
  left: 0;
  color: var(--accent);
  font-weight: 700;
}
.insights-aggregate {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 760px) {
  .insights-aggregate { grid-template-columns: 1fr; }
}

/* Daily rows */
.daily-rows {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}
.daily-row + .daily-row {
  border-top: 1px solid var(--border);
}
.daily-row-head {
  display: grid;
  grid-template-columns: 110px 90px 1fr 24px;
  align-items: center;
  gap: 16px;
  width: 100%;
  padding: 14px 18px;
  background: transparent;
  border: none;
  text-align: left;
  font-family: inherit;
  cursor: pointer;
  color: var(--text);
  transition: background 0.15s ease;
}
.daily-row-head:hover { background: var(--surface-2); }
.daily-row-date-main {
  font-weight: 700;
  font-size: 15px;
  color: var(--text);
}
.daily-row-count {
  font-size: 13.5px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.daily-row-outcomes {
  display: flex;
  flex-wrap: wrap;
  gap: 6px;
}
.daily-outcome-chip {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  color: var(--c);
  background: color-mix(in srgb, var(--c) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--c) 28%, transparent);
  white-space: nowrap;
}
.daily-row-expand-icon {
  display: inline-block;
  font-size: 22px;
  color: var(--muted-2);
  transition: transform 0.2s ease;
  transform: rotate(90deg);
  line-height: 1;
  text-align: center;
}
.daily-row.is-expanded .daily-row-expand-icon {
  transform: rotate(-90deg);
}
.daily-row-detail {
  display: none;
  padding: 6px 22px 24px;
  border-top: 1px dashed var(--border);
  background: var(--bg-alt);
}
.daily-row.is-expanded .daily-row-detail { display: block; }

.daily-detail-top {
  display: grid;
  grid-template-columns: 220px 1fr;
  gap: 28px;
  margin-top: 18px;
}
@media (max-width: 700px) {
  .daily-detail-top { grid-template-columns: 1fr; gap: 18px; }
  .daily-row-head { grid-template-columns: 84px 70px 1fr 20px; gap: 10px; padding: 12px 14px; }
}

.daily-donut-wrap {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.donut-chart {
  width: 160px;
  height: 160px;
  max-width: 100%;
}
.donut-seg {
  transition: stroke-width 0.2s ease;
}
.donut-total-num {
  font-size: 8px;
  font-weight: 800;
  fill: var(--text);
  font-family: inherit;
}
.donut-total-label {
  font-size: 3.5px;
  fill: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-family: inherit;
}
.donut-legend {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 6px;
  width: 100%;
}
.donut-legend li {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--muted);
}
.donut-legend strong {
  margin-left: auto;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.donut-legend-dot {
  width: 9px;
  height: 9px;
  border-radius: 50%;
  flex-shrink: 0;
}

.daily-section-label {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 10px;
}
.daily-section-empty {
  color: var(--muted-2);
  font-size: 13.5px;
  margin: 0;
}
.daily-contact-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.daily-contact {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 8px 12px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 8px;
  font-size: 13.5px;
}
.daily-contact-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.daily-contact-who { color: var(--text); flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.daily-contact-outcome {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--c);
  background: color-mix(in srgb, var(--c) 12%, transparent);
  padding: 2px 8px;
  border-radius: 999px;
  white-space: nowrap;
}

.daily-detail-section {
  margin-top: 22px;
}
.daily-best-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.daily-best-list li {
  background: var(--surface);
  border: 1px solid var(--border);
  border-left: 3px solid #10b981;
  padding: 12px 14px;
  border-radius: 8px;
  font-size: 13.5px;
}
.daily-best-list li p {
  margin: 6px 0 0;
  color: var(--muted);
  font-size: 13px;
  line-height: 1.5;
}
.daily-best-outcome {
  display: inline-block;
  margin-left: 8px;
  font-size: 11px;
  font-weight: 600;
  color: var(--c);
  background: color-mix(in srgb, var(--c) 12%, transparent);
  padding: 2px 8px;
  border-radius: 999px;
}
.daily-findings-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 8px;
}
.daily-findings-list li {
  position: relative;
  padding-left: 18px;
  color: var(--text);
  font-size: 13.5px;
  line-height: 1.55;
}
.daily-findings-list li::before {
  content: "•";
  position: absolute;
  left: 4px;
  color: var(--accent);
  font-weight: 700;
}

.daily-detail-actions {
  margin-top: 22px;
  display: flex;
  justify-content: flex-start;
}
.daily-download-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 14px;
  background: var(--accent);
  color: #fff;
  border: none;
  border-radius: 8px;
  font-family: inherit;
  font-size: 13px;
  font-weight: 600;
  cursor: pointer;
  transition: background 0.15s ease, transform 0.1s ease;
}
.daily-download-btn:hover { background: var(--accent-strong, var(--accent)); transform: translateY(-1px); }
.daily-download-btn:active { transform: translateY(0); }
.daily-empty-chart {
  color: var(--muted-2);
  font-size: 13px;
  margin: 20px 0;
  text-align: center;
}

/* Action items tab */
/* Action items tab — flat row layout (Circleback-style) */
.action-items-content {
  display: flex;
  flex-direction: column;
  gap: 0;
  max-width: 760px;
}

/* Filter bar */
.action-filter-bar {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  margin-bottom: 16px;
}
.action-type-bar { margin-bottom: 10px; }
.action-type-bar + .action-filter-bar { margin-bottom: 24px; padding-top: 4px; border-top: 1px dashed var(--border); padding-top: 14px; }

/* Type filter chips (callback / nurture) */
.chip.chip-type {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.chip.chip-type svg { flex-shrink: 0; }
.chip.chip-type-callback.is-active {
  background: color-mix(in srgb, #3b82f6 14%, transparent);
  border-color: color-mix(in srgb, #3b82f6 38%, transparent);
  color: #3b82f6;
}
.chip.chip-type-nurture.is-active {
  background: color-mix(in srgb, #f59e0b 14%, transparent);
  border-color: color-mix(in srgb, #f59e0b 40%, transparent);
  color: #b45309;
}
[data-theme="dark"] .chip.chip-type-callback.is-active {
  background: color-mix(in srgb, #60a5fa 20%, transparent);
  border-color: color-mix(in srgb, #60a5fa 45%, transparent);
  color: #93c5fd;
}
[data-theme="dark"] .chip.chip-type-nurture.is-active {
  background: color-mix(in srgb, #f59e0b 22%, transparent);
  border-color: color-mix(in srgb, #f59e0b 45%, transparent);
  color: #fcd34d;
}

/* Type badge on each action item */
.action-item-type {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 7px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: capitalize;
  line-height: 1.2;
  flex-shrink: 0;
}
.action-item-type-callback {
  background: color-mix(in srgb, #3b82f6 12%, transparent);
  color: #2563eb;
  border: 1px solid color-mix(in srgb, #3b82f6 25%, transparent);
}
.action-item-type-nurture {
  background: color-mix(in srgb, #f59e0b 14%, transparent);
  color: #b45309;
  border: 1px solid color-mix(in srgb, #f59e0b 32%, transparent);
}
[data-theme="dark"] .action-item-type-callback {
  background: color-mix(in srgb, #60a5fa 20%, transparent);
  color: #93c5fd;
  border-color: color-mix(in srgb, #60a5fa 35%, transparent);
}
[data-theme="dark"] .action-item-type-nurture {
  background: color-mix(in srgb, #f59e0b 22%, transparent);
  color: #fcd34d;
  border-color: color-mix(in srgb, #f59e0b 38%, transparent);
}
.action-item-type svg { flex-shrink: 0; }

/* Contact filter pill (shown when a contact is selected) */
.action-contact-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 7px 10px 7px 14px;
  background: var(--accent-soft);
  border: 1px solid var(--accent);
  border-radius: 999px;
  font-size: 13px;
  color: var(--text);
  margin-bottom: 16px;
  align-self: flex-start;
}
.action-contact-pill strong {
  color: var(--accent-strong);
  font-weight: 600;
}
.action-contact-pill-clear {
  background: transparent;
  border: none;
  color: var(--accent-strong);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  padding: 0 4px;
  border-radius: 50%;
  transition: background 0.15s ease;
}
.action-contact-pill-clear:hover {
  background: rgba(59, 130, 246, 0.15);
}

/* Contact chip on each row */
.action-item-contact {
  font-size: 11px;
  font-weight: 600;
  color: var(--muted);
  background: var(--bg-alt);
  border: 1px solid var(--border);
  padding: 3px 9px;
  border-radius: 999px;
  white-space: nowrap;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.action-item-contact:hover {
  background: var(--accent-soft);
  color: var(--accent-strong);
  border-color: var(--accent);
}
.action-item-scheduled .action-item-contact,
.action-item-done .action-item-contact {
  opacity: 0.7;
}

/* Section visibility based on filter */
.action-sections {
  display: flex;
  flex-direction: column;
  gap: 28px;
}
/* "All" hides the Completed bucket by default — click the Done chip to see it */
.action-sections[data-filter="all"] .action-section[data-section="done"] {
  display: none;
}
/* Channel filters hide everything but their matching section */
.action-sections[data-filter="email"] .action-section:not([data-section="email"]),
.action-sections[data-filter="linkedin"] .action-section:not([data-section="linkedin"]),
.action-sections[data-filter="call"] .action-section:not([data-section="call"]),
.action-sections[data-filter="done"] .action-section:not([data-section="done"]) {
  display: none;
}
/* Channel badge color hints — subtle bg + accent */
.action-item-channel {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 22px;
  height: 22px;
  border-radius: 6px;
  flex-shrink: 0;
}
.action-item-channel-email   { background: rgba(99, 102, 241, 0.12); color: #4338ca; }
.action-item-channel-linkedin { background: rgba(14, 118, 168, 0.12); color: #0e76a8; }
.action-item-channel-call    { background: rgba(16, 185, 129, 0.12); color: #047857; }
/* Section title channel icon — matches the badge color */
.action-section[data-section="email"] .action-section-title svg    { color: #4338ca; }
.action-section[data-section="linkedin"] .action-section-title svg { color: #0e76a8; }
.action-section[data-section="call"] .action-section-title svg     { color: #047857; }
.action-section-title svg {
  vertical-align: middle;
  margin-right: 6px;
}
.action-item-overdue {
  color: #b91c1c !important;
  font-weight: 600;
}
.action-section-title {
  margin: 0 0 4px;
  font-size: 13px;
  font-weight: 500;
  color: var(--muted);
  display: flex;
  align-items: baseline;
  gap: 8px;
  letter-spacing: -0.005em;
}
.action-section-count {
  font-size: 12px;
  font-weight: 500;
  color: var(--muted-2);
  font-variant-numeric: tabular-nums;
}
.action-section-note {
  margin: 0 0 8px;
  font-size: 12px;
  color: var(--muted-2);
}
.action-list { display: block; }

.action-item {
  display: block;
  padding: 0;
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border);
  border-radius: 6px;
  box-shadow: none;
  transition: background 0.12s ease;
}
.action-item:last-child { border-bottom: none; }
.action-item-main {
  display: grid;
  grid-template-columns: 22px minmax(0, 1fr) auto;
  gap: 14px;
  padding: 11px 10px;
  align-items: center;
}

/* Activity log on done items (nested inside .action-item-detail which already has padding) */
.action-item-activity {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.action-activity-entry {
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 10px 12px;
}
.action-activity-head {
  display: flex;
  align-items: center;
  gap: 10px;
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
  margin-bottom: 4px;
}
.action-activity-type {
  background: var(--accent-soft);
  color: var(--accent-strong);
  padding: 2px 8px;
  border-radius: 4px;
  font-size: 10.5px;
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.action-activity-date {
  font-variant-numeric: tabular-nums;
}
.action-activity-notes {
  margin: 0;
  font-size: 13px;
  color: var(--text);
  line-height: 1.55;
  white-space: pre-wrap;
}

.action-item-check {
  width: 18px;
  height: 18px;
  border-radius: 50%;
  border: 1.5px solid var(--border-strong);
  background: transparent;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: transparent;
  flex-shrink: 0;
  cursor: pointer;
  transition: border-color 0.12s ease, background 0.12s ease, color 0.12s ease, transform 0.1s ease;
  font-family: inherit;
}
.action-item-check:hover:not(:disabled) {
  border-color: var(--accent);
  background: var(--accent-soft);
}
.action-item-check:active:not(:disabled) {
  transform: scale(0.9);
}
.action-item-check:disabled {
  cursor: not-allowed;
}
.action-item-check:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}

.action-item-body { min-width: 0; padding: 2px 0; border-radius: 4px; }
.action-item-body[role="button"] { cursor: pointer; }
.action-item-body:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: 2px;
}
.action-item-line {
  display: flex;
  align-items: center;
  gap: 8px;
  min-width: 0;
}
.action-item-expand-icon {
  color: var(--muted-2);
  font-size: 16px;
  line-height: 1;
  transition: transform 0.18s ease, color 0.12s ease;
  margin-left: auto;
  padding: 0 4px;
  flex-shrink: 0;
}
.action-item.is-expanded .action-item-expand-icon {
  transform: rotate(90deg);
  color: var(--accent);
}
.action-item-body[role="button"]:hover .action-item-expand-icon {
  color: var(--accent);
}
.action-item-priority {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.04em;
  background: var(--accent-soft);
  color: var(--accent-strong);
  padding: 2px 6px;
  border-radius: 4px;
  flex-shrink: 0;
  line-height: 1.4;
}
.action-item-title {
  font-size: 14.5px;
  font-weight: 500;
  color: var(--text);
  letter-spacing: -0.005em;
  line-height: 1.45;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  min-width: 0;
}
/* Detail panel — hidden by default, shown on .is-expanded */
.action-item-detail {
  display: none;
  padding: 0 10px 14px 46px;
}
.action-item.is-expanded .action-item-detail {
  display: block;
}
.action-item-desc {
  margin: 0 0 12px;
  font-size: 13.5px;
  color: var(--text);
  line-height: 1.6;
  white-space: pre-wrap;
}
.action-item-detail-actions {
  margin-top: 10px;
  display: flex;
  justify-content: flex-start;
}
.action-add-note {
  background: transparent;
  color: var(--accent-2);
  border: 1px dashed var(--border-strong);
  border-radius: 8px;
  padding: 6px 12px;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
}
.action-add-note:hover {
  background: var(--surface-2);
  border-color: var(--accent-2);
  color: var(--accent);
}

.action-item-right {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.action-item-when {
  font-size: 11.5px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.action-item-avatar {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.02em;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

/* Done */
.action-item-done .action-item-check {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.action-item-done .action-item-title {
  color: var(--muted);
  text-decoration: line-through;
  text-decoration-color: var(--muted-2);
}
.action-item-done .action-item-desc { color: var(--muted-2); }
.action-item-done .action-item-priority { background: var(--bg-alt); color: var(--muted-2); }
.action-item-done .action-item-avatar { background: var(--muted-2); }

/* Scheduled — locked */
.action-item-scheduled .action-item-check {
  border-color: var(--muted-2);
  color: var(--muted);
}
.action-item-scheduled .action-item-title { color: var(--muted); }
.action-item-scheduled .action-item-priority { background: var(--bg-alt); color: var(--muted); }
.action-item-scheduled .action-item-when {
  color: var(--accent);
  font-weight: 600;
}
.action-item-scheduled { cursor: not-allowed; }

/* Hover on the body specifically — only when expandable */
.action-item .action-item-body[role="button"]:hover {
  background: var(--bg-alt);
}
.action-item-done .action-item-check {
  /* Already styled — done state */
}

/* Completing animation — flash a green highlight + fill the check, hold, then fade out
   before the row moves to Completed (so it doesn't just vanish on click). */
.action-item.is-completing {
  background: var(--accent-soft);
  border-radius: 10px;
  border-bottom-color: transparent;
  transition: background 0.25s ease;
}
.action-item.is-completing .action-item-check {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
  transform: scale(1.12);
}
.action-item.is-completing .action-item-title {
  color: var(--muted);
  text-decoration: line-through;
  text-decoration-color: var(--muted-2);
}
.action-item.is-leaving {
  overflow: hidden;
  /* Collapse the bottom border too, so no 1px residual remains to snap away
     when the node is finally removed. */
  border-bottom-width: 0;
  padding-top: 0;
  padding-bottom: 0;
  /* opacity + height are set inline by the handler so both transition reliably.
     Collapsing height (not just fading) makes the tasks below slide up smoothly
     instead of snapping when the row is removed. */
  transition: opacity 0.55s ease, height 0.55s ease;
}

/* Completion log modal */
.completion-modal[hidden] { display: none; }
.completion-modal {
  position: fixed;
  inset: 0;
  z-index: 110;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.completion-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.5);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
}
.completion-modal-content {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 32px;
  max-width: 540px;
  width: 100%;
  max-height: 88vh;
  overflow-y: auto;
  box-shadow: 0 32px 80px -20px rgba(15, 23, 42, 0.35);
  animation: modal-slide-up 0.22s cubic-bezier(.2,.7,.2,1);
}
.completion-modal-close {
  position: absolute;
  top: 14px;
  right: 14px;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--muted);
  font-size: 18px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
}
.completion-modal-close:hover {
  background: var(--bg-alt);
  color: var(--text);
}
.completion-modal-task {
  margin: 6px 0 24px;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--text);
  line-height: 1.35;
}
.completion-form { display: flex; flex-direction: column; gap: 18px; }
.completion-field { display: flex; flex-direction: column; gap: 8px; }
.completion-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  color: var(--muted);
}
.completion-type-chips {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.completion-type-chip {
  background: var(--bg-alt);
  border: 1px solid var(--border);
  color: var(--muted);
  padding: 7px 14px;
  border-radius: 999px;
  font-size: 13px;
  font-weight: 500;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.completion-type-chip:hover {
  border-color: var(--border-strong);
  color: var(--text);
}
.completion-type-chip.is-active {
  background: var(--accent);
  border-color: var(--accent);
  color: #fff;
}
.completion-notes {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 14px;
  font-family: inherit;
  font-size: 14px;
  color: var(--text);
  line-height: 1.55;
  resize: vertical;
  min-height: 130px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.completion-notes:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.completion-notes::placeholder { color: var(--muted-2); }
.completion-actions {
  display: flex;
  justify-content: flex-end;
  gap: 10px;
  margin-top: 4px;
}

/* Undo toast */
.action-toast {
  position: fixed;
  left: 50%;
  bottom: 28px;
  transform: translateX(-50%) translateY(20px);
  background: var(--text);
  color: #fff;
  padding: 12px 14px 12px 18px;
  border-radius: 999px;
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 14px;
  font-weight: 500;
  box-shadow: 0 16px 40px -12px rgba(15, 23, 42, 0.4);
  z-index: 200;
  opacity: 0;
  transition: opacity 0.2s ease, transform 0.22s cubic-bezier(.2,.7,.2,1);
  max-width: calc(100vw - 32px);
}
.action-toast.is-visible {
  opacity: 1;
  transform: translateX(-50%) translateY(0);
}
.action-toast-text {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
  max-width: 360px;
}
.action-toast-undo {
  background: transparent;
  color: var(--accent-2);
  border: none;
  font-weight: 700;
  font-size: 14px;
  cursor: pointer;
  padding: 4px 8px;
  border-radius: 8px;
  transition: background 0.15s ease;
  font-family: inherit;
}
.action-toast-undo:hover {
  background: rgba(96, 165, 250, 0.15);
}
.action-toast-add {
  background: rgba(96, 165, 250, 0.18);
  color: var(--accent-2);
  border: 1px solid rgba(96, 165, 250, 0.35);
  font-weight: 600;
  font-size: 13px;
  cursor: pointer;
  padding: 4px 10px;
  border-radius: 8px;
  transition: background 0.15s ease, border-color 0.15s ease;
  font-family: inherit;
  white-space: nowrap;
}
.action-toast-add:hover {
  background: rgba(96, 165, 250, 0.3);
  border-color: rgba(96, 165, 250, 0.55);
}
.action-toast-close {
  background: transparent;
  color: rgba(255, 255, 255, 0.5);
  border: none;
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  padding: 0 4px;
  border-radius: 4px;
  transition: color 0.15s ease;
}
.action-toast-close:hover { color: #fff; }
@media (max-width: 540px) {
  .action-toast { font-size: 13px; padding: 10px 12px 10px 14px; gap: 8px; }
  .action-toast-text { max-width: 180px; }
}
@media (max-width: 760px) {
  .action-item { padding: 10px 6px; gap: 10px; }
  .action-item-title { font-size: 14px; }
  .action-item-when { font-size: 11px; }
  .action-item-desc { font-size: 12px; }
}

/* Call card additions: head row + description */
.call-card-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.call-meta-num {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.call-description {
  margin: 0;
  padding: 12px 14px;
  background: var(--bg-alt);
  border-radius: 10px;
  color: var(--text);
  font-size: 14px;
  line-height: 1.5;
  border-left: 3px solid var(--accent);
}

/* Client portal stats dashboard */
.portal-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  gap: 10px;
  margin: 0;
}
.portal-stat {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 14px 16px;
  box-shadow: var(--shadow-sm);
  transition: transform 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease;
}
.portal-stat:hover {
  transform: translateY(-1px);
  border-color: var(--border-strong);
}
.portal-stat-num {
  font-size: 24px;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.portal-stat-label {
  margin-top: 6px;
  font-size: 12.5px;
  color: var(--muted);
  letter-spacing: 0.01em;
  font-weight: 500;
}
.portal-stat-sub {
  margin-top: 4px;
  font-size: 11.5px;
  color: var(--muted-2);
  font-style: italic;
}
.portal-stat-cash .portal-stat-num { color: #047857; }
.portal-stat-roi {
  background: linear-gradient(135deg, var(--accent-soft), transparent);
  border-color: var(--accent);
}
.portal-stat-roi .portal-stat-num {
  background: linear-gradient(180deg, var(--accent-2) 0%, var(--accent-strong) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.portal-stat-roi-positive {
  box-shadow: 0 10px 24px -10px var(--accent-glow);
}
@media (max-width: 880px) {
  .portal-stats { grid-template-columns: repeat(2, 1fr); gap: 10px; margin-bottom: 28px; }
  .portal-stat { padding: 16px 18px; }
  .portal-stat-num { font-size: 24px; }
}
.portal-loading,
.portal-empty,
.portal-error {
  grid-column: 1 / -1;
  padding: 40px;
  text-align: center;
  color: var(--muted);
  background: var(--surface);
  border: 1px dashed var(--border-strong);
  border-radius: var(--radius-lg);
}
.portal-error a, .portal-empty a { color: var(--accent); }

/* Admin / config builder */
.admin-main { padding-top: 32px; }
.admin-main code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 0.9em;
  padding: 2px 6px;
  background: var(--bg-alt);
  border-radius: 5px;
  color: var(--accent-strong);
}
.admin-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 20px;
  max-width: 880px;
  margin: 0 auto;
}
.admin-pane {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 28px;
  box-shadow: var(--shadow-sm);
}
.admin-pane-head { margin-bottom: 16px; }
.admin-pane-head h3 {
  margin: 0 0 6px;
  font-size: 17px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.admin-pane-head p {
  margin: 0;
  font-size: 13.5px;
  color: var(--muted);
  line-height: 1.5;
}
.admin-pane-head-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 14px;
  flex-wrap: wrap;
}
.admin-pane-tips { background: var(--bg-alt); border-style: dashed; }
.admin-pane-tips h3 { margin-bottom: 14px; }
.admin-tips { list-style: none; padding: 0; margin: 0; display: grid; gap: 10px; }
.admin-tips li {
  font-size: 13.5px;
  color: var(--muted);
  line-height: 1.55;
  padding-left: 22px;
  position: relative;
}
.admin-tips li::before {
  content: "→";
  position: absolute;
  left: 0;
  color: var(--accent);
  font-weight: 700;
}
.admin-tips strong { color: var(--text); font-weight: 600; }

.admin-textarea {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 12px 14px;
  color: var(--text);
  font-family: inherit;
  font-size: 14px;
  resize: vertical;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.admin-textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.admin-textarea-mono {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  font-size: 13px;
  line-height: 1.5;
}
.admin-actions { margin-top: 12px; display: flex; gap: 10px; flex-wrap: wrap; }
.admin-copy-status {
  margin: 10px 0 0;
  font-size: 13px;
  color: #047857;
  font-weight: 600;
}

.admin-clients { display: grid; gap: 12px; margin-top: 16px; }
.admin-empty {
  text-align: center;
  color: var(--muted);
  font-style: italic;
  padding: 24px;
  background: var(--bg-alt);
  border-radius: var(--radius);
  margin: 0;
}
.admin-client {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 14px;
  align-items: start;
  padding: 18px;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: var(--radius);
}
.admin-client-fields {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 12px;
}
.admin-pw-row { display: flex; gap: 8px; }
.admin-pw-row input { flex: 1; }
.admin-dice {
  width: 42px;
  height: 42px;
  flex-shrink: 0;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: 10px;
  cursor: pointer;
  font-size: 18px;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.admin-dice:hover { background: var(--accent-soft); border-color: var(--accent); }
.admin-remove {
  width: 36px;
  height: 36px;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 50%;
  color: var(--muted);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.admin-remove:hover {
  background: rgba(239, 68, 68, 0.08);
  border-color: rgba(239, 68, 68, 0.4);
  color: #b91c1c;
}

@media (max-width: 720px) {
  .admin-client { grid-template-columns: 1fr; }
  .admin-client-fields { grid-template-columns: 1fr; }
  .admin-remove { justify-self: flex-end; }
}

/* Outcome badge fallback colors (for portal outcomes we haven't styled) */
.outcome-badge[class*="outcome-"] {
  background: var(--accent-soft);
  color: var(--accent-strong);
}
.outcome-meeting-booked { background: rgba(16, 185, 129, 0.1); color: #047857; }
.outcome-hot-lead { background: rgba(249, 115, 22, 0.12); color: #c2410c; }
.outcome-warm-lead { background: rgba(245, 158, 11, 0.12); color: #b45309; }
.outcome-follow-up { background: rgba(99, 102, 241, 0.1); color: #4338ca; }
.outcome-nurture { background: rgba(139, 92, 246, 0.12); color: #6d28d9; }
.outcome-email-sent { background: var(--bg-alt); color: var(--muted); }
.outcome-no-answer { background: rgba(148, 163, 184, 0.15); color: var(--muted); }
.outcome-not-interested { background: rgba(239, 68, 68, 0.08); color: #b91c1c; }
.outcome-callback { background: rgba(245, 158, 11, 0.12); color: #b45309; }
.outcome-disqualified { background: rgba(239, 68, 68, 0.1); color: #b91c1c; }
.outcome-shutdown { background: rgba(148, 163, 184, 0.18); color: #475569; }
.outcome-gatekeeper { background: rgba(148, 163, 184, 0.15); color: var(--muted); }
.outcome-wrong-person { background: rgba(148, 163, 184, 0.15); color: var(--muted); }
.outcome-voicemail { background: rgba(148, 163, 184, 0.12); color: var(--muted); }

/* Buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  font-weight: 600;
  font-size: 15px;
  padding: 11px 20px;
  border-radius: 999px;
  border: 1px solid transparent;
  transition: transform 0.05s ease, background 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
  cursor: pointer;
  white-space: nowrap;
}
.btn:active { transform: translateY(1px); }
/* long CTA labels must wrap on phones instead of running off-screen */
@media (max-width: 560px){ .btn { white-space: normal; text-align: center; max-width: 100%; } }
.btn-sm { padding: 8px 14px; font-size: 14px; }
.btn-lg { padding: 14px 24px; font-size: 16px; }
.btn-primary {
  background: var(--accent);
  color: #fff;
  box-shadow: 0 8px 24px -8px var(--accent-glow);
}
.btn-primary:hover { background: var(--accent-strong); box-shadow: 0 12px 30px -8px var(--accent-glow); }
.btn-secondary {
  background: var(--surface);
  color: var(--text);
  border-color: var(--border-strong);
  box-shadow: var(--shadow-sm);
}
.btn-secondary:hover { background: var(--surface-2); border-color: var(--muted-2); }

/* Apple-clean dark buttons: white high-contrast primary, frosted-ghost secondary */
[data-theme="dark"] .btn-primary {
  background: #ffffff;
  color: #0a0a0c;
  box-shadow: 0 10px 30px -12px rgba(0, 0, 0, 0.7);
}
[data-theme="dark"] .btn-primary:hover {
  background: #ececef;
  box-shadow: 0 14px 36px -12px rgba(0, 0, 0, 0.8);
}
[data-theme="dark"] .btn-secondary {
  background: rgba(255, 255, 255, 0.045);
  border-color: rgba(255, 255, 255, 0.12);
  color: var(--text);
  box-shadow: none;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
}
[data-theme="dark"] .btn-secondary:hover {
  background: rgba(255, 255, 255, 0.09);
  border-color: rgba(255, 255, 255, 0.22);
}

/* Hero */
.hero {
  position: relative;
  padding: 120px 0 96px;
  overflow: hidden;
  isolation: isolate;
}
/* Inviting gradient wash behind the hero (Apple-TV-tile depth) */
[data-theme="dark"] .hero {
  background:
    radial-gradient(78% 62% at 50% -12%, rgba(94, 162, 255, 0.13), transparent 72%),
    radial-gradient(50% 46% at 86% -6%, rgba(134, 112, 255, 0.075), transparent 70%),
    radial-gradient(60% 50% at 18% 8%, rgba(56, 189, 248, 0.06), transparent 72%);
}
.hero-bg {
  position: absolute;
  inset: 0;
  z-index: -1;
  pointer-events: none;
}
.mesh {
  position: absolute;
  border-radius: 50%;
  filter: blur(70px);
  opacity: 0.7;
  animation: drift 20s ease-in-out infinite alternate;
}
.mesh-1 {
  width: 540px; height: 540px;
  left: -120px; top: -100px;
  background: radial-gradient(circle at center, rgba(59, 130, 246, 0.28), transparent 65%);
}
.mesh-2 {
  width: 620px; height: 620px;
  right: -160px; top: 40px;
  background: radial-gradient(circle at center, rgba(99, 102, 241, 0.22), transparent 65%);
  animation-delay: -6s;
}
.mesh-3 {
  width: 480px; height: 480px;
  left: 30%; bottom: -180px;
  background: radial-gradient(circle at center, rgba(14, 165, 233, 0.18), transparent 65%);
  animation-delay: -12s;
}
@keyframes drift {
  0%   { transform: translate(0, 0) scale(1); }
  100% { transform: translate(40px, -30px) scale(1.05); }
}
.grid-overlay {
  position: absolute;
  inset: 0;
  background-image:
    linear-gradient(to right, rgba(15, 23, 42, 0.045) 1px, transparent 1px),
    linear-gradient(to bottom, rgba(15, 23, 42, 0.045) 1px, transparent 1px);
  background-size: 56px 56px;
  mask-image: radial-gradient(ellipse at 50% 30%, black 30%, transparent 75%);
  -webkit-mask-image: radial-gradient(ellipse at 50% 30%, black 30%, transparent 75%);
}
.hero-inner { max-width: 880px; }
.live-pill {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font-size: 13px;
  font-weight: 500;
  color: var(--muted);
  background: rgba(255, 255, 255, 0.7);
  border: 1px solid var(--border);
  padding: 7px 14px 7px 12px;
  border-radius: 999px;
  margin: 0 0 28px;
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  box-shadow: var(--shadow-sm);
}
.live-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #10b981;
  box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.6);
  animation: pulse 2s infinite;
}
@keyframes pulse {
  0%   { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0.6); }
  70%  { box-shadow: 0 0 0 10px rgba(16, 185, 129, 0); }
  100% { box-shadow: 0 0 0 0 rgba(16, 185, 129, 0); }
}
.hero h1 {
  font-size: clamp(40px, 6.4vw, 76px);
  line-height: 1.02;
  letter-spacing: -0.025em;
  margin: 0 0 24px;
  font-weight: 800;
  color: var(--text);
}
.hero h1 .serif { font-size: 0.95em; }
.lede {
  font-size: 20px;
  color: var(--muted);
  max-width: 660px;
  margin: 0 0 36px;
  line-height: 1.5;
}
.hero-cta {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  margin-bottom: 48px;
}
.hero-meta {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  gap: 32px;
  flex-wrap: wrap;
  color: var(--muted);
  font-size: 14px;
}
.hero-meta strong { color: var(--text); font-weight: 600; margin-right: 6px; }

.hero-compact { padding: 80px 0 64px; }
.hero-compact .lede { margin-bottom: 0; }

/* Mobile: simpler, less wordy hero — swap the long lede for a punchy one,
   drop the secondary meta row, and trim the eyebrow pill. */
.lede-tight { display: none; }
@media (max-width: 768px) {
  .lede-full { display: none; }
  .lede-tight { display: block; }
  .hero-meta { display: none; }
  .pill-extra { display: none; }
  .hero { padding: 84px 0 64px; }
}

/* Calls page */
.calls-section { padding-top: 64px; }
.filter-bar {
  display: flex;
  gap: 10px;
  flex-wrap: wrap;
  margin-bottom: 40px;
}
.chip {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 9px 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 999px;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  cursor: pointer;
  transition: background 0.15s ease, border-color 0.15s ease, color 0.15s ease;
  font-family: inherit;
  box-shadow: var(--shadow-sm);
}
.chip:hover {
  border-color: var(--border-strong);
  color: var(--text);
}
.chip.is-active {
  background: var(--accent);
  color: #fff;
  border-color: var(--accent);
  box-shadow: 0 4px 14px -4px var(--accent-glow);
}
.chip.is-active .chip-count {
  background: rgba(255, 255, 255, 0.2);
  color: #fff;
}
.chip-count {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 22px;
  height: 20px;
  padding: 0 6px;
  background: var(--bg-alt);
  color: var(--muted-2);
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  font-variant-numeric: tabular-nums;
}

.calls-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 20px;
}

/* Client portal — Notion-style row table */
#callsGrid {
  display: block;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.calls-table-header,
.call-row {
  display: grid;
  grid-template-columns: 110px 1.6fr 1.4fr minmax(190px, max-content) 80px;
  gap: 18px;
  align-items: center;
  padding: 14px 22px;
}
.calls-table-header {
  background: var(--bg-alt);
  border-bottom: 1px solid var(--border);
  font-size: 11.5px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--muted);
}
.call-row {
  background: transparent;
  border: none;
  border-bottom: 1px solid var(--border);
  text-align: left;
  cursor: pointer;
  transition: background 0.15s ease;
  font-family: inherit;
}
.call-row:last-child { border-bottom: none; }
.call-row:hover { background: var(--bg-alt); }
.call-row.is-playing { background: var(--accent-soft); }
.call-row:focus-visible {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
  background: var(--bg-alt);
}
.col-date {
  font-size: 13.5px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
}
.col-role {
  font-size: 15px;
  color: var(--text);
  font-weight: 600;
  letter-spacing: -0.005em;
}
.col-company {
  font-size: 14px;
  color: var(--muted);
  word-break: break-word;
}
.col-outcome { font-size: 13px; display: flex; flex-wrap: nowrap; align-items: center; gap: 6px; white-space: nowrap; }
.col-actions {
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: flex-end;
}
.row-play-btn {
  width: 34px;
  height: 34px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  border: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 0.15s ease, transform 0.1s ease;
  box-shadow: 0 4px 10px -4px var(--accent-glow);
}
.row-play-btn:hover { background: var(--accent-strong); }
.row-play-btn:active { transform: scale(0.95); }
.row-play-btn .player-icon-pause { display: none; }
.row-play-btn.is-playing .player-icon-play { display: none; }
.row-play-btn.is-playing .player-icon-pause { display: block; }
.row-open-arrow {
  color: var(--muted-2);
  font-size: 14px;
  transition: color 0.15s ease, transform 0.15s ease;
}
.call-row:hover .row-open-arrow {
  color: var(--accent);
  transform: translateX(2px);
}
.call-row audio { display: none; }

@media (max-width: 760px) {
  .calls-table-header { display: none; }
  .call-row {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "role outcome"
      "company actions"
      "date date";
    gap: 6px 14px;
    padding: 14px 16px;
  }
  .col-date { grid-area: date; font-size: 12px; }
  .col-role { grid-area: role; font-size: 15px; }
  .col-company { grid-area: company; font-size: 13.5px; }
  .col-outcome { grid-area: outcome; justify-self: end; justify-content: flex-end; }
  .col-actions { grid-area: actions; }
}

/* Call detail modal */
.call-modal[hidden] { display: none; }
.call-modal {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
  overscroll-behavior: contain;
}
.call-modal-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.45);
  backdrop-filter: blur(4px);
  -webkit-backdrop-filter: blur(4px);
  animation: modal-fade-in 0.2s ease;
}
.call-modal-content {
  position: relative;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 36px 36px 32px;
  max-width: 600px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: 0 32px 80px -20px rgba(15, 23, 42, 0.3);
  animation: modal-slide-up 0.25s cubic-bezier(.2,.7,.2,1);
}
.call-modal-close {
  position: absolute;
  top: 16px;
  right: 16px;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--muted);
  font-size: 20px;
  line-height: 1;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.call-modal-close:hover {
  background: var(--bg-alt);
  color: var(--text);
  border-color: var(--border-strong);
}
.call-modal-meta {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.call-modal-num {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.02em;
  font-variant-numeric: tabular-nums;
}
.call-modal-company {
  margin: 0 0 6px;
  font-size: 24px;
  font-weight: 700;
  letter-spacing: -0.015em;
  color: var(--text);
  word-break: break-word;
}
.call-modal-role {
  margin: 0 0 22px;
  font-size: 15px;
  color: var(--muted);
}
.call-modal-section {
  margin-top: 22px;
  padding-top: 22px;
  border-top: 1px solid var(--border);
}
.call-modal-section-label {
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 12px;
}
.call-modal-description {
  margin: 0;
  font-size: 15px;
  color: var(--text);
  line-height: 1.6;
}
.player-large .player-btn { width: 52px; height: 52px; }
.player-large .player-bar { height: 8px; }
.player-large .player-time { font-size: 13px; min-width: 90px; }

body.modal-open { overflow: hidden; }

@keyframes modal-fade-in {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes modal-slide-up {
  from { opacity: 0; transform: translateY(12px) scale(0.98); }
  to { opacity: 1; transform: none; }
}

@media (max-width: 560px) {
  .call-modal { padding: 16px; }
  .call-modal-content { padding: 28px 22px 24px; }
  .call-modal-company { font-size: 20px; }
  .player-large .player-btn { width: 44px; height: 44px; }
}
.call-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 28px;
  box-shadow: var(--shadow-sm);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.call-card:hover {
  transform: translateY(-3px);
  border-color: var(--border-strong);
  box-shadow: var(--shadow-lg);
}
.outcome-badge {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  align-self: flex-start;
  padding: 5px 11px;
  border-radius: 999px;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.outcome-badge::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
}
.outcome-meeting-booked {
  background: rgba(16, 185, 129, 0.1);
  color: #047857;
}
.outcome-hot-lead {
  background: rgba(249, 115, 22, 0.12);
  color: #c2410c;
}
.outcome-follow-up {
  background: rgba(99, 102, 241, 0.1);
  color: #4338ca;
}
.outcome-email-sent {
  background: var(--bg-alt);
  color: var(--muted);
}
.call-company {
  margin: 0;
  font-size: 19px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--text);
  word-break: break-word;
}
.call-role {
  margin: 0 0 8px;
  font-size: 14px;
  color: var(--muted);
}

/* Custom audio player */
.player {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-top: auto;
}
.player-btn {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--accent);
  color: #fff;
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  transition: background 0.18s ease, transform 0.1s ease, box-shadow 0.18s ease;
  box-shadow: 0 6px 16px -6px var(--accent-glow);
}
.player-btn:hover { background: var(--accent-strong); }
.player-btn:active { transform: scale(0.95); }
.player-icon-pause { display: none; }
.player-btn.is-playing .player-icon-play { display: none; }
.player-btn.is-playing .player-icon-pause { display: block; }
.player-bar {
  flex: 1;
  height: 6px;
  background: var(--border);
  border-radius: 999px;
  cursor: pointer;
  position: relative;
  overflow: hidden;
}
.player-bar::after {
  content: "";
  position: absolute;
  inset: -10px 0;
}
.player-fill {
  position: absolute;
  top: 0; bottom: 0; left: 0;
  width: 0%;
  background: linear-gradient(90deg, var(--accent), var(--accent-strong));
  border-radius: 999px;
  transition: width 0.05s linear;
}
.player-time {
  font-size: 12px;
  color: var(--muted);
  font-variant-numeric: tabular-nums;
  min-width: 78px;
  text-align: right;
}

.calls-note {
  margin: 56px auto 0;
  max-width: 620px;
  text-align: center;
  font-size: 16px;
  color: var(--muted);
  font-style: italic;
  line-height: 1.55;
}
.calls-note em { color: var(--text); font-style: italic; }
.calls-note + .calls-note { margin-top: 14px; }

/* Logo strip */
.logos {
  padding: 56px 0 40px;
  border-top: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: var(--bg-alt);
}
.logos-label {
  text-align: center;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: var(--muted-2);
  margin: 0 0 28px;
}
.logos-row {
  display: flex;
  justify-content: space-around;
  align-items: center;
  flex-wrap: wrap;
  gap: 32px 48px;
}
.logo-wordmark {
  color: var(--muted);
  font-weight: 700;
  font-size: 22px;
  letter-spacing: 0.02em;
  opacity: 0.75;
  transition: opacity 0.2s ease, color 0.2s ease;
}
.logo-wordmark:hover { opacity: 1; color: var(--text); }
.logo-italic { font-family: var(--serif); font-style: italic; font-weight: 400; font-size: 26px; letter-spacing: 0; }
.logo-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 18px; letter-spacing: -0.02em; }

/* Stats */
.stats { padding: 64px 0; border-bottom: 1px solid var(--border); }
.stats-row {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 32px;
  text-align: center;
}
.stat-num {
  font-size: clamp(40px, 5vw, 60px);
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  background: linear-gradient(180deg, var(--text) 0%, #475569 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.stat-label {
  margin-top: 12px;
  font-size: 14px;
  color: var(--muted);
  letter-spacing: 0.01em;
}

/* Sections */
.section {
  padding: 112px 0;
  border-bottom: 1px solid var(--border);
  position: relative;
}
.section-alt { background: var(--bg-alt); }
.section-head { margin-bottom: 56px; max-width: 720px; }
.section-sub {
  margin: 18px 0 0;
  font-size: 17px;
  color: var(--muted);
  line-height: 1.55;
  max-width: 620px;
}
.kicker {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.16em;
  text-transform: uppercase;
  color: var(--accent);
  margin: 0 0 14px;
}
.kicker.muted { color: var(--muted); }
.section h2 {
  font-size: clamp(30px, 4vw, 48px);
  letter-spacing: -0.02em;
  line-height: 1.1;
  margin: 0;
  font-weight: 700;
  color: var(--text);
}
.section h2 .serif { font-size: 1em; }
.section h2.muted { color: var(--muted); }

/* Grid of cards */
.grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 20px;
}
.card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 30px;
  box-shadow: var(--shadow-sm);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
.card:hover {
  transform: translateY(-4px);
  border-color: var(--border-strong);
  box-shadow: var(--shadow-lg);
}
.card h3 { margin: 16px 0 10px; font-size: 20px; font-weight: 600; letter-spacing: -0.01em; }
.card p { color: var(--muted); margin: 0; font-size: 15.5px; }
.card-num {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 10px;
  background: var(--accent-soft);
  color: var(--accent);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.04em;
}

/* Funnel — the math */
.funnel { max-width: 880px; margin: 0 auto; display: grid; gap: 14px; }
.funnel-row {
  display: grid;
  grid-template-columns: 1fr 280px;
  gap: 28px;
  align-items: center;
}
.funnel-track {
  height: 64px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
  overflow: hidden;
  position: relative;
  box-shadow: var(--shadow-sm);
}
.funnel-fill {
  height: 100%;
  width: var(--w);
  min-width: 112px;
  background: linear-gradient(90deg, var(--accent), var(--accent-strong));
  border-radius: 12px;
  display: flex;
  align-items: center;
  padding: 0 18px;
  color: #fff;
  font-weight: 800;
  font-size: 22px;
  letter-spacing: -0.02em;
  white-space: nowrap;
  box-shadow: 0 8px 20px -8px var(--accent-glow);
  transition: width 1.1s cubic-bezier(.2,.7,.2,1);
}
.funnel-fill-final {
  background: linear-gradient(90deg, #6366f1, #4338ca);
  box-shadow: 0 8px 20px -8px rgba(99, 102, 241, 0.45);
}
.funnel-meta { display: flex; flex-direction: column; gap: 4px; }
.funnel-meta strong { font-size: 15px; font-weight: 600; color: var(--text); }
.funnel-meta span { font-size: 13px; color: var(--muted); }
.funnel-note {
  margin: 40px auto 0;
  max-width: 720px;
  text-align: center;
  font-size: 16px;
  color: var(--muted);
  font-style: italic;
  line-height: 1.55;
}

/* Calculator */
.calc {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 40px;
  box-shadow: var(--shadow-lg);
  max-width: 920px;
  margin: 0 auto;
  display: grid;
  gap: 36px;
}
.calc-primary { display: grid; gap: 14px; }
.calc-primary-head {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 16px;
  flex-wrap: wrap;
}
.calc-label {
  font-size: 14px;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.01em;
}
.calc-primary-value {
  display: flex;
  align-items: baseline;
  gap: 8px;
}
.calc-big-num {
  font-size: 44px;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.calc-big-unit { font-size: 15px; color: var(--muted); }
.calc-range-bounds {
  display: flex;
  justify-content: space-between;
  font-size: 12px;
  color: var(--muted-2);
  font-variant-numeric: tabular-nums;
  margin-top: 4px;
}
.calc-range {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 8px;
  background: linear-gradient(to right,
    var(--accent) 0%,
    var(--accent) var(--fill, 0%),
    var(--border) var(--fill, 0%),
    var(--border) 100%);
  border-radius: 999px;
  outline: none;
  cursor: pointer;
}
.calc-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--surface);
  border: 3px solid var(--accent);
  cursor: grab;
  box-shadow: 0 4px 14px -4px var(--accent-glow), 0 1px 2px rgba(15, 23, 42, 0.08);
  transition: transform 0.12s ease;
}
.calc-range::-webkit-slider-thumb:hover { transform: scale(1.12); }
.calc-range::-webkit-slider-thumb:active { cursor: grabbing; transform: scale(1.18); }
.calc-range::-moz-range-thumb {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: var(--surface);
  border: 3px solid var(--accent);
  cursor: grab;
  box-shadow: 0 4px 14px -4px var(--accent-glow);
}
.calc-range:focus-visible::-webkit-slider-thumb {
  box-shadow: 0 0 0 4px var(--accent-soft), 0 4px 14px -4px var(--accent-glow);
}

.calc-assumptions {
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
  padding-top: 32px;
  border-top: 1px solid var(--border);
  max-width: 480px;
}
.calc-assumption { display: grid; gap: 10px; }
.calc-assumption-head {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 12px;
}
.calc-label-sm {
  font-size: 13px;
  font-weight: 600;
  color: var(--text);
}
.calc-assumption-value {
  font-size: 20px;
  font-weight: 700;
  color: var(--accent);
  letter-spacing: -0.01em;
  font-variant-numeric: tabular-nums;
}
.calc-hint {
  margin: 0;
  font-size: 12px;
  color: var(--muted-2);
}
.calc-hint-standalone {
  text-align: center;
  font-size: 13px;
  color: var(--muted);
  padding: 14px 18px;
  background: var(--bg-alt);
  border-radius: var(--radius);
  margin: 0;
}
.calc-hint-standalone strong { color: var(--text); font-weight: 700; }

.calc-funnel { padding-top: 8px; }
.calc-funnel .funnel-fill span { font-variant-numeric: tabular-nums; }

.calc-summary {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  gap: 20px;
  align-items: center;
  padding: 28px 24px;
  background: var(--bg-alt);
  border-radius: var(--radius);
  text-align: center;
}
.calc-summary-num {
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.calc-summary-num-accent { color: var(--accent); }
.calc-summary-label {
  margin-top: 8px;
  font-size: 12px;
  color: var(--muted);
  letter-spacing: 0.04em;
}
.calc-summary-divider {
  width: 1px;
  height: 40px;
  background: var(--border);
  margin: 0 auto;
}
.calc-cta { justify-self: center; }

/* Cost comparison — first-year math */
.cost-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 20px;
  max-width: 1040px;
  margin: 0 auto 28px;
}
.cost-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 32px;
  display: flex;
  flex-direction: column;
  box-shadow: var(--shadow-sm);
}
.cost-card-vs {
  background: var(--bg-alt);
  border-style: dashed;
  border-color: var(--border-strong);
}
.cost-card-coda {
  border-color: var(--accent);
  box-shadow: 0 24px 50px -20px var(--accent-glow);
}
.cost-card-head { margin-bottom: 18px; padding-bottom: 18px; border-bottom: 1px dashed var(--border); }
.cost-card-label {
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 6px;
}
.cost-card-coda .cost-card-label { color: var(--accent); }
.cost-card-head h3 {
  margin: 0;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--text);
}
.cost-list {
  list-style: none;
  padding: 0;
  margin: 0 0 18px;
  flex: 1;
}
.cost-list li {
  display: grid;
  grid-template-columns: 1fr auto;
  grid-template-areas:
    "line amount"
    "note note";
  column-gap: 16px;
  row-gap: 4px;
  padding: 13px 0;
  border-bottom: 1px dashed var(--border);
}
.cost-list li:last-child { border-bottom: none; }
.cost-line {
  grid-area: line;
  font-weight: 600;
  font-size: 15px;
  color: var(--text);
}
.cost-amount {
  grid-area: amount;
  font-weight: 700;
  font-size: 16px;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  white-space: nowrap;
}
.cost-card-coda .cost-amount { color: var(--accent); }
.cost-note {
  grid-area: note;
  font-size: 12.5px;
  color: var(--muted);
  line-height: 1.45;
}
.cost-total {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 16px;
  padding-top: 18px;
  border-top: 2px solid var(--border);
}
.cost-card-coda .cost-total { border-top-color: var(--accent); }
.cost-total-label {
  font-size: 14px;
  color: var(--muted);
  font-weight: 600;
}
.cost-total-amount {
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.cost-card-coda .cost-total-amount { color: var(--accent); }
.cost-fineprint {
  margin: 14px 0 0;
  font-size: 12.5px;
  color: var(--muted);
  font-style: italic;
  line-height: 1.5;
}

.cost-summary {
  display: grid;
  grid-template-columns: 1fr auto 1fr auto 1fr;
  gap: 24px;
  align-items: center;
  padding: 28px 32px;
  background: linear-gradient(135deg, var(--accent-soft), transparent);
  border: 1px solid var(--accent);
  border-radius: var(--radius-lg);
  max-width: 1040px;
  margin: 0 auto;
  text-align: center;
}
.cost-summary-stat { padding: 4px 0; }
.cost-summary-num {
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  background: linear-gradient(180deg, var(--accent-2), var(--accent-strong));
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  margin-bottom: 10px;
  font-variant-numeric: tabular-nums;
}
.cost-summary-label {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
}
.cost-summary-vs {
  font-size: 11.5px;
  color: var(--muted-2);
  font-style: italic;
}
.cost-summary-divider {
  width: 1px;
  height: 56px;
  background: var(--accent);
  opacity: 0.25;
  margin: 0 auto;
}

@media (max-width: 880px) {
  .cost-grid { grid-template-columns: 1fr; gap: 16px; margin-bottom: 20px; }
  .cost-card { padding: 24px; }
  .cost-total-amount { font-size: 28px; }
  .cost-summary {
    grid-template-columns: 1fr;
    gap: 18px;
    padding: 22px;
  }
  .cost-summary-divider {
    width: 100%;
    height: 1px;
  }
  .cost-summary-num { font-size: 28px; }
}
@media (max-width: 480px) {
  .cost-card { padding: 20px; }
  .cost-card-head h3 { font-size: 19px; }
  .cost-total-amount { font-size: 24px; }
  .cost-summary { padding: 18px; gap: 14px; }
  .cost-summary-num { font-size: 24px; }
}

/* Stack — tools we use */
.stack-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 18px;
}
.stack-item {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 26px;
  box-shadow: var(--shadow-sm);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
.stack-item:hover {
  transform: translateY(-3px);
  border-color: var(--border-strong);
  box-shadow: var(--shadow-lg);
}
.stack-name {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  font-size: 18px;
  font-weight: 700;
  margin-bottom: 12px;
  letter-spacing: -0.01em;
}
.stack-tag {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--accent);
  background: var(--accent-soft);
  padding: 4px 8px;
  border-radius: 6px;
}
.stack-item p { margin: 0; color: var(--muted); font-size: 14.5px; line-height: 1.55; }
.stack-cta {
  background: linear-gradient(135deg, var(--accent-soft), transparent);
  border-color: var(--accent);
  border-style: dashed;
}
.stack-cta strong {
  display: block;
  font-size: 16px;
  margin-bottom: 10px;
  color: var(--accent-strong);
}

/* Pricing */
.pricing-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
  max-width: var(--max);
  margin: 0 auto;
}
@media (max-width: 1100px) {
  .pricing-grid { grid-template-columns: repeat(2, 1fr); gap: 18px; }
}
.pricing-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 28px 24px;
  display: flex;
  flex-direction: column;
  position: relative;
  box-shadow: var(--shadow-sm);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
.pricing-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.pricing-featured {
  border-color: var(--accent);
  box-shadow: 0 24px 50px -20px var(--accent-glow);
}
.pricing-featured:hover { box-shadow: 0 32px 60px -20px var(--accent-glow); }
.pricing-badge {
  position: absolute;
  top: -12px;
  left: 36px;
  background: var(--accent);
  color: #fff;
  font-size: 12px;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 6px 12px;
  border-radius: 999px;
}
.pricing-badge-muted {
  background: var(--surface);
  color: var(--muted);
  border: 1px solid var(--border-strong);
}
.pricing-bridge {
  border-color: #6366f1;
}
.pricing-bridge:hover {
  box-shadow: 0 24px 50px -20px rgba(99, 102, 241, 0.3);
}
.pricing-badge-bridge {
  background: linear-gradient(135deg, #6366f1, #4338ca);
  color: #fff;
}
.pricing-card h3 {
  margin: 8px 0 18px;
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.pricing-price {
  display: flex;
  align-items: baseline;
  gap: 10px;
  margin-bottom: 12px;
}
.pricing-amount {
  font-size: 48px;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  background: linear-gradient(180deg, var(--text) 0%, #475569 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.pricing-period { font-size: 14px; color: var(--muted); }
.pricing-sub {
  margin: 0 0 24px;
  color: var(--muted);
  font-size: 14.5px;
  line-height: 1.5;
}
.pricing-features {
  list-style: none;
  padding: 0;
  margin: 0 0 28px;
  display: grid;
  gap: 10px;
  flex: 1;
}
.pricing-features li {
  position: relative;
  padding-left: 28px;
  font-size: 14.5px;
  line-height: 1.5;
  color: var(--text);
}
.pricing-features li::before {
  content: "";
  position: absolute;
  left: 0; top: 6px;
  width: 18px; height: 18px;
  border-radius: 50%;
  background: var(--accent-soft);
  border: 1px solid var(--accent);
}
.pricing-features li::after {
  content: "";
  position: absolute;
  left: 5px; top: 10px;
  width: 8px; height: 4px;
  border-left: 2px solid var(--accent);
  border-bottom: 2px solid var(--accent);
  transform: rotate(-45deg);
}
.pricing-card .btn { justify-self: flex-start; }

/* Results */
.results-grid { gap: 20px; }
.result-card {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 30px;
  display: flex;
  flex-direction: column;
  box-shadow: var(--shadow-sm);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
.result-card:hover { transform: translateY(-4px); border-color: var(--border-strong); box-shadow: var(--shadow-lg); }
.result-metric {
  font-size: 56px;
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1;
  background: linear-gradient(180deg, var(--accent-2) 0%, var(--accent-strong) 100%);
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
}
.result-label { font-size: 14px; color: var(--text); margin-top: 10px; font-weight: 600; }
.result-meta {
  font-size: 13px;
  color: var(--muted);
  margin: 16px 0 20px;
  padding-bottom: 20px;
  border-bottom: 1px dashed var(--border);
}
.result-card blockquote { margin: 0; font-size: 15.5px; color: var(--text); line-height: 1.55; }
.result-attribution { margin: 14px 0 0; font-size: 13px; color: var(--muted); }
.results-note {
  margin-top: 28px;
  font-size: 13px;
  color: var(--muted-2);
  font-style: italic;
}

/* Testimonials */
.testimonials { gap: 20px; }
.testimonial {
  margin: 0;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 28px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  box-shadow: var(--shadow-sm);
  transition: transform 0.25s ease, border-color 0.25s ease, box-shadow 0.25s ease;
}
.testimonial:hover { transform: translateY(-4px); border-color: var(--border-strong); box-shadow: var(--shadow-lg); }
.testimonial blockquote {
  margin: 0;
  font-size: 17px;
  line-height: 1.5;
  color: var(--text);
  letter-spacing: -0.005em;
}
.testimonial figcaption {
  display: flex;
  align-items: center;
  gap: 12px;
  font-size: 14px;
}
.testimonial figcaption strong { display: block; font-weight: 600; }
.testimonial figcaption .role { color: var(--muted); font-size: 13px; }
.avatar {
  width: 38px; height: 38px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 14px;
  color: #fff;
  background: linear-gradient(135deg, var(--av), color-mix(in srgb, var(--av) 65%, #000));
  flex-shrink: 0;
}

/* Two col fit/not-fit */
.two-col {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 64px;
}
.two-col h2 { margin-bottom: 24px; }
.check-list, .x-list { list-style: none; padding: 0; margin: 0; }
.check-list li, .x-list li {
  position: relative;
  padding: 12px 0 12px 36px;
  color: var(--text);
  border-bottom: 1px dashed var(--border);
}
.check-list li:last-child, .x-list li:last-child { border-bottom: none; }
.check-list li::before {
  content: "";
  position: absolute;
  left: 0; top: 14px;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: var(--accent-soft);
  border: 1px solid var(--accent);
}
.check-list li::after {
  content: "";
  position: absolute;
  left: 6px; top: 19px;
  width: 8px; height: 4px;
  border-left: 2px solid var(--accent);
  border-bottom: 2px solid var(--accent);
  transform: rotate(-45deg);
}
.x-list li { color: var(--muted); }
.x-list li::before {
  content: "—";
  position: absolute;
  left: 0; top: 12px;
  color: var(--muted-2);
}

/* Steps */
.steps {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  gap: 14px;
}
.steps li {
  display: flex;
  gap: 22px;
  align-items: flex-start;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 24px 28px;
  box-shadow: var(--shadow-sm);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.steps li:hover { border-color: var(--border-strong); box-shadow: var(--shadow-md); }
.step-num {
  flex: 0 0 auto;
  width: 38px; height: 38px;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--accent), var(--accent-strong));
  color: #fff;
  font-weight: 700;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  box-shadow: 0 6px 14px -4px var(--accent-glow);
}
.steps h3 { margin: 0 0 6px; font-size: 18px; font-weight: 600; }
.steps p { margin: 0; color: var(--muted); font-size: 15.5px; }

/* FAQ */
.faq { display: grid; gap: 10px; max-width: 820px; }
.faq details {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 4px 24px;
  box-shadow: var(--shadow-sm);
  transition: border-color 0.2s ease, box-shadow 0.2s ease;
}
.faq details:hover { border-color: var(--border-strong); box-shadow: var(--shadow-md); }
.faq summary {
  cursor: pointer;
  padding: 20px 0;
  font-weight: 600;
  list-style: none;
  position: relative;
  padding-right: 36px;
  font-size: 16px;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after {
  content: "+";
  position: absolute;
  right: 0; top: 50%;
  transform: translateY(-50%);
  color: var(--accent);
  font-size: 24px;
  line-height: 1;
  transition: transform 0.2s ease;
}
.faq details[open] summary::after { content: "–"; }
.faq p { margin: 0 0 20px; color: var(--muted); font-size: 15.5px; line-height: 1.55; }

/* CTA + contact form */
.section-cta {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  text-align: center;
  border-bottom: none;
  background: var(--bg);
}
.section-cta .hero-bg { z-index: -1; }
.section-cta .mesh { opacity: 0.55; }
.cta-inner { max-width: 640px; margin: 0 auto; }
.cta-inner .kicker { text-align: center; }
.cta-inner h2 { margin: 0 auto 12px; }
.cta-sub { color: var(--muted); margin: 0 auto 36px; font-size: 17px; }
.cta-book {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 10px;
  margin-bottom: 32px;
}
.cta-book .btn { padding: 16px 32px; font-size: 17px; }
.cta-book-link {
  font-size: 13px;
  color: var(--muted);
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  letter-spacing: -0.01em;
}
.cta-or {
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 0 auto 28px;
  max-width: 420px;
  color: var(--muted-2);
  font-size: 12px;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  font-weight: 600;
}
.cta-or::before,
.cta-or::after {
  content: "";
  flex: 1;
  height: 1px;
  background: var(--border);
}
.fineprint { font-size: 13px; color: var(--muted); margin: 0; }
.fineprint a { color: var(--accent); }
.fineprint a:hover { text-decoration: underline; }

.contact-form {
  text-align: left;
  display: grid;
  gap: 16px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 32px;
  box-shadow: var(--shadow-lg);
}
.field-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
.field { display: flex; flex-direction: column; gap: 8px; }
.field > span {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
}
.field input, .field textarea {
  width: 100%;
  background: var(--bg);
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 13px 14px;
  color: var(--text);
  font-family: inherit;
  font-size: 15px;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.field input::placeholder, .field textarea::placeholder { color: var(--muted-2); }
.field input:focus, .field textarea:focus {
  outline: none;
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-soft);
}
.field textarea { resize: vertical; min-height: 120px; }
.contact-form button[type="submit"] {
  justify-self: center;
  margin-top: 8px;
}
.contact-form .fineprint { text-align: center; margin: 4px 0 0; }

/* Footer */
.footer {
  background: var(--bg-alt);
  padding: 64px 0 28px;
  color: var(--muted);
  font-size: 14px;
  border-top: 1px solid var(--border);
}
.footer-inner {
  display: grid;
  grid-template-columns: 1.5fr 1fr;
  gap: 48px;
  padding-bottom: 40px;
  border-bottom: 1px solid var(--border);
}
.footer-brand .brand-name { font-size: 16px; color: var(--text); }
.footer-brand p { margin: 14px 0 0; color: var(--muted); max-width: 320px; }
.footer-links { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }
.footer-links h4 {
  margin: 0 0 14px;
  font-size: 12px;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted-2);
  font-weight: 600;
}
.footer-links a {
  display: block;
  padding: 5px 0;
  color: var(--muted);
  transition: color 0.15s ease;
}
.footer-links a:hover { color: var(--text); }
.footer-bottom {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding-top: 24px;
  font-size: 13px;
  color: var(--muted-2);
  flex-wrap: wrap;
  gap: 12px;
}

/* Responsive */
@media (max-width: 880px) {
  .container { padding: 0 20px; }
  .nav-links > a:not(.btn) { display: none; }
  .nav-inner { height: 60px; }
  .grid-3, .stats-row { grid-template-columns: 1fr; }
  .two-col { grid-template-columns: 1fr; gap: 40px; }
  .hero { padding: 56px 0 48px; }
  .hero h1 { margin-bottom: 18px; }
  .lede { font-size: 17px; margin-bottom: 28px; }
  .hero-cta { gap: 10px; margin-bottom: 32px; }
  .hero-cta .btn { width: 100%; }
  .hero-meta { gap: 10px 24px; font-size: 13px; }
  .live-pill { margin-bottom: 22px; font-size: 12px; }
  .section { padding: 64px 0; }
  .section-head { margin-bottom: 32px; }
  .section h2 { font-size: clamp(26px, 6vw, 34px); }
  .section-sub { font-size: 15.5px; margin-top: 14px; }
  .card { padding: 24px; }
  .field-row { grid-template-columns: 1fr; }
  .contact-form { padding: 22px; }
  .footer { padding: 48px 0 24px; }
  .footer-inner { grid-template-columns: 1fr; gap: 28px; padding-bottom: 28px; }
  .footer-bottom { font-size: 12px; }
  .stats { padding: 48px 0; }
  .stats-row { gap: 36px; }
  .logos { padding: 40px 0 32px; }
  .logos-row { gap: 22px 32px; }
  .funnel-row { grid-template-columns: 1fr; gap: 10px; }
  .funnel-meta { padding-left: 4px; }
  .funnel-track { height: 52px; }
  .funnel-fill { font-size: 18px; padding: 0 16px; }
  .stack-grid { grid-template-columns: 1fr; gap: 14px; }
  .stack-item { padding: 22px; }
  .pricing-grid { grid-template-columns: 1fr; gap: 16px; }
  .pricing-card { padding: 24px; }
  .pricing-badge { left: 24px; font-size: 11px; }
  .pricing-amount { font-size: 40px; }
  .steps li { padding: 20px 22px; gap: 16px; }
  .faq details { padding: 2px 20px; }
  .faq summary { padding: 18px 0; font-size: 15px; }
  .cta-inner h2 { margin-bottom: 8px; }
  .cta-sub { margin-bottom: 28px; }
  .cta-book { margin-bottom: 24px; }
  .cta-or { margin-bottom: 22px; }
  .calc { padding: 22px; gap: 22px; }
  .calc-primary-head { gap: 8px; }
  .calc-big-num { font-size: 34px; }
  .calc-summary {
    grid-template-columns: 1fr;
    gap: 16px;
    padding: 20px;
  }
  .calc-summary-divider {
    width: 100%;
    height: 1px;
    margin: 0;
  }
  .calc-summary-num { font-size: 26px; }
  .calls-section { padding-top: 40px; }
  .calls-grid { grid-template-columns: 1fr; }
  .call-card { padding: 22px; gap: 10px; }
  .player-time { min-width: 70px; font-size: 11px; }
  .filter-bar { gap: 8px; margin-bottom: 24px; }
  .chip { padding: 8px 14px; font-size: 12px; }
  .hero-compact { padding: 56px 0 40px; }

  /* Portal-specific mobile tweaks */
  .portal-stats-section { padding: 20px 0 0; }
  .portal-tabs-bar { top: 60px; margin-top: 14px; }
  .portal-tab { padding: 12px 4px; margin-right: 18px; font-size: 14px; }
  .portal-pane { padding-top: 28px; }
  .portal-header { padding: 24px 0 0; }
  .portal-header h1 { font-size: clamp(24px, 6.5vw, 32px); }

  /* Insights tab */
  .insight-card { padding: 22px; }
  .insight-list { gap: 10px; }
  .insight-list li { font-size: 14.5px; line-height: 1.5; }
  .daily-row-detail { padding: 4px 14px 18px; }
  .donut-chart { width: 140px; height: 140px; }

  /* Call card head — let badge + meta wrap on tight screens */
  .call-card-head { flex-wrap: wrap; gap: 8px; }
  .call-meta-num { font-size: 11.5px; }
  .player-btn { width: 40px; height: 40px; }

  /* Calculator funnel — keep numbers inline, breathing room reasonable */
  .funnel-fill { min-width: 96px; }

  /* Login + admin */
  .login-card { padding: 28px 24px; }
  .admin-pane { padding: 22px; }
  .admin-client-fields { grid-template-columns: 1fr; gap: 10px; }
}

/* Extra-tight phones — iPhone SE, narrow Androids */
@media (max-width: 480px) {
  .container { padding: 0 18px; }
  .hero { padding: 44px 0 32px; }
  .section { padding: 48px 0; }
  .section-head { margin-bottom: 24px; }
  .stats { padding: 36px 0; }
  .logos { padding: 32px 0 24px; }
  .calc { padding: 18px; gap: 18px; }
  .calc-big-num { font-size: 28px; }
  .calc-summary { padding: 16px; gap: 12px; }
  .calc-summary-num { font-size: 22px; }
  .pricing-card { padding: 20px; }
  .pricing-badge { left: 20px; }
  .pricing-amount { font-size: 36px; }
  .call-card { padding: 18px; }
  .portal-stats { gap: 6px; }
  .portal-stat { padding: 12px 14px; }
  .portal-stat-num { font-size: 20px; }
  .insight-card { padding: 18px; }
  .login-card { padding: 24px 20px; }
  .admin-pane { padding: 18px; }
  .hero-meta { gap: 8px 18px; }
  .funnel-fill { font-size: 16px; min-width: 86px; padding: 0 14px; }
}

/* ── Calendar tab ──────────────────────────────────────────────── */
.calendar-content {
  display: flex;
  flex-direction: column;
  gap: 18px;
  max-width: 960px;
}
.cal-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 18px;
  flex-wrap: wrap;
}
.cal-nav {
  display: flex;
  align-items: center;
  gap: 10px;
}
.cal-nav-btn {
  width: 32px;
  height: 32px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  border-radius: 8px;
  cursor: pointer;
  font-size: 18px;
  line-height: 1;
  font-family: inherit;
  transition: background 0.15s ease, border-color 0.15s ease;
}
.cal-nav-btn:hover { background: var(--surface-2); border-color: var(--border-strong); }
.cal-title {
  font-size: 18px;
  font-weight: 700;
  margin: 0;
  min-width: 180px;
  text-align: center;
  color: var(--text);
}
.cal-today-btn {
  margin-left: 6px;
  padding: 6px 12px;
  background: transparent;
  border: 1px solid var(--border);
  color: var(--muted);
  border-radius: 8px;
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, color 0.15s ease;
}
.cal-today-btn:hover { background: var(--surface-2); color: var(--text); }
.cal-view-switcher {
  display: inline-flex;
  background: var(--surface-2);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 2px;
  gap: 2px;
}
.cal-view-btn {
  padding: 6px 14px;
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 12.5px;
  font-weight: 600;
  cursor: pointer;
  border-radius: 6px;
  font-family: inherit;
  transition: background 0.15s ease, color 0.15s ease;
}
.cal-view-btn:hover { color: var(--text); }
.cal-view-btn.is-active {
  background: var(--surface);
  color: var(--text);
  box-shadow: var(--shadow-sm);
}

/* Month grid */
.cal-grid-month {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}
.cal-grid-dow {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  background: var(--surface-2);
  border-bottom: 1px solid var(--border);
}
.cal-grid-dow span {
  padding: 8px 10px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.cal-grid-cells {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
}
.cal-day {
  min-height: 96px;
  padding: 8px;
  border-right: 1px solid var(--border);
  border-bottom: 1px solid var(--border);
  background: var(--surface);
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  color: var(--text);
  display: flex;
  flex-direction: column;
  gap: 4px;
  transition: background 0.12s ease;
}
.cal-day:hover { background: var(--surface-2); }
.cal-day:nth-child(7n) { border-right: none; }
.cal-grid-cells .cal-day:nth-last-child(-n+7) { border-bottom: none; }
.cal-day.is-outside { background: var(--bg-alt); color: var(--muted-2); }
.cal-day.is-outside .cal-day-num { color: var(--muted-2); }
.cal-day.is-today {
  background: color-mix(in srgb, var(--accent) 8%, var(--surface));
}
.cal-day.is-today .cal-day-num {
  color: var(--accent);
  font-weight: 800;
}
.cal-day.is-selected {
  outline: 2px solid var(--accent);
  outline-offset: -2px;
}
.cal-day-num {
  font-size: 12.5px;
  font-weight: 600;
  color: var(--text);
}
.cal-day-indicators {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-wrap: wrap;
  margin-top: auto;
}
.cal-indicator {
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 3px 7px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 700;
  line-height: 1;
  transition: transform 0.12s ease, box-shadow 0.12s ease;
}
.cal-indicator-call {
  color: #3b82f6;
  background: color-mix(in srgb, #3b82f6 14%, transparent);
  border: 1px solid color-mix(in srgb, #3b82f6 28%, transparent);
}
.cal-indicator-callback,
.cal-indicator-action {  /* legacy class kept for backward compat */
  color: #2563eb;
  background: color-mix(in srgb, #3b82f6 12%, transparent);
  border: 1px solid color-mix(in srgb, #3b82f6 28%, transparent);
}
.cal-indicator-nurture {
  color: #b45309;
  background: color-mix(in srgb, #f59e0b 14%, transparent);
  border: 1px solid color-mix(in srgb, #f59e0b 35%, transparent);
}
[data-theme="dark"] .cal-indicator-call {
  color: #93c5fd;
  background: color-mix(in srgb, #60a5fa 20%, transparent);
  border-color: color-mix(in srgb, #60a5fa 38%, transparent);
}
[data-theme="dark"] .cal-indicator-callback,
[data-theme="dark"] .cal-indicator-action {
  color: #93c5fd;
  background: color-mix(in srgb, #60a5fa 18%, transparent);
  border-color: color-mix(in srgb, #60a5fa 36%, transparent);
}
[data-theme="dark"] .cal-indicator-nurture {
  color: #fcd34d;
  background: color-mix(in srgb, #f59e0b 22%, transparent);
  border-color: color-mix(in srgb, #f59e0b 42%, transparent);
}
.cal-indicator-count {
  font-variant-numeric: tabular-nums;
}
.cal-day:hover .cal-indicator {
  transform: scale(1.05);
}

/* Week grid */
.cal-grid-week {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--surface);
  box-shadow: var(--shadow-sm);
}
.cal-week-day {
  min-height: 220px;
  padding: 12px;
  border-right: 1px solid var(--border);
  background: var(--surface);
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  color: var(--text);
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: background 0.12s ease;
}
.cal-week-day:hover { background: var(--surface-2); }
.cal-week-day:last-child { border-right: none; }
.cal-week-day.is-today { background: color-mix(in srgb, var(--accent) 8%, var(--surface)); }
.cal-week-day.is-selected { outline: 2px solid var(--accent); outline-offset: -2px; }
.cal-week-day-head {
  display: flex;
  align-items: baseline;
  gap: 6px;
  border-bottom: 1px solid var(--border);
  padding-bottom: 8px;
}
.cal-week-dow {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
}
.cal-week-num {
  font-size: 18px;
  font-weight: 700;
  color: var(--text);
}
.cal-week-day.is-today .cal-week-num { color: var(--accent); }
.cal-week-events {
  display: flex;
  flex-direction: column;
  gap: 6px;
  flex: 1;
}
.cal-week-empty {
  color: var(--muted-2);
  font-size: 12px;
}
.cal-event-row {
  display: flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  color: var(--text);
  padding: 5px 8px;
  background: color-mix(in srgb, var(--c) 10%, transparent);
  border-left: 2px solid var(--c);
  border-radius: 4px;
}
.cal-event-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--c);
  flex-shrink: 0;
}
.cal-event-row-text {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Year grid */
.cal-grid-year {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 18px;
}
@media (max-width: 900px) { .cal-grid-year { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 640px) { .cal-grid-year { grid-template-columns: repeat(2, 1fr); } }
.cal-mini-month {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 14px;
  box-shadow: var(--shadow-sm);
}
.cal-mini-month-head {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  margin-bottom: 10px;
}
.cal-mini-month-dow {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
  margin-bottom: 4px;
}
.cal-mini-month-dow span {
  font-size: 9px;
  font-weight: 700;
  letter-spacing: 0.05em;
  color: var(--muted-2);
  text-align: center;
}
.cal-mini-month-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 2px;
}
.cal-mini-cell {
  position: relative;
  aspect-ratio: 1;
  padding: 0;
  background: transparent;
  border: none;
  border-radius: 4px;
  color: var(--muted);
  font-size: 10.5px;
  cursor: pointer;
  font-family: inherit;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 0.12s ease;
}
.cal-mini-cell.is-empty { cursor: default; }
.cal-mini-cell:not(.is-empty):hover { background: var(--surface-2); color: var(--text); }
.cal-mini-cell.has-events { color: var(--text); font-weight: 600; }
.cal-mini-cell.is-today {
  background: var(--accent);
  color: #fff;
  font-weight: 700;
}
.cal-mini-dot {
  position: absolute;
  bottom: 2px;
  left: 50%;
  transform: translateX(-50%);
  width: 4px;
  height: 4px;
  border-radius: 50%;
}
.cal-mini-cell.is-today .cal-mini-dot { background: #fff !important; }

/* Day panel (shows when a day is selected) */
.cal-day-panel {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  padding: 18px 22px;
  box-shadow: var(--shadow-sm);
}
.cal-day-panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 14px;
}
.cal-day-panel-head h4 {
  margin: 0;
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
}
.cal-day-panel-close {
  background: transparent;
  border: none;
  color: var(--muted);
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
  padding: 0 6px;
  border-radius: 4px;
}
.cal-day-panel-close:hover { color: var(--text); }
.cal-day-panel-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.cal-day-panel-item {
  display: flex;
  align-items: flex-start;
  gap: 12px;
  padding: 12px;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-left: 3px solid var(--c);
  border-radius: 8px;
}
.cal-day-panel-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--c);
  flex-shrink: 0;
  margin-top: 6px;
}
.cal-day-panel-text { flex: 1; min-width: 0; }
.cal-day-panel-text strong {
  display: block;
  font-size: 14px;
  color: var(--text);
}
.cal-day-panel-text p {
  margin: 4px 0 0;
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
}
.cal-day-panel-notes {
  color: var(--text) !important;
  font-size: 12.5px !important;
}
.cal-day-panel-tag {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  background: var(--surface);
  border: 1px solid var(--border);
  padding: 3px 8px;
  border-radius: 999px;
  white-space: nowrap;
  flex-shrink: 0;
}
.cal-day-panel-tag-call { color: var(--accent); border-color: color-mix(in srgb, var(--accent) 30%, transparent); }
.cal-day-panel-tag-callback { color: #2563eb; border-color: color-mix(in srgb, #3b82f6 30%, transparent); background: color-mix(in srgb, #3b82f6 8%, var(--surface)); }
.cal-day-panel-tag-nurture { color: #b45309; border-color: color-mix(in srgb, #f59e0b 35%, transparent); background: color-mix(in srgb, #f59e0b 10%, var(--surface)); }
[data-theme="dark"] .cal-day-panel-tag-callback { color: #93c5fd; }
[data-theme="dark"] .cal-day-panel-tag-nurture { color: #fcd34d; }
.cal-day-panel-empty {
  text-align: center;
  color: var(--muted);
  padding: 16px;
  font-size: 13px;
}

@media (max-width: 760px) {
  .cal-day { min-height: 64px; padding: 5px; }
  .cal-indicator { padding: 2px 5px; font-size: 10px; gap: 2px; }
  .cal-indicator svg { width: 11px; height: 11px; }
  .cal-week-day { min-height: 160px; padding: 8px; }
  .cal-title { font-size: 16px; min-width: 140px; }
  .cal-view-btn { padding: 5px 10px; font-size: 11.5px; }
}
@media (max-width: 540px) {
  .cal-day { min-height: 48px; padding: 4px; gap: 2px; }
  .cal-indicator-count { display: none; } /* keep just the icon on tiny screens; count shows in tooltip */
  .cal-indicator { padding: 2px 3px; }
}

/* ── Contacts tab ──────────────────────────────────────────────── */
.contacts-content {
  display: flex;
  flex-direction: column;
  gap: 18px;
}
.contacts-summary {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 12px;
  margin-bottom: 6px;
}
@media (max-width: 760px) {
  .contacts-summary { grid-template-columns: repeat(2, 1fr); }
}
.contacts-summary-stat {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  padding: 16px 18px;
}
.contacts-summary-stat-warning {
  background: color-mix(in srgb, #ef4444 6%, var(--surface));
  border-color: color-mix(in srgb, #ef4444 30%, var(--border));
}
.contacts-summary-num {
  font-size: 26px;
  font-weight: 800;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  line-height: 1.1;
}
.contacts-summary-stat-warning .contacts-summary-num { color: #b91c1c; }
[data-theme="dark"] .contacts-summary-stat-warning .contacts-summary-num { color: #fca5a5; }
.contacts-summary-label {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  margin-top: 3px;
}

.contacts-controls {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 14px;
  margin-bottom: 4px;
}
.contacts-controls .action-filter-bar { margin-bottom: 0; }
.contacts-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  margin-right: 5px;
  vertical-align: middle;
}
.contacts-sort {
  display: inline-flex;
  align-items: center;
  gap: 6px;
}
.contacts-sort-label {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  margin-right: 4px;
}
.contacts-sort-btn {
  background: transparent;
  border: 1px solid var(--border);
  color: var(--muted);
  font-size: 12px;
  font-weight: 600;
  padding: 5px 11px;
  border-radius: 999px;
  cursor: pointer;
  font-family: inherit;
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.contacts-sort-btn:hover { color: var(--text); border-color: var(--border-strong); }
.contacts-sort-btn.is-active {
  background: var(--surface-2);
  color: var(--text);
  border-color: var(--accent);
}

.contacts-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  font-size: 11.5px;
  color: var(--muted);
  margin: 0 0 8px;
  padding: 8px 12px;
  background: var(--bg-alt);
  border-radius: 8px;
}
.contacts-legend-item { display: inline-flex; align-items: center; }

.contacts-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.contact-row {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.contact-row:hover { border-color: var(--border-strong); }
.contact-row-main {
  display: grid;
  grid-template-columns: 60px 1fr auto 24px;
  align-items: center;
  gap: 16px;
  padding: 14px 16px;
  background: transparent;
  border: none;
  width: 100%;
  text-align: left;
  cursor: pointer;
  font-family: inherit;
  color: var(--text);
}
.contact-freq-badge {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 4px;
  padding: 6px 10px;
  border-radius: 999px;
  font-weight: 700;
  font-size: 13px;
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.contact-freq-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
}
.contact-freq-badge-green {
  background: color-mix(in srgb, #10b981 14%, transparent);
  color: #047857;
  border: 1px solid color-mix(in srgb, #10b981 30%, transparent);
}
.contact-freq-badge-green .contact-freq-dot { background: #10b981; }
.contact-freq-badge-yellow {
  background: color-mix(in srgb, #f59e0b 14%, transparent);
  color: #b45309;
  border: 1px solid color-mix(in srgb, #f59e0b 32%, transparent);
}
.contact-freq-badge-yellow .contact-freq-dot { background: #f59e0b; }
.contact-freq-badge-red {
  background: color-mix(in srgb, #ef4444 14%, transparent);
  color: #b91c1c;
  border: 1px solid color-mix(in srgb, #ef4444 32%, transparent);
}
.contact-freq-badge-red .contact-freq-dot { background: #ef4444; }
[data-theme="dark"] .contact-freq-badge-green { color: #6ee7b7; }
[data-theme="dark"] .contact-freq-badge-yellow { color: #fcd34d; }
[data-theme="dark"] .contact-freq-badge-red { color: #fca5a5; }

.contact-identity { min-width: 0; }
.contact-name {
  font-size: 15px;
  font-weight: 700;
  color: var(--text);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.contact-meta {
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 1px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.contact-company { color: var(--text); font-weight: 500; }

.contact-stats {
  display: flex;
  gap: 22px;
  align-items: center;
}
.contact-stat {
  text-align: right;
  min-width: 80px;
}
.contact-stat-num {
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-variant-numeric: tabular-nums;
}
.contact-stat-label {
  font-size: 11px;
  color: var(--muted);
  margin-top: 1px;
}
.contact-disp-dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  display: inline-block;
}

.contact-expand-icon {
  font-size: 18px;
  color: var(--muted-2);
  transition: transform 0.15s ease;
  justify-self: end;
}
.contact-row.is-expanded .contact-expand-icon { transform: rotate(90deg); }

.contact-detail {
  display: none;
  padding: 6px 16px 18px 76px;
  border-top: 1px solid var(--border);
  background: var(--bg-alt);
}
.contact-row.is-expanded .contact-detail { display: block; }
.contact-detail h4 {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 12px 0 8px;
}
.contact-attempts {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.contact-attempt {
  display: flex;
  align-items: center;
  gap: 10px;
  padding: 6px 0;
  font-size: 12.5px;
  color: var(--text);
  border-bottom: 1px dashed var(--border);
}
.contact-attempt:last-child { border-bottom: none; }
.contact-attempt-dot {
  width: 8px;
  height: 8px;
  border-radius: 50%;
  flex-shrink: 0;
}
.contact-attempt-date {
  font-weight: 600;
  font-variant-numeric: tabular-nums;
  min-width: 130px;
}
.contact-attempt-disp { color: var(--muted); flex: 1; }
.contact-attempt-dur {
  font-variant-numeric: tabular-nums;
  color: var(--muted-2);
  font-size: 11.5px;
}
.contact-attempt-listen {
  color: var(--accent);
  font-weight: 600;
  font-size: 11.5px;
  text-decoration: none;
}
.contact-attempt-listen:hover { text-decoration: underline; }

/* Red contacts get a subtle warning tint on the row */
.contact-row.contact-freq-red {
  background: color-mix(in srgb, #ef4444 3%, var(--surface));
}

@media (max-width: 760px) {
  .contact-row-main { grid-template-columns: 56px 1fr auto; padding: 12px; gap: 10px; }
  .contact-expand-icon { display: none; }
  .contact-stats { gap: 12px; }
  .contact-stat { min-width: 60px; }
  .contact-stat-label { font-size: 10px; }
  .contact-detail { padding-left: 16px; }
  .contacts-legend { font-size: 11px; flex-direction: column; gap: 4px; }
}

/* ── Send reminder (SMS/iMessage) ──────────────────────────────── */
.send-reminder-btn {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
}
.send-reminder-hint {
  margin: 8px 0 0;
  font-size: 12.5px;
  color: var(--muted);
}
.send-reminder-hint-disabled {
  background: var(--bg-alt);
  border: 1px dashed var(--border-strong);
  border-radius: 8px;
  padding: 12px 14px;
  color: var(--muted);
}
.send-reminder-hint-disabled code {
  background: var(--surface);
  padding: 1px 6px;
  border-radius: 4px;
  font-size: 11.5px;
  color: var(--text);
}

/* ─── Opportunities tab (CRM-lite for engaged contacts) ──────────────── */
.opportunities-content {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.opp-stats {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
  padding: 16px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg-alt);
}
.opp-stat {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.opp-stat-label {
  font-size: 12px;
  color: var(--muted);
  font-weight: 500;
}
.opp-stat-value {
  font-size: 22px;
  font-weight: 700;
  letter-spacing: -0.01em;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.opp-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.opp-row {
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg);
  overflow: hidden;
  transition: border-color 0.12s;
}
.opp-row:hover { border-color: var(--border-strong); }
.opp-row.is-expanded { border-color: var(--border-strong); }
.opp-row-main {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 14px 16px;
  cursor: pointer;
  user-select: none;
}
.opp-row-left {
  display: flex;
  align-items: center;
  gap: 12px;
  flex: 1;
  min-width: 0;
}
.opp-row-right {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-wrap: wrap;
  justify-content: flex-end;
  font-size: 13px;
  color: var(--muted);
}
.opp-status-badge {
  display: inline-flex;
  align-items: center;
  padding: 3px 9px;
  border-radius: 999px;
  font-size: 11px;
  font-weight: 600;
  background: color-mix(in srgb, var(--c) 12%, transparent);
  color: var(--c);
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.opp-name-block {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
}
.opp-contact {
  font-size: 15px;
  color: var(--text);
}
.opp-company {
  font-size: 12.5px;
  color: var(--muted);
}
.opp-stage {
  font-size: 12px;
  color: var(--text);
  background: var(--bg-alt);
  padding: 2px 8px;
  border-radius: 6px;
}
.opp-deal {
  font-size: 13px;
  font-weight: 700;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.opp-last-update {
  font-size: 12px;
  color: var(--muted-2);
  white-space: nowrap;
}
.opp-expand-icon {
  font-size: 18px;
  color: var(--muted);
  transition: transform 0.15s;
  display: inline-block;
}
.opp-row.is-expanded .opp-expand-icon { transform: rotate(90deg); }
.opp-detail {
  display: none;
  padding: 0 16px 16px;
  flex-direction: column;
  gap: 16px;
  border-top: 1px dashed var(--border);
  margin-top: 0;
}
.opp-row.is-expanded .opp-detail { display: flex; padding-top: 14px; }
.opp-insight {
  background: rgba(245, 158, 11, 0.06);
  border-left: 3px solid #f59e0b;
  padding: 10px 14px;
  border-radius: 6px;
}
.opp-insight-label {
  display: block;
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: #b45309;
  font-weight: 700;
  margin-bottom: 4px;
}
.opp-insight p {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--text);
}
.opp-updates {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.opp-updates-label {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--muted);
  font-weight: 600;
}
.opp-updates-empty {
  font-size: 13px;
  color: var(--muted);
  font-style: italic;
  margin: 0;
}
.opp-update {
  padding: 8px 12px;
  border: 1px solid var(--border);
  border-radius: 8px;
  background: var(--bg-alt);
}
.opp-update-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 4px;
  font-size: 12px;
}
.opp-update-source {
  font-weight: 700;
  letter-spacing: 0.02em;
  padding: 1px 7px;
  border-radius: 4px;
  font-size: 11px;
}
.opp-update-source-corey  { background: rgba(99, 102, 241, 0.15); color: #4338ca; }
.opp-update-source-client { background: rgba(16, 185, 129, 0.15); color: #047857; }
.opp-update-date {
  color: var(--muted);
}
.opp-update-notes {
  margin: 0;
  font-size: 13.5px;
  line-height: 1.5;
  color: var(--text);
}

/* ─── Action item "Open" link (mailto / linkedin / tel) ──────────────── */
.action-item-open {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 4px 9px;
  border-radius: 6px;
  font-size: 12px;
  font-weight: 600;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition: filter 0.12s;
  border: 1px solid transparent;
}
.action-item-open svg { flex-shrink: 0; }
.action-item-open:hover { filter: brightness(0.95); }
.action-item-open-email {
  background: rgba(99, 102, 241, 0.12);
  color: #4338ca;
}
.action-item-open-linkedin {
  background: rgba(14, 118, 168, 0.12);
  color: #0e76a8;
}
.action-item-open-call {
  background: rgba(16, 185, 129, 0.12);
  color: #047857;
  font-variant-numeric: tabular-nums;
}
.action-item-open-missing {
  background: transparent;
  color: var(--muted-2);
  font-style: italic;
  font-weight: 500;
  border: 1px dashed var(--border);
  cursor: help;
}
/* Clickable "+ Add email / + Add LinkedIn URL / + Add phone" button — shown
   when no link target is on file. Click swaps it for an inline input below. */
button.action-item-open-add {
  background: transparent;
  color: var(--muted);
  border: 1px dashed var(--border);
  cursor: pointer;
  font-family: inherit;
}
button.action-item-open-add:hover {
  border-color: #6366f1;
  color: #4338ca;
  background: rgba(99, 102, 241, 0.06);
}
button.action-item-open-add:hover svg { color: #4338ca; }
/* Inline input that replaces the "+ Add" / ✎ button while the user types. */
input.action-item-open-input {
  background: var(--bg);
  border: 1px solid #6366f1;
  border-radius: 6px;
  padding: 4px 9px;
  font: inherit;
  font-size: 12px;
  color: var(--text);
  width: 220px;
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
  outline: none;
}
/* Group wrapping the Open button + edit pencil so they read as one unit */
.action-item-open-group {
  display: inline-flex;
  align-items: stretch;
  gap: 2px;
}
.action-item-open-group .action-item-open {
  border-top-right-radius: 0;
  border-bottom-right-radius: 0;
}
/* Small pencil button — same channel color tint as the Open button next to it */
.action-item-open-edit {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 24px;
  border: 1px solid transparent;
  border-top-left-radius: 0;
  border-bottom-left-radius: 0;
  border-top-right-radius: 6px;
  border-bottom-right-radius: 6px;
  cursor: pointer;
  font-family: inherit;
  padding: 0;
  font-size: 11px;
  transition: filter 0.12s, background 0.12s;
}
.action-item-open-group .action-item-open-email + .action-item-open-edit {
  background: rgba(99, 102, 241, 0.12);
  color: #4338ca;
}
.action-item-open-group .action-item-open-linkedin + .action-item-open-edit {
  background: rgba(14, 118, 168, 0.12);
  color: #0e76a8;
}
.action-item-open-group .action-item-open-call + .action-item-open-edit {
  background: rgba(16, 185, 129, 0.12);
  color: #047857;
}
.action-item-open-edit:hover { filter: brightness(0.9); }
.action-item-open-edit svg { display: block; }

/* ─── Inline editable fields (Contacts + Opportunities) ──────────────── */
.contact-edit-grid,
.opp-edit-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
  padding: 14px;
  margin-bottom: 12px;
  border: 1px dashed var(--border);
  border-radius: 8px;
  background: var(--bg-alt);
}
.contact-edit-field,
.opp-edit-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  position: relative;
}
.contact-edit-field-wide,
.opp-edit-field-wide { grid-column: 1 / -1; }
.contact-edit-label,
.opp-edit-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.contact-edit-input,
.opp-edit-input {
  width: 100%;
  font: inherit;
  font-size: 14px;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  color: var(--text);
  transition: border-color 0.12s, box-shadow 0.12s;
}
.contact-edit-input:hover,
.opp-edit-input:hover {
  border-color: var(--border-strong);
}
.contact-edit-input:focus,
.opp-edit-input:focus {
  outline: none;
  border-color: var(--accent, #6366f1);
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
}
.opp-edit-money {
  display: grid;
  grid-template-columns: 1fr 80px;
  gap: 6px;
}
.opp-edit-money-cur {
  font-variant-numeric: tabular-nums;
  text-align: center;
}
.edit-saved-flash {
  position: absolute;
  top: 0;
  right: 0;
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  background: rgba(16, 185, 129, 0.15);
  color: #047857;
  padding: 2px 6px;
  border-radius: 4px;
  opacity: 0;
  transform: translateY(-2px);
  transition: opacity 0.18s, transform 0.18s;
  pointer-events: none;
}
.edit-saved-flash.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* ─── Targets tab (daily research queue) ─────────────────────────────── */
.targets-content {
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.targets-summary {
  display: flex;
  gap: 24px;
  align-items: center;
  padding: 18px 20px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg-alt);
}
.targets-summary-stat {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex-shrink: 0;
}
.targets-summary-num {
  font-size: 32px;
  font-weight: 800;
  letter-spacing: -0.02em;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  line-height: 1;
}
.targets-summary-label {
  font-size: 12px;
  color: var(--muted);
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.targets-summary-help {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
  flex: 1;
}
.targets-list {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.target-row {
  border: 1px solid var(--border);
  border-radius: 10px;
  background: var(--bg);
  overflow: hidden;
  transition: border-color 0.12s;
}
.target-row:hover { border-color: var(--border-strong); }
.target-row.is-expanded { border-color: var(--border-strong); }
.target-row-status-done {
  opacity: 0.55;
}
.target-row-status-done .target-company,
.target-row-status-done .target-looking {
  text-decoration: line-through;
  text-decoration-color: var(--muted);
}
.target-row-status-skipped {
  opacity: 0.45;
}
.target-row-main {
  display: flex;
  align-items: stretch;
  gap: 12px;
  padding: 12px 14px;
}
.target-check {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  border: 1.5px solid var(--border-strong);
  background: var(--bg-alt);
  color: var(--text-inverse, #fff);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
  margin-top: 2px;
  transition: background 0.12s, border-color 0.12s;
  padding: 0;
}
.target-check:hover {
  border-color: #10b981;
}
.target-row-status-done .target-check {
  background: #10b981;
  border-color: #10b981;
}
.target-body {
  flex: 1;
  background: none;
  border: none;
  padding: 0;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: inherit;
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}
.target-line {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
}
.target-company {
  font-weight: 700;
  font-size: 15px;
  color: var(--text);
}
.target-arrow {
  color: var(--muted-2);
  font-size: 12px;
}
.target-looking {
  color: var(--text);
  font-size: 14px;
}
.target-context-preview {
  font-size: 12.5px;
  color: var(--muted);
  line-height: 1.4;
}
.target-expand-icon {
  font-size: 18px;
  color: var(--muted-2);
  margin-left: auto;
  transition: transform 0.15s;
}
.target-row.is-expanded .target-expand-icon { transform: rotate(90deg); }
.target-priority {
  display: inline-flex;
  align-items: center;
  padding: 1px 7px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.04em;
  font-variant-numeric: tabular-nums;
}
.target-priority-p1 { background: rgba(239, 68, 68, 0.12); color: #b91c1c; }
.target-priority-p2 { background: rgba(99, 102, 241, 0.12); color: #4338ca; }
.target-priority-p3 { background: rgba(148, 163, 184, 0.15); color: var(--muted); }
.target-meta {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
  font-size: 11.5px;
  color: var(--muted-2);
}
.target-status-badge {
  display: inline-flex;
  padding: 2px 8px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.target-status-open    { background: rgba(245, 158, 11, 0.15); color: #b45309; }
.target-status-done    { background: rgba(16, 185, 129, 0.15); color: #047857; }
.target-status-skipped { background: rgba(148, 163, 184, 0.2);  color: var(--muted); }
.target-added {
  font-variant-numeric: tabular-nums;
}
.target-detail {
  display: none;
  padding: 0 14px 14px;
  border-top: 1px dashed var(--border);
}
.target-row.is-expanded .target-detail { display: block; padding-top: 14px; }
.target-edit-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
  gap: 12px;
}
.target-edit-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
  position: relative;
}
.target-edit-field-wide {
  grid-column: 1 / -1;
}
.target-edit-label {
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.target-edit-input {
  width: 100%;
  font: inherit;
  font-size: 14px;
  padding: 7px 10px;
  border: 1px solid var(--border);
  border-radius: 6px;
  background: var(--bg);
  color: var(--text);
  transition: border-color 0.12s, box-shadow 0.12s;
}
.target-edit-input:hover { border-color: var(--border-strong); }
.target-edit-input:focus {
  outline: none;
  border-color: #6366f1;
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.15);
}
.target-edit-textarea {
  resize: vertical;
  min-height: 60px;
  font-family: inherit;
  line-height: 1.45;
}
.target-source {
  grid-column: 1 / -1;
  font-size: 12px;
  color: var(--muted);
  padding-top: 4px;
}

/* ─── Pilot progress (top stats bar — for clients with conversationsTarget) ── */
.portal-stat-progress {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.portal-stat-progress-num {
  display: flex;
  align-items: baseline;
  gap: 6px;
}
.portal-stat-progress-num .portal-stat-num {
  font-size: 36px;
  line-height: 1;
}
.portal-stat-progress-target {
  font-size: 18px;
  color: var(--muted);
  font-weight: 600;
}
.portal-stat-progress-bar {
  width: 100%;
  height: 6px;
  border-radius: 999px;
  background: var(--bg-alt);
  overflow: hidden;
}
.portal-stat-progress-fill {
  height: 100%;
  background: linear-gradient(90deg, #f59e0b, #10b981);
  border-radius: 999px;
  transition: width 0.3s;
}
.portal-stat-progress-pct {
  font-size: 11.5px;
  color: var(--muted);
  font-weight: 600;
  letter-spacing: 0.02em;
}

/* Funnel conversion footnote — Activated tile + Meetings tile */
.portal-stat-rate {
  font-size: 11.5px;
  color: var(--muted);
  font-weight: 600;
  letter-spacing: 0.02em;
  margin-top: 6px;
}

/* ─── Meetings booked tile — expanded list of actual booked meetings ─── */
.portal-stat-meetings {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.portal-stat-meetings-list {
  list-style: none;
  margin: 8px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  max-height: 200px;
  overflow-y: auto;
}
.portal-stat-meeting-row {
  padding: 6px 10px;
  border-radius: 6px;
  background: rgba(16, 185, 129, 0.08);
  border-left: 3px solid #10b981;
  font-size: 12.5px;
  display: flex;
  align-items: baseline;
  gap: 6px;
  flex-wrap: wrap;
}
.portal-stat-meeting-role {
  font-weight: 600;
  color: var(--text);
}
.portal-stat-meeting-sep { color: var(--muted-2); }
.portal-stat-meeting-co  { color: var(--muted); }

/* ─── WW Sponsorship-style campaign directory (client → campaigns) ── */
.campaigns-head { margin-bottom: 28px; }
.campaigns-title {
  font-size: 34px;
  font-weight: 800;
  letter-spacing: -0.02em;
  margin: 6px 0 10px;
  color: var(--text);
}
.campaigns-sub { font-size: 15px; color: var(--muted); max-width: 640px; margin: 0; }
.campaigns-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
  gap: 16px;
}
.campaign-card {
  display: block;
  text-decoration: none;
  padding: 22px 24px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 14px;
  box-shadow: var(--shadow-sm);
  transition: transform 0.18s ease, border-color 0.18s ease, box-shadow 0.18s ease;
}
.campaign-card:hover {
  transform: translateY(-3px);
  border-color: var(--accent);
  box-shadow: var(--shadow-lg);
}
.campaign-card-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
}
.campaign-card-name {
  font-size: 19px;
  font-weight: 700;
  color: var(--text);
  margin: 0;
}
.campaign-card-arrow {
  font-size: 20px;
  color: var(--accent);
  transition: transform 0.18s ease;
}
.campaign-card:hover .campaign-card-arrow { transform: translateX(4px); }
.campaign-card-tagline {
  font-size: 13.5px;
  color: var(--muted);
  line-height: 1.5;
  margin: 8px 0 16px;
}
.campaign-card-stats {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
  color: var(--muted);
  padding-top: 14px;
  border-top: 1px solid var(--border);
}
.campaign-card-stats strong { color: var(--text); font-variant-numeric: tabular-nums; }
.campaign-card-dot { color: var(--muted-2); }

/* Breadcrumb back-link shown on a campaign sub-portal (WW Sponsorship campaigns) */
.campaign-breadcrumb {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  text-decoration: none;
  margin: 18px 0 0;
}
.campaign-breadcrumb:hover { color: var(--accent); }

/* ─── Account map pane — the "we map your market" deliverable ── */
.account-map-header {
  display: flex;
  flex-direction: column;
  gap: 12px;
  margin-bottom: 18px;
  padding-bottom: 18px;
  border-bottom: 1px solid var(--border);
}
.account-map-header-title h2 {
  font-size: 22px;
  font-weight: 700;
  margin: 0 0 4px 0;
  color: var(--text);
}
.account-map-header-sub {
  font-size: 13.5px;
  color: var(--muted);
  margin: 0;
  max-width: 720px;
}
.account-map-legend {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}
.account-map-legend-item {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 6px 12px;
  border-radius: 999px;
  font-size: 12.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
}
.account-map-chip-green  { background: rgba(16, 185, 129, 0.12); color: #047857; border: 1px solid rgba(16, 185, 129, 0.4); }
.account-map-chip-yellow { background: rgba(245, 158, 11, 0.12); color: #b45309; border: 1px solid rgba(245, 158, 11, 0.4); }
.account-map-chip-red    { background: rgba(239, 68, 68, 0.12);  color: #b91c1c; border: 1px solid rgba(239, 68, 68, 0.4); }
.account-map-chip-gray   { background: rgba(148, 163, 184, 0.15); color: var(--muted); border: 1px solid var(--border); }

.account-map-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.account-map-row {
  display: flex;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.account-map-stripe {
  width: 5px;
  flex-shrink: 0;
}
.account-map-row-green  .account-map-stripe { background: #10b981; }
.account-map-row-yellow .account-map-stripe { background: #f59e0b; }
.account-map-row-red    .account-map-stripe { background: #ef4444; }
.account-map-row-gray   .account-map-stripe { background: #94a3b8; }
.account-map-body {
  flex: 1;
  padding: 14px 18px;
  display: flex;
  flex-direction: column;
  gap: 8px;
  min-width: 0;
}
.account-map-row-top {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.account-map-co {
  flex: 1 1 280px;
  min-width: 0;
}
.account-map-co-name {
  font-size: 15px;
  font-weight: 600;
  color: var(--text);
}
.account-map-co-contacts {
  font-size: 12.5px;
  color: var(--muted);
  margin-top: 2px;
}
.account-map-co-more {
  color: var(--muted-2);
}
.account-map-status {
  display: flex;
  flex-direction: column;
  align-items: flex-end;
  gap: 4px;
  flex-shrink: 0;
}
.account-map-badge {
  display: inline-block;
  padding: 4px 10px;
  border-radius: 999px;
  font-size: 11.5px;
  font-weight: 600;
  letter-spacing: 0.02em;
  white-space: nowrap;
}
.account-map-badge-green  { background: rgba(16, 185, 129, 0.15); color: #047857; }
.account-map-badge-yellow { background: rgba(245, 158, 11, 0.15); color: #b45309; }
.account-map-badge-red    { background: rgba(239, 68, 68, 0.15);  color: #b91c1c; }
.account-map-badge-gray   { background: rgba(148, 163, 184, 0.2); color: var(--muted); }
.account-map-last {
  font-size: 11.5px;
  color: var(--muted-2);
}
.account-map-reason {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.45;
  padding: 6px 10px;
  border-radius: 6px;
  background: var(--bg-alt);
  border-left: 2px solid var(--border);
}
.account-map-actions {
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
}
.account-map-footer {
  margin-top: 18px;
  padding-top: 14px;
  border-top: 1px solid var(--border);
}
.account-map-footer-note {
  font-size: 12px;
  color: var(--muted-2);
  margin: 0;
}

@media (max-width: 640px) {
  .account-map-body { padding: 12px 14px; }
  .account-map-status { align-items: flex-start; }
  .account-map-co-name { font-size: 14px; }
}

/* ─── Call backs pane ── */
.callbacks-list,
.meetings-list {
  display: flex;
  flex-direction: column;
  gap: 10px;
}
.callback-row,
.meeting-row {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 10px;
  padding: 14px 18px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
}
/* Uniform meeting-card anatomy (Corey, Jul 18 2026 — "same text style in
   uniformity", cards must not rearrange with/without a note): Row 1 header
   (who left · status/date right), Row 2 note area (same spot always), Row 3
   actions (always bottom-left). */
.meeting-header {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 16px;
  flex-wrap: wrap;
}
.callback-row-main,
.meeting-row-main {
  display: flex;
  align-items: center;
  gap: 16px;
  flex: 1 1 320px;
  min-width: 0;
}
.callback-who,
.meeting-who {
  display: flex;
  flex-direction: column;
  gap: 2px;
  min-width: 0;
  flex: 1 1 auto;
}
.callback-name,
.meeting-name {
  font-weight: 600;
  color: var(--text);
  font-size: 14.5px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.callback-co,
.meeting-co {
  color: var(--muted);
  font-size: 12.5px;
}
.callback-meta {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}
.callback-date {
  font-size: 12px;
  color: var(--muted);
}
.callback-actions,
.meeting-actions {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
  flex-shrink: 0;
}
.callback-action-missing {
  font-size: 11.5px;
  color: var(--muted-2);
  align-self: center;
  padding: 0 6px;
}

/* ─── Meetings pane — urgency states ── */
.meeting-when {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex-shrink: 0;
  text-align: right;
  min-width: 110px;
}
.meeting-urgency {
  font-size: 11.5px;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--muted);
}
.meeting-day {
  font-size: 13px;
  color: var(--text);
  font-weight: 500;
}
/* Row 2: outcome / note — one consistent slot, standard body prose. */
.meeting-note {
  font-size: 15px;
  line-height: 1.55;
  text-align: left;
  color: var(--text);
  font-weight: 400;
  max-width: 64ch;
}
.meeting-note-empty,
.meeting-note-warn { color: var(--status-warm, #d97706); font-weight: 500; }
.meeting-held-badge { color: #16a34a; }
.meeting-row.is-held .meeting-urgency.meeting-held-badge { color: #16a34a; }
/* Row 3: actions always sit bottom-left in their own row. */
.meeting-row .meeting-actions { justify-content: flex-start; }
.meeting-row.is-imminent {
  border-color: #10b981;
  background: linear-gradient(180deg, rgba(16, 185, 129, 0.08), var(--surface) 60%);
  box-shadow: 0 0 0 1px rgba(16, 185, 129, 0.25), var(--shadow-sm);
}
.meeting-row.is-imminent .meeting-urgency {
  color: #10b981;
}
.meeting-row.is-past {
  opacity: 0.65;
}
.meeting-row.is-past .meeting-urgency {
  color: var(--muted-2);
}
.meeting-sms-btn {
  white-space: nowrap;
}

@media (max-width: 640px) {
  .callback-row,
  .meeting-row {
    padding: 12px 14px;
  }
  .callback-row-main,
  .meeting-row-main {
    flex: 1 1 100%;
  }
  .meeting-when {
    text-align: left;
    min-width: 0;
  }
  .callback-actions,
  .meeting-actions {
    width: 100%;
  }
  .callback-actions .btn,
  .meeting-actions .btn {
    flex: 1 1 auto;
    text-align: center;
  }
}

/* ─── Market Intelligence card (SmartBound-style "Here's what we're hearing") ── */
.mi-card {
  border: 1px solid var(--border-strong);
  border-radius: 14px;
  background: linear-gradient(180deg, var(--bg-alt) 0%, var(--bg) 60%);
  padding: 28px 28px 24px;
  margin-bottom: 28px;
  position: relative;
  overflow: hidden;
}
.mi-card::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 4px;
  background: linear-gradient(90deg, #f59e0b, #6366f1, #10b981);
}
.mi-header {
  display: flex;
  flex-direction: column;
  gap: 4px;
  margin-bottom: 18px;
}
.mi-kicker {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
}
.mi-title {
  margin: 0;
  font-size: 28px;
  line-height: 1.15;
  letter-spacing: -0.02em;
  font-weight: 800;
  font-family: 'Instrument Serif', Georgia, serif;
}
.mi-meta {
  margin: 4px 0 0;
  font-size: 12.5px;
  color: var(--muted);
}
.mi-headline {
  margin: 0 0 22px;
  padding: 16px 18px;
  background: var(--bg);
  border-left: 4px solid #6366f1;
  border-radius: 6px;
  font-size: 17px;
  font-weight: 600;
  font-style: italic;
  line-height: 1.5;
  color: var(--text);
}
.mi-exchanges {
  display: flex;
  flex-direction: column;
  gap: 14px;
  margin-bottom: 22px;
}
.mi-exchanges-header {
  display: flex;
  gap: 6px;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  padding-bottom: 6px;
  border-bottom: 1px solid var(--border);
  margin-bottom: 4px;
}
.mi-exchange {
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 14px 16px;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.mi-exchange-row {
  display: flex;
  align-items: flex-start;
  gap: 10px;
}
.mi-tag {
  flex-shrink: 0;
  display: inline-flex;
  padding: 3px 9px;
  border-radius: 5px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  white-space: nowrap;
}
.mi-tag-us {
  background: rgba(99, 102, 241, 0.15);
  color: #4338ca;
}
.mi-tag-them {
  background: rgba(16, 185, 129, 0.15);
  color: #047857;
}
.mi-quote {
  margin: 0;
  font-size: 14px;
  line-height: 1.55;
  color: var(--text);
  font-style: italic;
}
.mi-exchange-footer {
  display: flex;
  align-items: center;
  gap: 10px;
  padding-top: 6px;
  border-top: 1px dashed var(--border);
  font-size: 12px;
}
.mi-outcome-tag {
  display: inline-flex;
  padding: 2px 9px;
  border-radius: 999px;
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.mi-exchange-contact {
  color: var(--muted);
}
.mi-recommendation {
  padding: 18px 20px;
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.06), rgba(16, 185, 129, 0.06));
  border-radius: 10px;
  border: 1px solid rgba(99, 102, 241, 0.2);
}
.mi-recommendation-label {
  display: block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: #4338ca;
  margin-bottom: 6px;
}
.mi-recommendation p {
  margin: 0;
  font-size: 15px;
  line-height: 1.55;
  color: var(--text);
  font-weight: 500;
}

/* ─── Homepage: proof / "what you actually get" card (replaces logo strip) ─── */
.proof {
  padding: 56px 0 32px;
}
.proof-card {
  border: 1px solid var(--border-strong);
  border-radius: 20px;
  background: linear-gradient(180deg, var(--bg-alt) 0%, var(--bg) 70%);
  padding: 36px 36px 32px;
  position: relative;
  overflow: hidden;
}
.proof-card::before {
  content: '';
  position: absolute;
  inset: 0 0 auto 0;
  height: 4px;
  background: linear-gradient(90deg, #f59e0b, #6366f1, #10b981);
}
.proof-kicker {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 6px;
}
.proof-title {
  margin: 0 0 12px;
  font-size: 32px;
  letter-spacing: -0.02em;
  line-height: 1.1;
}
.proof-sub {
  margin: 0 0 24px;
  font-size: 16px;
  line-height: 1.55;
  color: var(--muted);
  max-width: 720px;
}
.proof-features {
  list-style: none;
  margin: 0 0 18px;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 14px;
}
.proof-features li {
  padding: 16px 18px;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--bg);
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.proof-features strong {
  font-size: 14.5px;
  color: var(--text);
  font-weight: 700;
  letter-spacing: -0.005em;
}
.proof-features span {
  font-size: 13px;
  color: var(--muted);
  line-height: 1.5;
}
.proof-fineprint {
  margin: 14px 0 0;
  font-size: 13px;
  color: var(--muted);
  font-style: italic;
}

/* ─── Standalone Math-of-Sales calculator page (calculator.html) ─────── */
.mc-section { min-height: 70vh; }
.mc {
  max-width: 1040px;
  margin: 36px auto 0;
  opacity: 0;
  transform: translateY(12px);
  transition: opacity 0.4s ease, transform 0.4s ease;
}
.mc.is-visible { opacity: 1; transform: none; }
.mc-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 28px;
  align-items: start;
}
.mc-inputs {
  display: flex;
  flex-direction: column;
  gap: 22px;
  padding: 28px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: var(--shadow-sm);
}
.mc-field { display: flex; flex-direction: column; gap: 8px; }
/* Industry preset selector */
.mc-industry {
  padding: 16px;
  background: var(--accent-soft, var(--bg-alt));
  border: 1px solid var(--accent);
  border-radius: 12px;
}
.mc-industry .mc-field-head label { font-size: 14px; }
.mc-select {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  font-family: inherit;
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
  background-color: var(--surface);
  /* chevron */
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 14px center;
  border: 1px solid var(--border);
  border-radius: 10px;
  padding: 11px 40px 11px 14px;
  cursor: pointer;
  transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.mc-select:hover { border-color: var(--accent); }
.mc-select:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px var(--accent-glow); }
.mc-field-head {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
}
.mc-field-head label {
  font-size: 14px;
  font-weight: 600;
  color: var(--text);
}
.mc-field-val { font-size: 14px; color: var(--muted); }
.mc-field-val strong {
  font-size: 20px;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
}
.mc-field-note {
  font-size: 12px;
  color: var(--muted-2);
  line-height: 1.45;
  margin: 2px 0 0;
}
/* sliders reuse the calc-range look */
.mc-range {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 8px;
  background: linear-gradient(to right,
    var(--accent) 0%,
    var(--accent) var(--fill, 0%),
    var(--border) var(--fill, 0%),
    var(--border) 100%);
  border-radius: 999px;
  outline: none;
  cursor: pointer;
}
.mc-range::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 24px; height: 24px;
  border-radius: 50%;
  background: var(--surface);
  border: 3px solid var(--accent);
  cursor: grab;
  box-shadow: 0 4px 14px -4px var(--accent-glow), 0 1px 2px rgba(15,23,42,0.08);
  transition: transform 0.12s ease;
}
.mc-range::-webkit-slider-thumb:hover { transform: scale(1.12); }
.mc-range::-moz-range-thumb {
  width: 20px; height: 20px;
  border-radius: 50%;
  background: var(--surface);
  border: 3px solid var(--accent);
  cursor: grab;
}
.mc-range:focus { box-shadow: 0 0 0 3px var(--accent-glow); }
.mc-range:disabled { opacity: 0.45; cursor: not-allowed; }
.mc-range-bounds {
  display: flex;
  justify-content: space-between;
  font-size: 11.5px;
  color: var(--muted-2);
  font-variant-numeric: tabular-nums;
}

/* ConnectRate toggle */
.mc-field-toggle {
  padding: 16px;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: 12px;
  gap: 10px;
}
.mc-toggle {
  display: flex;
  align-items: center;
  gap: 12px;
  cursor: pointer;
  user-select: none;
}
.mc-toggle input { position: absolute; opacity: 0; width: 0; height: 0; }
.mc-toggle-track {
  width: 44px; height: 26px;
  border-radius: 999px;
  background: var(--border-strong);
  position: relative;
  flex-shrink: 0;
  transition: background 0.2s ease;
}
.mc-toggle-thumb {
  position: absolute;
  top: 3px; left: 3px;
  width: 20px; height: 20px;
  border-radius: 50%;
  background: #fff;
  box-shadow: 0 1px 3px rgba(0,0,0,0.25);
  transition: transform 0.2s ease;
}
.mc-toggle input:checked + .mc-toggle-track { background: var(--accent); }
.mc-toggle input:checked + .mc-toggle-track .mc-toggle-thumb { transform: translateX(18px); }
.mc-toggle input:focus + .mc-toggle-track { box-shadow: 0 0 0 3px var(--accent-glow); }
.mc-toggle-label { font-size: 14px; font-weight: 600; color: var(--text); }
.mc-toggle-tag {
  font-size: 10.5px;
  font-weight: 700;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--muted);
  background: var(--surface);
  border: 1px solid var(--border);
  padding: 2px 7px;
  border-radius: 999px;
  margin-left: 4px;
}
.mc-subfield {
  display: flex;
  flex-direction: column;
  gap: 6px;
  margin-top: 6px;
  padding-top: 12px;
  border-top: 1px dashed var(--border);
}

/* Results column */
.mc-results { display: flex; flex-direction: column; gap: 18px; }
.mc-funnel {
  padding: 24px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 16px;
  box-shadow: var(--shadow-sm);
}
.mc-funnel-row { text-align: center; }
.mc-funnel-num {
  font-size: 38px;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.mc-funnel-row-final .mc-funnel-num { color: var(--accent); font-size: 46px; }
.mc-funnel-label { font-size: 13.5px; color: var(--muted); margin-top: 4px; }
.mc-funnel-sub { color: var(--muted-2); }
.mc-funnel-arrow {
  display: flex;
  justify-content: center;
  padding: 10px 0;
}
.mc-funnel-arrow span {
  font-size: 12px;
  font-weight: 600;
  color: var(--muted);
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: 999px;
  padding: 3px 12px;
  font-variant-numeric: tabular-nums;
}
.mc-cost {
  padding: 22px 24px;
  background: var(--bg-alt);
  border: 1px solid var(--border);
  border-radius: 16px;
}
.mc-cost-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 0;
  font-size: 14px;
}
.mc-cost-label { color: var(--muted); }
.mc-cost-detail {
  font-size: 11.5px;
  color: var(--muted-2);
  font-variant-numeric: tabular-nums;
  margin-left: 4px;
}
.mc-cost-amount {
  font-weight: 700;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.mc-cost-row-total {
  border-top: 1px solid var(--border);
  margin-top: 6px;
  padding-top: 12px;
}
.mc-cost-row-total .mc-cost-label,
.mc-cost-row-total .mc-cost-amount { font-size: 17px; font-weight: 800; color: var(--text); }
.mc-cost-note {
  font-size: 11.5px;
  color: var(--muted-2);
  line-height: 1.45;
  margin: 12px 0 0;
}
.mc-cta { width: 100%; justify-content: center; }

@media (max-width: 820px) {
  .mc-grid { grid-template-columns: 1fr; gap: 20px; }
}
@media (max-width: 480px) {
  .mc-inputs, .mc-funnel { padding: 20px 16px; }
  .mc-funnel-num { font-size: 32px; }
  .mc-funnel-row-final .mc-funnel-num { font-size: 38px; }
}

/* ─── Homepage: math calculator access gate ──────────────────────────── */
.calc-lock {
  max-width: 640px;
  margin: 0 auto;
  padding: 48px 36px;
  border: 1.5px dashed var(--border-strong);
  border-radius: 18px;
  background: var(--bg-alt);
  text-align: center;
}
.calc-lock-inner {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
.calc-lock-icon {
  color: var(--muted);
  margin-bottom: 6px;
}
.calc-lock-title {
  margin: 0;
  font-size: 24px;
  line-height: 1.2;
  letter-spacing: -0.015em;
  font-weight: 700;
}
.calc-lock-sub {
  margin: 0 auto;
  max-width: 500px;
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--muted);
}
.calc-lock-sub strong { color: var(--text); }
.calc-lock-form {
  display: flex;
  gap: 8px;
  width: 100%;
  max-width: 420px;
  margin-top: 8px;
}
.calc-lock-input {
  flex: 1;
  font: inherit;
  font-size: 16px;
  padding: 12px 16px;
  border: 1px solid var(--border-strong);
  border-radius: 8px;
  background: var(--bg);
  color: var(--text);
  transition: border-color 0.12s, box-shadow 0.12s;
}
.calc-lock-input:focus {
  outline: none;
  border-color: #6366f1;
  box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.18);
}
.calc-lock-error {
  font-size: 13px;
  color: #b91c1c;
  margin: 4px 0 0;
}
.calc-lock-cta {
  font-size: 13px;
  color: var(--muted);
  text-decoration: underline;
  text-decoration-style: dotted;
  text-underline-offset: 3px;
  margin-top: 8px;
}
.calc-lock-cta:hover { color: var(--text); }

/* ─── Homepage: pricing two-up (replaces four-tier grid) ─────────────── */
.pricing-grid-two {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 24px;
  max-width: 920px;
  margin: 0 auto;
}

/* ─── Pricing — data card with slider ($2 per validated contact) ────── */
.pricing-data-card {
  max-width: 920px;
  margin: 0 auto 36px;
  padding: 32px 36px;
  border: 1px solid var(--border-strong);
  border-radius: 18px;
  background: linear-gradient(180deg, var(--bg-alt) 0%, var(--surface) 60%);
  box-shadow: var(--shadow-md);
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.pricing-data-head h3 {
  font-size: 28px;
  font-weight: 700;
  margin: 12px 0 8px;
  color: var(--text);
}
.pricing-amount-inline {
  color: var(--accent, #10b981);
  font-weight: 800;
}
.pricing-data-features {
  margin: 0;
  padding: 0;
}

/* Slider container */
.pricing-slider {
  display: flex;
  flex-direction: column;
  gap: 10px;
  padding: 20px 22px;
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: 12px;
}
.pricing-slider-label {
  font-size: 13px;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.02em;
  text-transform: uppercase;
}
.pricing-slider-values {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  font-size: 15px;
  color: var(--text);
  gap: 16px;
  flex-wrap: wrap;
}
.pricing-slider-count strong,
.pricing-slider-cost strong {
  font-size: 28px;
  font-weight: 800;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.pricing-slider-cost strong { color: #10b981; }
.pricing-slider-bounds {
  display: flex;
  justify-content: space-between;
  font-size: 11.5px;
  color: var(--muted-2);
  margin-top: -4px;
}

/* Slider input — styled cross-browser */
.pricing-slider input[type="range"] {
  -webkit-appearance: none;
  appearance: none;
  width: 100%;
  height: 8px;
  border-radius: 999px;
  background: linear-gradient(
    to right,
    #10b981 0%,
    #10b981 var(--slider-fill, 0%),
    var(--bg-alt) var(--slider-fill, 0%),
    var(--bg-alt) 100%
  );
  outline: none;
  cursor: pointer;
  margin: 4px 0;
}
.pricing-slider input[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  appearance: none;
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid #10b981;
  box-shadow: 0 2px 6px rgba(16,185,129,0.35);
  cursor: pointer;
  transition: transform 0.1s ease;
}
.pricing-slider input[type="range"]::-webkit-slider-thumb:hover {
  transform: scale(1.1);
}
.pricing-slider input[type="range"]::-moz-range-thumb {
  width: 22px;
  height: 22px;
  border-radius: 50%;
  background: #fff;
  border: 3px solid #10b981;
  box-shadow: 0 2px 6px rgba(16,185,129,0.35);
  cursor: pointer;
}
.pricing-slider input[type="range"]:focus {
  box-shadow: 0 0 0 3px rgba(16,185,129,0.25);
}

/* The "Line item 2 — the calling" separator between data card and call tiers */
.pricing-line-divider {
  text-align: center;
  margin: 8px 0 24px;
  position: relative;
  font-size: 12px;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--muted);
  font-weight: 600;
}
.pricing-line-divider::before,
.pricing-line-divider::after {
  content: "";
  position: absolute;
  top: 50%;
  width: 30%;
  height: 1px;
  background: var(--border);
}
.pricing-line-divider::before { left: 0; }
.pricing-line-divider::after  { right: 0; }
.pricing-line-divider-text {
  background: var(--bg-alt);
  padding: 0 14px;
  position: relative;
}

@media (max-width: 640px) {
  .pricing-data-card { padding: 24px 20px; }
  .pricing-data-head h3 { font-size: 22px; }
  .pricing-slider { padding: 16px; }
  .pricing-slider-count strong,
  .pricing-slider-cost strong { font-size: 22px; }
  .pricing-line-divider::before,
  .pricing-line-divider::after { width: 18%; }
}
.pricing-fineprint {
  margin: 28px auto 0;
  max-width: 720px;
  text-align: center;
  font-size: 13.5px;
  line-height: 1.55;
  color: var(--muted);
  font-style: italic;
}

/* ─── Homepage: "What we believe" manifesto (after hero, before proof card) ─── */
.manifesto {
  padding: 56px 0 24px;
}
.manifesto-kicker {
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--muted);
  margin: 0 0 28px;
  text-align: center;
}
.manifesto-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
  gap: 28px 36px;
  max-width: 960px;
  margin: 0 auto;
}
.manifesto-row {
  display: flex;
  align-items: flex-start;
  gap: 16px;
}
.manifesto-num {
  font-family: 'Instrument Serif', Georgia, serif;
  font-size: 36px;
  line-height: 1;
  color: var(--muted-2);
  flex-shrink: 0;
  padding-top: 4px;
  width: 44px;
}
.manifesto-body h3 {
  margin: 0 0 6px;
  font-size: 18px;
  line-height: 1.25;
  letter-spacing: -0.01em;
  font-weight: 700;
  color: var(--text);
}
.manifesto-body p {
  margin: 0;
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--muted);
}
.manifesto-body p em {
  font-style: italic;
  color: var(--text);
  font-weight: 600;
}

/* ─── Homepage: "Define or scale" modes section ──────────────────────── */
.modes {
  padding: 64px 0 56px;
}
.modes-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
  gap: 24px;
  max-width: 980px;
  margin: 0 auto;
}
.mode-card {
  border: 1px solid var(--border-strong);
  border-radius: 14px;
  background: var(--bg-alt);
  padding: 28px 28px 24px;
  position: relative;
  overflow: hidden;
}
.mode-card::before {
  content: '';
  position: absolute;
  inset: 0 0 auto 0;
  height: 3px;
}
.mode-card:nth-child(1)::before {
  background: linear-gradient(90deg, #6366f1, #3b82f6);
}
.mode-card:nth-child(2)::before {
  background: linear-gradient(90deg, #f59e0b, #10b981);
}
.mode-tag {
  display: inline-block;
  font-size: 11px;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  padding: 4px 10px;
  border-radius: 6px;
  margin: 0 0 14px;
}
.mode-tag-scale {
  background: rgba(99, 102, 241, 0.12);
  color: #4338ca;
}
.mode-tag-define {
  background: rgba(245, 158, 11, 0.14);
  color: #b45309;
}
.mode-card h3 {
  margin: 0 0 12px;
  font-size: 21px;
  line-height: 1.25;
  letter-spacing: -0.015em;
  font-weight: 700;
  color: var(--text);
}
.mode-card p {
  margin: 0 0 14px;
  font-size: 14.5px;
  line-height: 1.55;
  color: var(--muted);
}
.mode-card-out {
  margin: 0;
  padding-top: 12px;
  border-top: 1px dashed var(--border);
  font-size: 13.5px;
  color: var(--text);
}
.mode-card-out strong {
  color: var(--text);
  font-weight: 700;
}

/* ─── Homepage: case study (replaces fake testimonials) ──────────────── */
.case-study {
  max-width: 880px;
  margin: 0 auto;
  display: grid;
  grid-template-columns: minmax(180px, 280px) 1fr;
  gap: 36px;
  align-items: start;
  padding: 36px 32px;
  border: 1px solid var(--border-strong);
  border-radius: 16px;
  background: var(--bg);
}
.case-study-stat {
  text-align: center;
  padding: 24px 16px;
  background: linear-gradient(135deg, rgba(99, 102, 241, 0.08), rgba(16, 185, 129, 0.08));
  border-radius: 12px;
  border: 1px solid rgba(99, 102, 241, 0.25);
}
.case-study-num {
  font-family: 'Instrument Serif', Georgia, serif;
  font-size: 56px;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--text);
  margin-bottom: 8px;
}
.case-study-label {
  font-size: 12.5px;
  line-height: 1.45;
  color: var(--muted);
  font-weight: 500;
}
.case-study-body p {
  margin: 0 0 12px;
  font-size: 15px;
  line-height: 1.6;
  color: var(--text);
}
.case-study-body p:last-of-type { margin-bottom: 0; }
.case-study-meta {
  display: flex !important;
  flex-wrap: wrap;
  gap: 16px;
  font-size: 12px !important;
  color: var(--muted) !important;
  margin: 16px 0 0 !important;
  padding-top: 14px;
  border-top: 1px dashed var(--border);
}
.case-study-meta span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
@media (max-width: 720px) {
  .case-study {
    grid-template-columns: 1fr;
  }
}

/* ─── Mobile nav: hamburger + slide-in panel (≤880px) ─────────────────── */

/* Hamburger button — hidden on desktop, visible on mobile */
.nav-toggle {
  display: none;
  width: 44px;
  height: 44px;
  border: 1px solid var(--border-strong);
  background: transparent;
  border-radius: 999px;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  gap: 4px;
  padding: 0;
  cursor: pointer;
  flex-shrink: 0;
  transition: border-color 0.15s, background 0.15s;
}
.nav-toggle:hover {
  border-color: var(--accent);
}
.nav-toggle-bar {
  width: 18px;
  height: 1.5px;
  background: var(--text);
  display: block;
  transition: transform 0.22s, opacity 0.22s;
  transform-origin: center;
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(1) {
  transform: translateY(5.5px) rotate(45deg);
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(2) {
  opacity: 0;
}
.nav-toggle[aria-expanded="true"] .nav-toggle-bar:nth-child(3) {
  transform: translateY(-5.5px) rotate(-45deg);
}

/* Mobile menu — full-screen overlay with slide-in panel from the right */
.mobile-menu {
  position: fixed;
  inset: 0;
  z-index: 100;
}
.mobile-menu[hidden] { display: none; }
.mobile-menu-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, 0.5);
  -webkit-backdrop-filter: blur(4px);
  backdrop-filter: blur(4px);
  opacity: 0;
  animation: mobile-menu-fade-in 0.18s ease forwards;
}
@keyframes mobile-menu-fade-in {
  to { opacity: 1; }
}
.mobile-menu-panel {
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: min(86vw, 360px);
  background: var(--bg);
  display: flex;
  flex-direction: column;
  padding: 18px 24px 24px;
  box-shadow: -12px 0 36px -12px rgba(15, 23, 42, 0.25);
  transform: translateX(100%);
  animation: mobile-menu-slide-in 0.22s cubic-bezier(0.16, 1, 0.3, 1) forwards;
}
@keyframes mobile-menu-slide-in {
  to { transform: translateX(0); }
}
.mobile-menu-close {
  align-self: flex-end;
  background: transparent;
  border: 1px solid var(--border);
  border-radius: 999px;
  width: 40px;
  height: 40px;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  color: var(--muted);
  transition: color 0.15s, border-color 0.15s;
  padding: 0;
}
.mobile-menu-close:hover {
  color: var(--text);
  border-color: var(--border-strong);
}
.mobile-menu-links {
  display: flex;
  flex-direction: column;
  margin-top: 12px;
}
.mobile-menu-links a {
  display: block;
  padding: 16px 0;
  font-size: 17px;
  font-weight: 500;
  color: var(--text);
  border-bottom: 1px solid var(--border);
  letter-spacing: -0.005em;
}
.mobile-menu-links a:last-child {
  border-bottom: none;
}
.mobile-menu-links a.is-active {
  color: var(--accent);
}
.mobile-menu-login {
  margin-top: 4px;
  font-weight: 600 !important;
}
.mobile-menu-footer {
  margin-top: auto;
  padding-top: 20px;
  display: flex;
  align-items: center;
  gap: 12px;
  border-top: 1px solid var(--border);
}
.mobile-menu-footer .btn {
  flex: 1;
}
.mobile-menu-footer .theme-toggle {
  width: 44px;
  height: 44px;
  flex-shrink: 0;
}

/* Body lock when menu is open — prevents background scrolling */
body.mobile-menu-open {
  overflow: hidden;
}

/* Show hamburger and tweak nav-cta on mobile */
@media (max-width: 880px) {
  .nav-toggle {
    display: inline-flex;
  }
  /* Make the "Book a call" nav button a real tap target on mobile */
  .nav-cta {
    padding: 11px 16px;
    font-size: 14px;
  }
  /* Theme toggle hidden from the nav bar on mobile — it's reachable from the slide-in menu */
  .nav-inner .theme-toggle {
    display: none;
  }
}

/* Calc password gate — tighter padding on tiny phones so input + submit fit */
@media (max-width: 480px) {
  .calc-lock {
    padding: 32px 20px;
  }
  .calc-lock-title {
    font-size: 20px;
  }
  .calc-lock-form {
    gap: 6px;
  }
  .calc-lock-input {
    padding: 11px 12px;
    font-size: 15px;
  }
}

/* No-show area (Meetings tab) — added Jun 3 2026 */
.meetings-section-label{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:20px 2px 10px}
.meetings-section-label-noshow{color:#b45309}
.meeting-row.is-noshow{border-left:3px solid #f59e0b;background:rgba(245,158,11,0.07)}
.meeting-noshow-badge{background:#fde68a !important;color:#92400e !important}
.meeting-phone,
.meeting-contact{margin-top:5px;font-size:13px;font-weight:500}
.meeting-phone a,
.meeting-contact a{color:var(--accent-strong);text-decoration:none}
.meeting-phone a:hover,
.meeting-contact a:hover{text-decoration:underline}
.meeting-noshow-note{margin-top:7px;font-size:.82rem;line-height:1.4;color:var(--muted);max-width:46ch}

/* Conversations row — show contact NAME (primary) + role (muted) — Jun 3 2026 */
.col-who-name{display:block;font-weight:600}
.col-who-role{display:block;font-size:.78rem;color:var(--muted);margin-top:1px}

/* Campaign Report card + download button — Jun 3 2026 */
.campaign-report .cr-funnel{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin:14px 0 4px}
.cr-stat{text-align:center;min-width:84px}
.cr-stat-num{font-size:1.5rem;font-weight:700;color:var(--text)}
.cr-stat-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.cr-arrow{color:var(--muted);font-size:1.1rem}
.cr-attempts{margin:16px 0 4px}
.cr-section-label{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);margin:0 0 8px}
.cr-attempt-row{display:flex;align-items:center;gap:10px;margin:5px 0}
.cr-attempt-label{font-size:.82rem;color:var(--muted);min-width:74px}
.cr-attempt-bar{flex:1;height:8px;background:var(--border);border-radius:6px;overflow:hidden}
.cr-attempt-fill{display:block;height:100%;background:var(--accent-strong);border-radius:6px}
.cr-attempt-pct{font-size:.82rem;font-weight:600;min-width:40px;text-align:right}
.cr-notes{margin-top:14px}
.call-download-btn{margin-top:10px;display:inline-flex;align-items:center}

/* Call modal spacing + transcript copy — Jun 3 2026 */
.call-modal-company{margin:8px 0 4px;line-height:1.15}
.call-modal-role{margin:0;color:var(--muted)}
.call-modal-section{margin-top:26px}
.call-modal-section-label{margin:0 0 10px}
.call-modal-description{line-height:1.6;margin:0}
.call-modal-transcript-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.call-modal-transcript-head .call-modal-section-label{margin:0}
.call-modal-transcript{max-height:240px;overflow:auto;background:rgba(255,255,255,0.045);border:1px solid var(--border);border-radius:10px;padding:14px 16px;font-size:.9rem;line-height:1.62;white-space:pre-wrap;color:var(--text)}
.call-copy-transcript{flex:none;white-space:nowrap}
.reporting-content{max-width:760px}

/* Campaign report — data-quality pills + voicemail result — Jun 3 2026 */
.cr-quality{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px}
.cr-pill{font-size:.82rem;background:rgba(255,255,255,0.05);border:1px solid var(--border);border-radius:20px;padding:5px 12px;color:var(--muted)}
.cr-pill strong{color:var(--text)}
.cr-pill-bad,.cr-pill-bad strong{color:#b45309}
.cr-vm-result{margin:14px 0 0;font-size:.85rem;color:var(--muted);font-style:italic}

/* Funnel % arrows + Research tab — Jun 3 2026 */
.cr-arrow{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:2px}
.cr-arrow-pct{font-size:.72rem;font-weight:700;color:var(--accent-strong);line-height:1}
.cr-arrow-glyph{color:var(--muted)}
.research-content{max-width:760px}
.research-head h3{margin:0 0 4px}
.research-sub{margin:0 0 16px;color:var(--muted);font-size:.9rem;max-width:62ch}
.research-list{display:flex;flex-direction:column;gap:8px}
.research-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;background:rgba(255,255,255,0.03);border:1px solid var(--border);border-radius:10px}
.research-co{font-weight:600}
.research-name{font-size:.85rem;color:var(--muted);margin-top:2px}
.research-phone{font-family:ui-monospace,monospace}
.research-reason{font-size:.78rem;color:#b45309;background:rgba(180,83,9,0.12);border-radius:20px;padding:4px 10px;white-space:nowrap;text-transform:capitalize}

/* ── Campaign selector pills ────────────────────────────────── */
#campaign-selector{padding:12px 0 4px 0}
.campaign-pills{display:flex;gap:8px;flex-wrap:wrap}
.campaign-pill{
  display:inline-flex;align-items:center;gap:6px;
  padding:6px 16px;border-radius:100px;
  font-size:13px;font-weight:500;letter-spacing:.01em;
  border:1px solid var(--border,rgba(255,255,255,.12));
  background:rgba(255,255,255,.04);
  color:var(--muted,#a1a1aa);
  cursor:pointer;transition:all .15s ease;
  white-space:nowrap;
}
.campaign-pill:hover{border-color:rgba(255,255,255,.25);color:var(--text,#f5f5f7);background:rgba(255,255,255,.07)}
.campaign-pill.is-active{
  background:rgba(94,162,255,.15);
  border-color:rgba(94,162,255,.4);
  color:var(--accent,#5ea2ff);
}
.campaign-pill-check{
  font-size:10px;opacity:.7;
  background:rgba(94,162,255,.2);
  border-radius:20px;padding:1px 5px;
}

/* ── Campaign report: pilot completion bar ──────────────────── */
.cr-completion{margin-top:18px}
.cr-completion-head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:6px}
.cr-completion-title{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}
.cr-completion-pct{font-size:.95rem;font-weight:700;color:#34d399}
.cr-completion-bar{height:8px;border-radius:100px;background:rgba(255,255,255,0.08);overflow:hidden}
.cr-completion-fill{display:block;height:100%;border-radius:100px;background:linear-gradient(90deg,#34d399,#10b981)}
.cr-completion-basis{margin:6px 0 0;font-size:.8rem;color:var(--muted)}

/* ── Campaign report: Download PDF button ───────────────────── */
.campaign-report{position:relative}
.pdf-download-btn{position:absolute;top:20px;right:24px;z-index:2;display:inline-flex;align-items:center;gap:6px;padding:7px 15px;border-radius:100px;font-size:13px;font-weight:600;cursor:pointer;border:1px solid var(--border,rgba(255,255,255,0.14));background:rgba(255,255,255,0.05);color:var(--text,#f5f5f7);transition:all .15s ease}
.pdf-download-btn:hover{background:rgba(255,255,255,0.1);border-color:rgba(94,162,255,0.45);color:var(--accent,#5ea2ff)}
/* keep the report header text clear of the button */
.campaign-report .mi-header{padding-right:150px}
@media (max-width:560px){.pdf-download-btn{position:static;margin:0 0 14px auto;display:flex}.campaign-report .mi-header{padding-right:0}}

/* ============================================================
   Clean narrative homepage (Jun 10 2026) — index.html only.
   Namespaced: .hero-clean, .story, .vs, .proof-min, .how-min,
   .price-min. Safe for portals — no shared classes modified.
   ============================================================ */

.hero-clean .hero-inner { text-align: center; max-width: 880px; margin: 0 auto; }
.hero-clean .live-pill { margin-left: auto; margin-right: auto; }
.clean-h1 {
  font-size: clamp(3rem, 8.5vw, 5.6rem);
  line-height: 1.04;
  letter-spacing: -0.045em;
  font-weight: 800;
  margin: 0.6em 0 0.35em;
  text-wrap: balance;
}
.clean-lede {
  font-size: 1.2rem;
  line-height: 1.65;
  color: var(--muted);
  max-width: 36rem;
  margin: 0 auto 2.2rem;
}
.hero-cta-clean { display: flex; align-items: center; justify-content: center; gap: 1.4rem; flex-wrap: wrap; }
.quiet-link {
  color: var(--muted);
  text-decoration: none;
  font-weight: 500;
  border-bottom: 1px solid var(--border-strong);
  padding-bottom: 1px;
  transition: color 0.15s ease, border-color 0.15s ease;
}
.quiet-link:hover { color: var(--text); border-color: var(--text); }
.mini-meta { margin-top: 2.4rem; font-size: 0.86rem; color: var(--muted-2); letter-spacing: 0.01em; }

/* Story — single narrow column, type-led */
.story { padding: 6rem 0 3rem; }
.story-inner { max-width: 42rem; margin: 0 auto; padding: 0 24px; }
.story-inner p { font-size: 1.22rem; line-height: 1.78; color: var(--muted); margin: 0 0 1.9rem; }
.story-inner p strong { color: var(--text); font-weight: 650; }
.story-inner h2 { font-size: clamp(1.9rem, 4.4vw, 2.6rem); letter-spacing: -0.03em; line-height: 1.12; margin: 0.4rem 0 1.2rem; text-wrap: balance; }

/* Them vs Us */
.vs { padding: 4rem 0 5rem; }
.vs-title { text-align: center; font-size: clamp(2rem, 5vw, 3rem); letter-spacing: -0.035em; margin-bottom: 2.6rem; }
.vs-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.2rem; max-width: 820px; margin: 0 auto; }
.vs-col { border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 2rem 2.1rem; background: var(--surface); }
.vs-col h3 { margin: 0 0 1.2rem; font-size: 1.05rem; letter-spacing: 0.02em; text-transform: uppercase; }
.vs-col ul { list-style: none; margin: 0; padding: 0; }
.vs-col li { padding: 0.55rem 0; font-size: 1.02rem; line-height: 1.5; }
.vs-col li:first-child { border-top: 0; }
.vs-them h3 { color: var(--muted-2); }
.vs-them li { color: var(--muted-2); }
.vs-us { border-color: var(--border-strong); box-shadow: var(--shadow-md); }
.vs-us h3 { color: var(--accent-2); }
.vs-us li { color: var(--text); }
@media (max-width: 720px) { .vs-grid { grid-template-columns: 1fr; } }

/* Proof + How — same narrow column as story */
.proof-min { padding: 4rem 0 2rem; }
.proof-min-links { margin-top: 0.4rem; }
.how-min { padding: 4rem 0 2rem; }
.steps-min { list-style: none; counter-reset: step; margin: 2rem 0 0; padding: 0; }
.steps-min li {
  counter-increment: step;
  position: relative;
  padding: 0 0 1.9rem 3.4rem;
  font-size: 1.18rem;
  line-height: 1.7;
  color: var(--muted);
}
.steps-min li strong { color: var(--text); font-weight: 650; }
.steps-min li::before {
  content: counter(step);
  position: absolute;
  left: 0; top: 0.1rem;
  width: 2.1rem; height: 2.1rem;
  border: 1px solid var(--border-strong);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 0.95rem; font-weight: 700; color: var(--text);
}

/* Pricing — one centered card */
.price-min { padding: 5rem 0; }
.price-min .center { text-align: center; }
.price-min h2 { font-size: clamp(2rem, 5vw, 3rem); letter-spacing: -0.035em; margin-bottom: 2.4rem; }
.price-solo {
  max-width: 520px; margin: 0 auto; text-align: center;
  border: 1px solid var(--border-strong); border-radius: var(--radius-lg);
  background: var(--surface); box-shadow: var(--shadow-lg);
  padding: 2.6rem 2.4rem 2.4rem;
}
.price-solo .pricing-badge { margin: 0 auto 1.4rem; }
.price-solo-amount { font-size: 3.4rem; font-weight: 800; letter-spacing: -0.04em; line-height: 1; }
.price-solo-amount span { font-size: 1rem; font-weight: 500; color: var(--muted); letter-spacing: 0; }
.price-solo-sub { color: var(--muted); font-size: 1.02rem; line-height: 1.65; margin: 1.2rem 0 1.4rem; }
.price-solo-sub strong { color: var(--text); }
.price-solo-features { list-style: none; margin: 0 0 1.8rem; padding: 0; text-align: left; }
.price-solo-features li { padding: 0.55rem 0 0.55rem 1.6rem; position: relative; color: var(--muted); font-size: 0.98rem; line-height: 1.5; border-top: 1px solid var(--border); }
.price-solo-features li:first-child { border-top: 0; }
.price-solo-features li::before { content: "→"; position: absolute; left: 0; color: var(--accent-2); }
.price-solo .fineprint { margin-top: 1.1rem; }
/* --- pricing: data add-on amount (smaller than the headline $200) --- */
.price-addon-amount { font-size: 2.3rem; margin-top: 0.2rem; }
.price-addon-tam { font-size: 0.96rem; }
.price-addon-example { background: var(--accent-soft); border-radius: 8px; padding: 0.9rem 1.1rem; font-size: 0.96rem; }
/* --- pricing v3: simple hourly + data + blocks (Jun 29 2026) --- */
.price-solo-lead { font-size: 1.05rem; }
.price-two { display: flex; flex-direction: column; gap: 0.6rem; margin: 1.4rem 0 1.1rem; }
.price-line { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 0.9rem 1.15rem; border: 1px solid var(--border); border-radius: 11px; }
.price-line-label { font-weight: 600; color: var(--text); text-align: left; }
.price-line-label em { font-style: normal; font-weight: 500; color: var(--muted); font-size: 0.82em; margin-left: 0.4rem; }
.price-line-amt { font-weight: 800; font-size: 1.5rem; letter-spacing: -0.02em; white-space: nowrap; }
.price-line-amt small { font-size: 0.78rem; font-weight: 500; color: var(--muted); }
.price-blocks { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0.6rem; margin: 1rem 0 0.5rem; }
.price-block { border: 1px solid var(--border); border-radius: 11px; padding: 0.95rem 0.5rem; text-align: center; }
.price-block span { display: block; font-size: 0.8rem; color: var(--muted); margin-bottom: 0.3rem; }
.price-block strong { font-size: 1.15rem; letter-spacing: -0.02em; }
@media (max-width: 560px){ .price-blocks { grid-template-columns: repeat(2,1fr); } }
/* --- simple inline calculator (Jun 29 2026) --- */
.simplecalc { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1fr); gap: 2rem; align-items: start; max-width: 980px; margin: 0 auto; }
.simplecalc > * { min-width: 0; }
@media (max-width: 820px){ .simplecalc { grid-template-columns: minmax(0,1fr); gap: 1.6rem; } }
.sc-controls { display: flex; flex-direction: column; gap: 1.5rem; }
.sc-field { text-align: left; }
.sc-label { display: block; font-weight: 600; margin-bottom: 0.6rem; }
.sc-field-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 0.6rem; }
.sc-field-head .sc-label { margin-bottom: 0; }
.sc-val { color: var(--muted); font-size: 0.95rem; }
.sc-val strong { color: var(--text); }
.sc-note { color: var(--muted); font-size: 0.85rem; margin: 0.5rem 0 0; line-height: 1.5; }
.sc-hours { display: grid; grid-template-columns: repeat(4,1fr); gap: 0.5rem; }
.sc-hours button { padding: 0.7rem 0; border: 1px solid var(--border); border-radius: 9px; background: transparent; color: var(--text); font: inherit; font-weight: 700; cursor: pointer; transition: all .15s; }
.sc-hours button:hover { border-color: var(--accent-strong); }
.sc-hours button.is-active { background: var(--accent-strong); border-color: var(--accent-strong); color: #fff; }
.sc-results { background: var(--accent-soft); border-radius: 14px; padding: 1.8rem; text-align: center; }
.sc-headline { color: var(--muted); font-size: 1rem; line-height: 1.55; margin: 0 0 1.3rem; }
.sc-headline strong { color: var(--text); }
.sc-funnel { display: flex; align-items: center; justify-content: center; gap: 1rem; margin-bottom: 1.4rem; }
.sc-stat { flex: 1; }
.sc-num { font-size: 2.4rem; font-weight: 800; letter-spacing: -0.03em; line-height: 1; }
.sc-stat-final .sc-num { color: var(--accent-strong); }
.sc-lbl { font-size: 0.85rem; color: var(--muted); margin-top: 0.35rem; }
.sc-arrow { font-size: 1.3rem; color: var(--muted); }
.sc-cost { font-size: 1.05rem; margin: 0 0 0.4rem; }
.sc-cost-note { font-size: 0.85rem; color: var(--muted); line-height: 1.5; margin: 0 0 1.4rem; }
/* --- pricing: proof gate + outcome tiers (Jun 26 2026) --- */
.price-step { display: block; text-align: center; font-size: 12px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent-strong); margin: 0 0 1rem; }
.price-step-2 { margin-top: 2.1rem; padding-top: 2rem; border-top: 1px solid var(--border); }
.price-gate { margin: 1.6rem 0 0.4rem; padding: 1rem 1.25rem; border-left: 3px solid var(--accent-strong); border-radius: 8px; background: var(--accent-soft); font-size: 0.94rem; line-height: 1.6; color: var(--text); text-align: left; }
.price-gate strong { color: var(--text); }
.price-tiers { display: flex; flex-direction: column; gap: 0.6rem; margin: 1.1rem 0 0.5rem; }
.price-tier { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 1rem; padding: 0.95rem 1.2rem; border: 1px solid var(--border); border-radius: 12px; transition: border-color 0.18s ease, transform 0.18s ease; }
.price-tier:hover { border-color: var(--accent); transform: translateY(-1px); }
.pt-meetings { font-weight: 650; color: var(--text); font-size: 1.02rem; text-align: left; }
.pt-meetings small { font-weight: 500; color: var(--muted); font-size: 0.8rem; }
.pt-rate { color: var(--muted); font-size: 0.9rem; text-align: right; }
.pt-total { font-weight: 750; font-size: 1.2rem; color: var(--text); text-align: right; letter-spacing: -0.02em; }
.pt-total small { font-weight: 500; color: var(--muted); font-size: 0.78rem; letter-spacing: 0; }
@media (max-width: 540px) { .price-tier { grid-template-columns: 1fr auto; } .pt-rate { display: none; } }

.final-cta-title { font-size: clamp(2.2rem, 6vw, 3.6rem); letter-spacing: -0.04em; }

/* STATS BAND — Summit-style numbers row (added Jun 16 2026) */
.stats-band { padding: 76px 0; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.stats-band .kicker { text-align: center; margin-bottom: 40px; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; }
.stat { text-align: center; }
.stat-num { font-family: "Instrument Serif", Georgia, serif; font-weight: 400; font-size: clamp(2.6rem, 5vw, 3.9rem); line-height: 1; color: var(--accent-strong); margin-bottom: 14px; }
.stat-label { font-size: 0.98rem; line-height: 1.55; color: var(--muted); max-width: 19rem; margin: 0 auto; }
.stat-label strong { color: var(--text); font-weight: 600; }
@media (max-width: 880px) { .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 40px 24px; } }
@media (max-width: 520px) { .stats-grid { grid-template-columns: 1fr; } }

/* ─── pstrip — unified portal metrics strip (Jul 2 2026 redesign) ───
   One card, equal cells split by hairlines, uniform type scale. Replaces the
   four uneven .portal-stat cards on the stats bar. Old classes left intact. */
.pstrip {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
}
.pstrip-row {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
.pstrip-cell {
  padding: 20px 22px 18px;
  border-left: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  gap: 7px;
  min-width: 0;
}
.pstrip-cell:first-child { border-left: none; }
.pstrip-num {
  font-size: 30px;
  font-weight: 800;
  letter-spacing: -0.02em;
  line-height: 1;
  color: var(--text);
  font-variant-numeric: tabular-nums;
  display: flex;
  align-items: baseline;
  gap: 5px;
}
.pstrip-denom {
  font-size: 15px;
  font-weight: 600;
  color: var(--muted-2);
  letter-spacing: 0;
}
.pstrip-label {
  font-size: 11.5px;
  font-weight: 600;
  color: var(--muted);
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.pstrip-sub {
  font-size: 12px;
  color: var(--muted);
  font-weight: 500;
  margin-top: auto;
}
.pstrip-bar {
  width: 100%;
  max-width: 180px;
  height: 4px;
  border-radius: 999px;
  background: var(--bg-alt);
  overflow: hidden;
}
.pstrip-bar > div {
  height: 100%;
  border-radius: 999px;
  background: var(--accent-strong, #0a84ff);
  transition: width 0.3s;
}
.pstrip-cell-accent .pstrip-num { color: var(--accent-strong, #0a84ff); }
.pstrip-meetings {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 22px;
  border-top: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 60%, var(--bg-alt));
}
.pstrip-meet-label {
  font-size: 11px;
  font-weight: 700;
  color: var(--muted);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  white-space: nowrap;
}
.pstrip-pills {
  display: flex;
  gap: 8px;
  overflow-x: auto;
  scrollbar-width: none;
  padding: 2px 0;
}
.pstrip-pills::-webkit-scrollbar { display: none; }
.pstrip-pill {
  display: inline-flex;
  align-items: baseline;
  gap: 5px;
  padding: 5px 12px;
  border-radius: 999px;
  background: rgba(16, 185, 129, 0.08);
  border: 1px solid rgba(16, 185, 129, 0.25);
  font-size: 12px;
  color: var(--text);
  white-space: nowrap;
  flex-shrink: 0;
}
.pstrip-pill strong { font-weight: 700; }
.pstrip-pill-sep { color: var(--muted-2); }
.pstrip-pill-held {
  background: rgba(16, 185, 129, 0.16);
  border-color: rgba(16, 185, 129, 0.45);
}
.pstrip-pill-check { color: #059669; font-weight: 800; }
@media (max-width: 880px) {
  .pstrip-row { grid-template-columns: repeat(2, 1fr); }
  .pstrip-cell { border-top: 1px solid var(--border); padding: 16px 18px 14px; }
  .pstrip-cell:nth-child(-n+2) { border-top: none; }
  .pstrip-cell:nth-child(odd) { border-left: none; }
  .pstrip-num { font-size: 24px; }
}

/* ─── pfun — Dialer activity funnel (Jul 2 2026, Corey's reference design) ───
   Big numbers with amber conversion arrows between stages, open card layout,
   source footnote. Replaces the pstrip cells on the stats bar. */
.pfun {
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  padding: 24px 28px 18px;
}
.pfun-title {
  font-size: 17px;
  font-weight: 800;
  letter-spacing: -0.01em;
  color: var(--text);
  margin-bottom: 18px;
}
.pfun-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 8px;
  flex-wrap: wrap;
}
.pfun-stat {
  text-align: center;
  min-width: 110px;
  flex: 1 1 auto;
}
.pfun-num {
  font-size: 42px;
  font-weight: 800;
  letter-spacing: -0.03em;
  line-height: 1;
  color: var(--text);
  font-variant-numeric: tabular-nums;
}
.pfun-label {
  margin-top: 8px;
  font-size: 14px;
  font-weight: 700;
  color: var(--text);
}
.pfun-sub {
  margin-top: 4px;
  font-size: 12.5px;
  font-weight: 600;
  color: #b45309;
}
.pfun-arrow {
  text-align: center;
  padding-top: 12px;
  min-width: 84px;
  flex: 0 0 auto;
}
.pfun-arrow-pct {
  font-size: 17px;
  font-weight: 800;
  color: #b45309;
  letter-spacing: -0.01em;
}
.pfun-arrow-label {
  margin-top: 3px;
  font-size: 10.5px;
  font-weight: 700;
  color: var(--muted);
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.pfun-foot {
  margin-top: 18px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
  font-size: 11.5px;
  color: var(--muted-2);
}
.pfun-meetings {
  margin: 12px -28px -18px;
  border-radius: 0 0 var(--radius) var(--radius);
}
[data-theme="dark"] .pfun-sub,
[data-theme="dark"] .pfun-arrow-pct { color: #fbbf24; }
@media (max-width: 880px) {
  .pfun { padding: 18px 18px 14px; }
  .pfun-row { justify-content: flex-start; }
  .pfun-num { font-size: 30px; }
  .pfun-arrow { min-width: 64px; padding-top: 8px; }
}

/* ============================================================
   Marketing site -- clean/premium pass (Jul 6 2026, v2).
   Public pages only, scoped under body.site-marketing so nothing
   touches client portals. LIGHT MODE ONLY (theme toggle removed;
   the inline <script> forces data-theme=light). Apple-style: solid
   white nav, one consistent vertical rhythm, generous whitespace,
   one precise blue used sparingly. Everything is !important-free but
   written to beat the older base ".hero-clean / .story / .vs" block.
   ============================================================ */
body.site-marketing {
  --mk-ink: #1d1d1f;
  --mk-muted: #6e6e73;
  --mk-faint: #86868b;
  --mk-bg: #ffffff;
  --mk-bg-alt: #f5f5f7;
  --mk-surface: #ffffff;
  --mk-line: rgba(0, 0, 0, 0.09);
  --mk-signal: #0071e3;
  --mk-signal-dim: #0058b0;
  --mk-signal-soft: rgba(0, 113, 227, 0.07);
  --mk-display: 'Inter', -apple-system, BlinkMacSystemFont, sans-serif;
  --mk-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  --mk-y: 120px;                 /* one vertical rhythm for every section */
  background: var(--mk-bg);
  color: var(--mk-ink);
  font-family: var(--mk-display);
}
body.site-marketing main { background: var(--mk-bg); }

/* --- one consistent section rhythm; kill the old per-section paddings --- */
body.site-marketing .hero,
body.site-marketing .story,
body.site-marketing .vs,
body.site-marketing .stats-band,
body.site-marketing .proof-min,
body.site-marketing .how-min,
body.site-marketing #data.section,
body.site-marketing .price-min,
body.site-marketing #calculator.section,
body.site-marketing #fit.section,
body.site-marketing #faq.section,
body.site-marketing #skill.section,
body.site-marketing .section-cta {
  padding-top: var(--mk-y);
  padding-bottom: var(--mk-y);
}
body.site-marketing .hero { padding-top: 56px; }         /* clears the fixed nav, hero sits high */

/* --- Nav: solid white, hairline, subtle shadow only when scrolled --- */
body.site-marketing .nav {
  background: rgba(255, 255, 255, 0.92);
  border-bottom: 1px solid transparent;
  backdrop-filter: saturate(180%) blur(16px);
  -webkit-backdrop-filter: saturate(180%) blur(16px);
}
body.site-marketing .nav.is-scrolled {
  background: rgba(255, 255, 255, 0.92);
  border-bottom-color: var(--mk-line);
  box-shadow: 0 1px 0 rgba(0, 0, 0, 0.02);
}
body.site-marketing .brand-mark { color: var(--mk-signal); }
body.site-marketing .brand-name,
body.site-marketing .brand-tag { color: var(--mk-ink); }
body.site-marketing .nav-links a:not(.btn) { color: var(--mk-ink); font-weight: 500; }
body.site-marketing .nav-links a:not(.btn):hover { color: var(--mk-signal); }
body.site-marketing .nav-login { border-color: var(--mk-line); color: var(--mk-ink); }
body.site-marketing .nav-login:hover { background: var(--mk-signal-soft); border-color: var(--mk-signal); color: var(--mk-signal); }
body.site-marketing .cross-promo { background: var(--mk-bg-alt); color: var(--mk-muted); border-bottom-color: var(--mk-line); }
body.site-marketing .cross-promo a { color: var(--mk-signal); }
body.site-marketing .nav-toggle-bar { background: var(--mk-ink); }

/* --- Buttons: solid pill, quiet confident hover --- */
body.site-marketing .btn {
  border-radius: 980px;
  font-family: var(--mk-display);
  font-weight: 500;
  letter-spacing: -0.01em;
  transition: background-color 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease;
}
body.site-marketing .btn-lg { padding: 15px 30px; font-size: 17px; }
body.site-marketing .btn-primary { background: var(--mk-signal); color: #fff; border: none; box-shadow: none; }
body.site-marketing .btn-primary:hover { background: var(--mk-signal-dim); box-shadow: 0 10px 24px -10px rgba(0, 113, 227, 0.55); transform: translateY(-1px); }
body.site-marketing .btn-secondary { background: transparent; color: var(--mk-ink); border: 1px solid var(--mk-line); box-shadow: none; }
body.site-marketing .btn-secondary:hover { background: var(--mk-signal-soft); border-color: var(--mk-signal); transform: none; }

/* --- Eyebrow / kicker --- */
body.site-marketing .kicker {
  font-family: var(--mk-display);
  font-weight: 600;
  font-size: 13px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--mk-faint);
}
body.site-marketing .kicker.muted { color: var(--mk-faint); }

/* --- Headlines: tight, confident, normal-case --- */
body.site-marketing .clean-h1,
body.site-marketing .hero h1,
body.site-marketing h2,
body.site-marketing .vs-title,
body.site-marketing .final-cta-title {
  font-family: var(--mk-display);
  font-weight: 700;
  text-transform: none;
  letter-spacing: -0.025em;
  color: var(--mk-ink);
}
body.site-marketing .clean-h1 { font-size: clamp(2.6rem, 6vw, 4.4rem); line-height: 1.06; margin: 0.4em 0 0.5em; }
body.site-marketing .clean-lede { font-size: clamp(1.1rem, 2vw, 1.32rem); line-height: 1.5; color: var(--mk-muted); max-width: 34rem; margin: 0 auto 2.4rem; }
body.site-marketing h2 { font-size: clamp(2rem, 4vw, 3rem); line-height: 1.1; }

/* --- Hero: no decorative background, generous centered stack --- */
body.site-marketing .hero-bg { display: none; }
body.site-marketing .hero-inner { position: relative; z-index: 1; max-width: 820px; }
body.site-marketing .live-pill {
  font-family: var(--mk-display);
  font-size: 13px;
  font-weight: 500;
  letter-spacing: 0;
  text-transform: none;
  background: var(--mk-bg-alt);
  color: var(--mk-muted);
  border: 1px solid var(--mk-line);
  border-radius: 980px;
  backdrop-filter: none;
  box-shadow: none;
}
body.site-marketing .live-dot { background: var(--mk-signal); box-shadow: 0 0 0 0 rgba(0, 113, 227, 0.5); animation: mk-pulse 2.4s infinite; }
@keyframes mk-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(0, 113, 227, 0.4); }
  70%  { box-shadow: 0 0 0 7px rgba(0, 113, 227, 0); }
  100% { box-shadow: 0 0 0 0 rgba(0, 113, 227, 0); }
}
body.site-marketing .mini-meta { margin-top: 2.4rem; font-family: var(--mk-display); color: var(--mk-faint); font-size: 0.9rem; }

/* --- Body copy --- */
body.site-marketing .lede,
body.site-marketing .story-inner p,
body.site-marketing .section-sub { color: var(--mk-muted); }
body.site-marketing .story-inner p { font-size: 1.25rem; line-height: 1.65; margin: 0 0 1.6rem; }
body.site-marketing .story-inner p strong { color: var(--mk-ink); font-weight: 600; }
body.site-marketing .serif { font-family: inherit; font-style: normal; font-weight: 700; color: var(--mk-signal); }
body.site-marketing .quiet-link { color: var(--mk-muted); border-color: var(--mk-line); font-weight: 500; }
body.site-marketing .quiet-link:hover { color: var(--mk-signal); border-color: var(--mk-signal); }
body.site-marketing .fineprint { font-family: var(--mk-display); color: var(--mk-faint); }

/* --- Them vs Us: soft cards --- */
body.site-marketing .vs-col {
  border: 1px solid var(--mk-line);
  border-radius: 22px;
  background: var(--mk-surface);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
  padding: 2.2rem 2.2rem;
}
body.site-marketing .vs-col h3 { font-size: 0.8rem; letter-spacing: 0.08em; }
body.site-marketing .vs-col li { font-family: var(--mk-display); font-size: 1.02rem; color: var(--mk-muted); }
body.site-marketing .vs-them { opacity: 0.5; }
body.site-marketing .vs-them h3 { color: var(--mk-faint); }
body.site-marketing .vs-us {
  border-color: transparent;
  box-shadow: 0 30px 60px -28px rgba(0, 0, 0, 0.3);
  background: var(--mk-ink);
}
body.site-marketing .vs-us h3 { color: #fff; }
body.site-marketing .vs-us li { color: rgba(255, 255, 255, 0.88); }

/* --- Stats band --- */
body.site-marketing .stats-band { background: var(--mk-bg-alt); border-top: none; border-bottom: none; }
body.site-marketing .stat-num {
  font-family: var(--mk-display);
  font-weight: 700;
  letter-spacing: -0.03em;
  color: var(--mk-signal);
  background: none;
  -webkit-text-fill-color: var(--mk-signal);
}
body.site-marketing .stat-label { color: var(--mk-muted); }
body.site-marketing .stat-label strong { color: var(--mk-ink); font-weight: 600; }

/* --- Steps + check lists --- */
body.site-marketing .steps-min li::before {
  border: 1px solid var(--mk-line);
  border-radius: 50%;
  font-family: var(--mk-display);
  font-weight: 600;
  background: var(--mk-surface);
  color: var(--mk-ink);
}
body.site-marketing .steps-min li { color: var(--mk-muted); }
body.site-marketing .steps-min li strong { color: var(--mk-ink); font-weight: 600; }
body.site-marketing .check-list li { color: var(--mk-muted); }
body.site-marketing .check-list li strong { color: var(--mk-ink); font-weight: 600; }
body.site-marketing .check-list li::before { color: var(--mk-signal); }
body.site-marketing .x-list li { color: var(--mk-faint); }

/* --- Pricing --- */
body.site-marketing .price-solo {
  border: 1px solid var(--mk-line);
  border-radius: 28px;
  background: var(--mk-surface);
  box-shadow: 0 40px 80px -40px rgba(0, 0, 0, 0.2);
  padding: 3rem 2.8rem 2.6rem;
}
body.site-marketing .price-step { color: var(--mk-signal); font-family: var(--mk-display); font-weight: 600; letter-spacing: 0.06em; }
body.site-marketing .price-step-2 { border-top-color: var(--mk-line); }
body.site-marketing .price-line,
body.site-marketing .price-block,
body.site-marketing .price-tier { border: 1px solid var(--mk-line); border-radius: 14px; }
body.site-marketing .price-line-amt,
body.site-marketing .price-solo-amount,
body.site-marketing .pt-total,
body.site-marketing .sc-num { font-family: var(--mk-display); font-weight: 700; letter-spacing: -0.02em; color: var(--mk-ink); }
body.site-marketing .price-gate { border-left: 3px solid var(--mk-signal); border-radius: 12px; background: var(--mk-signal-soft); color: var(--mk-ink); }
body.site-marketing .price-solo-sub { color: var(--mk-muted); }
body.site-marketing .price-solo-sub strong { color: var(--mk-ink); font-weight: 600; }
body.site-marketing .price-solo-features li { color: var(--mk-muted); }
body.site-marketing .price-solo-features li::before { color: var(--mk-signal); }

/* --- Calculator --- */
body.site-marketing .sc-hours button { border: 1px solid var(--mk-line); border-radius: 12px; font-family: var(--mk-display); color: var(--mk-ink); }
body.site-marketing .sc-hours button:hover { border-color: var(--mk-signal); }
body.site-marketing .sc-hours button.is-active { background: var(--mk-signal); border-color: var(--mk-signal); color: #fff; }
body.site-marketing .sc-results { background: var(--mk-bg-alt); border: 1px solid var(--mk-line); border-radius: 22px; box-shadow: none; }
body.site-marketing .sc-headline { color: var(--mk-muted); }
body.site-marketing .sc-headline strong,
body.site-marketing .sc-num { color: var(--mk-ink); }
body.site-marketing .sc-stat-final .sc-num { color: var(--mk-signal); }
body.site-marketing .sc-label { color: var(--mk-ink); }
body.site-marketing .sc-note, body.site-marketing .sc-cost-note, body.site-marketing .sc-lbl, body.site-marketing .sc-val { color: var(--mk-muted); }
body.site-marketing .mc-select { border-color: var(--mk-line); color: var(--mk-ink); background: var(--mk-surface); }
body.site-marketing input[type="range"]::-webkit-slider-thumb { background: var(--mk-signal); }

/* --- FAQ --- */
body.site-marketing .faq details { border: 1px solid var(--mk-line); border-radius: 16px; background: var(--mk-surface); box-shadow: none; }
body.site-marketing .faq details:hover { box-shadow: 0 6px 20px -12px rgba(0, 0, 0, 0.12); }
body.site-marketing .faq details[open] { box-shadow: 0 6px 20px -12px rgba(0, 0, 0, 0.12); }
body.site-marketing .faq summary { font-family: var(--mk-display); font-weight: 600; color: var(--mk-ink); }
body.site-marketing .faq summary::after { color: var(--mk-signal); }
body.site-marketing .faq p { color: var(--mk-muted); }

/* --- Free skill --- */
body.site-marketing #skill code { background: var(--mk-bg-alt); color: var(--mk-ink); }
body.site-marketing #skill .skill-form-row input { border-color: var(--mk-line); background: var(--mk-surface); color: var(--mk-ink); }

/* --- Final CTA: single dark band, high contrast --- */
body.site-marketing .section-cta { background: var(--mk-ink); border-top: none; }
body.site-marketing .section-cta .hero-bg { display: none; }
body.site-marketing .final-cta-title,
body.site-marketing .section-cta h2 { color: #f5f5f7; }
body.site-marketing .section-cta .cta-sub { color: rgba(245, 245, 247, 0.7); }
body.site-marketing .section-cta .fineprint { color: rgba(245, 245, 247, 0.6); }
body.site-marketing .section-cta .fineprint a { color: #2997ff; }
body.site-marketing .section-cta .kicker { color: rgba(245, 245, 247, 0.6); }

/* --- Footer --- */
body.site-marketing .footer { background: var(--mk-bg-alt); border-top: 1px solid var(--mk-line); }
body.site-marketing .footer-brand p { color: var(--mk-muted); }
body.site-marketing .footer-links h4 { font-family: var(--mk-display); color: var(--mk-ink); }
body.site-marketing .footer-links a { color: var(--mk-muted); }
body.site-marketing .footer-links a:hover { color: var(--mk-signal); }
body.site-marketing .footer-bottom { font-family: var(--mk-display); color: var(--mk-faint); font-size: 12px; border-top-color: var(--mk-line); }

/* --- Alt sections tint --- */
body.site-marketing .section-alt { background: var(--mk-bg-alt); }

@media (max-width: 720px) {
  body.site-marketing { --mk-y: 80px; }
  body.site-marketing .hero { padding-top: 40px; }
}

/* ============================================================
   Pricing: side-by-side cards (Jul 9 2026) — index.html only.
   Pilot | 3-Month | 6-Month, left to right. Namespaced .price-card*.
   ============================================================ */
.price-cards-lead {
  max-width: 40rem;
  margin: 0 auto 2.8rem;
  text-align: center;
  font-size: 1.1rem;
  line-height: 1.6;
  color: var(--muted);
}
.price-cards {
  display: grid;
  /* THREE cards since Aug 9 2026 (cold calling / gift sending / stack build).
     Corey (Jul 9 2026): "make this a bit wider so itll fit everything in the
     size of a screen - not too wide just wider" — 780px wrapped every bullet
     onto 2-3 lines and pushed the cards past one viewport. Widened again for
     the third card so a bullet still fits on two lines. */
  grid-template-columns: repeat(3, 1fr);
  gap: 1.2rem;
  max-width: 1180px;
  margin: 0 auto;
  align-items: stretch;
}
.price-card {
  display: flex;
  flex-direction: column;
  text-align: left;
  border: 1px solid var(--border);
  border-radius: var(--radius-lg);
  background: var(--surface);
  padding: 2rem 1.8rem 1.9rem;
  height: 100%;
}
.price-card .sp-price { margin-top: auto; padding-top: 1rem; }
.pc-tag {
  font-size: 12px;
  font-weight: 700;
  letter-spacing: 0.07em;
  text-transform: uppercase;
  color: var(--accent-strong);
  margin: 0 0 0.9rem;
}
.pc-name { font-size: 1.3rem; letter-spacing: -0.02em; margin: 0 0 0.7rem; }
.pc-amt { font-size: 2.2rem; font-weight: 800; letter-spacing: -0.03em; line-height: 1; }
.pc-amt small { font-size: 0.8rem; font-weight: 500; color: var(--muted); letter-spacing: 0; }
/* No published price since Aug 8 2026 -- the outcome sets the number and it is quoted on
   the call. A sentence needs to breathe where "$8,000" did not, so this steps the size
   down and puts the qualifier on its own line instead of trailing the figure. */
.pc-amt-quote { font-size: 1.55rem; font-weight: 700; line-height: 1.2; }
.pc-amt-quote small { display: block; margin-top: 0.4rem; font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.08em; }
.pc-term { color: var(--muted); font-size: 0.92rem; line-height: 1.55; margin: 0.7rem 0 1.2rem; }
.pc-term strong { color: var(--text); }
.pc-feats { list-style: none; margin: 0; padding: 0.4rem 0 0; }
.pc-feats li {
  position: relative;
  padding: 0.5rem 0 0.5rem 1.5rem;
  font-size: 0.93rem;
  line-height: 1.5;
  color: var(--muted);
  border-top: 1px solid var(--border);
}
.pc-feats li:first-child { border-top: 0; }
.pc-feats li::before { content: "→"; position: absolute; left: 0; color: var(--accent-2); }
.price-cards-foot { max-width: 640px; margin: 2.4rem auto 0; text-align: center; }
@media (max-width: 1060px) {
  .price-cards { grid-template-columns: 1fr; max-width: 560px; }
}

/* marketing-mode skin */
body.site-marketing .price-cards-lead { color: var(--mk-muted); font-family: var(--mk-display); }
body.site-marketing .price-card {
  border: 1px solid var(--mk-line);
  border-radius: 22px;
  background: var(--mk-surface);
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.04);
}
body.site-marketing .pc-tag { color: var(--mk-faint); font-family: var(--mk-display); font-weight: 600; letter-spacing: 0.05em; }
body.site-marketing .pc-name { font-family: var(--mk-display); font-weight: 700; color: var(--mk-ink); }
body.site-marketing .pc-amt { font-family: var(--mk-display); font-weight: 700; letter-spacing: -0.02em; color: var(--mk-ink); }
body.site-marketing .pc-amt small { color: var(--mk-muted); }
body.site-marketing .pc-term { color: var(--mk-muted); }
body.site-marketing .pc-term strong { color: var(--mk-ink); font-weight: 600; }
body.site-marketing .pc-feats li { color: var(--mk-muted); border-top-color: var(--mk-line); }
body.site-marketing .pc-feats li::before { color: var(--mk-signal); }
body.site-marketing .price-card.pc-featured {
  border-color: var(--mk-signal);
  box-shadow: 0 30px 60px -30px rgba(0, 113, 227, 0.35);
}
body.site-marketing .price-card.pc-featured .pc-tag { color: var(--mk-signal); }

/* Sprint mini-configurator (Jul 9 2026 -- volume slider + LinkedIn add-on) */
.sprint-config { border-top: 1px solid var(--border); margin-top: 0.9rem; padding-top: 0.9rem; }
.sprint-config .sc-label { font-size: 0.88rem; }
.sprint-config .sc-label span { color: var(--accent-strong); font-weight: 700; }
.sp-li-toggle { display: flex; gap: 0.55rem; align-items: flex-start; margin: 0.9rem 0 0; cursor: pointer; font-size: 0.86rem; line-height: 1.45; color: var(--muted); }
.sp-li-toggle input { margin-top: 0.2rem; accent-color: var(--accent-strong); }
.sp-li-toggle strong { color: var(--text); }
.sp-price { margin: 0.7rem 0 0; font-size: 0.95rem; color: var(--muted); }
.sp-price strong { color: var(--text); font-size: 1.05rem; }
.sp-tier { display: flex; gap: 0.55rem; align-items: flex-start; margin: 0 0 0.7rem; cursor: pointer; font-size: 0.88rem; line-height: 1.45; color: var(--muted); }
.sp-tier input { margin-top: 0.2rem; accent-color: var(--accent-strong); }
.sp-tier strong { color: var(--text); }
.sp-tier em { margin-left: auto; font-style: normal; font-weight: 700; color: var(--text); white-space: nowrap; }

/* ============================================================
   PRODUCT GRAPHICS (Jul 9 2026, glencoco-style pass)
   Hero portal mock (.pmock), dark scoreboard band (.scoreband),
   numbered steps w/ UI cards (.gstep/.uicard).
   New tokens only -- everything else references DESIGN.md vars.
   ============================================================ */
:root {
  --status-ok:     #16a34a;
  --status-ok-soft: rgba(22,163,74,0.12);
  --status-warm:   #d97706;
  --status-warm-soft: rgba(217,119,6,0.12);
  --status-out:    #dc2626;
  --sb-bg:         #08080a;
  --sb-surface:    #161519;
  --sb-border:     #2a2930;
  --sb-text:       #f5f5f7;
  --sb-muted:      #a1a1aa;
}

/* ---- Hero portal mock ---- */
.pmock-wrap { position: relative; max-width: 940px; margin: 3.2rem auto 0; }
.pmock-glow {
  position: absolute; inset: -12% -18%;
  background:
    radial-gradient(42% 55% at 22% 18%, var(--accent-glow), transparent 70%),
    radial-gradient(38% 50% at 82% 78%, rgba(96,165,250,0.22), transparent 70%);
  filter: blur(28px); z-index: 0; pointer-events: none;
}
.pmock {
  position: relative; z-index: 1; text-align: left;
  background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-lg);
  overflow: hidden;
}
.pmock-bar {
  display: flex; align-items: center; gap: 6px;
  padding: 0.65rem 1rem; border-bottom: 1px solid var(--border);
  background: var(--surface-2);
}
.pmock-dot { width: 9px; height: 9px; border-radius: 50%; background: var(--border-strong); }
.pmock-url {
  margin: 0 auto; font-size: 11.5px; color: var(--muted-2);
  background: var(--bg); border: 1px solid var(--border);
  border-radius: 999px; padding: 0.2rem 0.9rem;
}
.pmock-body { display: grid; grid-template-columns: 172px 1fr; }
.pmock-side { border-right: 1px solid var(--border); padding: 1rem 0.9rem; background: var(--surface-2); }
.pmock-brand { display: flex; align-items: center; gap: 6px; font-weight: 800; font-size: 0.95rem; color: var(--text); margin-bottom: 1rem; }
.pmock-brand svg { color: var(--accent); }
.pmock-nav { display: flex; flex-direction: column; gap: 2px; }
.pmock-nav span {
  display: flex; justify-content: space-between; align-items: center;
  font-size: 12.5px; color: var(--muted); padding: 0.42rem 0.6rem; border-radius: 8px;
}
.pmock-nav span.is-on { background: var(--accent-soft); color: var(--accent-strong); font-weight: 600; }
.pmock-nav em {
  font-style: normal; font-size: 10px; font-weight: 700; color: #fff;
  background: var(--accent); border-radius: 999px; padding: 0.05rem 0.42rem;
}
.pmock-main { padding: 1rem 1.2rem 0.9rem; }
.pmock-head { display: flex; align-items: baseline; gap: 0.7rem; margin-bottom: 0.6rem; }
.pmock-head strong { font-size: 0.98rem; }
.pmock-sub { font-size: 11.5px; color: var(--muted-2); }
.pmock-row {
  display: grid; grid-template-columns: 96px 1fr auto auto;
  gap: 0.9rem; align-items: center;
  padding: 0.62rem 0.2rem; border-top: 1px solid var(--border);
}
.pr-time { font-size: 11.5px; color: var(--muted-2); font-variant-numeric: tabular-nums; }
.pr-who { display: flex; flex-direction: column; font-size: 12px; color: var(--muted); line-height: 1.35; }
.pr-who strong { font-size: 12.5px; color: var(--text); }
.pr-chip {
  font-size: 10.5px; font-weight: 700; letter-spacing: 0.02em;
  border-radius: 999px; padding: 0.22rem 0.65rem; white-space: nowrap;
}
.pr-chip-meet { background: var(--accent-soft); color: var(--accent-strong); }
.pr-chip-conv { background: var(--status-ok-soft); color: var(--status-ok); }
.pr-chip-nurt { background: var(--status-warm-soft); color: var(--status-warm); }
.pr-play { display: flex; align-items: center; gap: 0.5rem; }
.pr-play > i {
  width: 24px; height: 24px; border-radius: 50%; background: var(--accent);
  position: relative; flex: none;
}
.pr-play > i::after {
  content: ""; position: absolute; left: 9px; top: 7px;
  border-left: 8px solid #fff; border-top: 5px solid transparent; border-bottom: 5px solid transparent;
}
.pr-wave, .uic-wave { display: flex; align-items: center; gap: 2px; }
.pr-wave b, .uic-wave b { width: 3px; border-radius: 2px; background: var(--accent-2); opacity: 0.75; }
.pr-wave b:nth-child(1){height:6px}.pr-wave b:nth-child(2){height:12px}.pr-wave b:nth-child(3){height:8px}.pr-wave b:nth-child(4){height:15px}.pr-wave b:nth-child(5){height:9px}.pr-wave b:nth-child(6){height:13px}.pr-wave b:nth-child(7){height:6px}.pr-wave b:nth-child(8){height:10px}
.pmock-foot {
  border-top: 1px solid var(--border); margin-top: 0.1rem;
  padding: 0.7rem 0.2rem 0.2rem; font-size: 11.5px; color: var(--muted-2);
}
@media (max-width: 720px) {
  .pmock-side { display: none; }
  .pmock-body { grid-template-columns: 1fr; }
  .pmock-row { grid-template-columns: 1fr auto; grid-template-areas: "who chip" "time play"; }
  .pr-who { grid-area: who; } .pr-chip { grid-area: chip; } .pr-time { grid-area: time; } .pr-play { grid-area: play; }
}

/* ---- Dark scoreboard band ---- */
/* Corey (Jul 9 2026): "i dont like how it goes right to black" — the scoreboard
   is now a rounded card floating in the page (the site's card language), not a
   full-bleed band with hard edges. */
.scoreband {
  background: var(--sb-bg); padding: 4.2rem 2.4rem 4rem;
  max-width: 1180px; margin: 4.5rem auto; border-radius: 28px;
  box-shadow: 0 40px 90px -40px rgba(10, 20, 45, 0.5);
}
@media (max-width: 880px) { .scoreband { margin: 3rem 14px; padding: 2.8rem 1.4rem 2.6rem; border-radius: 22px; } }
.sb-kicker { color: var(--accent-2); }
.sb-title { color: var(--sb-text); text-align: left; font-size: clamp(1.7rem, 3.4vw, 2.5rem); letter-spacing: -0.02em; margin: 0.4rem 0 2.4rem; }
.sb-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1rem; }
.sb-stat {
  background: var(--sb-surface); border: 1px solid var(--sb-border);
  border-radius: var(--radius); padding: 1.4rem 1.3rem 1.2rem;
}
.sb-num { font-size: 2.1rem; font-weight: 800; letter-spacing: -0.03em; color: var(--sb-text); font-variant-numeric: tabular-nums; }
.sb-lbl { font-size: 0.88rem; line-height: 1.5; color: var(--sb-muted); margin: 0.45rem 0 1rem; }
.sb-rail { height: 4px; border-radius: 999px; background: var(--sb-border); overflow: hidden; }
.sb-rail i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--accent-strong), var(--accent-2)); }
.sb-foot { margin: 2rem 0 0; font-size: 0.92rem; color: var(--sb-muted); }
.sb-foot::before { content: ""; display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--accent); margin-right: 0.55rem; vertical-align: 1px; }
@media (max-width: 960px) { .sb-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 520px) { .sb-grid { grid-template-columns: 1fr; } }

/* ---- Numbered steps + UI cards ---- */
.how-min .section-head { margin-bottom: 1rem; }
.gsteps { display: flex; flex-direction: column; gap: 4.2rem; margin-top: 2.4rem; }
.gstep { display: grid; grid-template-columns: 1fr 1fr; gap: 3.4rem; align-items: center; }
.gstep-flip .gstep-copy { order: 2; }
.gstep-flip .gstep-art { order: 1; }
.gstep-num {
  font-size: clamp(3.4rem, 7vw, 5.2rem); font-weight: 800; line-height: 1;
  letter-spacing: -0.04em; color: var(--text); margin-bottom: 0.6rem;
}
.gstep-copy h3 { font-size: 1.35rem; letter-spacing: -0.015em; margin: 0 0 0.55rem; }
.gstep-copy p { color: var(--muted); font-size: 1rem; line-height: 1.65; margin: 0; max-width: 30rem; }
.gstep-art { position: relative; }
.gstep-art::before {
  content: ""; position: absolute; inset: -10% -12%;
  background: radial-gradient(50% 60% at 50% 50%, var(--accent-soft), transparent 72%);
  filter: blur(6px); pointer-events: none;
}
.uicard {
  position: relative; background: var(--surface); border: 1px solid var(--border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-md);
  padding: 1.2rem 1.25rem 1.15rem; max-width: 460px; margin: 0 auto;
}
.uicard-title {
  display: flex; align-items: center; justify-content: space-between; gap: 0.8rem;
  font-weight: 700; font-size: 0.95rem; color: var(--text); margin-bottom: 0.9rem;
}
.uic-sub { font-size: 11px; font-weight: 500; color: var(--muted-2); white-space: nowrap; }
.uic-chip { font-size: 10.5px; font-weight: 700; border-radius: 999px; padding: 0.22rem 0.65rem; white-space: nowrap; }
.uic-chip-ok { background: var(--status-ok-soft); color: var(--status-ok); }
.uic-chip-meet { background: var(--accent-soft); color: var(--accent-strong); }
.uic-field {
  display: grid; grid-template-columns: 88px 1fr; gap: 0.8rem;
  padding: 0.55rem 0.1rem; border-top: 1px solid var(--border);
  font-size: 12.5px;
}
.uic-field span { color: var(--muted-2); }
.uic-field strong { color: var(--text); font-weight: 600; }
.uic-row {
  display: flex; align-items: center; gap: 0.6rem;
  padding: 0.55rem 0.1rem; border-top: 1px solid var(--border);
  font-size: 12.5px; color: var(--muted);
}
.uic-row strong { color: var(--text); font-weight: 600; }
.uic-row em { margin-left: auto; font-style: normal; font-size: 10.5px; font-weight: 700; color: var(--status-ok); }
.uic-row-cut { opacity: 0.55; }
.uic-row-cut em { color: var(--status-out); }
.uic-check, .uic-x { flex: none; width: 15px; height: 15px; border-radius: 5px; position: relative; }
.uic-check { background: var(--status-ok); }
.uic-check::after { content: ""; position: absolute; left: 4.5px; top: 2px; width: 4px; height: 8px; border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(42deg); }
.uic-x { background: var(--status-out); }
.uic-x::before, .uic-x::after { content: ""; position: absolute; left: 7px; top: 3px; width: 2px; height: 9px; background: #fff; border-radius: 1px; }
.uic-x::before { transform: rotate(45deg); } .uic-x::after { transform: rotate(-45deg); }
.uic-callrow { display: flex; align-items: center; gap: 0.8rem; padding: 0.4rem 0 0.7rem; }
.uic-wave { flex: 1; }
.uic-wave b { width: 4px; }
.uic-wave b:nth-child(1){height:8px}.uic-wave b:nth-child(2){height:16px}.uic-wave b:nth-child(3){height:11px}.uic-wave b:nth-child(4){height:20px}.uic-wave b:nth-child(5){height:13px}.uic-wave b:nth-child(6){height:18px}.uic-wave b:nth-child(7){height:9px}.uic-wave b:nth-child(8){height:15px}.uic-wave b:nth-child(9){height:19px}.uic-wave b:nth-child(10){height:10px}.uic-wave b:nth-child(11){height:14px}.uic-wave b:nth-child(12){height:7px}
.uic-dur { font-size: 11.5px; color: var(--muted-2); font-variant-numeric: tabular-nums; }
.uic-quote {
  margin: 0 0 0.7rem; padding: 0.7rem 0.9rem; font-size: 12.5px; line-height: 1.55;
  color: var(--muted); background: var(--surface-2); border-left: 3px solid var(--accent);
  border-radius: 0 10px 10px 0;
}
.uic-meta { font-size: 11px; color: var(--muted-2); }
.uic-map { display: grid; grid-template-columns: repeat(12, 1fr); gap: 7px; padding: 0.3rem 0 0.9rem; }
.uic-map i, .uic-legend i { display: block; width: 100%; aspect-ratio: 1; border-radius: 50%; }
.uic-legend i { width: 9px; height: 9px; flex: none; }
.m-g { background: var(--status-ok); }
.m-y { background: var(--status-warm); opacity: 0.85; }
.m-r { background: var(--status-out); opacity: 0.8; }
.m-gr { background: var(--border-strong); }
.uic-legend { display: flex; flex-wrap: wrap; gap: 0.5rem 1.1rem; font-size: 11px; color: var(--muted); }
.uic-legend span { display: flex; align-items: center; gap: 0.4rem; }
@media (max-width: 860px) {
  .gstep { grid-template-columns: 1fr; gap: 1.6rem; }
  .gstep-flip .gstep-copy { order: 1; }
  .gstep-flip .gstep-art { order: 2; }
}

/* marketing-theme + motion notes */
body.site-marketing .pmock { border-color: var(--mk-line); background: var(--mk-surface); }
body.site-marketing .pmock-bar, body.site-marketing .pmock-side { background: var(--mk-bg, #fff); border-color: var(--mk-line); }
body.site-marketing .pmock-row, body.site-marketing .pmock-foot, body.site-marketing .uic-field, body.site-marketing .uic-row { border-color: var(--mk-line); }
body.site-marketing .uicard { border-color: var(--mk-line); background: var(--mk-surface); }
@media (prefers-reduced-motion: no-preference) {
  .pmock-row:hover .pr-wave b, .uic-callrow:hover .uic-wave b { animation: wavepulse 0.9s ease-in-out infinite alternate; }
  .pr-wave b:nth-child(even), .uic-wave b:nth-child(even) { animation-delay: 0.18s; }
}
@keyframes wavepulse { from { transform: scaleY(0.7); } to { transform: scaleY(1.25); } }
.pc-bestfor { font-size: 0.95rem; font-weight: 600; line-height: 1.5; color: var(--accent-strong); margin: 0.15rem 0 0.9rem; }
body.site-marketing .pc-bestfor { color: var(--mk-signal, var(--accent-strong)); }
/* scoreband: win over body.site-marketing h2/.kicker ink colors (dark band needs light text) */
body.site-marketing .scoreband .sb-title, .scoreband .sb-title { color: var(--sb-text); }
body.site-marketing .scoreband .sb-kicker, .scoreband .sb-kicker { color: var(--accent-2); }
body.site-marketing .scoreband .sb-title .serif { color: var(--accent-2); }
/* ── Client portal shell — the hero mock (.pmock), real (Jul 8 2026) ──
   Corey: "i want my portal to look exactly like this you created."
   portal.js buildShell() moves .portal-tabs into a left sidebar and the
   panes into the right column of one card; these styles are that card. */
.pshell-wrap { position: relative; max-width: 1180px; margin: 18px auto 4rem; padding: 0 20px; }
.pshell-glow {
  position: absolute; left: 6%; right: 6%; top: -26px; height: 380px;
  background: radial-gradient(60% 100% at 50% 0%, var(--accent-glow), transparent 70%);
  filter: blur(34px); opacity: 0.5; pointer-events: none;
}
.pshell {
  position: relative; display: grid; grid-template-columns: 196px minmax(0, 1fr);
  background: var(--surface); border: 1px solid var(--border); border-radius: 18px;
  box-shadow: 0 30px 80px -32px rgba(16, 42, 84, 0.28), var(--shadow-sm);
  overflow: hidden;
}
.pshell-side { border-right: 1px solid var(--border); background: var(--surface-2); padding: 1.15rem 0.85rem; }
.pshell-brand { display: flex; align-items: center; gap: 7px; font-weight: 800; font-size: 0.98rem; line-height: 1.18; color: var(--text); margin: 0 0 1.1rem 0.5rem; }
.pshell-brand svg { color: var(--accent); flex: none; }
/* long client names (e.g. "Konduit Operations") wrap inside the 196px sidebar instead of clipping */
.pshell-brand [data-portal-name] { min-width: 0; white-space: normal; overflow-wrap: break-word; }
.pshell-side .portal-tabs { display: flex; flex-direction: column; gap: 2px; position: sticky; top: 84px; z-index: 40; }
.pshell-side .portal-tab {
  display: flex; align-items: center; width: 100%; text-align: left;
  background: none; border: none; border-radius: 8px; margin: 0;
  padding: 0.44rem 0.65rem; font-size: 0.86rem; font-weight: 500; color: var(--muted);
}
.pshell-side .portal-tab:hover { background: var(--bg-alt); color: var(--text); }
.pshell-side .portal-tab.is-active { background: var(--accent-soft); color: var(--accent-strong); font-weight: 650; border-bottom: none; }
/* Greyed channel tab — client isn't running this channel (touches === 0).
   Same "turned off = greyed" pattern as the homepage calculator toggles. */
.pshell-side .portal-tab.is-disabled {
  color: var(--muted-2); opacity: 0.45; cursor: not-allowed; pointer-events: none;
}
.pshell-side .portal-tab.is-disabled:hover { background: none; color: var(--muted-2); }
.pshell-side .portal-tab.is-disabled em { background: var(--muted-2); }
.pshell-side .portal-tab em {
  /* min-width 26px, not 20px (Corey Jul 29 2026: "keep a blue bubble here just put 0 in it when we
     have the conversions empty ... so everything is lined up"). A single-digit pill measured 20px
     against 26px for two digits, and since the % label sits immediately to its left, that 6px
     pushed Meetings' "0%" out of line with Leads' "64%". 26px fits two digits, so the bubbles and
     the percentages both line up; three digits still grow past it. */
  font-style: normal; margin-left: auto; min-width: 26px; height: 18px; padding: 0 6px;
  border-radius: 999px; background: var(--accent); color: #fff; font-size: 11px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center; font-variant-numeric: tabular-nums;
}
/* the [hidden] attribute has lower specificity than the rule above and was losing --
   a 0-count tab rendered as an empty blue pill instead of nothing (Corey Jul 21 2026:
   spotted on WW Sponsorship's Leads/Meetings). */
.pshell-side .portal-tab em[hidden] { display: none; }
/* "Today's call activity" action link — same line-size/height as the nav tabs
   (Corey, Jul 18 2026: "not bigger"), keeps its distinct blue action look. */
.pshell-side .portal-activity-link {
  display: flex; align-items: center; gap: 7px; width: 100%;
  padding: 0.44rem 0.65rem; margin: 0 0 8px;
  font-size: 0.86rem; font-weight: 600; line-height: 1.2;
  border-radius: 8px; background: var(--accent); color: #fff;
  text-decoration: none; white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.pshell-side .portal-activity-link svg { width: 14px; height: 14px; flex: none; }
.pshell-side .portal-activity-link:hover { background: var(--accent-strong); }
.pshell-main { min-width: 0; }
.pshell .portal-pane { padding: 1.5rem 1.7rem 1.8rem; }
.pshell .portal-pane .container { max-width: none; padding: 0; }

/* Conversations pane inside the shell: mock rows, not a data table */
.pshell #callsGrid { border: none; border-radius: 0; box-shadow: none; background: none; overflow: visible; border-top: 1px solid var(--border); margin-top: 6px; }
.pshell .call-row {
  grid-template-columns: 112px minmax(0, 1fr) auto auto;
  gap: 15px; padding: 11px 4px; border-bottom: 1px solid var(--border);
}
.pshell .call-row:last-of-type { border-bottom: none; }
.pshell .pr-time { font-size: 12px; }
.pshell .pr-who { font-size: 12.5px; line-height: 1.4; }
.pshell .pr-who strong { font-size: 13.5px; font-weight: 650; letter-spacing: -0.005em; }
.pshell .pr-chips { display: flex; align-items: center; gap: 6px; white-space: nowrap; }
.pshell .pr-chip { font-size: 11px; padding: 0.26rem 0.7rem; }
.pr-chip-mute { background: var(--bg-alt); color: var(--muted); }
.pshell .pr-play-cell { display: flex; align-items: center; gap: 9px; }
.pshell .row-play-btn { width: 28px; height: 28px; }
.pshell .filter-bar .chip { font-size: 11.5px; padding: 4px 10px; }
.pcalls-foot { border-top: 1px solid var(--border); padding: 14px 6px 2px; font-size: 12.5px; color: var(--muted-2); }
@media (prefers-reduced-motion: no-preference) {
  .pshell .call-row.is-playing .pr-wave b { animation: wavepulse 0.9s ease-in-out infinite alternate; }
  .pshell .call-row.is-playing .pr-wave b:nth-child(even) { animation-delay: 0.18s; }
}

@media (max-width: 1080px) {
  /* Jul 22 2026 (Corey, "when it's smaller we shift the website"): raised from
     860 -> 1080. The desktop 196px + 5-col row grid gets cramped on a half-screen
     window (~1000px) -- the date column collided with the sidebar edge and left a
     dead gap before each name. Below 1080 we now flip to the clean stacked layout
     (sidebar -> horizontal tab strip, rows -> who/chips over time/play). */
  .pshell-wrap { padding: 0 12px; margin-top: 10px; }
  /* minmax(0,1fr): a plain 1fr track refuses to shrink below the campaign
     select's intrinsic width, pushing the whole shell off-screen on phones */
  .pshell { grid-template-columns: minmax(0, 1fr); }
  .pshell-side { border-right: none; border-bottom: 1px solid var(--border); padding: 0.7rem 0.8rem; min-width: 0; }
  .campaign-select { width: 100%; max-width: 100%; }
  .pshell-brand { display: none; }
  .pshell-side .portal-tabs { flex-direction: row; overflow-x: auto; position: static; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
  .pshell-side .portal-tabs::-webkit-scrollbar { display: none; }
  .pshell-side .portal-tab { width: auto; white-space: nowrap; flex: none; }
  .pshell-side .portal-activity-link { width: auto; flex: none; margin: 0 8px 0 0; }
  .pshell .portal-pane { padding: 1.1rem 1rem 1.3rem; }
  .pshell .call-row {
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "who chips" "time play";
    row-gap: 8px;
  }
  .pshell .pr-who { grid-area: who; }
  .pshell .pr-chips { grid-area: chips; }
  .pshell .pr-time { grid-area: time; align-self: center; }
  .pshell .pr-play-cell { grid-area: play; justify-content: flex-end; }
}
/* mock pane head above the conversation chips */
.pcalls-head { display: flex; align-items: baseline; gap: 0.7rem; margin-bottom: 0.8rem; }
.pcalls-head strong { font-size: 1.08rem; letter-spacing: -0.01em; }

/* ── Portal shell v3 (Jul 9 2026): the shell IS the page ── */
/* campaign pills relocated into the sidebar — restyle from the old dark-header look */
.pshell-side #campaign-selector { margin: 0 0 0.9rem; }
.pshell-side .campaign-pills { display: flex; flex-direction: column; gap: 4px; }
.pshell-side .campaign-pill {
  display: flex; align-items: center; gap: 6px; width: 100%; text-align: left;
  background: none; border: 1px solid var(--border); border-radius: 9px;
  padding: 0.4rem 0.65rem; font-size: 0.82rem; font-weight: 600; color: var(--muted);
  cursor: pointer; font-family: inherit;
}
.pshell-side .campaign-pill:hover { border-color: var(--border-strong); color: var(--text); background: var(--bg-alt); }
.pshell-side .campaign-pill.is-active { background: var(--accent-soft); border-color: var(--accent); color: var(--accent-strong); }
.pshell-side .campaign-pill-check { color: var(--status-ok); font-weight: 800; }

/* account-map dot grid — the homepage uicard pattern, fed by real accounts */
.am-map {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(16px, 1fr));
  gap: 7px; max-width: 760px; margin: 1.1rem 0 0.4rem;
}
.am-map i { display: block; width: 100%; aspect-ratio: 1; border-radius: 50%; cursor: pointer; transition: transform 0.12s ease; }
.am-map i:hover { transform: scale(1.35); }
.am-map-sub { font-size: 12px; color: var(--muted-2); margin: 0 0 1.2rem; }
.am-row-flash { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 10px; transition: outline-color 0.3s ease; }

/* funnel card living inside the Metrics pane — trim its old page-level chrome */
.pshell .portal-stats { margin-bottom: 1.4rem; }
@media (max-width: 860px) {
  .pshell-side #campaign-selector { margin: 0 0 0.5rem; }
  .pshell-side .campaign-pills { flex-direction: row; overflow-x: auto; }
  .pshell-side .campaign-pill { width: auto; white-space: nowrap; flex: none; }
}

/* ── Contacts pane, shell language (Jul 9 2026: "this is ugly and not spaced well") ── */
.cfun { border-bottom: 1px solid var(--border); padding: 0.35rem 0 1.05rem; margin-bottom: 1.1rem; }
.cfun-row { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; }
.cfun-stat { display: flex; align-items: baseline; gap: 8px; }
.cfun-stat b { font-size: 1.45rem; font-weight: 800; letter-spacing: -0.02em; color: var(--text); font-variant-numeric: tabular-nums; }
.cfun-stat span { display: inline-flex; align-items: center; gap: 5px; font-size: 12px; font-weight: 600; color: var(--muted); white-space: nowrap; }
.cfun-stat span i, .cfun-side-item i { width: 7px; height: 7px; border-radius: 50%; flex: none; }
.cfun-arrow { color: var(--muted-2); font-size: 0.9rem; }
.cfun-side { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; margin-top: 0.7rem; }
.cfun-side-item { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: var(--muted); }
.cfun-side-item b { color: var(--text); font-weight: 700; font-variant-numeric: tabular-nums; }
.cfun-rates { margin-left: auto; font-size: 12px; color: var(--muted-2); }
.cfun-rates strong { color: var(--muted); font-variant-numeric: tabular-nums; }

.contacts-legend-details { margin: 0.2rem 0 0.9rem; }
.contacts-legend-details summary {
  cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 5px;
  font-size: 12px; font-weight: 600; color: var(--muted-2);
}
.contacts-legend-details summary::-webkit-details-marker { display: none; }
.contacts-legend-details summary::after { content: "›"; transition: transform 0.15s ease; }
.contacts-legend-details[open] summary::after { transform: rotate(90deg); }
.contacts-legend-details p { font-size: 12.5px; line-height: 1.6; color: var(--muted); margin: 0.5rem 0 0; max-width: 70ch; }

/* contact rows: hairline rhythm instead of boxed cards */
.pshell .contacts-list { display: flex; flex-direction: column; gap: 0; border-top: 1px solid var(--border); }
.pshell .contact-row { border: none; border-bottom: 1px solid var(--border); border-radius: 0; background: transparent; }
.pshell .contact-row:hover { background: var(--bg-alt); border-color: var(--border); }
.pshell .contact-row-main { padding: 11px 4px; }
.pshell .contact-freq-badge { font-size: 11.5px; padding: 4px 9px; }
.pshell .contact-name { font-size: 13.5px; font-weight: 650; letter-spacing: -0.005em; }
.pshell .contacts-controls { margin-bottom: 0.6rem; }
.pshell .contacts-controls .chip, .pshell .action-filter-bar .chip { font-size: 11.5px; padding: 4px 10px; }

/* "Your list" card head on Contacts — the homepage step-2 graphic, real data */
.plist { margin-bottom: 1.15rem; }
.plist .uic-row { font-size: 12.5px; padding: 8px 2px; }
.plist .uic-row span { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.plist .uic-row em { font-size: 11px; }
.plist-foot { border-top: 1px solid var(--border); padding: 9px 2px 0; font-size: 12px; color: var(--muted-2); }

/* ── Clean-UI pilot (Jul 9 2026): dropdown, meetings table, load-more ── */
.campaign-select-label { display: block; font-size: 10.5px; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--muted-2); margin: 0 0 4px 2px; }
.campaign-select {
  width: 100%; padding: 7px 26px 7px 10px; border-radius: 9px;
  border: 1px solid var(--border); background: var(--surface); color: var(--text);
  font: inherit; font-size: 0.85rem; font-weight: 600; cursor: pointer;
  appearance: none; -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2394a3b8' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 9px center;
}
.campaign-select:hover { border-color: var(--border-strong); }
.pshell-side #campaign-selector { margin: 0 0 1rem; }

.mtv4-tabs { display: flex; gap: 4px; border-bottom: 1px solid var(--border); margin-bottom: 2px; }
.mtv4-tab {
  background: none; border: none; border-bottom: 2px solid transparent; margin-bottom: -1px;
  padding: 8px 10px; font: inherit; font-size: 0.86rem; font-weight: 600; color: var(--muted); cursor: pointer;
  display: inline-flex; align-items: center; gap: 6px;
}
.mtv4-tab:hover { color: var(--text); }
.mtv4-tab.is-active { color: var(--accent-strong); border-bottom-color: var(--accent); }
.mtv4-tab em {
  font-style: normal; min-width: 18px; height: 17px; padding: 0 5px; border-radius: 999px;
  background: var(--bg-alt); color: var(--muted); font-size: 10.5px; font-weight: 700;
  display: inline-flex; align-items: center; justify-content: center; font-variant-numeric: tabular-nums;
}
.mtv4-tab.is-active em { background: var(--accent-soft); color: var(--accent-strong); }
.mtv4-row {
  display: grid; grid-template-columns: 112px minmax(0, 1fr) auto auto;
  gap: 15px; align-items: center; padding: 11px 4px;
  border-bottom: 1px solid var(--border); cursor: pointer;
}
.mtv4-row:hover { background: var(--bg-alt); }
.mtv4-act { display: flex; align-items: center; gap: 12px; }
.mtv4-sms {
  font-size: 12px; font-weight: 600; color: var(--accent-strong); text-decoration: none;
  border: 1px solid var(--border-strong); border-radius: 999px; padding: 4px 11px; white-space: nowrap;
}
.mtv4-sms:hover { background: var(--accent-soft); border-color: var(--accent); }

.pload-more {
  display: block; width: 100%; margin: 4px 0 0; padding: 10px;
  background: none; border: 1px dashed var(--border-strong); border-radius: 10px;
  font: inherit; font-size: 12.5px; font-weight: 600; color: var(--muted); cursor: pointer;
}
.pload-more:hover { color: var(--accent-strong); border-color: var(--accent); background: var(--accent-soft); }
.row-winhide { display: none !important; }
.am-map-more {
  background: none; border: none; padding: 0; font: inherit; font-size: 12px; font-weight: 600;
  color: var(--accent-strong); cursor: pointer; text-decoration: underline; text-underline-offset: 2px;
}
@media (max-width: 860px) {
  .mtv4-row { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "who chip" "time act"; row-gap: 8px; }
  .mtv4-row .pr-who { grid-area: who; }
  .mtv4-row .pr-chip { grid-area: chip; }
  .mtv4-row .pr-time { grid-area: time; align-self: center; }
  .mtv4-row .mtv4-act { grid-area: act; justify-content: flex-end; }
}

/* ── Clean-UI pilot round 2 (Jul 9 2026 feedback) ── */
/* conversations: "perf - just make spacing slightly bigger" */
body.ui-clean .pshell .call-row { padding: 14px 6px; gap: 17px; }
body.ui-clean .pshell .pr-who strong { font-size: 14px; }
body.ui-clean .pshell .pr-time { font-size: 12.5px; }
/* contacts: just a list — no freq badge, verified chip inline */
body.ui-clean .contact-freq-badge { display: none; }
body.ui-clean .contact-row-main { gap: 14px; }
.cver { margin-left: 8px; font-size: 10.5px; padding: 2px 8px; vertical-align: 2px; }
/* meetings: mark + note controls */
.mtv4-mark {
  font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap;
  color: var(--status-ok); background: var(--status-ok-soft); border: none; border-radius: 999px; padding: 4px 11px;
}
.mtv4-mark-no { color: var(--status-out, #b91c1c); background: rgba(239, 68, 68, 0.12); }
.mtv4-mark:hover { filter: brightness(0.95); }
.mtv4-note-btn {
  font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; white-space: nowrap;
  color: var(--muted); background: none; border: 1px solid var(--border); border-radius: 999px; padding: 4px 11px;
}
.mtv4-note-btn:hover { color: var(--text); border-color: var(--border-strong); }
.mtv4-note { padding: 10px 4px 14px; border-bottom: 1px solid var(--border); display: flex; gap: 10px; align-items: flex-start; }
.mtv4-note textarea {
  flex: 1; font: inherit; font-size: 13px; padding: 9px 11px; border-radius: 10px;
  border: 1px solid var(--border); background: var(--surface); color: var(--text); resize: vertical;
}
.pr-chip-out { background: rgba(239, 68, 68, 0.12); color: var(--status-out, #b91c1c); }
/* account map legend chips are buttons on the pilot */
button.am-filter { cursor: pointer; font: inherit; border: 1px solid transparent; }
button.am-filter:hover { filter: brightness(0.96); }
button.am-filter.is-on { outline: 2px solid var(--accent); outline-offset: 1px; }
/* analytics: report card + funnel share the pane cleanly */
body.ui-clean .reporting-content .mi-card { margin-bottom: 1.3rem; }
body.ui-clean .portal-stats { margin-bottom: 1.3rem; }

/* ── Analytics funnel, clean strip (Jul 9 2026: "why is this still so ugly???") ── */
.afun-kicker { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted-2); margin-bottom: 1.1rem; }
.afun-row { display: flex; align-items: center; gap: 18px; flex-wrap: wrap; row-gap: 18px; }
.afun-num { font-size: 1.85rem; font-weight: 800; letter-spacing: -0.03em; color: var(--text); line-height: 1; font-variant-numeric: tabular-nums; }
.afun-lbl { font-size: 12px; font-weight: 600; color: var(--muted); margin-top: 5px; }
.afun-link { display: flex; flex-direction: column; align-items: center; gap: 1px; min-width: 48px; }
.afun-pct { font-size: 12.5px; font-weight: 700; color: var(--muted); font-variant-numeric: tabular-nums; }
.afun-arr { color: var(--border-strong); font-size: 0.95rem; line-height: 1; }
.afun-sub { font-size: 10px; font-weight: 600; color: var(--muted-2); white-space: nowrap; }
.afun-rail { height: 5px; border-radius: 999px; background: var(--bg-alt); overflow: hidden; margin: 1.3rem 0 0.45rem; max-width: 460px; }
.afun-rail i { display: block; height: 100%; border-radius: 999px; background: linear-gradient(90deg, var(--accent-strong), var(--accent-2)); }
.afun-rail-lbl { font-size: 12px; color: var(--muted-2); }
/* calendar pills wrap inside the card instead of bleeding off the edge */
body.ui-clean .pstrip-pills { flex-wrap: wrap; overflow: visible; }
body.ui-clean .pfun-meetings { margin-top: 1.2rem; }
/* campaign report card joins the same design language: no rainbow, flat surface */
body.ui-clean [data-pane="metrics"] .mi-card::before { display: none; }
body.ui-clean [data-pane="metrics"] .mi-card { background: var(--surface); border: 1px solid var(--border); border-radius: 16px; }
body.ui-clean [data-pane="metrics"] .mi-title { font-size: 1.45rem; }

/* ── Spacing deep-dive (Jul 9 2026: "make sure everything is absolutely
   perfect - spaced beautifully"). One 8pt rhythm across every pane. ── */
/* pane heads */
.pshell .pcalls-head { margin-bottom: 16px; }
/* conversations: head → chips → hairline → rows */
.pshell .filter-bar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.pshell #callsGrid { margin-top: 0; }
.pshell .pcalls-foot { padding: 16px 6px 4px; }
.pshell .pload-more { margin-top: 12px; }
/* contacts */
.pshell .plist { margin-bottom: 20px; }
.pshell .plist .uic-row { padding: 9px 2px; }
.pshell .plist-foot { padding-top: 10px; }
.pshell .contacts-list { margin-top: 0; }
.pshell .contact-row-main { padding: 13px 6px; }
/* analytics */
.afun-kicker { margin-bottom: 18px; }
.afun-rail { margin-top: 22px; }
body.ui-clean .pfun-meetings { margin-top: 18px; padding-top: 18px; border-top: 1px solid var(--border); }
body.ui-clean .pfun-foot { margin-top: 16px; }
/* account map */
.pshell .account-map-header { margin-bottom: 4px; }
.pshell .am-map { margin: 18px 0 10px; }
.pshell .am-map-sub { margin-bottom: 22px; }
/* meetings: pilot note editor in the original card idiom */
.meeting-note-editor { display: flex; gap: 10px; align-items: flex-start; margin-top: 12px; }
.meeting-note-editor textarea {
  flex: 1; font: inherit; font-size: 13px; padding: 9px 11px; border-radius: 10px;
  border: 1px solid var(--border); background: var(--surface); color: var(--text); resize: vertical;
}
/* insights */
.pshell .insights-aggregate { margin-top: 20px; gap: 16px; }
.pshell .pinsights-foot { padding: 16px 6px 4px; }

/* contacts rows in the Your-list idiom (pilot) — icon · Name · Role, Company · … · verified · › */
.uic-un { background: var(--border-strong); }
.uic-un::after { border-color: var(--surface); }
body.ui-clean .contact-row-main { display: flex; align-items: center; gap: 12px; }
body.ui-clean .contact-row-main .uic-check { flex: none; }
body.ui-clean .contact-identity { display: flex; align-items: baseline; gap: 7px; flex: 1; min-width: 0; overflow: hidden; }
body.ui-clean .contact-name { font-size: 13.5px; font-weight: 650; white-space: nowrap; }
body.ui-clean .contact-meta { font-size: 12.5px; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; margin: 0; }
body.ui-clean .contact-meta::before { content: "· "; color: var(--muted-2); }
body.ui-clean .plist-calls { font-size: 12px; color: var(--muted-2); white-space: nowrap; font-variant-numeric: tabular-nums; }
body.ui-clean .plist-ver { font-style: normal; font-size: 11px; font-weight: 700; color: var(--status-ok); white-space: nowrap; }
body.ui-clean .plist-ver-un { color: var(--muted-2); }
body.ui-clean .contacts-list { border-top: 1px solid var(--border); }
body.ui-clean .contact-row { border: none; border-bottom: 1px solid var(--border); border-radius: 0; background: transparent; }
body.ui-clean .contact-row:hover { background: var(--bg-alt); }
/* insights: the funnel strip sits flat at the top of the pane, no card chrome */
body.ui-clean [data-pane="insights"] .pfun { border: none; background: none; box-shadow: none; border-radius: 0; padding: 0 0 22px; border-bottom: 1px solid var(--border); margin-bottom: 24px; }
body.ui-clean [data-pane="insights"] .pfun .pfun-meetings, body.ui-clean [data-pane="insights"] .pfun .pfun-foot { display: none; }

/* ── Type standardization pass (pilot): one scale everywhere ──
   heads 1.08rem/700 · kickers 11px caps muted-2 · body 13px · sub 12px muted */
body.ui-clean .account-map-header-title h2, body.ui-clean .scr-head h2, body.ui-clean .hist-head h2 { font-size: 1.08rem; font-weight: 700; letter-spacing: -0.01em; margin-bottom: 0.3rem; }
body.ui-clean .account-map-header-sub { font-size: 12.5px; color: var(--muted); }
body.ui-clean .insight-kicker, body.ui-clean .mi-kicker { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted-2); }
body.ui-clean .meetings-section-label { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted-2); }
body.ui-clean .meeting-name { font-size: 13.5px; font-weight: 650; }
body.ui-clean .meeting-co { font-size: 12.5px; color: var(--muted); }
body.ui-clean .insight-list, body.ui-clean .mi-meta { font-size: 13px; }
body.ui-clean .report-export-sub { font-size: 12.5px; color: var(--muted); margin: 0 0 14px; max-width: 60ch; }
body.ui-clean .mtv4-tabs { margin-bottom: 14px; }
/* account map pane: contacts section joins below the map with a divider */
body.ui-clean #contactsContent { margin-top: 28px; padding-top: 22px; border-top: 1px solid var(--border); }
.meeting-note-editor[hidden] { display: none; }

/* funnel benchmark colors — real bars, tooltips carry the standard */
.afun-pct.afun-good { color: var(--status-ok); }
.afun-pct.afun-warn { color: var(--status-warm); }
.afun-pct.afun-bad { color: var(--status-out, #dc2626); }

/* "What we're hearing" pulse card — Working / Blocker tags under the funnel
   (Corey, Jul 17 2026, competitor "Client Pilot Snapshot" parity). Sits inside
   #statsBar directly beneath the funnel card; theme-aware green/red pills. */
#statsBar > .pfun, #statsBar > .afun-card, #statsBar > .pulse-card { grid-column: 1 / -1; }
.pulse-card { margin-top: 14px; padding: 16px 18px; background: var(--surface); border: 1px solid var(--border); border-radius: 14px; }
.pulse-kicker { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted-2); margin-bottom: 12px; }
.pulse-rows { display: flex; flex-direction: column; gap: 12px; }
.pulse-row { display: flex; align-items: flex-start; gap: 10px; }
.pulse-pill { flex: none; font-size: 10px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; padding: 3px 9px; border-radius: 999px; line-height: 1.4; margin-top: 2px; }
.pulse-pill-working { color: var(--status-ok); background: var(--status-ok-soft, rgba(22,163,74,0.12)); }
.pulse-pill-blocker { color: var(--status-out, #dc2626); background: rgba(220,38,38,0.12); }
.pulse-line { font-size: 15px; line-height: 1.55; text-align: left; color: var(--text); font-weight: 400; max-width: 64ch; margin: 0; }
.pulse-line strong { font-weight: 650; }
/* pulse sub-sections: objections list + "what we've stopped saying" */
.pulse-sub { margin-top: 16px; padding-top: 14px; border-top: 1px solid var(--border); }
.pulse-sub-label { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--muted-2); margin-bottom: 8px; }
.pulse-objections { margin: 0; padding-left: 1.1em; list-style: disc; max-width: 64ch; }
.pulse-objections li { font-size: 15px; line-height: 1.55; color: var(--text); margin: 4px 0; }

/* insights rhythm: the content grid's 24px gap is THE spacing — kill stacked margins */
body.ui-clean #insightsContent .mi-card { margin-bottom: 0; }
body.ui-clean #insightsContent .insights-aggregate { margin-top: 0; }
.pshell-brand { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100%; }
/* meeting editor fields */
.meeting-note-editor { flex-direction: column; }
.meeting-edit-fields { display: flex; gap: 12px; flex-wrap: wrap; width: 100%; }
.meeting-edit-fields label { display: flex; flex-direction: column; gap: 4px; font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--muted-2); }
.meeting-edit-fields input, .meeting-edit-fields select {
  font: inherit; font-size: 13px; padding: 7px 10px; border-radius: 9px;
  border: 1px solid var(--border); background: var(--surface); color: var(--text); min-width: 150px;
}
.meeting-note-editor textarea { width: 100%; }
.meeting-note-editor .btn { align-self: flex-start; }
/* deep-dive card */
.dd-card::before { display: none; }
.dd-summary { font-size: 14px; line-height: 1.6; color: var(--text); margin: 10px 0 0; max-width: 75ch; }
.dd-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-top: 18px; }
.dd-cols .insight-card { margin: 0; }
@media (max-width: 860px) { .dd-cols { grid-template-columns: 1fr; } }

/* ---- Mobile polish (Jul 10 2026): iOS zoom guard + comfortable tap targets ---- */
@media (max-width: 700px) {
  /* form fields under 16px make iOS Safari zoom the page on focus */
  input:not([type=checkbox]):not([type=radio]):not([type=range]), select, textarea { font-size: 16px; }
  /* footer + nav text links get a real touch area */
  .footer-links a, .footer a { display: inline-block; padding: 6px 2px; }
}

/* ---- Mobile funnel: tight 2-col ledger (Corey, Jul 10: "tighter and simpler") ---- */
@media (max-width: 700px) {
  .afun-row { display: grid; grid-template-columns: 1fr auto; column-gap: 12px; row-gap: 0; align-items: center; }
  .afun-seg { display: flex; align-items: baseline; gap: 8px; padding: 10px 0; border-top: 1px solid var(--border); min-width: 0; }
  .afun-link { flex-direction: row; align-items: baseline; justify-content: flex-end; gap: 5px; min-width: 0; padding: 10px 0; border-top: 1px solid var(--border); }
  .afun-row > *:nth-child(-n+2) { border-top: none; }
  .afun-num { font-size: 1.3rem; }
  .afun-lbl { margin-top: 0; }
  .afun-arr { display: none; }
  .afun-sub { font-size: 11px; }
  .afun-kicker { margin-bottom: 4px; }
  .afun-rail { margin-top: 14px; }
  /* the funnel card must own the full row -- .portal-stats' 2-col tile grid
     was squeezing it into a 156px cell */
  body.ui-clean .portal-stats { grid-template-columns: minmax(0, 1fr); }
  .afun-card { grid-column: 1 / -1; }
}

/* ---- Documents pane (Jul 13 2026): onboarding-status summary + client
   paperwork (proposals/agreements/prep notes), driven by manifest.documents.
   Shared shell tab — see portal.js buildShell()'s AUTO_PANES + renderDocuments. ---- */
.documents-content { max-width: 760px; }
.doc-onb-card { border-color: var(--accent-strong); }
.doc-onb-bar { height: 8px; background: var(--surface-2); border-radius: 999px; overflow: hidden; margin: 2px 0 2px; }
.doc-onb-bar > span { display: block; height: 100%; background: var(--accent-strong); width: 0; transition: width .3s ease; }
.doc-item { display: flex; gap: 14px; align-items: flex-start; border: 1px solid var(--border); border-radius: 14px; background: var(--surface); padding: 16px 18px; margin: 14px 0; }
.doc-icon { flex: none; width: 36px; height: 36px; border-radius: 9px; background: var(--accent-soft); color: var(--accent-strong); display: flex; align-items: center; justify-content: center; margin-top: 1px; }
.doc-icon svg { width: 19px; height: 19px; }
.doc-body { flex: 1; min-width: 0; }
.doc-title-row { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.doc-title { font-size: 1rem; font-weight: 700; margin: 0; }
.doc-date { font-size: .75rem; font-weight: 600; color: var(--muted-2); }
.doc-desc { margin: .3rem 0 0; color: var(--muted); font-size: .9rem; line-height: 1.5; }
.doc-text { margin: .6rem 0 0; color: var(--text); font-size: .9rem; line-height: 1.55; background: var(--surface-2); border-radius: 10px; padding: .75rem .85rem; }
.doc-link { display: inline-flex; align-items: center; gap: .4rem; margin-top: .7rem; font-size: .88rem; font-weight: 600; color: var(--accent-strong); text-decoration: none; border: 1px solid var(--border-strong); border-radius: 9px; padding: .45rem .75rem; }
.doc-link:hover { background: var(--accent-soft); }

/* ── Stack strip — the tools behind every call (Jul 14 2026) ── */
.stack-band { padding: 68px 0 76px; border-top: 1px solid var(--border); }
.stack-band .container { text-align: center; }
.stack-head { font-family: var(--serif); font-weight: 400; font-size: clamp(1.7rem, 3.4vw, 2.3rem); line-height: 1.1; color: var(--text); margin: 10px 0 0; }
.stack-head .serif { font-size: 1em; }
.stack-sub { color: var(--muted); font-size: 1rem; line-height: 1.5; margin: 14px auto 40px; max-width: 500px; }
.stack-row { display: flex; flex-wrap: wrap; justify-content: center; gap: 18px; }
.stack-chip {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 14px;
  width: 156px; padding: 24px 16px 18px;
  background: #ffffff; border: 1px solid #e8edf3; border-radius: var(--radius);
  box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04), 0 6px 20px -10px rgba(15, 23, 42, 0.10);
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease;
}
.stack-chip:hover { transform: translateY(-4px); border-color: #cbd5e1; box-shadow: 0 12px 30px -14px rgba(15, 23, 42, 0.22); }
.stack-logo { height: 46px; width: auto; max-width: 100%; object-fit: contain; }
.stack-logo--tile { border-radius: 11px; }
.stack-name { font-size: .82rem; font-weight: 600; letter-spacing: .01em; color: #5b6472; }

/* ── Revenue claim band (Jul 14 2026) ── */
.claim-band { padding: 44px 0; background: var(--accent-soft); border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.claim-band .container { text-align: center; }
.claim-band-line { margin: 0 auto; max-width: 940px; font-family: 'Inter', system-ui, sans-serif; font-weight: 800; font-size: clamp(1.5rem, 3.8vw, 2.5rem); line-height: 1.18; letter-spacing: -0.01em; color: var(--text); }
.cb-hl { font-family: var(--serif); font-weight: 400; color: var(--accent-strong); white-space: nowrap; }
@media (max-width: 560px) { .claim-band { padding: 32px 0; } .cb-hl { white-space: normal; } }

/* ── Outbound calculator — multi-channel funnel (Jul 14 2026) ── */
.calc { display: grid; grid-template-columns: minmax(300px, 380px) minmax(0, 1fr); gap: 28px; align-items: start; }
.calc-inputs { display: grid; grid-template-columns: 1fr; gap: 16px; }
.calc-econ { grid-column: 1 / -1; }
.calc-chan { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius); padding: 18px 18px 16px; box-shadow: var(--shadow-sm); transition: opacity .2s ease, border-color .2s ease; }
.calc-chan-head { display: flex; align-items: center; gap: 10px; margin-bottom: 14px; }
.calc-dot { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.calc-chan-name { font-weight: 700; font-size: .98rem; color: var(--text); margin-right: auto; white-space: nowrap; }
/* toggle switch */
.calc-switch { position: relative; display: inline-flex; cursor: pointer; }
.calc-switch input { position: absolute; opacity: 0; width: 100%; height: 100%; margin: 0; cursor: pointer; }
.calc-track { width: 38px; height: 22px; border-radius: 999px; background: var(--border-strong); transition: background .18s ease; position: relative; flex: none; }
.calc-track::after { content: ""; position: absolute; top: 2px; left: 2px; width: 18px; height: 18px; border-radius: 50%; background: #fff; box-shadow: 0 1px 3px rgba(0,0,0,.25); transition: transform .18s ease; }
.calc-switch input:checked + .calc-track { background: var(--accent); }
.calc-switch input:checked + .calc-track::after { transform: translateX(16px); }
.calc-ctrl { margin-bottom: 14px; }
.calc-ctrl:last-of-type { margin-bottom: 0; }
.calc-ctrl-head { display: flex; justify-content: space-between; align-items: baseline; margin-bottom: 6px; }
.calc-ctrl-head label { font-size: .82rem; color: var(--muted); font-weight: 500; }
.calc-v { font-size: .85rem; font-weight: 700; color: var(--text); font-variant-numeric: tabular-nums; }
.calc-chan-out { margin: 14px 0 0; padding-top: 12px; border-top: 1px dashed var(--border); font-size: .85rem; color: var(--muted); }
.calc-chan-out strong { color: var(--text); font-size: 1.05rem; font-variant-numeric: tabular-nums; }
/* greyed-out when toggled off */
.calc-chan.calc-off { opacity: .45; }
.calc-chan.calc-off .calc-chan-body { filter: grayscale(1); pointer-events: none; }
.calc-chan.calc-off .calc-switch { pointer-events: auto; }
/* results panel */
.calc-results { background: var(--surface); border: 1px solid var(--border); border-radius: var(--radius-lg); padding: 26px; box-shadow: var(--shadow-md); position: sticky; top: 90px; }
.calc-res-kicker { font-size: .72rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; color: var(--muted-2); margin: 0 0 18px; }
.calc-funnel { display: flex; align-items: stretch; gap: 6px; flex-wrap: wrap; }
.calc-fstat { flex: 1 1 0; min-width: 84px; background: var(--surface-2); border: 1px solid var(--border); border-radius: 12px; padding: 14px 10px; text-align: center; }
.calc-fnum { font-size: 1.5rem; font-weight: 800; color: var(--text); line-height: 1; font-variant-numeric: tabular-nums; }
.calc-flbl { font-size: .7rem; color: var(--muted); margin-top: 6px; line-height: 1.25; }
.calc-farrow { display: flex; align-items: center; color: var(--muted-2); font-size: 1rem; }
.calc-bigrow { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin: 20px 0 0; }
.calc-big { text-align: center; padding: 16px 8px; border-radius: 14px; background: var(--surface-2); border: 1px solid var(--border); }
.calc-big-accent { background: var(--accent-soft); border-color: var(--accent-glow); }
.calc-big-num { font-size: 1.55rem; font-weight: 800; color: var(--text); line-height: 1; font-variant-numeric: tabular-nums; }
.calc-big-accent .calc-big-num { color: var(--accent-strong); }
.calc-big-lbl { font-size: .72rem; color: var(--muted); margin-top: 6px; }
.calc-foot { font-size: .76rem; color: var(--muted-2); line-height: 1.5; margin: 18px 0 18px; }
.calc-results .btn { width: 100%; }
@media (max-width: 900px) {
  .calc { grid-template-columns: 1fr; }
  .calc-results { position: static; }
}
@media (max-width: 560px) {
  .calc-inputs { grid-template-columns: 1fr; }
  .calc-farrow { display: none; }
}
@media (max-width: 620px) {
  .stack-band { padding: 52px 0 58px; }
  .stack-row { gap: 12px; }
  .stack-chip { width: calc(50% - 8px); padding: 20px 12px 14px; }
}

/* ============================================================
   ONE PORTAL BODY-PROSE STANDARD (Corey, Jul 18 2026:
   "same text style in uniformity"). Every flowing text block in
   every card — meeting notes, insights, pulse, report prose —
   reads identically: 15px / line-height 1.55, flush LEFT, capped
   to a ~64ch measure so lines never run edge-to-edge, weight 400
   with BOLD reserved for scannable keywords/names only. Placed
   last so it consolidates the older ad-hoc per-card sizes.
   ============================================================ */
.insight-list li,
body.ui-clean .insight-list li,
.mi-recommendation p,
.dd-summary,
.cr-notes li,
.meeting-note,
.pulse-line,
.pulse-objections li {
  font-size: 15px;
  line-height: 1.55;
  text-align: left;
  font-weight: 400;
  max-width: 64ch;
}
.insight-list li strong,
.mi-recommendation p strong,
.cr-notes li strong,
.meeting-note strong,
.pulse-line strong,
.pulse-objections li strong { font-weight: 650; }

/* ── Email channel: per-message list (type badge · subject · body) ──
   Corey, Jul 19 2026: "show what kind of touches + the actual message."
   Body prose on the same uniform standard. */
.email-msg-list { display: flex; flex-direction: column; gap: 10px; margin-top: 10px; }
.email-msg {
  border: 1px solid var(--border); border-radius: 12px; padding: 12px 14px;
  background: color-mix(in srgb, var(--text, #0f172a) 2.5%, transparent);
}
.email-msg-head { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; margin-bottom: 6px; }
.email-type-badge {
  font-size: 10px; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase;
  color: var(--accent-strong); background: var(--accent-soft); border-radius: 999px; padding: 2px 8px;
}
.email-msg-who { font-size: 13px; font-weight: 600; color: var(--text); }
.email-msg-date { font-size: 12px; color: var(--muted-2); }
.email-msg-replied {
  font-size: 10px; font-weight: 800; letter-spacing: 0.05em; text-transform: uppercase;
  color: var(--status-ok); background: var(--status-ok-soft, rgba(22,163,74,0.12)); border-radius: 999px; padding: 2px 8px; margin-left: auto;
}
.email-msg-subject { font-size: 15px; font-weight: 650; color: var(--text); line-height: 1.5; margin-bottom: 3px; }
.email-msg-body { font-size: 15px; line-height: 1.55; text-align: left; font-weight: 400; color: var(--text); max-width: 64ch; white-space: pre-wrap; }
.email-msg-nobody { color: var(--muted-2); font-style: normal; }

/* ---------------------------------------------------------------------------
   Who we work with (/who-we-work-with) + the nav dropdown that reaches it.
   Corey, Aug 23 2026: the nine vertical pages existed but nothing on the site
   linked to them, so a founder arriving from LinkedIn only ever saw the generic
   homepage. This is the way in.
--------------------------------------------------------------------------- */
.wsec-hero{padding-top:clamp(64px,9vw,120px);padding-bottom:8px;text-align:center}
.wsec-hero .clean-lede{max-width:62ch;margin-left:auto;margin-right:auto}
.wsec-bonly{margin-top:18px;font-size:.86rem;font-weight:600;letter-spacing:.02em;
  text-transform:uppercase;opacity:.62}
.wsec-ind{padding-top:clamp(56px,7vw,96px)}
.wsec-ind h2,.wsec-flow h2,.wsec-cta h2{text-align:center;margin-bottom:10px}
.wsec-sub{text-align:center;max-width:60ch;margin:0 auto 34px;opacity:.75}
.wsec-fine{text-align:center;max-width:62ch;margin:26px auto 0}

.ind-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.ind-card{display:flex;flex-direction:column;gap:12px;padding:26px 24px;border-radius:16px;
  border:1px solid rgba(128,128,128,.22);background:rgba(128,128,128,.045);
  transition:border-color .16s,transform .16s}
.ind-card:hover{border-color:rgba(59,130,246,.5);transform:translateY(-2px)}
.ind-card h3{margin:0;font-size:1.16rem;letter-spacing:-.01em}
.ind-who{margin:0;font-size:.95rem;line-height:1.5;opacity:.8}
.ind-who strong{opacity:1}
.ind-subs{display:flex;flex-wrap:wrap;gap:8px;margin-top:2px}
.ind-sub{font-size:.82rem;font-weight:600;padding:5px 11px;border-radius:999px;
  border:1px solid rgba(128,128,128,.3);text-decoration:none;opacity:.9}
.ind-sub:hover{border-color:var(--accent,#3b82f6);opacity:1}
.ind-book{margin-top:auto;padding-top:6px;font-size:.92rem;font-weight:700;
  text-decoration:none;color:var(--accent,#3b82f6)}
.ind-book:hover{text-decoration:underline}

.flow-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px}
.flow-step{padding:26px 24px;border-radius:16px;border:1px solid rgba(128,128,128,.22)}
.flow-num{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;
  border-radius:999px;background:var(--accent,#3b82f6);color:#fff;font-weight:800;font-size:.9rem}
.flow-step h3{margin:12px 0 8px;font-size:1.1rem}
.flow-step p{margin:0;font-size:.95rem;line-height:1.55;opacity:.8}
.wsec-cta{text-align:center;padding-bottom:clamp(64px,9vw,120px)}

/* Nav dropdown ---------------------------------------------------------- */
.nav-drop{position:relative;display:inline-flex}
/* .nav-links styles its links with a DIRECT-child selector (`.nav-links > a`), so the
   dropdown trigger sits one level too deep and inherits nothing. Restate the same type
   ramp here or it renders at body size next to 14px siblings. */
.nav-drop>a{display:inline-flex;align-items:center;gap:5px;
  font-size:14px;font-weight:500;line-height:1;color:var(--muted);
  text-decoration:none;transition:color .15s ease}
.nav-drop>a:hover{color:var(--text)}
body.site-marketing .nav-drop>a{color:var(--mk-ink)}
body.site-marketing .nav-drop>a:hover{color:var(--mk-signal)}
.nav-drop-caret{width:9px;height:9px;flex:0 0 auto;transition:transform .16s}
.nav-drop:hover .nav-drop-caret,.nav-drop:focus-within .nav-drop-caret{transform:rotate(180deg)}
.nav-drop-menu{position:absolute;top:100%;left:50%;transform:translateX(-50%) translateY(6px);
  min-width:250px;padding:10px;border-radius:14px;display:grid;gap:2px;
  background:var(--bg,#fff);border:1px solid rgba(128,128,128,.24);
  box-shadow:0 18px 44px rgba(0,0,0,.16);opacity:0;visibility:hidden;pointer-events:none;
  transition:opacity .15s,transform .15s,visibility .15s;z-index:60}
.nav-drop:hover .nav-drop-menu,.nav-drop:focus-within .nav-drop-menu{
  opacity:1;visibility:visible;pointer-events:auto;transform:translateX(-50%) translateY(2px)}
.nav-drop-menu a{display:block;padding:9px 12px;border-radius:9px;font-size:13.5px;
  font-weight:500;line-height:1.3;text-decoration:none;white-space:nowrap;color:var(--text)}
body.site-marketing .nav-drop-menu a{color:var(--mk-ink)}
.nav-drop-menu a:hover{background:rgba(128,128,128,.12)}
.nav-drop-menu .nav-drop-all{margin-top:4px;border-top:1px solid rgba(128,128,128,.2);
  padding-top:11px;color:var(--accent,#3b82f6)}
@media (max-width:900px){.nav-drop{display:none}}

/* Industry pages (/industries/*) -- the browse-depth cousins of /verticals/*.
   Verticals are paid-traffic pages: one job, book or leave. These are for someone
   who found Corey on LinkedIn and wants to know he understands their market first. */
.ind-hero{padding-top:clamp(56px,8vw,104px);padding-bottom:clamp(40px,5vw,64px);text-align:center}
.ind-kicker{font-size:.82rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;
  opacity:.6;margin:0 0 18px}
.ind-kicker a{text-decoration:none;color:inherit}
.ind-kicker a:hover{color:var(--accent,#3b82f6)}
.ind-hero .clean-h1{max-width:19ch;margin-left:auto;margin-right:auto}
.ind-hero .clean-lede{max-width:60ch;margin:18px auto 30px}
.ind-hero-fine{margin-top:14px;opacity:.62}
.ind-body{padding-top:0}
.ind-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:22px}
.ind-block{padding:28px 26px;border-radius:16px;border:1px solid rgba(128,128,128,.22);
  background:rgba(128,128,128,.04)}
.ind-block h2{margin:0 0 10px;font-size:1.14rem;letter-spacing:-.01em}
.ind-block p{margin:0;font-size:.96rem;line-height:1.62;opacity:.84}
.ind-block-sub{margin-bottom:14px!important;opacity:.62!important;font-size:.9rem!important}
.ind-titles{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.ind-titles li{font-size:.86rem;font-weight:600;padding:6px 12px;border-radius:999px;
  border:1px solid rgba(128,128,128,.3);opacity:.92}
.ind-fit-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.ind-fit-card{padding:26px 24px;border-radius:16px;border:1px solid rgba(128,128,128,.24)}
.ind-fit-card h3{margin:0 0 10px;font-size:1.05rem}
.ind-fit-card p{margin:0;font-size:.95rem;line-height:1.6;opacity:.84}
.ind-fit-yes{border-color:rgba(34,197,94,.42);background:rgba(34,197,94,.05)}
.ind-fit-no{border-color:rgba(239,68,68,.34);background:rgba(239,68,68,.045)}
.ind-flow2{padding-top:clamp(48px,6vw,80px)}
.ind-flow2 h2{text-align:center;margin-bottom:28px}
.ind-other{margin-top:16px}
.ind-other a{color:var(--accent,#3b82f6);text-decoration:none;font-weight:600}

/* `body.site-marketing h2` (specificity 0-1-2) outranks a plain `.block h2` (0-1-1), so
   every card heading below has to restate the body prefix or it renders at 48px section
   size inside a card. Same trap as the nav dropdown above. */
body.site-marketing .ind-block h2{font-size:1.14rem;line-height:1.35;margin:0 0 10px;
  letter-spacing:-.01em}
body.site-marketing .ind-fit-card h3{font-size:1.05rem;line-height:1.35}
body.site-marketing .flow-step h3{font-size:1.1rem;line-height:1.35}
body.site-marketing .ind-card h3{font-size:1.16rem;line-height:1.3}

/* Industry-page rhythm, matched to the homepage hero. Aug 23 2026.
   The type scale was already identical (70.4px h1 / 21.12px lede); what was off was
   spacing: a 104px top pad against the homepage's 56px, and a `max-width:19ch` on the
   h1 that fought `text-wrap:balance` into a ragged three-line wrap. */
body.site-marketing .ind-hero{padding-top:56px;padding-bottom:72px}
body.site-marketing .ind-hero .clean-h1{max-width:860px;margin:0 auto 28px;text-wrap:balance}
body.site-marketing .ind-hero .clean-lede{max-width:544px;margin:0 auto 32px}
body.site-marketing .ind-kicker{margin:0 0 20px}
body.site-marketing .ind-hero-fine{margin-top:16px}

/* One consistent 96px band between every section below the hero, so the page has the
   same measured cadence as the homepage instead of drifting per-section. */
body.site-marketing .ind-body{padding-top:0;padding-bottom:96px}
body.site-marketing .ind-fit{padding-top:0;padding-bottom:96px}
body.site-marketing .ind-flow2{padding-top:0;padding-bottom:96px}
body.site-marketing .ind-flow2 h2{margin-bottom:32px}
body.site-marketing .wsec-cta{padding-top:0;padding-bottom:clamp(72px,9vw,120px)}
.ind-cols,.ind-fit-grid{gap:20px}

/* Hub page: same band treatment so /who-we-work-with and /industries/* feel like one set. */
body.site-marketing .wsec-hero{padding-top:56px;padding-bottom:56px}
body.site-marketing .wsec-hero .clean-h1{max-width:860px;margin:0 auto 28px}
body.site-marketing .wsec-ind{padding-top:0;padding-bottom:96px}
body.site-marketing .wsec-flow{padding-top:0;padding-bottom:96px}
body.site-marketing .wsec-flow h2{margin-bottom:32px}

@media (max-width:720px){
  body.site-marketing .ind-hero{padding-top:40px;padding-bottom:52px}
  body.site-marketing .ind-body,
  body.site-marketing .ind-fit,
  body.site-marketing .ind-flow2,
  body.site-marketing .wsec-ind,
  body.site-marketing .wsec-flow{padding-bottom:64px}
}

/* Homepage-grade polish for the industry cards: surface background, hover lift,
   and a staggered reveal cascade so the grid animates like the homepage bands. */
.ind-block,.ind-fit-card,.flow-step{background:var(--surface);
  transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s cubic-bezier(.2,.7,.2,1),
             border-color .35s cubic-bezier(.2,.7,.2,1),opacity .7s cubic-bezier(.2,.7,.2,1)}
.ind-block:hover,.ind-fit-card:hover,.flow-step:hover{transform:translateY(-4px);
  border-color:var(--border-strong);box-shadow:var(--shadow-lg)}
.ind-fit-yes:hover{border-color:rgba(34,197,94,.6)}
.ind-fit-no:hover{border-color:rgba(239,68,68,.5)}
/* Cascade: 2nd/3rd/4th card in each grid arrives a beat later. The delay lives on
   the base state (so it applies when .is-visible lands) and is zeroed on hover so
   the lift always feels instant. */
.ind-cols>[data-reveal]:nth-child(2),.ind-fit-grid>[data-reveal]:nth-child(2),
.flow-grid>[data-reveal]:nth-child(2){transition-delay:.08s}
.ind-cols>[data-reveal]:nth-child(3),.flow-grid>[data-reveal]:nth-child(3){transition-delay:.16s}
.ind-cols>[data-reveal]:nth-child(4){transition-delay:.24s}
.ind-cols>[data-reveal]:hover,.ind-fit-grid>[data-reveal]:hover,
.flow-grid>[data-reveal]:hover{transition-delay:0s}
/* Keep every card's heading on one shared baseline so rows read as aligned lines. */
.ind-block h2{min-height:1.35em}

/* Four blocks in a 3-up auto-fit grid leaves one orphan on row two. 2x2 balances it. */
@media (min-width:760px){
  body.site-marketing .ind-cols{grid-template-columns:repeat(2,1fr)}
}

/* "For <audience>" proof band on the ad landing pages. Corey, Aug 23 2026.
   Reference he sent: a real photo of the buyer's own working environment with a
   product card floating over it. Coda has no software UI to screenshot, so the
   card is the thing we actually deliver -- a recorded conversation with a
   decision maker and the outcome it ended in. */
.forband{padding-top:clamp(56px,7vw,96px);padding-bottom:clamp(56px,7vw,96px)}
body.site-marketing .forband-h{text-align:center;margin:0 0 12px;
  font-size:clamp(30px,4vw,46px);line-height:1.08;letter-spacing:-.02em}
.forband-who{color:var(--mk-signal,#2563eb)}
.forband-sub{text-align:center;max-width:56ch;margin:0 auto clamp(28px,3.5vw,44px);
  font-size:1.02rem;line-height:1.55;opacity:.72}

.forband-shot{position:relative;max-width:820px;margin:0 auto;border-radius:20px;
  overflow:hidden;background:#e9edf2;
  box-shadow:0 26px 70px rgba(16,32,56,.20),0 3px 10px rgba(16,32,56,.08)}
.forband-shot img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}

/* The floating card. Glass over the photo, the way the reference does it. */
.fcard{position:absolute;right:22px;bottom:22px;width:min(320px,72%);
  padding:15px 17px 14px;border-radius:14px;text-align:left;
  background:rgba(255,255,255,.93);backdrop-filter:blur(14px) saturate(150%);
  -webkit-backdrop-filter:blur(14px) saturate(150%);
  border:1px solid rgba(255,255,255,.72);
  box-shadow:0 16px 40px rgba(12,22,40,.26)}
.fcard-top{display:flex;align-items:center;gap:8px;margin-bottom:11px}
.fcard-play{display:inline-flex;align-items:center;justify-content:center;
  width:22px;height:22px;border-radius:999px;flex:0 0 auto;
  background:var(--mk-signal,#2563eb);color:#fff;padding-left:2px}
.fcard-label{font-size:.72rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:#5b6b80}
.fcard-dur{margin-left:auto;font-size:.78rem;font-weight:600;color:#5b6b80;
  font-variant-numeric:tabular-nums}
.fcard-name{font-size:1rem;font-weight:700;color:#101a28;line-height:1.25}
.fcard-role{margin-top:2px;font-size:.82rem;line-height:1.4;color:#5b6b80}
.fcard-foot{display:flex;align-items:center;gap:7px;margin-top:11px;
  padding-top:11px;border-top:1px solid rgba(16,32,56,.10)}
.fcard-dot{width:7px;height:7px;border-radius:999px;flex:0 0 auto;background:#16a34a;
  box-shadow:0 0 0 3px rgba(22,163,74,.16)}
.fcard-out{font-size:.83rem;font-weight:650;color:#136c33}

.forband-fine{text-align:center;max-width:60ch;margin:20px auto 0;opacity:.6}

@media (max-width:620px){
  .fcard{position:static;width:auto;margin:12px;
    background:rgba(255,255,255,.98);box-shadow:0 6px 20px rgba(12,22,40,.14)}
  .forband-shot{background:#fff}
  .forband-shot img{aspect-ratio:3/2}
}

/* Corey, Aug 23 2026: "make the pictures way smaller". The band was 820px wide at
   4:3, roughly 615px tall, which made the photo the loudest thing on the page and
   pushed the price section below the fold. 540px at 3:2 is ~360px tall -- the photo
   supports the claim instead of dominating it. Card scales with it. */
body.site-marketing .forband-shot{max-width:540px;border-radius:16px;
  box-shadow:0 16px 40px rgba(16,32,56,.16),0 2px 6px rgba(16,32,56,.06)}
body.site-marketing .forband-shot img{aspect-ratio:3/2}
body.site-marketing .forband{padding-top:clamp(44px,5.5vw,72px);
  padding-bottom:clamp(44px,5.5vw,72px)}
body.site-marketing .forband-h{font-size:clamp(26px,3.2vw,38px)}
body.site-marketing .forband-sub{font-size:.96rem;margin-bottom:clamp(22px,2.6vw,32px)}

body.site-marketing .fcard{right:14px;bottom:14px;width:min(262px,76%);
  padding:11px 13px 10px;border-radius:11px}
body.site-marketing .fcard-top{gap:6px;margin-bottom:8px}
body.site-marketing .fcard-play{width:18px;height:18px}
body.site-marketing .fcard-label{font-size:.62rem;letter-spacing:.05em}
body.site-marketing .fcard-dur{font-size:.7rem}
body.site-marketing .fcard-name{font-size:.88rem}
body.site-marketing .fcard-role{font-size:.72rem;margin-top:1px}
body.site-marketing .fcard-foot{margin-top:8px;padding-top:8px;gap:6px}
body.site-marketing .fcard-dot{width:6px;height:6px;box-shadow:0 0 0 2.5px rgba(22,163,74,.16)}
body.site-marketing .fcard-out{font-size:.73rem}
body.site-marketing .forband-fine{margin-top:16px;font-size:.8rem}

/* ---------------------------------------------------------------------------
   Stripped ad landing pages (.vpage). Corey, Aug 23 2026: "just the picture, a
   few details about their industry, and that's it." Headline, photo, four facts,
   book. The booking step stays because the ads are paid for by conversions.
--------------------------------------------------------------------------- */
body.vpage .vp-hero{padding:clamp(44px,6vw,76px) 0 clamp(20px,2.4vw,28px);text-align:center}
body.vpage .vp-kicker{margin:0 0 14px;font-size:.78rem;font-weight:700;letter-spacing:.09em;
  text-transform:uppercase;color:var(--mk-signal,#2563eb)}
body.site-marketing.vpage .vp-h1{margin:0 auto 16px;max-width:16ch;
  font-size:clamp(32px,4.6vw,56px);line-height:1.05;letter-spacing:-.025em;text-wrap:balance}
body.vpage .vp-lede{margin:0 auto;max-width:54ch;font-size:clamp(16px,1.25vw,19px);
  line-height:1.55;opacity:.74}

body.vpage .vp-shotwrap{padding:clamp(24px,3vw,36px) 0 clamp(40px,5vw,64px)}
body.vpage .vp-shotfine{text-align:center;max-width:56ch;margin:16px auto 0;
  font-size:.8rem;opacity:.58}

body.vpage .vp-facts{padding:0 0 clamp(48px,6vw,76px)}
body.vpage .vp-facts-grid{display:grid;grid-template-columns:repeat(2,1fr);
  gap:clamp(20px,2.4vw,30px);max-width:840px;margin:0 auto}
body.vpage .vp-fact{padding:24px 22px;border-radius:14px;
  border:1px solid rgba(128,128,128,.2);background:rgba(128,128,128,.035)}
body.site-marketing.vpage .vp-fact h2{margin:0 0 8px;font-size:.79rem;font-weight:700;
  letter-spacing:.07em;text-transform:uppercase;line-height:1.3;opacity:.55}
body.vpage .vp-fact p{margin:0;font-size:.95rem;line-height:1.6;opacity:.88}

body.vpage .vp-cta{padding:0 0 clamp(56px,7vw,88px);text-align:center}
body.site-marketing.vpage .vp-cta h2{margin:0 0 10px;font-size:clamp(26px,3.2vw,38px);
  line-height:1.12;letter-spacing:-.02em}
body.vpage .vp-cta-sub{margin:0 auto clamp(24px,3vw,34px);max-width:48ch;opacity:.72}
body.vpage .vp-cta-fine{margin-top:18px;opacity:.55}

body.vpage .vp-foot{padding:26px 0 34px;border-top:1px solid rgba(128,128,128,.16);
  text-align:center;font-size:.85rem;opacity:.62}
body.vpage .vp-foot a{color:inherit;text-decoration:none}
body.vpage .vp-foot a:hover{text-decoration:underline}
body.vpage .vp-foot-sep{margin:0 8px;opacity:.5}

/* Photo is the hero here, so it can sit a touch larger than the old inline band. */
body.vpage .forband-shot{max-width:620px}

@media (max-width:720px){
  body.vpage .vp-facts-grid{grid-template-columns:1fr}
  body.site-marketing.vpage .vp-h1{max-width:none}
}
