/* QuoteSharp 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;
}
*{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}

/* ---------- 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}

/* ---------- 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}
.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.secondary{background:#fff;color:#334155;border:1px solid var(--qsp-border)}
.qsp-btn.secondary:hover{border-color:var(--qsp-teal);color:var(--qsp-teal-700);background:#fff}
.qsp-btn.ghost{background:transparent;color:var(--qsp-muted);padding:0 8px;box-shadow:none}
.qsp-btn.danger{background:var(--qsp-red)}
.qsp-btn.danger:hover{background:#DC2626}

/* 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}
.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-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)}
.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}

.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:#fff}
  .qsp-table tr:hover{background:#fff}
  .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}
.qi-ai-note{font-size:11px;color:#64748B;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 #e2e8f0;border-radius:6px;padding:6px 8px;font-size:13px;box-sizing:border-box}
.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:#0F172A;text-align:right;padding-right:6px;display:block}
.qi-items td .rm{background:transparent;border:0;color:#ef4444;cursor:pointer;font-size:16px}
.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:#475569;line-height:1.8}
.qi-totals-display .qi-grand{font-size:16px;color:#0F172A;margin-top:4px;border-top:2px solid #0F172A;padding-top:6px}
.qsp-btn.ghost{background:transparent;color:#475569;border:1px solid #e2e8f0}
.qsp-btn.ghost:hover{background:#f1f5f9}
.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)}

/* ===== 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-bg, #ffffff);
  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:#fff;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:#fff;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)}
.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 QuoteSharp 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:#d1d5db;}
.qsp-dash-card.open{border-color:#c7d2fe;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:#0f172a;line-height:1.2;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.qsp-dash-job{font-size:13px;color:#475569;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.qsp-dash-muted{color:#94a3b8;}
.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:#64748b;
  cursor:pointer;transition:transform .25s ease, background .15s ease, color .15s ease;
}
.qsp-dash-card:hover .qsp-dash-toggle{background:#f1f5f9;color:#334155;}
.qsp-dash-card.open .qsp-dash-toggle{transform:rotate(180deg);color:#4f46e5;}
.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 #e5e7eb;
}
.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:#0f172a;}
.qsp-dash-field-wide{grid-column:1 / -1;}
.qsp-dash-lbl{font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#64748b;}
.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 #e5e7eb;}

@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;
}
