/* TradeForm Portal — Premium SaaS UI (v2.0.9) */
:root{
  --qsp-teal:#14B8A6;
  --qsp-teal-600:#0D9488;
  --qsp-teal-700:#0F766E;
  --qsp-teal-50:#F0FDFA;
  --qsp-ink:#0B1220;          /* near-black brand */
  --qsp-ink-2:#0F172A;
  --qsp-text:#0F172A;
  --qsp-muted:#64748B;
  --qsp-subtle:#94A3B8;
  --qsp-bg:#F4F7FB;
  --qsp-card:#FFFFFF;
  --qsp-border:#E5EAF1;
  --qsp-border-strong:#D5DCE6;
  --qsp-shadow-sm:0 1px 2px rgba(15,23,42,.04), 0 1px 3px rgba(15,23,42,.05);
  --qsp-shadow:0 1px 2px rgba(15,23,42,.04), 0 10px 30px -12px rgba(15,23,42,.12);
  --qsp-shadow-lg:0 10px 40px -10px rgba(15,23,42,.18), 0 4px 12px rgba(15,23,42,.06);
  --qsp-radius:16px;
  --qsp-radius-sm:10px;
  --qsp-gradient-hero:linear-gradient(135deg,#0B1220 0%,#0F766E 100%);
  --qsp-gradient-teal:linear-gradient(135deg,#14B8A6 0%,#0D9488 100%);
  --qsp-orange:#F97316;
  --qsp-green:#10B981;
  --qsp-yellow:#EAB308;
  --qsp-blue:#3B82F6;
  --qsp-red:#EF4444;
  --qsp-purple:#8B5CF6;

  /* Status / badge tokens (used for pills, badges, buttons, alerts) */
  --qsp-success:#059669;
  --qsp-success-bg:#ECFDF5;
  --qsp-success-border:#A7F3D0;
  --qsp-warning:#B45309;
  --qsp-warning-bg:#FFFBEB;
  --qsp-warning-border:#FDE68A;
  --qsp-danger:#B91C1C;
  --qsp-danger-bg:#FEF2F2;
  --qsp-danger-border:#FECACA;
  --qsp-focus-ring:0 0 0 4px rgba(20,184,166,.15);
}
*{box-sizing:border-box}
body.qsp-body{
  margin:0;background:var(--qsp-bg);color:var(--qsp-text);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  font-feature-settings:"cv02","cv03","cv04","cv11";
}
a{color:var(--qsp-teal-700);text-decoration:none}

/* App shell */
.qsp-app{display:grid;grid-template-columns:264px 1fr;grid-template-rows:64px 1fr;min-height:100vh}
.qsp-topbar{
  grid-column:1/-1;background:var(--qsp-ink);color:#fff;
  display:flex;align-items:center;padding:0 24px;gap:14px;z-index:10;
  box-shadow:0 1px 0 rgba(255,255,255,.04) inset, 0 6px 18px rgba(15,23,42,.18);
}
.qsp-topbar img{height:32px;border-radius:6px}
.qsp-topbar .qsp-brand{font-weight:700;letter-spacing:.2px;font-size:15px}
.qsp-topbar .qsp-spacer{flex:1}
.qsp-topbar .qsp-user{display:flex;align-items:center;gap:12px;color:#CBD5E1;font-size:14px}
.qsp-topbar .qsp-user .qsp-avatar{
  width:32px;height:32px;border-radius:50%;background:var(--qsp-gradient-teal);
  color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:13px;
}
.qsp-topbar .qsp-user a{color:#94A3B8;font-size:13px;padding:6px 10px;border-radius:8px;transition:.15s}
.qsp-topbar .qsp-user a:hover{background:rgba(255,255,255,.06);color:#fff}

/* Sidebar */
.qsp-sidebar{background:#fff;border-right:1px solid var(--qsp-border);padding:18px 14px;display:flex;flex-direction:column;gap:2px}
.qsp-sidebar a{
  display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;
  color:#475569;font-weight:500;font-size:14px;transition:.15s;position:relative;
}
.qsp-sidebar a:hover{background:#F1F5F9;color:var(--qsp-ink)}
.qsp-sidebar a.active{
  background:var(--qsp-teal-50);color:var(--qsp-teal-700);font-weight:600;
}
.qsp-sidebar a.active::before{
  content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--qsp-teal);
}
.qsp-sidebar .dot{width:8px;height:8px;border-radius:50%;background:#CBD5E1;flex:0 0 8px}
.qsp-sidebar a.active .dot{background:var(--qsp-teal)}

/* Main */
.qsp-main{padding:28px 32px 48px;overflow-x:hidden;max-width:1400px;width:100%}
.qsp-page-title{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin:0 0 22px}
.qsp-page-title h1{font-size:24px;margin:0;font-weight:700;letter-spacing:-.01em}
.qsp-page-title .qsp-sub{color:var(--qsp-muted);font-size:14px;margin-top:6px}
.qsp-refresh{
  background:#fff;border:1px solid var(--qsp-border);border-radius:10px;
  padding:9px 14px;font-size:13px;font-weight:600;cursor:pointer;color:#334155;
  display:inline-flex;align-items:center;gap:6px;transition:.15s;
}
.qsp-refresh:hover{border-color:var(--qsp-teal);color:var(--qsp-teal-700);box-shadow:0 0 0 3px rgba(20,184,166,.12)}

/* ---------- HERO ---------- */
.qsp-hero{
  position:relative;overflow:hidden;border-radius:20px;
  background:var(--qsp-gradient-hero);color:#fff;padding:32px 36px;margin-bottom:22px;
  box-shadow:var(--qsp-shadow-lg);
}
.qsp-hero::before{
  content:"";position:absolute;inset:auto -60px -120px auto;width:380px;height:380px;border-radius:50%;
  background:radial-gradient(circle at 30% 30%, rgba(20,184,166,.45), transparent 60%);
  filter:blur(10px);pointer-events:none;
}
.qsp-hero::after{
  content:"";position:absolute;top:-80px;left:-80px;width:240px;height:240px;border-radius:50%;
  background:radial-gradient(circle, rgba(255,255,255,.08), transparent 60%);pointer-events:none;
}
.qsp-hero-inner{position:relative;z-index:1;display:grid;grid-template-columns:1fr auto;gap:20px;align-items:flex-end}
.qsp-hero .eyebrow{
  display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:600;
  text-transform:uppercase;letter-spacing:.12em;color:#5EEAD4;margin-bottom:8px;
}
.qsp-hero .eyebrow .pulse{
  width:8px;height:8px;border-radius:50%;background:#5EEAD4;
  box-shadow:0 0 0 0 rgba(94,234,212,.7);animation:qsp-pulse 2s infinite;
}
@keyframes qsp-pulse{0%{box-shadow:0 0 0 0 rgba(94,234,212,.6)}70%{box-shadow:0 0 0 10px rgba(94,234,212,0)}100%{box-shadow:0 0 0 0 rgba(94,234,212,0)}}
.qsp-hero h1{font-size:30px;font-weight:700;margin:0 0 8px;letter-spacing:-.02em;line-height:1.15}
.qsp-hero .qsp-hero-sub{color:rgba(255,255,255,.8);font-size:15px;max-width:60ch;line-height:1.55}
.qsp-hero-stats{
  display:flex;gap:28px;flex-wrap:wrap;margin-top:18px;
}
.qsp-hero-stat{display:flex;flex-direction:column;gap:2px}
.qsp-hero-stat .v{font-size:22px;font-weight:700;letter-spacing:-.01em;color:#fff}
.qsp-hero-stat .l{font-size:12px;color:rgba(255,255,255,.7);text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.qsp-hero .hero-cta{
  align-self:flex-end;background:#fff;color:var(--qsp-ink);border:0;border-radius:12px;
  padding:11px 18px;font-weight:600;font-size:14px;cursor:pointer;display:inline-flex;align-items:center;gap:8px;
  box-shadow:0 8px 24px rgba(0,0,0,.18);transition:.15s;
}
.qsp-hero .hero-cta:hover{transform:translateY(-1px);box-shadow:0 12px 28px rgba(0,0,0,.22)}

/* ---------- PIPELINE OVERVIEW ---------- */
.qsp-overview{
  display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;
}
.qsp-overview{grid-template-columns:repeat(3,1fr)}
.qsp-over-card{
  background:#fff;border:1px solid var(--qsp-border);border-radius:var(--qsp-radius);
  padding:20px 20px 18px;box-shadow:0 1px 2px rgba(16,24,40,.05),0 1px 3px rgba(16,24,40,.06);
  position:relative;overflow:hidden;transition:.18s;
}
.qsp-over-card:hover{transform:translateY(-2px);box-shadow:0 10px 24px -12px rgba(16,24,40,.18);border-color:var(--qsp-border-strong)}
.qsp-over-card .ic{
  width:42px;height:42px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;
  background:#EFF6FF;color:#1D4ED8;margin-bottom:14px;
}
.qsp-over-card .lbl{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--qsp-muted)}
.qsp-over-card .val{font-size:28px;font-weight:700;letter-spacing:-.02em;margin-top:6px;color:#0F172A}
.qsp-over-card .sub{font-size:12.5px;color:var(--qsp-muted);margin-top:6px}
/* Top accent bar */
.qsp-over-card .ribbon{position:absolute;top:0;left:0;right:0;height:3px;width:100%;border-radius:0;opacity:1;background:#3B82F6}
/* Tone palette — light pastel accents */
.qsp-over-card.tone-blue   .ic{background:#EFF6FF;color:#1D4ED8}
.qsp-over-card.tone-blue   .ribbon{background:#3B82F6}
.qsp-over-card.tone-green  .ic{background:#ECFDF5;color:#047857}
.qsp-over-card.tone-green  .ribbon{background:#10B981}
.qsp-over-card.tone-purple .ic{background:#F5F3FF;color:#6D28D9}
.qsp-over-card.tone-purple .ribbon{background:#8B5CF6}
.qsp-over-card.tone-orange .ic{background:#FFF7ED;color:#C2410C}
.qsp-over-card.tone-orange .ribbon{background:#F97316}
.qsp-over-card.tone-red    .ic{background:#FEF2F2;color:#B91C1C}
.qsp-over-card.tone-red    .ribbon{background:#EF4444}
.qsp-over-card.tone-amber  .ic{background:#FFFBEB;color:#B45309}
.qsp-over-card.tone-amber  .ribbon{background:#F59E0B}
.qsp-over-card.tone-navy   .ic{background:#E8EEF5;color:#0F2B4D}
.qsp-over-card.tone-navy   .ribbon{background:#0F2B4D}

body.qsp-theme-dark .qsp-over-card .ic{background:rgba(59,130,246,.16);color:#93C5FD}
body.qsp-theme-dark .qsp-over-card.tone-blue   .ic{background:rgba(59,130,246,.16);color:#93C5FD}
body.qsp-theme-dark .qsp-over-card.tone-green  .ic{background:var(--qsp-success-bg);color:var(--qsp-success)}
body.qsp-theme-dark .qsp-over-card.tone-purple .ic{background:rgba(167,139,250,.16);color:#C4B5FD}
body.qsp-theme-dark .qsp-over-card.tone-orange .ic{background:rgba(249,115,22,.16);color:#FDBA74}
body.qsp-theme-dark .qsp-over-card.tone-red    .ic{background:var(--qsp-danger-bg);color:var(--qsp-danger)}
body.qsp-theme-dark .qsp-over-card.tone-amber  .ic{background:var(--qsp-warning-bg);color:var(--qsp-warning)}
body.qsp-theme-dark .qsp-over-card.tone-navy   .ic{background:rgba(148,163,184,.16);color:#CBD5E1}

/* ---------- KPI cards (compact secondary row) ---------- */
.qsp-kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:24px}
.qsp-kpi{
  background:var(--qsp-card);border-radius:var(--qsp-radius);box-shadow:var(--qsp-shadow-sm);
  border:1px solid var(--qsp-border);padding:18px 20px;position:relative;transition:.18s;
  display:flex;align-items:flex-start;gap:14px;
}
.qsp-kpi:hover{transform:translateY(-2px);box-shadow:var(--qsp-shadow);border-color:var(--qsp-border-strong)}
.qsp-kpi .kpi-ic{
  width:40px;height:40px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;
  background:var(--qsp-teal-50);color:var(--qsp-teal-700);
}
.qsp-kpi .kpi-body{min-width:0;flex:1}
.qsp-kpi .label{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--qsp-muted);font-weight:600}
.qsp-kpi .value{font-size:26px;font-weight:700;margin-top:4px;color:var(--qsp-ink);line-height:1.1;letter-spacing:-.02em}
.qsp-kpi .meta{font-size:12px;color:var(--qsp-muted);margin-top:4px}
.qsp-kpi.orange .kpi-ic{background:#FFF1E6;color:#C2410C}
.qsp-kpi.green  .kpi-ic{background:#E6FBF1;color:#067647}
.qsp-kpi.yellow .kpi-ic{background:#FEF7C3;color:#854D0E}
.qsp-kpi.blue   .kpi-ic{background:#E0F2FE;color:#0369A1}
.qsp-kpi.red    .kpi-ic{background:#FEE4E2;color:#B42318}
.qsp-kpi.purple .kpi-ic{background:#F3E8FF;color:#6D28D9}

body.qsp-theme-dark .qsp-kpi .kpi-ic{background:var(--qsp-teal-50);color:var(--qsp-teal-700)}
body.qsp-theme-dark .qsp-kpi.orange .kpi-ic{background:rgba(249,115,22,.16);color:#FDBA74}
body.qsp-theme-dark .qsp-kpi.green  .kpi-ic{background:var(--qsp-success-bg);color:var(--qsp-success)}
body.qsp-theme-dark .qsp-kpi.yellow .kpi-ic{background:var(--qsp-warning-bg);color:var(--qsp-warning)}
body.qsp-theme-dark .qsp-kpi.blue   .kpi-ic{background:rgba(59,130,246,.16);color:#93C5FD}
body.qsp-theme-dark .qsp-kpi.red    .kpi-ic{background:var(--qsp-danger-bg);color:var(--qsp-danger)}
body.qsp-theme-dark .qsp-kpi.purple .kpi-ic{background:rgba(167,139,250,.16);color:#C4B5FD}

/* ---------- Quick Actions ---------- */
.qsp-quick{
  display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:24px;
}
.qsp-quick-btn{
  display:flex;align-items:center;gap:14px;padding:16px 18px;border-radius:14px;
  background:#fff;border:1px solid var(--qsp-border);box-shadow:var(--qsp-shadow-sm);
  color:var(--qsp-text);cursor:pointer;transition:.18s;text-align:left;font:inherit;
}
.qsp-quick-btn:hover{border-color:var(--qsp-teal);box-shadow:var(--qsp-shadow);transform:translateY(-2px);color:var(--qsp-teal-700)}
.qsp-quick-btn .qa-ic{
  width:42px;height:42px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--qsp-teal-50);color:var(--qsp-teal-700);flex-shrink:0;
}
.qsp-quick-btn .qa-t{font-weight:600;font-size:14px;color:var(--qsp-ink);line-height:1.2;display:block}
.qsp-quick-btn .qa-s{font-size:12px;color:var(--qsp-muted);margin-top:3px;display:block;line-height:1.35}
.qsp-quick-btn > span:not(.qa-ic){display:flex;flex-direction:column;gap:2px}

/* ---------- Two-column section row ---------- */
.qsp-row-2{display:grid;grid-template-columns:2fr 1fr;gap:18px;margin-bottom:22px}

/* Card */
.qsp-card{
  background:var(--qsp-card);border-radius:var(--qsp-radius);box-shadow:var(--qsp-shadow-sm);
  border:1px solid var(--qsp-border);padding:22px;margin-bottom:22px;
}
.qsp-card .qsp-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;gap:12px}
.qsp-card h2{margin:0;font-size:15px;font-weight:700;color:var(--qsp-ink);letter-spacing:-.005em}
.qsp-card .qsp-card-sub{font-size:12px;color:var(--qsp-muted);margin-top:2px}
.qsp-card .chart-wrap{position:relative;height:280px}

/* Recent Activity */
.qsp-activity{display:flex;flex-direction:column;gap:2px}
.qsp-activity-item{
  display:flex;gap:12px;padding:12px 4px;border-bottom:1px solid #F1F5F9;align-items:flex-start;
}
.qsp-activity-item:last-child{border-bottom:0}
.qsp-activity-item .ai-ic{
  width:34px;height:34px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;
  background:var(--qsp-teal-50);color:var(--qsp-teal-700);flex-shrink:0;
}
.qsp-activity-item.tone-green .ai-ic{background:#E6FBF1;color:#067647}
.qsp-activity-item.tone-orange .ai-ic{background:#FFF1E6;color:#C2410C}
.qsp-activity-item.tone-blue .ai-ic{background:#E0F2FE;color:#0369A1}

body.qsp-theme-dark .qsp-activity-item .ai-ic{background:var(--qsp-teal-50);color:var(--qsp-teal-700)}
body.qsp-theme-dark .qsp-activity-item.tone-green .ai-ic{background:var(--qsp-success-bg);color:var(--qsp-success)}
body.qsp-theme-dark .qsp-activity-item.tone-orange .ai-ic{background:rgba(249,115,22,.16);color:#FDBA74}
body.qsp-theme-dark .qsp-activity-item.tone-blue .ai-ic{background:rgba(59,130,246,.16);color:#93C5FD}
body.qsp-theme-dark .qsp-activity-item{border-bottom-color:#182235}
body.qsp-theme-dark .qsp-activity-item .ai-time{color:var(--qsp-muted)}
.qsp-activity-item .ai-body{min-width:0;flex:1}
.qsp-activity-item .ai-t{font-size:13.5px;color:var(--qsp-ink);font-weight:500;line-height:1.4}
.qsp-activity-item .ai-t strong{font-weight:700}
.qsp-activity-item .ai-time{font-size:12px;color:var(--qsp-muted);margin-top:2px}

/* Toolbar */
.qsp-toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:14px}
.qsp-input,.qsp-select{
  height:40px;padding:0 12px;border:1px solid var(--qsp-border);border-radius:10px;
  background:#fff;font-size:16px;color:var(--qsp-text);outline:none;font-family:inherit;
  transition:.15s;
}
.qsp-input:focus,.qsp-select:focus{border-color:var(--qsp-teal);box-shadow:0 0 0 4px rgba(20,184,166,.15)}
.qsp-input{min-width:240px;flex:1 1 240px;max-width:360px}

.qsp-btn{
  height:40px;padding:0 16px;border:none;border-radius:10px;font-size:14px;font-weight:600;
  cursor:pointer;display:inline-flex;align-items:center;gap:8px;background:var(--qsp-teal);color:#fff;
  transition:.15s;box-shadow:0 1px 2px rgba(15,23,42,.08);
}
.qsp-btn:hover{background:var(--qsp-teal-600);box-shadow:0 6px 16px -6px rgba(20,184,166,.5)}
.qsp-btn:focus-visible{outline:none;box-shadow:var(--qsp-focus-ring)}
.qsp-btn.secondary{background:var(--qsp-card);color:var(--qsp-text);border:1px solid var(--qsp-border)}
.qsp-btn.secondary:hover{border-color:var(--qsp-teal);color:var(--qsp-teal-700);background:var(--qsp-card)}
.qsp-btn.ghost{background:transparent;color:var(--qsp-text);border:1px solid var(--qsp-border);padding:0 12px;box-shadow:none}
.qsp-btn.ghost:hover{border-color:var(--qsp-teal);color:var(--qsp-teal-700);background:rgba(20,184,166,.06)}
.qsp-btn.success{background:var(--qsp-success);color:#fff}
.qsp-btn.success:hover{filter:brightness(.92)}
.qsp-btn.warning{background:var(--qsp-warning);color:#fff}
.qsp-btn.warning:hover{filter:brightness(.92)}
.qsp-btn.danger{background:var(--qsp-red);color:#fff}
.qsp-btn.danger:hover{background:#DC2626}
.qsp-btn:disabled,.qsp-btn.is-disabled{opacity:.5;cursor:not-allowed;box-shadow:none;pointer-events:none}

/* Table */
.qsp-table-wrap{background:var(--qsp-card);border-radius:var(--qsp-radius);overflow:hidden;border:1px solid var(--qsp-border)}
.qsp-table{width:100%;border-collapse:collapse;font-size:14px}
.qsp-table thead th{
  text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.08em;
  color:var(--qsp-muted);background:#F8FAFC;padding:12px 18px;border-bottom:1px solid var(--qsp-border);
  font-weight:600;white-space:nowrap;
}
.qsp-table tbody td{padding:16px 18px;border-bottom:1px solid #F1F5F9;vertical-align:middle}
.qsp-table tbody tr{transition:background .12s}
.qsp-table tbody tr:hover{background:#F8FAFC}
.qsp-table tbody tr:last-child td{border-bottom:none}
.qsp-thumb{width:46px;height:46px;border-radius:10px;object-fit:cover;cursor:pointer;border:1px solid var(--qsp-border);background:#F1F5F9}
.qsp-thumb-empty{width:46px;height:46px;border-radius:10px;background:#F1F5F9;display:flex;align-items:center;justify-content:center;color:#94A3B8;font-size:11px}
.qsp-name{font-weight:600;color:var(--qsp-ink)}
.qsp-mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;color:#334155}
body.qsp-theme-dark .qsp-mono{color:var(--qsp-text)}
.qsp-desc{color:var(--qsp-muted);max-width:280px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Pills / status badges */
.qsp-pill{
  display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border-radius:999px;
  font-size:12px;font-weight:600;background:#F1F5F9;color:#334155;border:1px solid transparent;
}
.qsp-pill::before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor;opacity:.7}
.qsp-pill.s-new{background:#E0F2FE;color:#0369A1}
.qsp-pill.s-contacted{background:#FEF3C7;color:#92400E}
.qsp-pill.s-quoted{background:#EDE9FE;color:#6D28D9}
.qsp-pill.s-won{background:#DCFCE7;color:#166534}
.qsp-pill.s-lost{background:#FEE2E2;color:#991B1B}
.qsp-pill.s-quote-doc{background:#EFF6FF;color:#1D4ED8}
.qsp-pill.s-invoice-doc{background:#FFF7ED;color:#C2410C}

body.qsp-theme-dark .qsp-pill{background:rgba(148,163,184,.14);color:var(--qsp-muted)}
body.qsp-theme-dark .qsp-pill.s-new{background:rgba(56,189,248,.14);color:#7DD3FC}
body.qsp-theme-dark .qsp-pill.s-contacted{background:var(--qsp-warning-bg);color:var(--qsp-warning)}
body.qsp-theme-dark .qsp-pill.s-quoted{background:rgba(167,139,250,.16);color:#C4B5FD}
body.qsp-theme-dark .qsp-pill.s-won{background:var(--qsp-success-bg);color:var(--qsp-success)}
body.qsp-theme-dark .qsp-pill.s-lost{background:var(--qsp-danger-bg);color:var(--qsp-danger)}
body.qsp-theme-dark .qsp-pill.s-quote-doc{background:rgba(59,130,246,.16);color:#93C5FD}
body.qsp-theme-dark .qsp-pill.s-invoice-doc{background:rgba(249,115,22,.16);color:#FDBA74}

.qsp-status-select{
  border:1px solid var(--qsp-border);border-radius:8px;height:34px;padding:0 10px;font-size:13px;
  font-weight:600;background:#fff;cursor:pointer;color:#334155;transition:.15s;
}
.qsp-status-select:hover{border-color:var(--qsp-teal)}
.qsp-quote-input{
  width:130px;border:1px solid transparent;border-radius:8px;padding:7px 10px;
  font-size:14px;font-weight:600;text-align:right;background:transparent;color:var(--qsp-ink);
}
.qsp-quote-input:hover{border-color:var(--qsp-border);background:#F8FAFC}
.qsp-quote-input:focus{border-color:var(--qsp-teal);background:#fff;outline:none;box-shadow:0 0 0 3px rgba(20,184,166,.18)}
body.qsp-theme-dark .qsp-quote-input:hover{background:#152135}
body.qsp-theme-dark .qsp-quote-input:focus{background:#152135;box-shadow:0 0 0 3px rgba(45,212,191,.2)}
.qsp-row-actions{display:flex;gap:6px;justify-content:flex-end}
.qsp-icon-btn{
  width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;
  border:1px solid var(--qsp-border);background:#fff;border-radius:9px;cursor:pointer;color:#475569;
  transition:.15s;font-size:14px;
}
.qsp-icon-btn:hover{border-color:var(--qsp-teal);color:var(--qsp-teal-700);box-shadow:0 0 0 3px rgba(20,184,166,.12)}
.qsp-icon-btn.wa{color:#25D366}
.qsp-icon-btn.wa:hover{color:#1FA855;border-color:#25D366}

/* Pagination */
.qsp-pagination{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:#F8FAFC;border-top:1px solid var(--qsp-border)}
.qsp-pagination .meta{color:var(--qsp-muted);font-size:13px}
.qsp-pagination .pages{display:flex;gap:6px}
.qsp-page-btn{
  min-width:34px;height:34px;border:1px solid var(--qsp-border);background:#fff;border-radius:8px;
  cursor:pointer;font-size:13px;color:#334155;transition:.15s;font-weight:500;
}
.qsp-page-btn:hover:not(:disabled){border-color:var(--qsp-teal);color:var(--qsp-teal-700)}
.qsp-page-btn.active{background:var(--qsp-teal);color:#fff;border-color:var(--qsp-teal)}
.qsp-page-btn:disabled{opacity:.5;cursor:not-allowed}

/* Modal */
.qsp-modal{
  position:fixed;inset:0;background:rgba(11,18,32,.55);display:none;
  align-items:center;justify-content:center;z-index:100;padding:20px;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  overflow-x:hidden;
}
.qsp-modal.open{display:flex;animation:qsp-fade .15s ease-out}
@keyframes qsp-fade{from{opacity:0}to{opacity:1}}
.qsp-modal-box{
  background:#fff;border-radius:18px;max-width:620px;width:100%;padding:26px 28px;
  box-shadow:0 30px 80px rgba(0,0,0,.35);max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  overflow-x:hidden;
}
/* Edit modal scroll layout */
.qsp-modal-box.qsp-modal-scroll{display:flex;flex-direction:column;padding:0;overflow:hidden;max-width:680px}
.qsp-modal-box.qsp-modal-scroll > h3{flex:0 0 auto;margin:0;padding:22px 26px 14px;font-size:18px;font-weight:700;color:var(--qsp-ink);border-bottom:1px solid var(--qsp-border)}
.qsp-modal-box.qsp-modal-scroll .qsp-modal-body{flex:1 1 auto;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:20px 26px}
.qsp-modal-box.qsp-modal-scroll .qsp-modal-actions{margin:0;padding:16px 26px;border-top:1px solid var(--qsp-border);background:#F8FAFC;flex:0 0 auto;border-radius:0 0 18px 18px}
.qsp-edit-photo{display:flex;justify-content:center;margin:0 0 18px}
.qsp-edit-photo img{
  width:320px;max-width:100%;height:auto;max-height:240px;border-radius:14px;border:1px solid var(--qsp-border);
  cursor:zoom-in;object-fit:cover;background:#f8fafc;box-shadow:var(--qsp-shadow-sm);
}
.qsp-edit-photo .qsp-photo-empty{
  width:320px;max-width:100%;height:160px;display:flex;align-items:center;justify-content:center;
  border:1.5px dashed var(--qsp-border-strong);border-radius:14px;color:var(--qsp-muted);font-size:13px;background:#FAFBFC;
}
.qsp-modal-box h3{margin:0 0 16px;font-size:18px;font-weight:700;color:var(--qsp-ink)}
.qsp-modal-box .row{margin-bottom:14px}
.qsp-modal-box label{display:block;font-size:11px;color:var(--qsp-muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.qsp-modal-box input,.qsp-modal-box textarea,.qsp-modal-box select{
  width:100%;padding:10px 12px;border:1px solid var(--qsp-border);border-radius:10px;font-size:16px;font-family:inherit;color:var(--qsp-ink);
  background:#fff;transition:.15s;
}
.qsp-modal-box input:focus,.qsp-modal-box textarea:focus,.qsp-modal-box select:focus{
  outline:none;border-color:var(--qsp-teal);box-shadow:0 0 0 4px rgba(20,184,166,.15);
}
.qsp-modal-box textarea{min-height:96px;resize:vertical}
.qsp-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.qsp-img-modal img{max-width:100%;max-height:80vh;border-radius:10px;display:block;margin:0 auto}

/* Field grid in edit modal */
.qsp-fieldgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px 14px}
.qsp-fieldgrid .row{margin-bottom:0}
.qsp-fieldgrid .row.full{grid-column:1/-1}
.qsp-fieldgroup{margin-bottom:18px}
.qsp-fieldgroup .qsp-fg-title{
  font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.1em;
  color:var(--qsp-teal-700);margin:0 0 10px;display:flex;align-items:center;gap:8px;
}
.qsp-fieldgroup .qsp-fg-title::after{content:"";flex:1;height:1px;background:var(--qsp-border)}

/* Toast */
.qsp-toast{
  position:fixed;bottom:24px;right:24px;background:var(--qsp-ink);color:#fff;
  padding:13px 18px;border-radius:12px;font-size:14px;font-weight:500;
  box-shadow:0 14px 40px rgba(0,0,0,.28);z-index:200;opacity:0;transform:translateY(10px);transition:.2s;
}
.qsp-toast.show{opacity:1;transform:translateY(0)}
.qsp-toast.error{background:var(--qsp-red)}

/* Login */
.qsp-login-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--qsp-gradient-hero);padding:24px}
.qsp-login-card{background:#fff;border-radius:20px;padding:40px;width:100%;max-width:420px;box-shadow:0 30px 70px rgba(0,0,0,.35)}
.qsp-login-card img{display:block;margin:0 auto 16px;height:54px}
.qsp-login-card h1{text-align:center;font-size:22px;margin:0 0 6px;font-weight:700;color:var(--qsp-ink)}
.qsp-login-card p.sub{text-align:center;color:var(--qsp-muted);font-size:14px;margin:0 0 24px}
.qsp-login-card .row{margin-bottom:14px}
.qsp-login-card label{font-size:11px;color:var(--qsp-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.qsp-login-card input{width:100%;padding:12px 14px;border:1px solid var(--qsp-border);border-radius:12px;font-size:16px;margin-top:6px;transition:.15s}
.qsp-login-card input:focus{outline:none;border-color:var(--qsp-teal);box-shadow:0 0 0 4px rgba(20,184,166,.15)}
.qsp-login-card .qsp-btn{width:100%;height:46px;justify-content:center;margin-top:8px;border-radius:12px}
.qsp-login-error{background:#FEE2E2;color:#991B1B;padding:10px 12px;border-radius:10px;font-size:13px;margin-bottom:12px;display:none}
body.qsp-theme-dark .qsp-login-error{background:var(--qsp-danger-bg);color:var(--qsp-danger);border:1px solid var(--qsp-danger-border)}

.qsp-empty{padding:50px 20px;text-align:center;color:var(--qsp-muted);font-size:14px}

/* Responsive */
@media (max-width:1180px){
  .qsp-overview{grid-template-columns:repeat(2,1fr)}
  .qsp-quick{grid-template-columns:repeat(2,1fr)}
  .qsp-row-2{grid-template-columns:1fr}
}

/* Hamburger + Drawer (mobile nav) */
.qsp-hamburger{display:none;background:transparent;border:0;width:40px;height:40px;padding:8px;cursor:pointer;flex-direction:column;justify-content:space-between;align-items:stretch}
.qsp-hamburger span{display:block;height:2px;background:#fff;border-radius:2px;transition:transform .2s,opacity .2s}
.qsp-hamburger[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.qsp-hamburger[aria-expanded="true"] span:nth-child(2){opacity:0}
.qsp-hamburger[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}
.qsp-drawer-overlay{display:none;position:fixed;inset:64px 0 0 0;background:rgba(11,18,32,.5);z-index:40;backdrop-filter:blur(4px)}
.qsp-drawer-overlay.open{display:block}

@media (max-width:1023px){
  .qsp-app{grid-template-columns:1fr}
  .qsp-hamburger{display:flex}
  .qsp-topbar .qsp-user a{display:none}
  .qsp-sidebar{display:flex;position:fixed;top:64px;left:0;bottom:0;width:264px;z-index:50;transform:translateX(-100%);transition:transform .25s ease;box-shadow:2px 0 22px rgba(0,0,0,.12)}
  .qsp-sidebar.open{transform:translateX(0)}
  .qsp-main{padding:20px 16px}
  .qsp-hero{padding:24px 22px;border-radius:16px}
  .qsp-hero h1{font-size:22px}
  .qsp-hero-inner{grid-template-columns:1fr;align-items:flex-start}
  .qsp-hero .hero-cta{align-self:flex-start}
  .qsp-hero-stat .v{font-size:18px}
  .qsp-overview{grid-template-columns:repeat(2,1fr)}
  .qsp-fieldgrid{grid-template-columns:1fr}
  .qsp-table thead{display:none}
  .qsp-table,.qsp-table tbody,.qsp-table tr,.qsp-table td{display:block;width:100%}
  .qsp-table tr{border-bottom:1px solid var(--qsp-border);padding:12px 4px;background:var(--qsp-card)}
  .qsp-table tr:hover{background:var(--qsp-card)}
  .qsp-table td{padding:6px 16px;border:none}
  .qsp-table td::before{content:attr(data-label);display:block;font-size:11px;color:var(--qsp-muted);text-transform:uppercase;letter-spacing:.08em;font-weight:600;margin-bottom:3px}
  .qsp-row-actions{justify-content:flex-start;padding-left:16px;padding-top:6px}
}

@media (max-width:640px){
  .qsp-main{padding:16px 14px 32px}
  .qsp-hero{padding:22px 20px}
  .qsp-hero h1{font-size:20px}
  .qsp-hero-stats{gap:18px;margin-top:14px}
  .qsp-overview{grid-template-columns:1fr 1fr;gap:12px}
  .qsp-over-card{padding:16px}
  .qsp-over-card .val{font-size:22px}
  .qsp-over-card .ic{width:36px;height:36px;border-radius:10px;margin-bottom:10px}
  .qsp-quick{grid-template-columns:1fr 1fr;gap:10px}
  .qsp-quick-btn{padding:12px 12px;gap:10px}
  .qsp-quick-btn .qa-ic{width:36px;height:36px}
  .qsp-modal{padding:8px;align-items:flex-end}
  .qsp-modal-box{padding:18px;max-height:95vh;border-radius:16px 16px 12px 12px}
  .qsp-modal-box.qsp-modal-scroll{padding:0;border-radius:16px 16px 12px 12px}
  .qsp-modal-box.qsp-modal-scroll > h3{padding:18px 18px 12px}
  .qsp-modal-box.qsp-modal-scroll .qsp-modal-body{padding:16px 18px}
  .qsp-modal-box.qsp-modal-scroll .qsp-modal-actions{padding:12px 18px;flex-wrap:wrap;border-radius:0 0 12px 12px}
  .qsp-modal-actions .qsp-btn{flex:1 1 auto;justify-content:center}
  .qsp-edit-photo img,.qsp-edit-photo .qsp-photo-empty{width:100%;max-width:100%}
  .qi-doc-box,.qi-company-box{width:100%;max-width:100%}
  .qi-doc-grid,.qi-company-grid{grid-template-columns:1fr;gap:12px;padding:14px}
  .qi-doc-head{padding:12px 14px}
  .qi-doc-footer{padding:12px 14px;flex-wrap:wrap}
  .qi-doc-footer .qsp-btn{flex:1 1 auto;justify-content:center}
  .qi-row{grid-template-columns:1fr}
  .qi-section{padding:12px}
  .qi-items td .qty,.qi-items td .rate{width:60px}
}

/* Prevent iOS form zoom: enforce 16px minimum on touch devices */
@media (hover:none) and (pointer:coarse){
  input,select,textarea,
  .qsp-input,.qsp-select,
  .qsp-quote-input,.qsp-status-select,
  .qsp-modal-box input,.qsp-modal-box select,.qsp-modal-box textarea,
  .qsp-login-card input{font-size:16px !important}
}


/* Dashboard polish v2.1.1 — text-only hero, 3-col KPI grid */
.qsp-hero-stats{display:none !important}
@media (max-width:1100px){.qsp-overview{grid-template-columns:repeat(2,1fr)}}
@media (max-width:640px){.qsp-overview{grid-template-columns:1fr}}

/* ============================================================
   Quotes & Invoices module (v2.2.0)
   ============================================================ */
.qi-doc-box{max-width:1080px;width:100%;max-height:92vh;display:flex;flex-direction:column;padding:0;overflow-x:hidden}
.qi-company-box{max-width:640px;width:100%;padding:0;overflow-x:hidden}
.qi-doc-head{display:flex;justify-content:space-between;align-items:center;padding:18px 24px;border-bottom:1px solid #e2e8f0}
.qi-doc-head h2{margin:0;font-size:18px}
.qi-doc-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;padding:20px 24px;overflow-y:auto;overflow-x:hidden;flex:1}
.qi-company-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:20px 24px;overflow-x:hidden}
.qi-company-grid label:nth-child(3),
.qi-company-grid label:nth-child(7),
.qi-company-grid label:nth-child(8){grid-column:1 / -1}
.qi-doc-footer{display:flex;justify-content:flex-end;gap:8px;padding:14px 24px;border-top:1px solid #e2e8f0;background:#f8fafc}
.qi-col{display:flex;flex-direction:column;gap:18px}
.qi-section{background:#fff;border:1px solid #e2e8f0;border-radius:10px;padding:14px 16px;display:flex;flex-direction:column;gap:10px}
.qi-section h3{margin:0 0 4px;font-size:13px;text-transform:uppercase;letter-spacing:.5px;color:#0F172A}
.qi-section label{display:flex;flex-direction:column;font-size:12px;font-weight:600;color:#475569;gap:6px}
.qi-section label .qsp-input,.qi-section label input,.qi-section label select,.qi-section label textarea{width:100%;height:38px;padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;color:#0F172A;background:#fff;box-sizing:border-box}
.qi-section label textarea{height:auto;min-height:64px;line-height:1.45;resize:vertical}
.qi-section label select{padding-right:28px}
.qi-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
/* Company settings layout */
.qi-company-grid label,.qi-logo-field{display:flex;flex-direction:column;font-size:12px;font-weight:600;color:#475569;gap:6px}
.qi-company-grid input,.qi-company-grid textarea{width:100%;height:38px;padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px;font-size:13px;font-family:inherit;color:#0F172A;background:#fff;box-sizing:border-box}
.qi-company-grid textarea{height:auto;min-height:72px;line-height:1.45;resize:vertical}
.qi-logo-field{grid-column:1 / -1}
.qi-logo-field .qi-label{font-size:12px;font-weight:600;color:#475569}
.qi-logo-row{display:flex;align-items:center;gap:14px;padding:10px 12px;border:1px dashed #cbd5e1;border-radius:10px;background:#f8fafc}
.qi-logo-row img{display:none;max-height:54px;max-width:180px;border-radius:6px;background:#fff;padding:4px;border:1px solid #e2e8f0}
.qi-logo-row img[src]{display:block}
.qi-logo-actions{display:flex;gap:8px;flex-wrap:wrap}
.qi-badge{background:#EFF6FF;color:#1d4ed8;font-size:10px;padding:2px 6px;border-radius:6px;margin-left:6px;font-weight:600;letter-spacing:.5px;text-transform:uppercase}
body.qsp-theme-dark .qi-badge{background:rgba(59,130,246,.16);color:#93C5FD}
.qi-ai-note{font-size:11px;color:var(--qsp-muted);line-height:1.4}
.qi-items{width:100%;max-width:100%;border-collapse:collapse;font-size:13px}
.qi-items th{text-align:left;padding:6px 8px;font-size:11px;text-transform:uppercase;color:#64748B;border-bottom:1px solid #e2e8f0}
.qi-items td{padding:4px 4px;border-bottom:1px solid #f1f5f9}
.qi-items td input{width:100%;max-width:100%;border:1px solid var(--qsp-border);border-radius:6px;padding:6px 8px;font-size:13px;box-sizing:border-box;background:var(--qsp-card);color:var(--qsp-text)}
.qi-items td .qty,.qi-items td .rate{width:80px;max-width:100%;text-align:right;box-sizing:border-box}
.qi-items td .amount{font-weight:600;font-size:13px;color:var(--qsp-ink);text-align:right;padding-right:6px;display:block}
.qi-items td .rm{background:transparent;border:0;color:var(--qsp-red);cursor:pointer;font-size:16px}
.qi-actions .qi-del{color:var(--qsp-red)}
.qi-actions .qi-del:hover{background:var(--qsp-danger-bg);border-color:var(--qsp-red);color:var(--qsp-red)}
.qi-totals{display:flex;justify-content:space-between;align-items:flex-end;margin-top:10px;flex-wrap:wrap;gap:12px}
.qi-totals-display{text-align:right;font-size:13px;color:var(--qsp-muted);line-height:1.8}
.qi-totals-display .qi-grand{font-size:16px;color:var(--qsp-ink);margin-top:4px;border-top:2px solid var(--qsp-ink);padding-top:6px}
.qi-actions a,.qi-actions button{margin-left:4px}
@media (max-width:900px){
  .qi-doc-box,.qi-company-box{width:100%;max-width:100%}
  .qi-doc-grid,.qi-company-grid{grid-template-columns:1fr;gap:14px;padding:16px 20px}
  .qi-doc-head{padding:14px 20px}
  .qi-doc-footer{padding:12px 20px}
}

/* ============================================================
   v2.3.2 — Modal width / overflow / input size fixes
   ============================================================ */

/* Keep page from ever scrolling horizontally */
html, body.qsp-body { max-width:100%; overflow-x:hidden; }
.qsp-main { max-width:100%; }

/* Modal containers must never exceed viewport width */
.qsp-modal { padding:16px; }
.qsp-modal-box,
.qsp-modal-box.qi-doc-box,
.qsp-modal-box.qi-company-box {
  width:100%;
  max-width:min(1080px, calc(100vw - 32px));
  box-sizing:border-box;
  overflow-x:hidden;
}
.qsp-modal-box.qi-company-box { max-width:min(640px, calc(100vw - 32px)); }

/* Grids inside modals: don't overflow */
.qi-doc-grid,
.qi-company-grid,
.qi-row {
  min-width:0;
  max-width:100%;
}
.qi-doc-grid > *,
.qi-company-grid > *,
.qi-row > * { min-width:0; }

/* Reset the global .qsp-input min-width when used inside modal grids —
   otherwise a 240px minimum forces horizontal scroll in narrow columns. */
.qi-doc-grid .qsp-input,
.qi-company-grid .qsp-input,
.qi-row .qsp-input,
.qi-section .qsp-input,
.qi-section .qsp-select {
  min-width:0;
  max-width:100%;
  flex:none;
}

/* Compact standard inputs (not textareas) inside the modals */
.qi-section label > input.qsp-input,
.qi-section label > select.qsp-select,
.qi-company-grid label > input,
.qi-company-grid label > select {
  height:40px;
  padding:8px 12px;
  font-size:14px;
  line-height:1.2;
  width:100%;
  box-sizing:border-box;
}

/* Textareas stay tall but never wider than the column */
.qi-section label > textarea.qsp-input,
.qi-company-grid label > textarea {
  width:100%;
  max-width:100%;
  box-sizing:border-box;
  resize:vertical;
}

/* Stop the price-breakdown table from forcing horizontal scroll */
.qi-section .qi-items { table-layout:fixed; }
.qi-section .qi-items td,
.qi-section .qi-items th { word-break:break-word; }

/* Promote single-column layout earlier so two-column grids never
   squeeze inputs past their natural minimum */
@media (max-width:1024px){
  .qi-doc-grid { grid-template-columns:1fr; }
}
@media (max-width:760px){
  .qi-company-grid { grid-template-columns:1fr; }
  .qi-row { grid-template-columns:1fr; }
}

/* Mobile: zero horizontal slack, modal sits flush */
@media (max-width:640px){
  .qsp-modal { padding:8px; }
  .qsp-modal-box,
  .qsp-modal-box.qi-doc-box,
  .qsp-modal-box.qi-company-box { max-width:calc(100vw - 16px); }
  .qi-doc-grid,
  .qi-company-grid { padding:14px 16px; }
}

/* ===== Clickable KPI action card (Follow Ups Due) ===== */
.qsp-over-card.is-action{cursor:pointer;transition:transform .15s ease, box-shadow .2s ease, border-color .2s ease, background-color .2s ease}
.qsp-over-card.is-action:hover{transform:translateY(-3px);box-shadow:0 14px 30px -14px rgba(16,24,40,.22);border-color:var(--qsp-border-strong)}
.qsp-over-card.is-action:focus-visible{outline:2px solid #3B82F6;outline-offset:2px}
.qsp-over-card.is-action:active{transform:translateY(0) scale(.985)}

/* Premium warning state for Follow Ups Due > 0 */
.qsp-over-card.tone-red.is-warn{
  background:#FFF5F5;
  border-color:#FECACA;
  box-shadow:0 1px 2px rgba(185,28,28,.06);
}
.qsp-over-card.tone-red.is-warn .ic{background:#FEE2E2;color:#991B1B}
.qsp-over-card.tone-red.is-warn .val{color:#991B1B}
.qsp-over-card.tone-red.is-warn .lbl{color:#B91C1C}
.qsp-over-card.tone-red.is-warn .ribbon{background:#DC2626}
.qsp-over-card.tone-red.is-warn:hover{border-color:#FCA5A5;box-shadow:0 14px 30px -14px rgba(185,28,28,.28)}

body.qsp-theme-dark .qsp-over-card.tone-red.is-warn{
  background:linear-gradient(180deg, rgba(220,38,38,.12) 0%, rgba(185,28,28,.08) 100%), var(--qsp-card);
  border-color:#7F1D1D;
  box-shadow:0 1px 2px rgba(0,0,0,.3);
}
body.qsp-theme-dark .qsp-over-card.tone-red.is-warn .ic{background:var(--qsp-danger-bg);color:var(--qsp-danger)}
body.qsp-theme-dark .qsp-over-card.tone-red.is-warn .val{color:#FCA5A5}
body.qsp-theme-dark .qsp-over-card.tone-red.is-warn .lbl{color:#F87171}
body.qsp-theme-dark .qsp-over-card.tone-red.is-warn .ribbon{background:#DC2626}
body.qsp-theme-dark .qsp-over-card.tone-red.is-warn:hover{border-color:#991B1B;box-shadow:0 14px 30px -14px rgba(0,0,0,.6)}

/* ===== Premium warning state for Follow Ups section (Follow Ups Due > 0) ===== */
#qsp-followups-card.is-warn{
  background:
    linear-gradient(180deg, rgba(254,226,226,0.35) 0%, rgba(255,245,245,0.55) 100%),
    var(--qsp-card);
  border:1px solid #FCA5A5;
  box-shadow:
    0 0 0 4px rgba(252,165,165,0.18),
    0 10px 30px -16px rgba(185,28,28,0.28),
    0 1px 2px rgba(185,28,28,0.06);
  transition: box-shadow .35s ease, border-color .35s ease, background-color .35s ease;
}
#qsp-followups-card.is-warn .qsp-card-head h2{
  color:#991B1B;
  letter-spacing:-0.01em;
}
#qsp-followups-card.is-warn .qsp-card-head h2::before{
  content:"";
  display:inline-block;
  width:8px;height:8px;
  margin-right:10px;
  border-radius:999px;
  background:#DC2626;
  box-shadow:0 0 0 4px rgba(220,38,38,0.18);
  vertical-align:middle;
  transform:translateY(-1px);
}
#qsp-followups-card.is-warn .qsp-card-sub{ color:#B91C1C; opacity:.85; }

/* Brief attention pulse when user lands on the section */
@keyframes qsp-followups-attention {
  0%   { box-shadow: 0 0 0 0   rgba(220,38,38,0.35), 0 10px 30px -16px rgba(185,28,28,0.28); }
  50%  { box-shadow: 0 0 0 10px rgba(220,38,38,0.00), 0 14px 36px -14px rgba(185,28,28,0.45); }
  100% { box-shadow: 0 0 0 4px rgba(252,165,165,0.18), 0 10px 30px -16px rgba(185,28,28,0.28); }
}
#qsp-followups-card.is-attention{
  animation: qsp-followups-attention 1.1s ease-out 2;
}
@media (prefers-reduced-motion: reduce){
  #qsp-followups-card.is-attention{ animation:none; }
}

/* ---------- Message Templates (v3.1.0) ---------- */
.qsp-msg-modal-box{max-width:640px}
.qsp-msg-loading,.qsp-msg-modal-box .qsp-empty{padding:28px;text-align:center;color:var(--qsp-muted)}
.qsp-msg-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:10px}
.qsp-msg-card{
  text-align:left;background:var(--qsp-card);border:1px solid var(--qsp-border);border-radius:12px;
  padding:12px 14px;cursor:pointer;transition:all .15s ease;font:inherit;color:inherit;
  display:flex;flex-direction:column;gap:6px;min-height:88px;
}
.qsp-msg-card:hover{border-color:var(--qsp-teal);box-shadow:0 4px 14px -6px rgba(20,184,166,.35);transform:translateY(-1px)}
.qsp-msg-card-name{font-weight:600;color:var(--qsp-ink);font-size:14px;line-height:1.2}
.qsp-msg-card-preview{font-size:12px;color:var(--qsp-muted);line-height:1.4;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.qsp-msg-preview label{display:block;font-size:11px;color:var(--qsp-muted);margin-bottom:6px;text-transform:uppercase;letter-spacing:.08em;font-weight:600}
.qsp-msg-tpl-name{font-weight:600;color:var(--qsp-ink);font-size:15px}
.qsp-msg-hint{text-transform:none;letter-spacing:0;color:var(--qsp-subtle);font-weight:500;margin-left:4px}
#qsp-msg-text{
  width:100%;min-height:200px;padding:12px 14px;border:1px solid var(--qsp-border);border-radius:10px;
  font-family:inherit;font-size:14px;line-height:1.5;color:var(--qsp-text);background:var(--qsp-card);resize:vertical;
}
#qsp-msg-text:focus{outline:none;border-color:var(--qsp-teal);box-shadow:0 0 0 3px rgba(20,184,166,.15)}
.qsp-msg-meta{margin-top:10px;font-size:12px;color:var(--qsp-muted);overflow-wrap:anywhere;word-break:break-word}
.qsp-msg-warn{color:var(--qsp-red);font-weight:600}
@media (max-width:560px){
  .qsp-msg-grid{grid-template-columns:1fr}
  .qsp-msg-modal-box{max-width:100%}
}

/* ---------- v3.1.4 Mobile modal button standardisation ----------
   Consistent height / padding / radius / font-size / icon alignment
   for every action button inside every TradeForm Portal modal on mobile.
   Desktop layout is unchanged. */
@media (max-width:640px){
  /* Any actions row inside a modal, regardless of extra classnames */
  .qsp-modal .qsp-modal-actions,
  .qsp-modal .qi-doc-footer,
  .qsp-modal .qi-company-footer{
    display:flex;flex-wrap:wrap;gap:8px;align-items:stretch;
    width:100%;box-sizing:border-box;
  }
  /* Every button-ish element inside a modal gets the same shape */
  .qsp-modal .qsp-modal-actions .qsp-btn,
  .qsp-modal .qsp-modal-actions button,
  .qsp-modal .qsp-modal-actions a.qsp-btn,
  .qsp-modal .qi-doc-footer .qsp-btn,
  .qsp-modal .qi-doc-footer button,
  .qsp-modal .qi-company-footer .qsp-btn,
  .qsp-modal .qi-company-footer button{
    flex:1 1 140px;min-width:0;max-width:100%;
    height:44px;min-height:44px;padding:0 14px;
    border-radius:10px;font-size:14px;font-weight:600;line-height:1;
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    box-sizing:border-box;
  }
  .qsp-modal .qsp-modal-actions .qsp-btn > svg,
  .qsp-modal .qsp-modal-actions button > svg,
  .qsp-modal .qi-doc-footer .qsp-btn > svg,
  .qsp-modal .qi-company-footer .qsp-btn > svg{
    flex:0 0 auto;width:16px;height:16px;
  }
  /* Ghost / cancel keeps the same footprint so rows align */
  .qsp-modal .qsp-modal-actions .qsp-btn.ghost{
    padding:0 14px;box-shadow:none;
  }
  /* When rows get too tight, stack — never horizontal-scroll */
  @media (max-width:380px){
    .qsp-modal .qsp-modal-actions .qsp-btn,
    .qsp-modal .qsp-modal-actions button,
    .qsp-modal .qi-doc-footer .qsp-btn,
    .qsp-modal .qi-company-footer .qsp-btn{
      flex:1 1 100%;
    }
  }
}

/* ===== Dashboard: compact recent leads (v3.1.7 — single-card collapsible) ===== */
.qsp-table-dash{border-collapse:separate;border-spacing:0 8px;}
.qsp-table-dash thead{display:none;}
.qsp-table-dash tbody tr td{border:0;padding:0;background:transparent;}
.qsp-dash-card{
  background:#fff;
  border:1px solid #e5e7eb;
  border-radius:12px;
  overflow:hidden;
  transition:box-shadow .2s ease, border-color .2s ease;
}
.qsp-dash-card:hover{box-shadow:0 2px 10px rgba(15,23,42,.06);border-color:var(--qsp-border-strong);}
.qsp-dash-card.open{border-color:var(--qsp-teal);box-shadow:0 2px 10px rgba(15,23,42,.06);}
.qsp-dash-summary{cursor:pointer;}
.qsp-dash-row{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:14px 16px;min-height:56px;
}
.qsp-dash-meta{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1;}
.qsp-dash-name{font-weight:600;font-size:15px;color:var(--qsp-ink);line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.qsp-dash-job{font-size:13px;color:var(--qsp-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.qsp-dash-muted{color:var(--qsp-subtle);}
.qsp-dash-status{flex-shrink:0;font-size:12px;padding:4px 10px;border-radius:999px;font-weight:600;}
.qsp-dash-toggle{
  flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;
  width:32px;height:32px;border-radius:8px;border:1px solid transparent;background:transparent;color:var(--qsp-muted);
  cursor:pointer;transition:transform .25s ease, background .15s ease, color .15s ease;
}
.qsp-dash-card:hover .qsp-dash-toggle{background:var(--qsp-teal-50);color:var(--qsp-ink);}
.qsp-dash-card.open .qsp-dash-toggle{transform:rotate(180deg);color:var(--qsp-teal-700);}
.qsp-dash-detail{overflow:hidden;}
.qsp-dash-detail-inner{
  max-height:0;opacity:0;
  padding:0 16px;
  overflow:hidden;
  transition:max-height .28s ease, opacity .2s ease, padding .28s ease;
  border-top:0 solid var(--qsp-border);
}
.qsp-dash-card.open .qsp-dash-detail-inner{
  max-height:1000px;opacity:1;padding:14px 16px 16px;border-top-width:1px;
}
.qsp-dash-grid{
  display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 16px;
  margin-bottom:12px;
}
.qsp-dash-field{display:flex;flex-direction:column;gap:4px;min-width:0;font-size:13px;color:var(--qsp-text);}
.qsp-dash-field-wide{grid-column:1 / -1;}
.qsp-dash-lbl{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--qsp-muted);}
.qsp-dash-field .qsp-quote-input,
.qsp-dash-field .qsp-status-select{width:100%;max-width:220px;}
.qsp-dash-actions{display:flex;flex-wrap:wrap;gap:8px;padding-top:8px;border-top:1px dashed var(--qsp-border);}

@media (max-width:640px){
  .qsp-dash-grid{grid-template-columns:1fr 1fr;}
  .qsp-dash-field-wide{grid-column:1 / -1;}
  .qsp-dash-row{padding:14px;}
  .qsp-dash-name{font-size:15px;}
  .qsp-dash-job{font-size:13px;}
}
@media (max-width:420px){
  .qsp-dash-grid{grid-template-columns:1fr;}
}


/* ===== v3.1.8: Edit Lead — explicit standard input styling for Quote Value ===== */
.qsp-modal-box input.qsp-edit-input{
  width:100%;
  background:#fff;
  border:1px solid var(--qsp-border);
  border-radius:10px;
  padding:10px 12px;
  font-size:16px;
  font-weight:500;
  color:var(--qsp-ink);
  text-align:left;
  height:auto;
  transition:.15s;
}
.qsp-modal-box input.qsp-edit-input::placeholder{color:#94a3b8;font-weight:400;}
.qsp-modal-box input.qsp-edit-input:hover{border-color:var(--qsp-border-strong);}
.qsp-modal-box input.qsp-edit-input:focus{
  outline:none;border-color:var(--qsp-teal);
  box-shadow:0 0 0 4px rgba(20,184,166,.15);background:#fff;
}
body.qsp-theme-dark .qsp-modal-box input.qsp-edit-input{background:#152135;color:var(--qsp-text)}
body.qsp-theme-dark .qsp-modal-box input.qsp-edit-input::placeholder{color:var(--qsp-subtle)}
body.qsp-theme-dark .qsp-modal-box input.qsp-edit-input:focus{background:#152135;box-shadow:0 0 0 4px rgba(45,212,191,.18)}

/* ============================================================
   v3.2.0 — Sidebar polish, theme toggle & Dark mode
   ============================================================ */

/* Sidebar polish */
.qsp-sidebar-logout{margin-top:auto;color:var(--qsp-subtle)}
.qsp-sidebar-logout .dot{background:var(--qsp-subtle)}
.qsp-sidebar-version{
  padding:12px 14px 4px;font-size:11px;color:var(--qsp-subtle);
  letter-spacing:.06em;text-transform:uppercase;font-weight:600;
  border-top:1px solid var(--qsp-border);margin-top:8px;
}

/* Theme toggle button */
.qsp-theme-toggle{
  width:38px;height:38px;border-radius:10px;border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.04);color:#CBD5E1;display:inline-flex;
  align-items:center;justify-content:center;cursor:pointer;transition:.15s;
  margin-right:6px;
}
.qsp-theme-toggle:hover{background:rgba(255,255,255,.08);color:#fff;border-color:rgba(255,255,255,.2)}
.qsp-theme-toggle .qsp-theme-icon-moon{display:none}
body.qsp-theme-dark .qsp-theme-toggle .qsp-theme-icon-sun{display:none}
body.qsp-theme-dark .qsp-theme-toggle .qsp-theme-icon-moon{display:block}

/* ------- Dark theme tokens ------- */
body.qsp-theme-dark{
  --qsp-teal:#2DD4BF;
  --qsp-teal-600:#14B8A6;
  --qsp-teal-700:#5EEAD4;
  --qsp-teal-50:rgba(45,212,191,.12);
  --qsp-ink:#F1F5F9;
  --qsp-ink-2:#E2E8F0;
  --qsp-text:#E2E8F0;
  --qsp-muted:#94A3B8;
  --qsp-subtle:#64748B;
  --qsp-bg:#0B1220;
  --qsp-card:#111C2E;
  --qsp-border:#1F2C42;
  --qsp-border-strong:#2A3A55;
  --qsp-shadow-sm:0 1px 2px rgba(0,0,0,.35);
  --qsp-shadow:0 1px 2px rgba(0,0,0,.35), 0 10px 30px -12px rgba(0,0,0,.6);
  --qsp-shadow-lg:0 10px 40px -10px rgba(0,0,0,.7), 0 4px 12px rgba(0,0,0,.35);

  /* Status / badge tokens — muted, tinted, no glow */
  --qsp-success:#34D399;
  --qsp-success-bg:rgba(16,185,129,.14);
  --qsp-success-border:rgba(16,185,129,.28);
  --qsp-warning:#FBBF24;
  --qsp-warning-bg:rgba(245,158,11,.14);
  --qsp-warning-border:rgba(245,158,11,.28);
  --qsp-danger:#F87171;
  --qsp-danger-bg:rgba(239,68,68,.14);
  --qsp-danger-border:rgba(239,68,68,.28);
  --qsp-focus-ring:0 0 0 4px rgba(45,212,191,.2);
}
body.qsp-theme-dark{background:var(--qsp-bg);color:var(--qsp-text);color-scheme:dark}
body.qsp-body:not(.qsp-theme-dark){color-scheme:light}
/* Native form control theming: selects, dropdown lists, checkboxes, radios,
   date pickers, and scrollbars follow the app theme instead of the OS/browser
   default, so no light-mode dropdown or field ever appears in dark mode. */
body.qsp-theme-dark input,
body.qsp-theme-dark select,
body.qsp-theme-dark textarea{accent-color:var(--qsp-teal)}
body.qsp-body input,
body.qsp-body select,
body.qsp-body textarea{accent-color:var(--qsp-teal-600)}
/* Autofilled inputs (browser yellow/white autofill background) */
body.qsp-theme-dark input:-webkit-autofill,
body.qsp-theme-dark input:-webkit-autofill:hover,
body.qsp-theme-dark input:-webkit-autofill:focus{
  -webkit-text-fill-color:var(--qsp-text);
  box-shadow:0 0 0 1000px #152135 inset;
  caret-color:var(--qsp-text);
  transition:background-color 9999s ease-in-out 0s;
}
body.qsp-theme-dark a{color:var(--qsp-teal-700)}
body.qsp-theme-dark .qsp-topbar{background:#070B14;box-shadow:0 1px 0 rgba(255,255,255,.04) inset, 0 6px 18px rgba(0,0,0,.4)}
body.qsp-theme-dark .qsp-sidebar{background:#0F1A2C;border-right-color:var(--qsp-border)}
body.qsp-theme-dark .qsp-sidebar a{color:#CBD5E1}
body.qsp-theme-dark .qsp-sidebar a:hover{background:#172236;color:#fff}
body.qsp-theme-dark .qsp-sidebar a.active{background:rgba(45,212,191,.12);color:var(--qsp-teal-700)}
body.qsp-theme-dark .qsp-sidebar a.active::before{background:var(--qsp-teal)}
body.qsp-theme-dark .qsp-sidebar .dot{background:#334155}
body.qsp-theme-dark .qsp-sidebar a.active .dot{background:var(--qsp-teal)}
body.qsp-theme-dark .qsp-card,
body.qsp-theme-dark .qsp-over-card,
body.qsp-theme-dark .qsp-kpi,
body.qsp-theme-dark .qsp-quick-btn,
body.qsp-theme-dark .qsp-table-wrap{background:var(--qsp-card);border-color:var(--qsp-border);color:var(--qsp-text)}
body.qsp-theme-dark .qsp-card h2,
body.qsp-theme-dark .qsp-over-card .val,
body.qsp-theme-dark .qsp-kpi .value,
body.qsp-theme-dark .qsp-name,
body.qsp-theme-dark .qsp-dash-name{color:var(--qsp-ink)}
body.qsp-theme-dark .qsp-card .qsp-card-sub,
body.qsp-theme-dark .qsp-over-card .lbl,
body.qsp-theme-dark .qsp-over-card .sub,
body.qsp-theme-dark .qsp-kpi .label,
body.qsp-theme-dark .qsp-kpi .meta,
body.qsp-theme-dark .qsp-page-title .qsp-sub,
body.qsp-theme-dark .qsp-empty{color:var(--qsp-muted)}
body.qsp-theme-dark .qsp-table thead th{background:#0E1728;color:var(--qsp-muted);border-bottom-color:var(--qsp-border)}
body.qsp-theme-dark .qsp-table tbody td{border-bottom-color:#182235}
body.qsp-theme-dark .qsp-table tbody tr:hover{background:#152135}
body.qsp-theme-dark .qsp-input,
body.qsp-theme-dark .qsp-select,
body.qsp-theme-dark .qsp-status-select,
body.qsp-theme-dark .qsp-refresh,
body.qsp-theme-dark .qsp-btn.secondary,
body.qsp-theme-dark .qsp-icon-btn,
body.qsp-theme-dark .qsp-page-btn{
  background:#152135;color:var(--qsp-text);border-color:var(--qsp-border);
}
body.qsp-theme-dark .qsp-input:focus,
body.qsp-theme-dark .qsp-select:focus{border-color:var(--qsp-teal);box-shadow:0 0 0 4px rgba(45,212,191,.18)}
body.qsp-theme-dark .qsp-thumb-empty{background:#152135;color:var(--qsp-subtle);border-color:var(--qsp-border)}
body.qsp-theme-dark .qsp-thumb{border-color:var(--qsp-border);background:#152135}
body.qsp-theme-dark .qsp-pagination{background:#0E1728;border-top-color:var(--qsp-border)}
body.qsp-theme-dark .qsp-page-btn.active{background:var(--qsp-teal);color:#0B1220;border-color:var(--qsp-teal)}
body.qsp-theme-dark .qsp-modal{background:rgba(2,6,15,.75)}
body.qsp-theme-dark .qsp-modal-box{background:var(--qsp-card);color:var(--qsp-text);box-shadow:0 30px 80px rgba(0,0,0,.6)}
body.qsp-theme-dark .qsp-modal-box input,
body.qsp-theme-dark .qsp-modal-box textarea,
body.qsp-theme-dark .qsp-modal-box select{background:#152135;color:var(--qsp-text);border-color:var(--qsp-border)}
body.qsp-theme-dark .qsp-modal-box.qsp-modal-scroll > h3{border-bottom-color:var(--qsp-border);color:var(--qsp-ink)}
body.qsp-theme-dark .qsp-modal-box.qsp-modal-scroll .qsp-modal-actions{background:#0E1728;border-top-color:var(--qsp-border)}
body.qsp-theme-dark .qsp-activity-item .ai-t{color:var(--qsp-text)}
body.qsp-theme-dark .qsp-hero{box-shadow:0 20px 50px -20px rgba(0,0,0,.7)}
body.qsp-theme-dark .qsp-login-card{background:var(--qsp-card);color:var(--qsp-text);box-shadow:0 30px 70px rgba(0,0,0,.6)}
body.qsp-theme-dark .qsp-login-card h1{color:var(--qsp-ink)}
body.qsp-theme-dark .qsp-login-card input{background:#152135;color:var(--qsp-text);border-color:var(--qsp-border)}
body.qsp-theme-dark .qsp-dash-card{background:var(--qsp-card);border-color:var(--qsp-border)}
body.qsp-theme-dark .qsp-dash-summary:hover{background:#152135}
body.qsp-theme-dark .qsp-fieldgroup .qsp-fg-title{color:var(--qsp-teal-700)}
body.qsp-theme-dark .qsp-fieldgroup .qsp-fg-title::after{background:var(--qsp-border)}
body.qsp-theme-dark #qsp-followups-card.is-warn{
  background:linear-gradient(180deg, rgba(220,38,38,.12) 0%, rgba(185,28,28,.08) 100%), var(--qsp-card);
  border-color:#7F1D1D;
  box-shadow:0 0 0 4px rgba(220,38,38,.12),0 10px 30px -16px rgba(0,0,0,.7);
}
body.qsp-theme-dark #qsp-followups-card.is-warn .qsp-card-head h2{color:#FCA5A5}
body.qsp-theme-dark #qsp-followups-card.is-warn .qsp-card-sub{color:#F87171}
body.qsp-theme-dark .qi-doc-head,
body.qsp-theme-dark .qi-doc-footer{border-color:var(--qsp-border);background:#0E1728}
body.qsp-theme-dark .qi-section{background:var(--qsp-card);border-color:var(--qsp-border)}
body.qsp-theme-dark .qi-section h3{color:var(--qsp-ink)}
body.qsp-theme-dark .qi-section label,
body.qsp-theme-dark .qi-company-grid label,
body.qsp-theme-dark .qi-logo-field .qi-label{color:var(--qsp-muted)}
body.qsp-theme-dark .qi-section label input,
body.qsp-theme-dark .qi-section label select,
body.qsp-theme-dark .qi-section label textarea,
body.qsp-theme-dark .qi-company-grid input,
body.qsp-theme-dark .qi-company-grid textarea{background:#152135;color:var(--qsp-text);border-color:var(--qsp-border)}
body.qsp-theme-dark .qi-logo-row{background:#152135;border-color:var(--qsp-border)}
body.qsp-theme-dark .qi-items th{color:var(--qsp-muted);border-bottom-color:var(--qsp-border)}
body.qsp-theme-dark .qi-items td{border-bottom-color:#182235}
body.qsp-theme-dark .qi-items td .amount,
body.qsp-theme-dark .qi-totals-display .qi-grand{color:var(--qsp-ink)}
body.qsp-theme-dark .qi-totals-display{color:var(--qsp-muted)}
body.qsp-theme-dark .qsp-toast{background:#152135;color:var(--qsp-text);border:1px solid var(--qsp-border)}

/* Floating theme toggle on login screen */
.qsp-theme-toggle-floating{position:fixed;top:16px;right:16px;z-index:60;background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.22);color:#fff}
.qsp-theme-toggle-floating:hover{background:rgba(255,255,255,.2)}
body.qsp-theme-dark .qsp-theme-toggle-floating{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.14)}

/* ==========================================================================
   Customer Workspace (v3.3) — premium lead detail modal
   ========================================================================== */
.qsp-ws-modal { align-items: flex-start; }
.qsp-ws-modal .qsp-ws-box {
  width: min(1080px, calc(100vw - 24px));
  max-height: calc(100vh - 24px);
  margin: 12px auto;
  padding: 0;
  border-radius: 16px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  background: var(--qsp-card, #fff);
  box-shadow: 0 30px 80px rgba(2, 6, 23, 0.35), 0 2px 6px rgba(2, 6, 23, 0.08);
  animation: qsp-ws-in .18s ease-out;
}
@keyframes qsp-ws-in { from { opacity: 0; transform: translateY(8px) scale(.985); } to { opacity: 1; transform: none; } }

.qsp-ws-close {
  position: absolute; top: 12px; right: 14px;
  width: 32px; height: 32px; border-radius: 8px;
  border: 0; background: transparent; color: inherit;
  font-size: 22px; line-height: 1; cursor: pointer;
  transition: background .15s ease;
}
.qsp-ws-close:hover { background: rgba(148,163,184,.15); }

.qsp-ws-head {
  display: flex; gap: 20px; align-items: flex-start; justify-content: space-between;
  padding: 22px 56px 18px 24px;
  border-bottom: 1px solid var(--qsp-border, #e5e7eb);
  background: linear-gradient(180deg, rgba(20,184,166,.04), transparent);
}
.qsp-ws-title { font-size: 22px; font-weight: 700; letter-spacing: -.01em; line-height: 1.2; }
.qsp-ws-meta { margin-top: 6px; font-size: 13px; color: var(--qsp-muted, #64748b); display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.qsp-ws-meta-dot { opacity: .5; }
.qsp-ws-head-side { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.qsp-ws-value { display: flex; flex-direction: column; align-items: flex-end; line-height: 1.1; }
.qsp-ws-value-lbl { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--qsp-muted, #64748b); }
.qsp-ws-value-num { font-size: 20px; font-weight: 700; margin-top: 2px; }

.qsp-ws-health {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 4px 10px; border-radius: 999px;
  font-size: 12px; font-weight: 600;
  border: 1px solid transparent;
}
.qsp-ws-health .dot { width: 8px; height: 8px; border-radius: 50%; background: currentColor; box-shadow: 0 0 0 3px currentColor; opacity: .9; }
.qsp-ws-health .dot { box-shadow: none; }
.qsp-ws-health.tone-green { background: var(--qsp-success-bg); color: var(--qsp-success); border-color: var(--qsp-success-border); }
.qsp-ws-health.tone-amber { background: var(--qsp-warning-bg); color: var(--qsp-warning); border-color: var(--qsp-warning-border); }
.qsp-ws-health.tone-red   { background: var(--qsp-danger-bg);  color: var(--qsp-danger); border-color: var(--qsp-danger-border); animation: qsp-pulse 2.4s ease-in-out infinite; }
.qsp-ws-health.tone-grey  { background: rgba(100,116,139,.14); color: var(--qsp-muted); border-color: rgba(100,116,139,.25); }
@keyframes qsp-pulse { 0%,100% { box-shadow: 0 0 0 0 rgba(239,68,68,.4); } 50% { box-shadow: 0 0 0 6px rgba(239,68,68,0); } }

.qsp-ws-status-wrap { position: relative; }
.qsp-ws-status-wrap .qsp-pill { pointer-events: none; padding: 5px 12px; font-weight: 600; }
.qsp-ws-status-select {
  position: absolute; inset: 0; opacity: 0; cursor: pointer;
  width: 100%; height: 100%;
}

.qsp-ws-tabs {
  display: flex; gap: 2px; padding: 0 16px;
  border-bottom: 1px solid var(--qsp-border, #e5e7eb);
  overflow-x: auto; scrollbar-width: none;
}
.qsp-ws-tabs::-webkit-scrollbar { display: none; }
.qsp-ws-tab {
  appearance: none; border: 0; background: transparent;
  padding: 12px 14px; font-size: 13.5px; font-weight: 500;
  color: var(--qsp-muted, #64748b); cursor: pointer;
  border-bottom: 2px solid transparent;
  transition: color .15s ease, border-color .15s ease, background .15s ease;
  white-space: nowrap; border-radius: 8px 8px 0 0;
}
.qsp-ws-tab:hover { color: var(--qsp-ink); background: rgba(148,163,184,.08); }
.qsp-ws-tab.is-active { color: var(--qsp-ink); border-bottom-color: #14b8a6; }

.qsp-ws-body { padding: 20px 24px 24px; overflow-y: auto; }
.qsp-ws-pane { display: none; animation: qsp-fade-in .18s ease-out; }
.qsp-ws-pane.is-active { display: block; }
@keyframes qsp-fade-in { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }

.qsp-ws-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
.qsp-ws-card-wide { grid-column: 1 / -1; }
.qsp-ws-card {
  border: 1px solid var(--qsp-border, #e5e7eb);
  border-radius: 12px; padding: 16px 16px 14px;
  background: var(--qsp-card, #fff);
  transition: box-shadow .18s ease, transform .18s ease;
}
.qsp-ws-card:hover { box-shadow: 0 6px 18px rgba(2,6,23,.05); }
.qsp-ws-card-h { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em; color: var(--qsp-muted, #64748b); margin-bottom: 10px; }
.qsp-ws-kv { display: grid; grid-template-columns: 130px 1fr; gap: 10px; align-items: baseline; padding: 6px 0; border-top: 1px dashed var(--qsp-border, #e5e7eb); }
.qsp-ws-kv:first-of-type { border-top: 0; }
.qsp-ws-lbl { font-size: 12px; color: var(--qsp-muted, #64748b); }
.qsp-ws-val { font-weight: 600; }
.qsp-ws-desc { white-space: pre-wrap; }
.qsp-ws-photo { display: block; margin-top: 10px; width: 100%; max-height: 220px; object-fit: cover; border-radius: 10px; cursor: zoom-in; }
.qsp-ws-actions { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.qsp-ws-sub { color: var(--qsp-muted, #64748b); font-size: 13.5px; line-height: 1.55; margin: 4px 0 0; }
.qsp-ws-quicknote {
  width: 100%; min-height: 80px; resize: vertical;
  padding: 10px 12px; border-radius: 10px;
  border: 1px solid var(--qsp-border, #e5e7eb);
  background: var(--qsp-card, #fff); color: inherit;
  font: inherit; line-height: 1.5;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.qsp-ws-quicknote:focus { outline: 0; border-color: #14b8a6; box-shadow: 0 0 0 3px rgba(20,184,166,.18); }

.qsp-copyable { display: inline-flex; align-items: center; gap: 8px; }
.qsp-copy-btn {
  appearance: none; border: 1px solid var(--qsp-border, #e5e7eb); background: transparent;
  width: 26px; height: 26px; border-radius: 6px;
  display: inline-flex; align-items: center; justify-content: center;
  color: var(--qsp-muted, #64748b); cursor: pointer;
  transition: all .15s ease;
}
.qsp-copy-btn:hover { color: #14b8a6; border-color: #14b8a6; background: rgba(20,184,166,.08); }
.qsp-copy-btn.is-copied { color: #059669; border-color: #059669; background: rgba(16,185,129,.12); }

/* Timeline */
.qsp-timeline { list-style: none; padding: 0; margin: 0; }
.qsp-tl-group + .qsp-tl-group { margin-top: 18px; }
.qsp-tl-day {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em;
  color: var(--qsp-muted, #64748b); margin-bottom: 8px;
}
.qsp-tl-list { list-style: none; padding: 0; margin: 0; position: relative; }
.qsp-tl-list::before {
  content: ''; position: absolute; left: 60px; top: 6px; bottom: 6px;
  width: 1px; background: var(--qsp-border, #e5e7eb);
}
.qsp-tl-item {
  display: grid; grid-template-columns: 56px 28px 1fr; align-items: center;
  gap: 8px; padding: 8px 0; font-size: 14px;
}
.qsp-tl-time { font-variant-numeric: tabular-nums; color: var(--qsp-muted, #64748b); font-size: 12.5px; text-align: right; padding-right: 4px; }
.qsp-tl-ic {
  width: 26px; height: 26px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--qsp-card, #fff);
  border: 1px solid var(--qsp-border, #e5e7eb);
  font-size: 13px; position: relative; z-index: 1;
}
.qsp-tl-text { color: var(--qsp-ink); overflow-wrap: anywhere; word-break: break-word; min-width: 0; }

/* Empty states */
.qsp-ws-empty {
  text-align: center; padding: 40px 20px;
  border: 1px dashed var(--qsp-border, #e5e7eb); border-radius: 12px;
  background: linear-gradient(180deg, rgba(148,163,184,.04), transparent);
}
.qsp-ws-empty-ic { font-size: 32px; margin-bottom: 10px; }
.qsp-ws-empty-title { font-size: 15px; font-weight: 600; margin-bottom: 4px; }
.qsp-ws-empty-sub { font-size: 13.5px; color: var(--qsp-muted, #64748b); max-width: 420px; margin: 0 auto 14px; line-height: 1.55; }
.qsp-ws-empty .qsp-btn { display: inline-flex; align-items: center; gap: 6px; }

/* Ghost buttons in the workspace additionally get inline icon+label layout */
.qsp-btn.ghost { display: inline-flex; align-items: center; gap: 6px; }

/* Dark mode: .qsp-ws-box, .qsp-ws-card, .qsp-ws-quicknote, .qsp-tl-ic and
   .qsp-copy-btn already theme correctly via var(--qsp-card)/var(--qsp-border),
   which flip automatically under body.qsp-theme-dark — no extra rule needed. */

/* ==========================================================================
   Customer Workspace — Messages tab inline composer (v3.4.0)
   Reuses the .qsp-msg-* styles already defined above for the leads-table
   Message modal — same visual language, rendered inline instead of floated.
   ========================================================================== */
.qsp-ws-messages-stack { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.qsp-ws-msg-history-note {
  margin-top: 12px; padding: 10px 12px; border-radius: 10px;
  background: #F8FAFC; border: 1px dashed var(--qsp-border, #e5e7eb);
  color: var(--qsp-muted, #64748b); font-size: 13px; line-height: 1.5;
}
.qsp-ws-msg-composer { min-width: 0; }
.qsp-ws-msg-composer .qsp-msg-pick-label {
  font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .07em;
  color: var(--qsp-muted, #64748b); margin-bottom: 10px;
}
.qsp-ws-msg-composer .qsp-msg-back-btn { margin-bottom: 14px; }
.qsp-ws-msg-composer .qsp-msg-text {
  width: 100%; min-height: 160px; max-width: 100%; resize: vertical; padding: 12px 14px;
  border: 1px solid var(--qsp-border, #e5e7eb); border-radius: 10px;
  font: inherit; font-size: 14.5px; line-height: 1.55; color: inherit;
  background: var(--qsp-card, #fff); transition: border-color .15s ease, box-shadow .15s ease;
}
.qsp-ws-msg-composer .qsp-msg-text:focus {
  outline: none; border-color: var(--qsp-teal); box-shadow: 0 0 0 3px rgba(20,184,166,.15);
}
.qsp-msg-actions { display: flex; gap: 8px; margin-top: 14px; flex-wrap: wrap; }
.qsp-msg-actions .qsp-btn { flex: 1 1 150px; justify-content: center; max-width: 100%; }

/* Dark styling for .qsp-ws-msg-history-note and .qsp-ws-msg-composer
   .qsp-msg-text is consolidated later in this file under body.qsp-theme-dark
   (single source of truth — avoids two components drifting to different
   dark shades). */

/* ==========================================================================
   Customer Workspace — containment & text-safety baseline (v3.4.0)
   ========================================================================== */
.qsp-ws-box, .qsp-ws-head, .qsp-ws-tabs, .qsp-ws-body,
.qsp-ws-card, .qsp-ws-grid, .qsp-ws-kv { box-sizing: border-box; }
.qsp-ws-tabs { min-width: 0; width: 100%; }
.qsp-ws-grid > *, .qsp-ws-card, .qsp-ws-kv, .qsp-ws-messages-stack > * { min-width: 0; }
.qsp-ws-kv > span:last-child, .qsp-ws-desc, .qsp-ws-title, .qsp-ws-meta-item {
  overflow-wrap: anywhere; word-break: break-word;
}
.qsp-copyable { max-width: 100%; }
.qsp-copyable > span:first-child { overflow-wrap: anywhere; word-break: break-word; min-width: 0; }

/* Responsive */
@media (max-width: 720px) {
  .qsp-ws-modal { align-items: flex-end; }
  .qsp-ws-modal .qsp-ws-box {
    width: 100%; max-width: 100%; margin: 0;
    max-height: 92vh;
    border-radius: 16px 16px 0 0;
  }
  .qsp-ws-close { width: 36px; height: 36px; }
  .qsp-ws-head { flex-direction: column; align-items: stretch; padding: 18px 48px 14px 16px; gap: 12px; }
  .qsp-ws-head-side { justify-content: flex-start; align-items: flex-start; gap: 10px 14px; }
  .qsp-ws-value { align-items: flex-start; }
  .qsp-ws-body { padding: 16px; }
  .qsp-ws-grid { grid-template-columns: 1fr; gap: 12px; }
  .qsp-ws-kv { grid-template-columns: 110px 1fr; }
  .qsp-tl-item { grid-template-columns: 48px 24px 1fr; }
  .qsp-tl-list::before { left: 52px; }

  /* Tab bar: comfortable spacing & touch targets, contained, no page-width expansion */
  .qsp-ws-tabs { padding: 0 10px; gap: 4px; scroll-snap-type: x proximity; -webkit-overflow-scrolling: touch; }
  .qsp-ws-tab { padding: 11px 12px; min-height: 44px; font-size: 13px; scroll-snap-align: center; }

  /* Buttons: consistent, wrap/stack cleanly instead of stretching full-width */
  .qsp-ws-actions { gap: 8px; }
  .qsp-ws-actions .qsp-btn { height: 40px; padding: 0 14px; font-size: 13.5px; border-radius: 10px; max-width: 100%; }
  .qsp-msg-actions .qsp-btn { flex: 1 1 45%; min-width: 130px; }

  .qsp-ws-quicknote { min-height: 70px; }
  .qsp-ws-photo { max-height: 160px; }
}

@media (max-width: 480px) {
  .qsp-ws-title { font-size: 19px; }
  .qsp-ws-value-num { font-size: 18px; }
  .qsp-ws-tab { padding: 10px 10px; font-size: 12.5px; }
  .qsp-msg-actions .qsp-btn { flex: 1 1 100%; }
  .qsp-ws-empty { padding: 28px 16px; }
  .qsp-tl-item { grid-template-columns: 40px 22px 1fr; gap: 6px; }
  .qsp-tl-list::before { left: 44px; }
  .qsp-tl-time { font-size: 11.5px; }
}

/* ==========================================================================
   v3.5.0 — Customer Workspace completion (per-lead Notes/Docs/Quotes tabs)
   Applied in addition to earlier workspace styles. Never replaces prior
   rules — layered on top so existing modals stay intact.
   ========================================================================== */

/* Give the workspace tabs more breathing room — the old 20px padding made
   the cards feel crammed against the tab bar. */
.qsp-ws-modal .qsp-ws-box { border-radius: 18px; }
.qsp-ws-head { padding: 24px 60px 20px 26px; }
.qsp-ws-tabs { padding: 0 20px; gap: 4px; }
.qsp-ws-tab { padding: 13px 16px; font-size: 13.5px; font-weight: 600; }
.qsp-ws-body { padding: 24px 26px 26px; }
.qsp-ws-grid { gap: 18px; }
.qsp-ws-card { padding: 18px 18px 16px; border-radius: 14px; }
.qsp-ws-card-h { margin-bottom: 12px; font-size: 12px; }
.qsp-ws-kv { padding: 8px 0; grid-template-columns: 140px 1fr; }

/* Notes tab */
.qsp-lw-notes { display: flex; flex-direction: column; gap: 14px; }
.qsp-lw-composer .qsp-ws-quicknote { min-height: 92px; }
.qsp-lw-list { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 10px; }
.qsp-lw-note {
  border: 1px solid var(--qsp-border, #e5e7eb);
  border-radius: 12px; padding: 14px 16px;
  background: var(--qsp-card, #fff);
  transition: box-shadow .18s ease, border-color .18s ease;
}
.qsp-lw-note:hover { box-shadow: 0 6px 18px rgba(2,6,23,.05); border-color: var(--qsp-border-strong, #d5dce6); }
.qsp-lw-note-body { font-size: 14px; line-height: 1.55; color: var(--qsp-text, #0f172a); white-space: pre-wrap; word-break: break-word; }
.qsp-lw-note-foot {
  display: flex; justify-content: space-between; align-items: center;
  margin-top: 10px; padding-top: 8px; border-top: 1px dashed var(--qsp-border, #e5e7eb);
  font-size: 12px; color: var(--qsp-muted, #64748b); gap: 8px; flex-wrap: wrap;
}
.qsp-lw-note-time { font-variant-numeric: tabular-nums; }
.qsp-lw-actions { display: inline-flex; gap: 4px; }
.qsp-lw-actions .qsp-btn.ghost { height: 30px; padding: 0 10px; font-size: 12.5px; }

/* Documents tab */
.qsp-lw-doc-tab { display: flex; flex-direction: column; gap: 14px; }
.qsp-lw-drop {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  gap: 4px; padding: 22px 16px; border-radius: 12px;
  border: 1.5px dashed var(--qsp-border-strong, #d5dce6);
  background: linear-gradient(180deg, rgba(20,184,166,.04), transparent);
  cursor: pointer; text-align: center;
  transition: border-color .15s ease, background .15s ease;
}
.qsp-lw-drop:hover { border-color: var(--qsp-teal, #14b8a6); background: rgba(20,184,166,.06); }
.qsp-lw-drop-cta { font-weight: 600; color: var(--qsp-teal-700, #0f766e); font-size: 14px; }
.qsp-lw-drop-hint { font-size: 12px; color: var(--qsp-muted, #64748b); }
.qsp-lw-docs { list-style: none; padding: 0; margin: 0; display: flex; flex-direction: column; gap: 8px; }
.qsp-lw-doc {
  display: grid; grid-template-columns: 40px 1fr auto; gap: 12px; align-items: center;
  padding: 12px 14px; border-radius: 12px;
  border: 1px solid var(--qsp-border, #e5e7eb); background: var(--qsp-card, #fff);
}
.qsp-lw-doc-ic {
  width: 36px; height: 36px; border-radius: 10px;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--qsp-teal-50, #f0fdfa); color: var(--qsp-teal-700, #0f766e);
  font-size: 18px;
}
.qsp-lw-doc-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.qsp-lw-doc-name { font-weight: 600; color: var(--qsp-ink, #0f172a); font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.qsp-lw-doc-meta { font-size: 12px; color: var(--qsp-muted, #64748b); }
.qsp-lw-doc-actions { display: inline-flex; gap: 4px; flex-wrap: wrap; justify-content: flex-end; }
.qsp-lw-doc-actions .qsp-btn.ghost { height: 30px; padding: 0 10px; font-size: 12.5px; }

/* Quotes-per-lead table */
.qsp-lw-qi-wrap { border-radius: 12px; margin-top: 4px; }
.qsp-lw-qi-wrap .qsp-table thead th { padding: 10px 14px; }
.qsp-lw-qi-wrap .qsp-table tbody td { padding: 12px 14px; }

/* Loading placeholder inside a workspace pane */
.qsp-ws-pane > .qsp-msg-loading { padding: 40px 20px; text-align: center; color: var(--qsp-muted, #64748b); }

/* Timeline: tighten empty time column so the row lines up when we hide the
   "01:00" fake time — the icon column becomes visually anchored to the left. */
.qsp-tl-item { grid-template-columns: 52px 28px 1fr; }
.qsp-tl-time:empty { color: transparent; }

/* Mobile polish for the workspace tabs */
@media (max-width: 720px){
  .qsp-ws-head { padding: 18px 52px 16px 18px; }
  .qsp-ws-body { padding: 18px 16px 22px; }
  .qsp-ws-grid { grid-template-columns: 1fr; gap: 12px; }
  .qsp-ws-kv { grid-template-columns: 110px 1fr; }
  .qsp-lw-doc { grid-template-columns: 36px 1fr; }
  .qsp-lw-doc-actions { grid-column: 1 / -1; justify-content: flex-start; }
  .qsp-ws-tab { padding: 12px 12px; }
}

/* Dark mode fills for the new components */
body.qsp-theme-dark .qsp-lw-note,
body.qsp-theme-dark .qsp-lw-doc { background: var(--qsp-card); border-color: var(--qsp-border); }
body.qsp-theme-dark .qsp-lw-drop { background: linear-gradient(180deg, rgba(45,212,191,.08), transparent); border-color: var(--qsp-border-strong); }
body.qsp-theme-dark .qsp-lw-drop:hover { background: rgba(45,212,191,.12); }
body.qsp-theme-dark .qsp-lw-drop-cta { color: var(--qsp-teal-700); }
body.qsp-theme-dark .qsp-lw-note-foot { border-top-color: var(--qsp-border); }
body.qsp-theme-dark .qsp-lw-note-body { color: var(--qsp-text); }
body.qsp-theme-dark .qsp-lw-doc-name { color: var(--qsp-ink); }
body.qsp-theme-dark .qsp-lw-doc-ic { background: rgba(45,212,191,.14); color: var(--qsp-teal-700); }
body.qsp-theme-dark .qsp-ws-msg-history-note { background: #0E1728; border-color: var(--qsp-border); color: var(--qsp-muted); }
body.qsp-theme-dark .qsp-ws-head { background: linear-gradient(180deg, rgba(45,212,191,.06), transparent); border-bottom-color: var(--qsp-border); }
body.qsp-theme-dark .qsp-ws-tabs { border-bottom-color: var(--qsp-border); }
body.qsp-theme-dark .qsp-ws-tab { color: var(--qsp-muted); }
body.qsp-theme-dark .qsp-ws-tab:hover { color: var(--qsp-ink); background: rgba(148,163,184,.08); }
body.qsp-theme-dark .qsp-ws-tab.is-active { color: var(--qsp-ink); border-bottom-color: var(--qsp-teal); }

/* TradeForm OS 4.3 — guided quote builder */
.qi-builder-box{max-width:1240px!important;height:min(900px,94vh);overflow:hidden}
.qi-builder-sub{font-size:12px;color:var(--qsp-muted);margin-top:3px}
.qi-builder-steps{display:flex;gap:0;padding:0 24px;border-bottom:1px solid var(--qsp-border);background:var(--qsp-card)}
.qi-step{flex:1;border:0;background:transparent;padding:14px 8px;color:var(--qsp-muted);font-weight:700;font-size:12px;cursor:pointer;border-bottom:3px solid transparent}
.qi-step span{display:inline-flex;width:22px;height:22px;border-radius:50%;align-items:center;justify-content:center;background:var(--qsp-soft);margin-right:7px;font-size:11px}
.qi-step.is-active{color:var(--qsp-ink);border-bottom-color:var(--qsp-teal)}
.qi-step.is-active span,.qi-step.is-done span{background:var(--qsp-teal);color:#052e2b}
.qi-builder-body{display:grid;grid-template-columns:minmax(0,1fr) 270px;min-height:0;overflow:hidden;flex:1}
.qi-builder-main{overflow-y:auto;padding:24px;background:var(--qsp-bg)}
.qi-builder-summary{padding:20px;border-left:1px solid var(--qsp-border);background:var(--qsp-card);overflow-y:auto}
.qi-panel{display:none}.qi-panel.is-active{display:block}
.qi-panel-heading{display:flex;justify-content:space-between;gap:28px;align-items:flex-start;margin-bottom:18px}
.qi-panel-heading h3{font-size:22px;margin:4px 0;color:var(--qsp-ink)}
.qi-panel-heading p{max-width:380px;margin:4px 0;color:var(--qsp-muted);font-size:12px;line-height:1.55}
.qi-kicker{text-transform:uppercase;letter-spacing:.11em;font-size:10px;font-weight:800;color:var(--qsp-teal)}
.qi-section-flat{box-shadow:0 8px 28px rgba(15,23,42,.04);padding:20px}
.qi-ai-block{background:linear-gradient(135deg,rgba(20,184,166,.08),rgba(59,130,246,.05));margin-bottom:16px}
.qi-ai-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.qi-ai-head h3{margin:0}
.qi-summary-card{border:1px solid var(--qsp-border);border-radius:14px;padding:16px;margin-bottom:14px;background:var(--qsp-bg)}
.qi-summary-card>strong{display:block;font-size:29px;margin:6px 0 16px;color:var(--qsp-ink)}
.qi-summary-row{display:flex;justify-content:space-between;gap:12px;font-size:12px;padding:7px 0;border-top:1px solid var(--qsp-border)}
.qi-summary-row span{color:var(--qsp-muted)}.qi-summary-row b{text-align:right;color:var(--qsp-ink);max-width:135px;overflow-wrap:anywhere}
.qi-deposit-row{margin-top:5px}.qi-items-scroll{overflow-x:auto}
.qi-items-pro{min-width:900px}.qi-items-pro th:nth-child(1){width:28%}.qi-items-pro select{width:100%;border:1px solid var(--qsp-border);border-radius:6px;padding:6px;background:var(--qsp-card);color:var(--qsp-text)}
.qi-items-pro .optional{width:18px;height:18px}.qi-line-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}
.qi-adjustments{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:20px;padding-top:18px;border-top:1px solid var(--qsp-border)}
.qi-adjustments>div{display:grid;grid-template-columns:1fr 110px;gap:8px;align-items:end}.qi-adjustments label{font-size:11px;color:var(--qsp-muted);font-weight:700;display:flex;flex-direction:column;gap:6px}
.qi-review{background:#fff;color:#0f172a;border:1px solid #e2e8f0;border-radius:14px;padding:28px;box-shadow:0 12px 35px rgba(15,23,42,.07)}
.qi-review-head{display:flex;justify-content:space-between;border-bottom:2px solid #0f172a;padding-bottom:18px;margin-bottom:20px}.qi-review-head span,.qi-review-section h4{font-size:10px;text-transform:uppercase;letter-spacing:.12em;color:#64748b}.qi-review-head h3{font-size:20px;margin:4px 0}.qi-review-head p{margin:0;color:#64748b}.qi-review-head>strong{font-size:28px}
.qi-review-section{margin-bottom:20px}.qi-review-section p{white-space:pre-line;line-height:1.55}.qi-review table{width:100%;border-collapse:collapse}.qi-review th,.qi-review td{padding:10px;border-bottom:1px solid #e2e8f0;text-align:left;font-size:12px}.qi-review th{background:#0f172a;color:#fff}.qi-review tr.is-optional{opacity:.68}.qi-review td span{font-size:9px;text-transform:uppercase;background:#e0f2fe;padding:2px 5px;border-radius:4px}
.qi-review-totals{margin:18px 0 0 auto;max-width:340px}.qi-review-totals>div{display:flex;justify-content:space-between;padding:6px}.qi-review-totals .grand{font-size:17px;border-top:2px solid #0f172a;margin-top:5px;padding-top:11px}
@media(max-width:900px){.qi-builder-body{grid-template-columns:1fr}.qi-builder-summary{display:none}.qi-builder-steps{overflow-x:auto;padding:0 10px}.qi-step{min-width:110px}.qi-adjustments{grid-template-columns:1fr}.qi-panel-heading{display:block}.qi-builder-main{padding:16px}}


/* TradeForm ROI billing configuration */
.qsp-roi-settings{display:grid;grid-template-columns:minmax(260px,1fr) auto auto auto;gap:16px;align-items:end;padding:18px 20px;margin:0 0 20px;background:var(--qsp-card);border:1px solid var(--qsp-border);border-radius:14px;box-shadow:var(--qsp-shadow-sm)}
.qsp-roi-settings[hidden]{display:none!important}.qsp-roi-settings>div{align-self:center}.qsp-roi-settings strong{display:block;font-size:14px;color:var(--qsp-ink)}.qsp-roi-settings>div span{display:block;margin-top:4px;font-size:12px;color:var(--qsp-muted)}
.qsp-roi-settings label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--qsp-muted)}.qsp-roi-settings input{min-width:150px;height:40px;padding:0 11px;border:1px solid var(--qsp-border);border-radius:9px;background:var(--qsp-card);color:var(--qsp-ink);font:inherit;font-size:14px;text-transform:none;letter-spacing:0}
.qsp-money-input{display:flex;align-items:center;height:40px;border:1px solid var(--qsp-border);border-radius:9px;background:var(--qsp-card);overflow:hidden}.qsp-money-input b{padding-left:11px;color:var(--qsp-muted);font-size:14px}.qsp-money-input input{min-width:110px;border:0;box-shadow:none!important;padding-left:6px}
@media(max-width:900px){.qsp-roi-settings{grid-template-columns:1fr 1fr}.qsp-roi-settings>div{grid-column:1/-1}.qsp-roi-settings .qsp-btn{width:100%}}
@media(max-width:600px){.qsp-roi-settings{grid-template-columns:1fr}.qsp-roi-settings>div{grid-column:auto}.qsp-roi-settings input,.qsp-money-input{width:100%}}
