/* ═══════════════════════════════════════════════════════════════
   Dashboard NEW LOOK (v916) — owner-approved redesign, presentation only.
   Every rule is scoped under body.dash-v2 so the classic look is untouched
   when the toggle is off. No data, ids or handlers are affected.
   ═══════════════════════════════════════════════════════════════ */

body.dash-v2 { background:#f6f7f9; }

/* Zone headers + grids injected by _dashV2Init() */
body.dash-v2 .dz-head{
  display:flex;align-items:baseline;gap:10px;margin:26px 24px 10px;
}
body.dash-v2 .dz-head span{
  font-size:12px;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.08em;
}
body.dash-v2 .dz-head i{font-size:12px;color:#94a3b8;font-style:normal}
body.dash-v2 .dz-split{
  display:grid;grid-template-columns:1.15fr .85fr;gap:14px;margin:0 24px;
}
@media (max-width:1040px){ body.dash-v2 .dz-split{grid-template-columns:1fr} }

/* KPI stat cards — flat, calm, consistent */
body.dash-v2 .stats{gap:12px !important;margin:0 24px !important}
body.dash-v2 .stat-card{
  background:#fff !important;
  border:1px solid #e8eaee !important;
  border-left-width:4px !important;              /* keeps each card's accent color */
  border-radius:12px !important;
  box-shadow:0 1px 2px rgba(15,23,42,.05),0 4px 12px rgba(15,23,42,.04) !important;
  padding:16px 18px !important;
  transition:.15s;
}
body.dash-v2 .stat-card:hover{transform:translateY(-1px);box-shadow:0 4px 16px rgba(15,23,42,.09) !important}
body.dash-v2 .stat-card .label{font-size:12px !important;font-weight:650 !important;color:#475569 !important}
body.dash-v2 .stat-card .value{font-size:24px !important;font-weight:800 !important;letter-spacing:-.02em !important;margin-top:6px !important}

/* Today's Pulse — dark strip becomes a light slim ticker */
body.dash-v2 .pulse-strip{
  background:#fff !important;border:1px solid #e8eaee !important;border-radius:999px !important;
  color:#475569 !important;box-shadow:0 1px 2px rgba(15,23,42,.05) !important;
  margin:10px 24px 4px !important;padding:6px 16px !important;
}
body.dash-v2 .pulse-strip .num{color:#0f172a !important;font-weight:800 !important}
body.dash-v2 .pulse-strip .lab{color:#94a3b8 !important}
body.dash-v2 .pulse-strip .pulse-label{color:#0f8a4d !important}
body.dash-v2 .pulse-strip .pulse-feed{color:#475569 !important}

/* Widgets & sections — kill gradients, one card language */
body.dash-v2 #renewalFunnelCard,
body.dash-v2 #yourDayWidget,
body.dash-v2 #inboxWidget,
body.dash-v2 #owedInsurersWidget,
body.dash-v2 #owedBrokersWidget,
body.dash-v2 #ceoDashboard .section{
  background:#fff !important;
  border:1px solid #e8eaee !important;
  border-radius:12px !important;
  box-shadow:0 1px 2px rgba(15,23,42,.05),0 4px 12px rgba(15,23,42,.04) !important;
  margin-left:0 !important;margin-right:0 !important;
}
/* widgets moved into .dz-split get their outer margins from the grid */
body.dash-v2 .dz-split > *{margin:0 !important}
body.dash-v2 #owedInsurersWidget, body.dash-v2 #owedBrokersWidget{margin:0 24px 14px !important}

/* Gradient-clipped totals → solid, readable */
body.dash-v2 #owedTotal, body.dash-v2 #owedBrkTotal{
  background:none !important;-webkit-text-fill-color:#6d28d9;color:#6d28d9 !important;
}

/* Section titles inside cards */
body.dash-v2 #ceoDashboard h2{color:#0f172a !important}

/* Owed chips — flatter */
body.dash-v2 #owedChips > div, body.dash-v2 #owedBrkChips > div{
  border-radius:10px !important;box-shadow:none !important;
}

/* Reconciliation banner — slimmer alert */
body.dash-v2 #reconBanner{
  border-radius:12px !important;background:#fffbeb !important;border:1px solid #fcd34d !important;
}

/* Home view bar buttons align with the new language */
body.dash-v2 #homeViewBar .btn{border-radius:8px !important}

/* v917 — navigation moved to the very top (like the preview), sticky while
   scrolling. Mobile (≤768px) keeps its bottom nav: tabs-wrap stays hidden. */
body.dash-v2 #tabsWrap{
  position:sticky;top:0;z-index:120;
  background:#f6f7f9;
  margin:0 0 4px;padding:8px 24px 0;
  border-bottom:1px solid #e8eaee;
}
/* Panes scrolled to via the nav shouldn't hide under the sticky bar */
body.dash-v2 .tab-content{scroll-margin-top:70px}

/* v918 — tabs open as their own page: dashboard hides while a tab is showing.
   The 🏠 Dashboard nav button (injected by _dashV2Arrange) brings it back.
   reconBanner stays visible on purpose — it is an alert, not dashboard content. */
body.dash-v2.dash-v2-page #ceoDashboard,
body.dash-v2.dash-v2-page #homeViewBar,
body.dash-v2.dash-v2-page #myViewArea{display:none !important}
body.dash-v2 #dashV2Home{font-weight:700}

/* ═══ v956 — Step A: page header zone (title + date + quick actions),
   injected by _dashV2Arrange before #homeViewBar. Hidden with the rest of
   the dashboard when a tab is open as its own page. ═══ */
body.dash-v2 .dz-pagehead{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:18px 24px 0;
}
body.dash-v2.dash-v2-page .dz-pagehead{display:none !important}
body.dash-v2 .dz-pagehead h1{
  font-size:21px;font-weight:750;letter-spacing:-.02em;color:#0f172a;margin:0;line-height:1.2;
}
body.dash-v2 .dz-ph-date{color:#94a3b8;font-size:13px;margin-top:2px}
body.dash-v2 .dz-ph-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}
body.dash-v2 .dz-ph-actions button{
  border:1px solid #e8eaee;background:#fff;color:#475569;border-radius:8px;
  padding:8px 14px;font-size:13px;font-weight:600;cursor:pointer;font-family:inherit;
  transition:.15s;box-shadow:0 1px 2px rgba(15,23,42,.05);
}
body.dash-v2 .dz-ph-actions button:hover{border-color:#cbd5e1;color:#0f172a}
body.dash-v2 .dz-ph-actions button.dz-primary{background:#1e3a5f;border-color:#1e3a5f;color:#fff}
body.dash-v2 .dz-ph-actions button.dz-primary:hover{filter:brightness(1.12);color:#fff}
/* homeViewBar tucks under the header with a lighter margin */
body.dash-v2 #homeViewBar{margin:8px 24px 0 !important}
@media (max-width:640px){
  body.dash-v2 .dz-ph-actions{margin-left:0;width:100%}
  body.dash-v2 .dz-ph-actions button{flex:1}
}

/* ═══ v956 — Step B: reconciliation banner as a slim alert with a Review
   chip + session dismiss. Keeps display:block (loadReconAlerts toggles the
   inline display) — the chip and ✕ float right, no flex fight. ═══ */
body.dash-v2 #reconBanner{
  background:#fffbeb !important;border:1px solid #fcd34d !important;border-radius:12px !important;
  padding:10px 16px !important;margin:12px 24px 0 !important;overflow:hidden;
}
body.dash-v2 #reconBanner a{
  float:right;display:inline-block;background:#b45309;color:#fff !important;
  text-decoration:none !important;border-radius:6px;padding:4px 12px;
  font-size:11.5px;font-weight:650;margin-left:10px;
}
body.dash-v2 #reconBanner .dz-dismiss{
  float:right;border:none;background:none;color:#94a3b8;font-size:14px;cursor:pointer;
  padding:2px 6px;margin-left:6px;line-height:1;font-family:inherit;
}
body.dash-v2 #reconBanner .dz-dismiss:hover{color:#0f172a}

/* ═══ v959 — Step C: light shell. The dark topbar becomes a white app bar
   matching the approved preview. CSS-only: every control keeps its id and
   handler; !important is needed because the topbar children carry inline
   white-on-dark styles. ═══ */
body.dash-v2 .topbar{
  background:#fff !important;color:#0f172a;
  border-bottom:1px solid #e8eaee;box-shadow:none !important;
  padding:10px 24px;
}
/* Only the grouped nav stays sticky — the brand row scrolls away. Sidebar-nav
   mode keeps its sticky topbar (its sidebar is offset by --topbar-h). */
body.dash-v2:not(.nav-sidebar) .topbar{position:static}
body.dash-v2 #brandDivider{background:#e8eaee !important}
body.dash-v2 .topbar a > img, body.dash-v2 #topbarLogo{border:1px solid #eef1f5}

/* AI ask box → light rounded pill */
body.dash-v2 #aiSearchWrap{
  background:#f6f7f9 !important;border:1px solid #e8eaee !important;border-radius:999px !important;
}
body.dash-v2 #aiSearchWrap:hover, body.dash-v2 #aiSearchWrap:focus-within{
  background:#fff !important;border-color:#a5b4fc !important;box-shadow:0 0 0 3px rgba(99,102,241,.12) !important;
}
body.dash-v2 #aiSearchInput{color:#0f172a !important}
body.dash-v2 #aiSearchInput::placeholder{color:#94a3b8 !important}
body.dash-v2 #aiSearchWrap > span:last-child{ /* ⌘K chip */
  background:#eef1f5 !important;border:1px solid #e2e6eb !important;color:#64748b !important;
}

/* Right-side controls: ink on white */
body.dash-v2 .topbar-right > a{color:#475569 !important;opacity:1 !important}
body.dash-v2 .topbar-right > a:hover{color:#0f172a !important}
body.dash-v2 .topbar-user{color:#0f172a}
body.dash-v2 #navLayoutToggle{background:#fff !important;border:1px solid #e8eaee !important;color:#475569 !important}
body.dash-v2 #aiHelpBtn, body.dash-v2 #helpGuideBtn, body.dash-v2 #bellBtn{color:#475569 !important}
body.dash-v2 #syncIndicator{color:#94a3b8 !important;opacity:1 !important}
body.dash-v2 .btn-logout{border:1px solid #e8eaee;color:#475569}
body.dash-v2 .btn-logout:hover{background:#f6f7f9;border-color:#cbd5e1}

/* Role chip readable on white (body.dash-v2.role-X outranks body.role-X) */
body.dash-v2 .topbar-role{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}
body.dash-v2.role-admin .topbar-role{background:#fef2f2;color:#c2333b;border-color:#fecaca}
body.dash-v2.role-staff .topbar-role{background:#ecfeff;color:#0e7490;border-color:#a5f3fc}
body.dash-v2.role-broker .topbar-role{background:#fffbeb;color:#b45309;border-color:#fde68a}
body.dash-v2.role-viewer .topbar-role{background:#f1f5f9;color:#475569;border-color:#e2e8f0}
