/* ────────────────────────────────────────────────────────────────────
 * Spartan CRM — Fleet & Delivery V2.1 (WIP-SCHED-V2.1-INTEGRATION-01)
 * Companion to modules/31b-fleet-delivery-v2.js.
 * Mirrors docs/mockups/spartan-fleet-delivery-v2.1.html.
 * Scoped under .fd-page; legacy V1 .fleet-* classes untouched.
 * ──────────────────────────────────────────────────────────────────── */

.fd-page {
  --fd-red:#C41230; --fd-red-dark:#A50E27; --fd-ink:#0A0A0A;
  --fd-s50:#FAFAF9; --fd-s100:#F5F5F4; --fd-s200:#E7E5E4; --fd-s300:#D6D3D1;
  --fd-s400:#A8A29E; --fd-s500:#78716C; --fd-s600:#57534E; --fd-s700:#44403C;
  --fd-s800:#292524; --fd-s900:#1C1917;
  --fd-ok-bg:#DCFCE7; --fd-ok-fg:#15803D; --fd-ok-light:#22C55E;
  --fd-due-bg:#FEE2E2; --fd-due-fg:#DC2626;
  --fd-pending-bg:#FEF3C7; --fd-pending-fg:#D97706; --fd-pending-deep:#92400E;
  --fd-info-bg:#DBEAFE; --fd-info-fg:#1D4ED8;
  --fd-purple:#7C3AED;
  --fd-tip:#0EA5E9; --fd-tip-deep:#0369A1;
  --fd-factory:#16A34A; --fd-factory-deep:#166534;
  --fd-site:#C41230;
  --fd-shadow-rest:0 1px 2px rgba(10,10,10,.03), 0 1px 1px rgba(10,10,10,.02);
  --fd-ease:cubic-bezier(.4,0,.2,1); --fd-t:180ms var(--fd-ease);
  font-family:'Archivo',system-ui,sans-serif;
  color:var(--fd-ink); display:flex; flex-direction:column; gap:18px;
}

@keyframes fd-pulse-live { 0%,100%{box-shadow:0 0 0 0 rgba(34,197,94,.4)} 50%{box-shadow:0 0 0 5px rgba(34,197,94,0)} }
@media (prefers-reduced-motion: reduce) {
  .fd-page .fd-live-dot { animation:none !important; }
}

.fd-page svg { width:14px; height:14px; flex-shrink:0; }
.fd-eyebrow {
  font-family:'Archivo Narrow',system-ui,sans-serif;
  font-size:10px; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  color:var(--fd-s500);
}
.fd-empty { padding:24px; text-align:center; color:var(--fd-s500); font-size:13px; font-style:italic; }

.fd-hero { display:flex; justify-content:space-between; align-items:flex-end; gap:24px; }
.fd-hero-l { display:flex; flex-direction:column; gap:4px; }
.fd-hero-title { font-size:32px; font-weight:900; letter-spacing:-.025em; line-height:1.05; }
.fd-hero-sub { font-size:13px; color:var(--fd-s500); font-weight:500; }
.fd-hero-sub b { color:var(--fd-ink); font-weight:700; }
.fd-hero-r { display:flex; gap:10px; }

.fd-btn {
  display:inline-flex; align-items:center; justify-content:center; gap:7px;
  padding:9px 14px; font-size:13px; font-weight:600; border-radius:9px;
  cursor:pointer; transition:all var(--fd-t); border:1px solid transparent;
  white-space:nowrap; font-family:inherit;
}
.fd-btn-w { background:#fff; color:var(--fd-s700); border-color:var(--fd-s200); box-shadow:var(--fd-shadow-rest); }
.fd-btn-w:hover { border-color:var(--fd-ink); color:var(--fd-ink); }
.fd-btn-d { background:var(--fd-ink); color:#fff; border-color:var(--fd-ink); }
.fd-btn-d:hover { background:var(--fd-s900); }
.fd-btn-sm { padding:6px 11px; font-size:12px; border-radius:8px; }

/* KPI strip */
.fd-kpis { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; }
.fd-kpi {
  background:#fff; border:1px solid var(--fd-s200); border-radius:12px;
  padding:14px 16px; box-shadow:var(--fd-shadow-rest);
  display:flex; flex-direction:column; gap:6px;
  position:relative; overflow:hidden;
}
.fd-kpi::before { content:''; position:absolute; left:0; top:0; bottom:0; width:3px; }
.fd-kpi.fleet::before { background:var(--fd-info-fg); }
.fd-kpi.tip::before { background:var(--fd-tip); }
.fd-kpi.factory::before { background:var(--fd-factory); }
.fd-kpi.alerts::before { background:var(--fd-pending-fg); }
.fd-kpi-label { font-family:'Archivo Narrow'; font-size:10px; font-weight:700; letter-spacing:.16em; text-transform:uppercase; color:var(--fd-s500); }
.fd-kpi-row { display:flex; align-items:baseline; gap:8px; }
.fd-kpi-num { font-size:28px; font-weight:900; letter-spacing:-.025em; line-height:1; }
.fd-kpi-unit { font-family:'Archivo Narrow'; font-size:11px; font-weight:700; color:var(--fd-s500); letter-spacing:.04em; }
.fd-kpi-sub { font-size:11px; color:var(--fd-s500); font-weight:500; line-height:1.3; }
.fd-kpi-sub b { color:var(--fd-ink); font-weight:700; }

/* Section shell */
.fd-section { background:#fff; border:1px solid var(--fd-s200); border-radius:14px; box-shadow:var(--fd-shadow-rest); overflow:hidden; }
.fd-section-h {
  padding:16px 22px;
  display:flex; justify-content:space-between; align-items:center;
  border-bottom:1px solid var(--fd-s200);
  background:linear-gradient(180deg,var(--fd-s50) 0%,transparent 100%);
}
.fd-section-h-l { display:flex; flex-direction:column; gap:2px; }
.fd-section-title { font-weight:800; font-size:16px; letter-spacing:-.01em; display:flex; align-items:center; gap:9px; }
.fd-section-sub { font-size:11.5px; color:var(--fd-s500); font-weight:500; }

/* Live mid-day feed */
.fd-live-dot { width:8px; height:8px; border-radius:50%; background:var(--fd-ok-light); animation:fd-pulse-live 2s ease-in-out infinite; }
.fd-mid-day-feed { padding:14px 22px; display:flex; flex-direction:column; gap:8px; }
.fd-mid-day-event {
  background:#fff; border:1px solid var(--fd-s200); border-radius:11px;
  padding:11px 14px;
  display:grid; grid-template-columns:36px 1fr auto auto; gap:12px;
  align-items:center; transition:all var(--fd-t);
}
.fd-mid-day-event:hover { border-color:var(--fd-s400); background:var(--fd-s50); }
.fd-mde-icon {
  width:36px; height:36px; border-radius:9px;
  display:flex; align-items:center; justify-content:center;
  color:#fff; flex-shrink:0;
}
.fd-mde-icon.tip { background:linear-gradient(135deg,var(--fd-tip),var(--fd-tip-deep)); }
.fd-mde-icon.factory { background:linear-gradient(135deg,var(--fd-factory),var(--fd-factory-deep)); }
.fd-mde-icon.route { background:linear-gradient(135deg,var(--fd-info-fg),#1E3A8A); }
.fd-mde-icon svg { width:18px; height:18px; }
.fd-mde-body { display:flex; flex-direction:column; gap:1px; min-width:0; }
.fd-mde-row1 { display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; }
.fd-mde-type {
  font-family:'Archivo Narrow'; font-size:10px; font-weight:800;
  letter-spacing:.14em; text-transform:uppercase;
  padding:2px 6px; border-radius:4px;
}
.fd-mde-type.tip { background:rgba(14,165,233,.12); color:var(--fd-tip-deep); }
.fd-mde-type.factory { background:rgba(22,163,74,.12); color:var(--fd-factory-deep); }
.fd-mde-type.route { background:var(--fd-info-bg); color:var(--fd-info-fg); }
.fd-mde-text { font-size:13px; font-weight:600; color:var(--fd-ink); letter-spacing:-.005em; line-height:1.3; }
.fd-mde-text b { font-weight:800; }
.fd-mde-reason { font-size:11.5px; color:var(--fd-s500); font-weight:500; line-height:1.3; }
.fd-mde-reason b { color:var(--fd-s700); font-weight:700; }
.fd-mde-meta {
  display:flex; flex-direction:column; align-items:flex-end; gap:2px;
  font-family:'Archivo Narrow'; font-size:10.5px; font-weight:600;
  color:var(--fd-s500); letter-spacing:.02em;
}
.fd-mde-time { color:var(--fd-ink); font-weight:700; }
.fd-mde-ai-tag {
  display:inline-flex; align-items:center; gap:4px;
  font-family:'Archivo Narrow'; font-size:9.5px; font-weight:800;
  letter-spacing:.12em; text-transform:uppercase;
  background:rgba(124,58,237,.12); color:var(--fd-purple);
  border:1px solid rgba(124,58,237,.25); padding:2px 6px; border-radius:4px;
}
.fd-mde-ai-tag svg { width:12px; height:12px; }
.fd-mde-status-pill {
  display:inline-flex; align-items:center; gap:4px;
  font-family:'Archivo Narrow'; font-size:9.5px; font-weight:800;
  letter-spacing:.1em; text-transform:uppercase;
  padding:3px 8px; border-radius:5px;
}
.fd-mde-status-pill.accepted { background:var(--fd-ok-bg); color:var(--fd-ok-fg); }
.fd-mde-status-pill.declined { background:var(--fd-due-bg); color:var(--fd-due-fg); }

/* Morning routes grid */
.fd-routes-grid { padding:18px 22px; display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.fd-route-card {
  background:linear-gradient(180deg,var(--fd-s50) 0%,#fff 100%);
  border:1px solid var(--fd-s200); border-radius:14px;
  overflow:hidden; display:flex; flex-direction:column;
}
.fd-route-card.alert { border-color:var(--fd-pending-fg); box-shadow:0 0 0 1px var(--fd-pending-fg); }
.fd-route-h { padding:14px 18px; background:#fff; display:flex; justify-content:space-between; align-items:center; border-bottom:1px solid var(--fd-s200); }
.fd-route-van { display:flex; align-items:center; gap:11px; }
.fd-route-van-ico {
  width:42px; height:30px;
  background:linear-gradient(135deg,var(--fd-ink),var(--fd-s900));
  border-radius:6px;
  display:flex; align-items:center; justify-content:center;
  color:#fff; flex-shrink:0;
}
.fd-route-van-ico svg { width:18px; height:18px; }
.fd-route-van-text { display:flex; flex-direction:column; gap:1px; }
.fd-route-van-name { font-weight:800; font-size:14px; letter-spacing:-.005em; }
.fd-route-van-sub { font-family:'Archivo Narrow'; font-size:11px; color:var(--fd-s500); font-weight:600; letter-spacing:.02em; }
.fd-route-van-sub b { color:var(--fd-ink); font-weight:700; }
.fd-route-installer { display:flex; align-items:center; gap:7px; font-family:'Archivo Narrow'; font-size:11px; font-weight:700; color:var(--fd-s700); letter-spacing:.02em; }
.fd-route-installer-av {
  width:22px; height:22px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:10px; font-weight:800; color:#fff;
}
.fd-route-installer-av.a { background:#DC2626; }
.fd-route-installer-av.b { background:#F59E0B; }
.fd-route-installer-av.c { background:#16A34A; }
.fd-route-installer-av.d { background:#7C3AED; }
.fd-route-installer-av.e { background:#0EA5E9; }

.fd-route-brief {
  padding:14px 18px;
  background:linear-gradient(135deg,rgba(124,58,237,.06) 0%,rgba(124,58,237,.02) 100%);
  border-bottom:1px solid var(--fd-s200);
  display:flex; align-items:flex-start; gap:11px;
}
.fd-brief-spark {
  width:26px; height:26px; border-radius:7px;
  background:rgba(124,58,237,.15); color:var(--fd-purple);
  display:flex; align-items:center; justify-content:center;
  border:1px solid rgba(124,58,237,.3); flex-shrink:0;
}
.fd-brief-spark svg { width:14px; height:14px; }
.fd-brief-text { font-size:12.5px; line-height:1.5; color:var(--fd-s800); flex:1; }
.fd-brief-text b { color:var(--fd-ink); font-weight:700; background:rgba(124,58,237,.12); padding:1px 4px; border-radius:3px; }
.fd-brief-actions { display:flex; gap:5px; flex-shrink:0; }
.fd-brief-mini {
  padding:4px 8px; font-size:10px; font-weight:700;
  background:#fff; border:1px solid var(--fd-s200); border-radius:5px;
  cursor:pointer; color:var(--fd-s600);
  font-family:'Archivo Narrow'; letter-spacing:.04em; text-transform:uppercase;
}
.fd-brief-mini:hover { background:var(--fd-ink); color:#fff; border-color:var(--fd-ink); }

.fd-route-timeline { padding:14px 18px; display:flex; flex-direction:column; gap:8px; }
.fd-stop { display:grid; grid-template-columns:24px 1fr; gap:10px; align-items:flex-start; position:relative; }
.fd-stop::after {
  content:''; position:absolute; left:11px; top:24px; bottom:-8px; width:2px;
  background:repeating-linear-gradient(180deg,var(--fd-s300) 0,var(--fd-s300) 3px,transparent 3px,transparent 6px);
}
.fd-stop:last-child::after { display:none; }
.fd-stop-marker {
  width:24px; height:24px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-family:'Archivo Narrow'; font-size:10px; font-weight:800;
  color:#fff; position:relative; z-index:1;
}
.fd-stop-marker.tip { background:var(--fd-tip); }
.fd-stop-marker.factory { background:var(--fd-factory); }
.fd-stop-marker.site { background:var(--fd-site); }
.fd-stop-marker svg { width:11px; height:11px; stroke-width:2.2; }
.fd-stop-body { display:flex; flex-direction:column; gap:2px; min-width:0; }
.fd-stop-h { display:flex; justify-content:space-between; align-items:baseline; gap:8px; }
.fd-stop-label { font-family:'Archivo Narrow'; font-size:10px; font-weight:800; letter-spacing:.14em; text-transform:uppercase; }
.fd-stop-label.tip { color:var(--fd-tip-deep); }
.fd-stop-label.factory { color:var(--fd-factory-deep); }
.fd-stop-label.site { color:var(--fd-red-dark); }
.fd-stop-time { font-family:'Archivo Narrow'; font-size:11px; font-weight:700; color:var(--fd-s700); letter-spacing:.04em; }
.fd-stop-name { font-size:13px; font-weight:700; color:var(--fd-ink); letter-spacing:-.005em; line-height:1.2; }
.fd-stop-meta { display:flex; gap:8px; align-items:center; font-family:'Archivo Narrow'; font-size:11px; color:var(--fd-s600); font-weight:600; letter-spacing:.02em; margin-top:2px; }
.fd-stop-meta b { color:var(--fd-ink); font-weight:700; }

.fd-route-foot {
  padding:11px 18px;
  background:var(--fd-s50); border-top:1px solid var(--fd-s200);
  display:flex; justify-content:space-between; align-items:center;
}
.fd-veh-states { display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.fd-veh-flag {
  font-family:'Archivo Narrow'; font-size:9.5px; font-weight:800;
  letter-spacing:.12em; text-transform:uppercase;
  padding:2px 6px; border-radius:4px;
}
.fd-veh-flag.tip { background:rgba(14,165,233,.12); color:var(--fd-tip-deep); border:1px solid rgba(14,165,233,.3); }
.fd-veh-flag.factory { background:rgba(22,163,74,.12); color:var(--fd-factory-deep); border:1px solid rgba(22,163,74,.3); }
.fd-veh-flag.full { background:var(--fd-due-bg); color:var(--fd-due-fg); border:1px solid rgba(220,38,38,.3); }
.fd-veh-flag.clean { background:var(--fd-ok-bg); color:var(--fd-ok-fg); border:1px solid rgba(22,163,74,.3); }

/* Fleet state table */
.fd-fleet-list { padding:0; }
.fd-fleet-row {
  padding:12px 22px; border-bottom:1px solid var(--fd-s200);
  display:grid; grid-template-columns:170px 1fr 180px 160px 110px; gap:14px; align-items:center;
}
.fd-fleet-row:last-child { border-bottom:0; }
.fd-fleet-row:hover { background:var(--fd-s50); }
.fd-fleet-veh-name { font-weight:700; font-size:13.5px; letter-spacing:-.005em; }
.fd-fleet-veh-plate { font-family:'Archivo Narrow'; font-size:11px; color:var(--fd-s500); font-weight:600; letter-spacing:.04em; }
.fd-fleet-cubic { display:flex; flex-direction:column; gap:4px; }
.fd-fleet-cubic-meta { display:flex; justify-content:space-between; font-family:'Archivo Narrow'; font-size:11px; color:var(--fd-s600); font-weight:600; letter-spacing:.02em; }
.fd-fleet-cubic-meta b { color:var(--fd-ink); font-weight:700; }
.fd-fleet-cubic-bar { height:8px; background:var(--fd-s200); border-radius:4px; overflow:hidden; display:flex; }
.fd-fleet-cubic-bar .frames { background:var(--fd-red); }
.fd-fleet-cubic-bar .rubbish { background:var(--fd-pending-fg); }
.fd-fleet-flags-cell { display:flex; flex-direction:column; gap:4px; }
.fd-fleet-driver { display:flex; align-items:center; gap:7px; font-family:'Archivo Narrow'; font-size:11.5px; font-weight:700; color:var(--fd-s700); letter-spacing:.02em; }
.fd-fleet-driver-av {
  width:22px; height:22px; border-radius:50%;
  display:flex; align-items:center; justify-content:center;
  font-size:10px; font-weight:800; color:#fff;
}
.fd-fleet-driver-av.a { background:#DC2626; }
.fd-fleet-driver-av.b { background:#F59E0B; }
.fd-fleet-driver-av.c { background:#16A34A; }
.fd-fleet-driver-av.d { background:#7C3AED; }
.fd-fleet-driver-av.e { background:#0EA5E9; }

/* AI strip */
.fd-ai-strip {
  background:linear-gradient(135deg,var(--fd-ink) 0%,var(--fd-s900) 100%);
  color:#fff; border-radius:12px; padding:16px 20px;
  display:flex; align-items:center; gap:18px;
  position:relative; overflow:hidden;
}
.fd-ai-strip::before {
  content:''; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:linear-gradient(180deg,var(--fd-red),var(--fd-purple));
}
.fd-ai-strip-l { display:flex; align-items:center; gap:14px; flex:1; }
.fd-ai-spark {
  width:36px; height:36px; border-radius:9px;
  background:rgba(124,58,237,.18);
  display:flex; align-items:center; justify-content:center;
  color:#A78BFA; border:1px solid rgba(124,58,237,.35);
  flex-shrink:0;
}
.fd-ai-spark svg { width:18px; height:18px; }
.fd-ai-meta { display:flex; flex-direction:column; gap:1px; }
.fd-ai-eyebrow { font-family:'Archivo Narrow'; font-size:9.5px; font-weight:700; letter-spacing:.18em; text-transform:uppercase; color:#A78BFA; }
.fd-ai-text { font-size:13px; font-weight:500; color:var(--fd-s100); line-height:1.45; }
.fd-ai-text b { color:#fff; font-weight:700; background:rgba(124,58,237,.18); padding:1px 4px; border-radius:3px; }
.fd-ai-strip-r { display:flex; gap:8px; flex-shrink:0; }
.fd-ai-strip-btn {
  padding:6px 11px; font-size:11px; font-weight:700;
  background:rgba(255,255,255,.06); border:1px solid var(--fd-s700);
  border-radius:7px; color:#fff; cursor:pointer;
  display:flex; align-items:center; gap:5px;
  font-family:'Archivo Narrow'; letter-spacing:.04em; text-transform:uppercase;
}
.fd-ai-strip-btn:hover { background:rgba(255,255,255,.12); }
