/* ============================================================
   CCB Tesouraria — Design System
   ============================================================ */

:root {
  --navy-dark  : #0a1830;
  --navy       : #0c1f3d;
  --navy-mid   : #173a66;
  --navy-light : #1d4272;
  --gold       : #c9a24b;
  --gold-light : #e0c07f;
  --gold-dark  : #a9822f;
  --white      : #ffffff;
  --off-white  : #f8f9fb;
  --text-navy  : #0c1f3d;
  --text-gray  : #5b6472;
  --gray-text  : #8891a0;
  --dm-green   : #1ea672;
  --dm-green-bg: #e5f6ee;
  --dm-red     : #e2495f;
  --dm-red-bg  : #fdeaec;
  --dm-purple  : #6a5bd6;
  --dm-purple-bg: #ece9fb;
  --border     : #e2e5ec;
  --radius     : 14px;
  --shadow-sm  : 0 2px 8px rgba(0,0,0,.06);
  --shadow-md  : 0 6px 18px rgba(15,30,60,.08);
  --shadow-lg  : 0 16px 48px rgba(0,0,0,.18);
}

*,*::before,*::after { margin:0; padding:0; box-sizing:border-box; }
html, body {
  height:100%; width:100%; overflow:hidden;
  font-family:'Montserrat',sans-serif;
  background: linear-gradient(135deg,#0a1830 0%,#12294c 45%,#1b3a63 100%);
  display:flex; align-items:center; justify-content:center;
  height:100vh; height:100dvh; width:100vw;
}

/* ── APP CANVAS ─────────────────────────────────────────── */
.app {
  width:1536px; height:1024px; flex-shrink:0;
  position:relative; overflow:hidden; border-radius:0;
  transform-origin:center center; will-change:transform;
  display:flex; flex-direction:row;
}

/* ── VIEWS ──────────────────────────────────────────────── */
.view { position:absolute; inset:0; display:none; }
.view.active { display:flex; flex-direction:row; }

/* ================================================================
   SPLASH — sidebar + main panel (reference design)
   ================================================================ */
#view-splash {
  background: linear-gradient(155deg,#0c1f3d 0%,#112847 55%,#1b3a63 100%);
}

/* Splash sidebar */
#view-splash .sp-sidebar {
  width:216px; flex-shrink:0;
  display:flex; flex-direction:column; align-items:center;
  padding-top:56px; padding-bottom:32px; gap:4px;
  border-right:1px solid rgba(255,255,255,.06);
}
.sp-nav {
  display:flex; flex-direction:column; align-items:center;
  gap:10px; padding:10px 6px; width:calc(100% - 16px);
  margin:0 8px 4px; border-radius:12px;
  color:rgba(238,241,246,.85); cursor:pointer;
  transition:background .18s, color .18s;
}
.sp-nav.active { background:rgba(255,255,255,.08); color:var(--gold-light); }
.sp-nav:not(.active):hover { background:rgba(255,255,255,.05); color:var(--gold-light); }
.sp-nav .icon-wrap {
  width:52px; height:52px; border-radius:14px;
  display:flex; align-items:center; justify-content:center;
  transition:background .18s;
}
.sp-nav.active .icon-wrap { background:rgba(224,192,127,.14); }
.sp-nav:not(.active):hover .icon-wrap { background:rgba(224,192,127,.08); }
.sp-nav svg { width:30px; height:30px; }
.sp-nav.active svg { stroke:var(--gold-light); }
.sp-nav:not(.active) svg { stroke:#eef1f6; }
.sp-nav .nav-label {
  font-size:11px; font-weight:700; letter-spacing:.5px;
  text-align:center; line-height:1.3; text-transform:uppercase;
}
.sp-nav.active .nav-label { color:var(--gold-light); }

/* Splash main panel */
#view-splash .sp-main {
  flex:1; min-width:0;
  background: radial-gradient(ellipse at 75% 20%,rgba(255,255,255,.9) 0%,rgba(255,255,255,0) 55%),
              linear-gradient(180deg,#ffffff 0%,#fbfbfa 55%,#f4f5f7 100%);
  margin:14px; margin-left:0; border-radius:22px;
  position:relative; overflow:hidden;
  display:flex; flex-direction:column; align-items:center;
}
.sp-church-image {
  position:absolute; top:0; right:0; width:46%; height:78%;
  object-fit:cover; object-position:top left; opacity:.9;
  -webkit-mask-image:linear-gradient(to left,rgba(0,0,0,.9) 40%,rgba(0,0,0,0) 100%);
  mask-image:linear-gradient(to left,rgba(0,0,0,.9) 40%,rgba(0,0,0,0) 100%);
  pointer-events:none;
}
.sp-content {
  position:relative; z-index:2; width:100%; max-width:900px;
  display:flex; flex-direction:column; align-items:center;
  padding:52px 40px 36px;
}
.sp-emblem { display:flex; flex-direction:column; align-items:center; margin-bottom:26px; }
.sp-emblem-logo { width:380px; height:auto; max-width:100%; display:block; }
.sp-title { text-align:center; margin-bottom:18px; }
.sp-title h1 { color:var(--text-navy); font-weight:900; font-size:64px; letter-spacing:2px; line-height:1.05; }
.sp-title h3 { color:var(--text-navy); font-weight:800; font-size:33px; letter-spacing:.5px; margin-top:6px; }
.sp-badge {
  display:inline-block; margin-top:18px; background:var(--navy);
  color:var(--gold-light); font-weight:800; font-size:22px;
  letter-spacing:4px; padding:10px 40px; border-radius:8px; max-width:100%;
}
.sp-divider { display:flex; align-items:center; gap:14px; width:70%; margin:22px 0 18px; }
.sp-divider .line { flex:1; height:1px; background:linear-gradient(to right,transparent,var(--gold),transparent); }
.sp-divider .diamond { width:9px; height:9px; background:var(--gold); transform:rotate(45deg); flex-shrink:0; }
.sp-location {
  display:flex; align-items:center; flex-wrap:wrap; gap:8px;
  color:var(--text-navy); font-weight:700; font-size:18px;
  letter-spacing:.3px; text-align:center; justify-content:center;
}
.sp-location svg { width:18px; height:18px; fill:var(--navy); flex-shrink:0; }
.sp-exercise { color:var(--text-navy); font-weight:800; font-size:18px; letter-spacing:1px; margin-top:6px; text-align:center; }
.sp-cards { display:flex; flex-wrap:wrap; gap:22px; margin-top:34px; width:100%; justify-content:center; }
.sp-card {
  background:#ffffff; border:1px solid #e7e8ec; border-radius:16px;
  width:220px; flex:1 1 180px; max-width:220px;
  padding:26px 14px 20px; display:flex; flex-direction:column;
  align-items:center; box-shadow:0 8px 20px rgba(20,30,60,.06);
  cursor:pointer; transition:box-shadow .18s,border-color .18s,transform .18s;
}
.sp-card:hover { border-color:var(--gold); box-shadow:0 12px 26px rgba(20,30,60,.12); transform:translateY(-3px); }
.sp-card:hover .sp-card-icon { background:rgba(201,162,75,.16); }
.sp-card:hover .sp-card-icon svg, .sp-card:hover .sp-card-icon span { color:var(--gold-dark); }
.sp-card:hover h4 { color:var(--gold-dark); }
.sp-card-icon {
  width:66px; height:66px; border-radius:50%; background:#eceef2;
  display:flex; align-items:center; justify-content:center;
  margin-bottom:14px; transition:background .18s;
}
.sp-card-icon svg { width:28px; height:28px; color:var(--navy); }
.sp-card-icon span { font-size:26px; font-weight:700; color:var(--navy); }
.sp-card h4 { color:var(--text-navy); font-weight:800; font-size:15px; letter-spacing:.5px; margin-bottom:8px; text-align:center; transition:color .18s; }
.sp-card .rule { width:34px; height:2px; background:var(--gold); margin-bottom:8px; }
.sp-card p { color:var(--gray-text); font-size:10.5px; font-weight:700; letter-spacing:.6px; text-transform:uppercase; }

/* Splash footer */
.sp-footer { position:relative; z-index:3; width:100%; display:flex; flex-direction:column; align-items:center; padding:34px 40px; padding-top:40px; margin-top:auto; }
.sp-quote-row {
  display:flex; align-items:center; gap:10px; color:#eef1f6;
  font-size:14px; font-style:italic; margin-bottom:20px;
  flex-wrap:wrap; justify-content:center; text-align:center; max-width:100%;
}
.sp-quote-row svg { width:20px; height:20px; flex-shrink:0; color:var(--gold-light); }
.sp-quote-row span:not(.ref) { max-width:56ch; }
.sp-quote-row .ref { color:var(--gold-light); font-style:normal; font-weight:700; letter-spacing:.5px; font-size:13px; }
.sp-cta-btn {
  display:flex; align-items:center; justify-content:center; gap:10px;
  background:linear-gradient(135deg,var(--gold-light),var(--gold-dark));
  color:var(--navy); font-weight:800; font-size:16px; letter-spacing:1.5px;
  padding:16px 40px; border-radius:12px; border:none; cursor:pointer;
  width:min(520px,100%); max-width:100%;
  box-shadow:0 10px 24px rgba(180,140,50,.35);
  font-family:'Montserrat',sans-serif;
  transition:transform .18s, box-shadow .18s;
}
.sp-cta-btn:hover { transform:translateY(-2px); box-shadow:0 14px 32px rgba(180,140,50,.45); }
.sp-footer-bg { position:absolute; bottom:0; left:0; width:100%; height:220px; background:linear-gradient(180deg,transparent 0%,var(--navy) 70%); z-index:1; }

/* ================================================================
   DASHBOARD — sidebar + main panel
   ================================================================ */
#view-dashboard { background:#eef2f7; }

/* Dashboard sidebar */
.sidebar {
  width:132px; flex-shrink:0; background:var(--navy);
  display:flex; flex-direction:column; align-items:center;
  padding:28px 0 18px; z-index:10;
}
.sidebar-logo-wrap { margin-bottom:20px; }
.sidebar-logo-wrap img { width:48px; height:auto; filter:brightness(0) invert(1); display:block; }
.sidebar-nav { flex:1; display:flex; flex-direction:column; align-items:center; gap:4px; padding:4px 6px; width:100%; }
.nav-item {
  display:flex; flex-direction:column; align-items:center;
  gap:8px; padding:10px 6px; width:calc(100% - 12px);
  margin:0 6px 3px; border-radius:12px;
  color:rgba(207,216,230,.9); cursor:pointer;
  transition:background .18s,color .18s; border:none; background:none;
  font-family:'Montserrat',sans-serif;
}
.nav-item.active { background:rgba(255,255,255,.08); color:var(--gold-light); }
.nav-item:not(.active):hover { background:rgba(255,255,255,.05); color:var(--gold-light); }
.nav-item svg { width:22px; height:22px; }
.nav-item.active svg { stroke:var(--gold-light); }
.nav-item:not(.active) svg { stroke:rgba(207,216,230,.9); }
.nav-item span { font-size:9.5px; font-weight:700; letter-spacing:.4px; text-transform:uppercase; text-align:center; line-height:1.3; }
.nav-item.active span { color:var(--gold-light); }
.nav-item:not(.active) span { color:rgba(207,216,230,.9); }
.nav-divider { width:60%; height:1px; background:rgba(255,255,255,.08); margin:8px 0; }
.sidebar-bottom { margin-top:auto; padding:12px 6px 0; display:flex; flex-direction:column; align-items:center; }

/* Main panel */
.main-panel { flex:1; min-width:0; display:flex; flex-direction:column; overflow:hidden; }
.main-header {
  background:linear-gradient(135deg,var(--navy),var(--navy-mid));
  padding:14px 28px; display:flex; align-items:center;
  justify-content:space-between; flex-shrink:0;
  border-bottom:1px solid rgba(255,255,255,.08);
}
.header-logo { width:48px; height:auto; filter:brightness(0) invert(1); flex-shrink:0; margin-right:16px; }
.header-left { flex:1; min-width:0; }
.header-left h1 { font-size:20px; font-weight:800; color:#fff; letter-spacing:.2px; }
.header-left p  { font-size:12px; font-weight:600; color:rgba(207,216,230,.8); margin-top:2px; }
.header-right { display:flex; align-items:center; gap:12px; }
.header-date { text-align:right; }
.header-date .date-val { font-size:13px; font-weight:700; color:#fff; }
.header-date .date-sub { font-size:10px; color:var(--gold-light); font-weight:600; }
.btn-import-header {
  background:linear-gradient(135deg,var(--gold-light),var(--gold-dark));
  border:none; border-radius:8px; padding:8px 16px; cursor:pointer;
  font-family:'Montserrat',sans-serif; font-size:11px; font-weight:700;
  letter-spacing:.8px; text-transform:uppercase; color:var(--navy);
  display:flex; align-items:center; gap:7px; transition:all .18s;
}
.btn-import-header:hover { transform:translateY(-1px); box-shadow:0 4px 12px rgba(201,162,75,.35); }
.btn-import-header svg { width:14px; height:14px; stroke:var(--navy); }

/* Pages wrapper */
.pages-wrapper { flex:1; overflow:hidden; position:relative; background:linear-gradient(180deg,#f6f8fb 0%,#eef2f7 100%); }
.page { position:absolute; inset:0; display:none; overflow-y:auto; padding:20px 24px; flex-direction:column; gap:16px; }
.page.active { display:flex; }

/* ── FILTER BAR ─────────────────────────────────────────── */
.filter-bar { background:var(--white); border-radius:12px; padding:14px 18px; box-shadow:var(--shadow-sm); border:1px solid var(--border); flex-shrink:0; }
.filter-bar-row { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.filter-label { font-size:11px; font-weight:800; color:var(--text-navy); letter-spacing:.5px; text-transform:uppercase; white-space:nowrap; margin-right:2px; }
.filter-btn { border:1.5px solid var(--border); background:var(--white); border-radius:8px; padding:7px 14px; font-family:'Montserrat',sans-serif; font-size:11px; font-weight:600; color:var(--text-navy); cursor:pointer; transition:all .15s; white-space:nowrap; }
.filter-btn:hover { border-color:var(--navy); background:var(--off-white); }
.filter-btn.active { background:var(--navy); color:var(--white); border-color:var(--navy); }
.filter-sep { width:1px; height:24px; background:var(--border); margin:0 4px; flex-shrink:0; }
/* Select for setor */
.filter-select {
  border:1.5px solid var(--border); border-radius:8px; padding:7px 30px 7px 12px;
  font-family:'Montserrat',sans-serif; font-size:11px; font-weight:600;
  color:var(--text-navy); background:var(--white);
  cursor:pointer; outline:none; appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 24 24' fill='none' stroke='%230c1f3d' stroke-width='2.4' xmlns='http://www.w3.org/2000/svg'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");
  background-repeat:no-repeat; background-position:right 8px center; background-size:14px;
  min-width:180px; transition:border .15s;
}
.filter-select:focus { border-color:var(--navy); }

/* ── KPI CARDS ──────────────────────────────────────────── */
.kpi-row { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; flex-shrink:0; }
.kpi-card { background:var(--white); border-radius:12px; padding:16px 20px; box-shadow:var(--shadow-sm); border:1px solid var(--border); display:flex; align-items:center; gap:14px; position:relative; overflow:hidden; }
.kpi-card::after { content:""; position:absolute; left:0; right:0; bottom:0; height:3px; }
.kpi-card.green::after { background:var(--dm-green); }
.kpi-card.red::after   { background:var(--dm-red); }
.kpi-card.purple::after { background:var(--dm-purple); }
.kpi-icon { width:38px; height:38px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.kpi-icon.green { background:var(--dm-green-bg); color:var(--dm-green); }
.kpi-icon.red   { background:var(--dm-red-bg);   color:var(--dm-red); }
.kpi-icon.purple{ background:var(--dm-purple-bg); color:var(--dm-purple); }
.kpi-icon svg { width:20px; height:20px; }
.kpi-label { font-size:10.5px; font-weight:800; letter-spacing:.4px; color:#8891a0; margin-bottom:2px; }
.kpi-val   { font-size:20px; font-weight:800; color:var(--text-navy); }

/* ── CONTENT GRID ───────────────────────────────────────── */
.content-grid { display:grid; grid-template-columns:1fr 270px; gap:14px; flex:1; min-height:0; }
.content-card { background:var(--white); border-radius:14px; box-shadow:var(--shadow-sm); border:1px solid var(--border); display:flex; flex-direction:column; overflow:hidden; }
.card-header { padding:14px 18px; border-bottom:1px solid var(--border); display:flex; align-items:center; gap:10px; flex-shrink:0; }
.card-header-icon { width:28px; height:28px; border-radius:8px; background:#eef2f7; display:flex; align-items:center; justify-content:center; color:var(--navy); }
.card-header-icon svg { width:14px; height:14px; }
.card-title { font-size:13px; font-weight:800; color:var(--text-navy); letter-spacing:.3px; text-transform:uppercase; }
.card-body { flex:1; overflow-y:auto; }

/* ── TABLE ──────────────────────────────────────────────── */
.dm-table { width:100%; border-collapse:collapse; font-size:13px; }
.dm-table thead th { background:var(--navy); color:#fff; text-align:left; font-size:11.5px; letter-spacing:.4px; padding:11px 14px; }
.dm-table thead th:first-child { border-radius:8px 0 0 8px; }
.dm-table thead th:last-child  { border-radius:0 8px 8px 0; }
.dm-table tbody td { padding:12px 14px; color:var(--text-navy); font-weight:600; border-bottom:1px solid #f2f4f8; }
.dm-table tbody tr:hover { background:#f6f8fb; }
.dm-table.red thead th { background:var(--dm-red); }
.dm-row-name { display:flex; align-items:center; gap:10px; }
.dm-row-name .house { width:22px; height:22px; border-radius:6px; background:#eef2f7; display:flex; align-items:center; justify-content:center; color:var(--navy); flex-shrink:0; }

/* Expandable table rows */
.row-setor td { background:#f6f8fb; font-weight:700; }
.row-centro.hidden { display:none; }
.row-total td { background:var(--navy); color:var(--white) !important; border-top:2px solid var(--navy-mid); font-weight:700; }
.row-total .val-c { color:var(--gold-light) !important; }
.cell-sub { padding-left:36px !important; color:var(--text-gray) !important; font-size:11px !important; font-weight:600 !important; }
.empty-cell { text-align:center; padding:32px; color:var(--text-gray); font-size:12px; }
.expand-btn { background:none; border:1.5px solid var(--border); border-radius:6px; cursor:pointer; width:22px; height:22px; display:inline-flex; align-items:center; justify-content:center; margin-right:8px; transition:all .15s; color:var(--text-gray); flex-shrink:0; }
.expand-btn:hover { border-color:var(--navy); color:var(--navy); }
.expand-btn.open svg { transform:rotate(180deg); }
.expand-btn svg { transition:transform .2s; width:10px; height:10px; }

/* Chart panel */
.chart-panel { display:flex; flex-direction:column; gap:14px; }
.chart-card { background:var(--white); border-radius:14px; box-shadow:var(--shadow-sm); border:1px solid var(--border); padding:18px; }
.chart-card-title { font-size:11px; font-weight:800; letter-spacing:.8px; text-transform:uppercase; color:var(--text-navy); margin-bottom:14px; display:flex; align-items:center; gap:8px; }
.chart-card-title::before { content:''; width:4px; height:14px; background:var(--gold); border-radius:2px; flex-shrink:0; }
.dm-donut { width:100px; height:100px; border-radius:50%; background:conic-gradient(#e5e8ee 0deg 360deg); display:flex; align-items:center; justify-content:center; position:relative; margin:0 auto 10px; }
.dm-donut::before { content:""; position:absolute; inset:14px; background:#fff; border-radius:50%; }
.dm-donut-canvas-wrap { position:relative; width:130px; height:130px; margin:0 auto 8px; }
.dm-donut-canvas-wrap canvas { width:130px !important; height:130px !important; }
.dm-donut-label { position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; }
.dm-donut-pct  { font-size:20px; font-weight:800; color:var(--text-navy); line-height:1; }
.dm-donut-sub  { font-size:9px; font-weight:600; color:var(--text-gray); letter-spacing:.5px; text-transform:uppercase; margin-top:2px; text-align:center; }
.desp-item { display:flex; justify-content:space-between; align-items:center; padding:8px 0; border-bottom:1px solid #f2f4f8; font-size:12px; }
.desp-item:last-child { border:none; font-weight:700; color:var(--text-navy); }
.desp-item span:first-child { color:var(--text-gray); }

/* ── DM FOOTER (quote bar) ──────────────────────────────── */
.dm-footer {
  padding:12px 24px 16px; display:flex; align-items:center;
  justify-content:center; gap:10px; color:var(--text-navy);
  font-size:12px; font-style:italic; flex-wrap:wrap; text-align:center;
  flex-shrink:0;
}
.dm-footer svg { width:15px; height:15px; color:var(--gold-dark); flex-shrink:0; stroke:var(--gold-dark); fill:none; }
.dm-footer .ref { font-style:normal; font-weight:800; color:var(--gold-dark); font-size:11px; }

/* ================================================================
   OFERTAS E DEDUÇÕES — dm-od-* classes
   ================================================================ */
.dm-od-page-header {
  background:#fff; padding:24px 28px 20px; border-bottom:1px solid #eef1f6;
  flex-shrink:0;
}
.dm-od-page-header h2 { font-size:22px; font-weight:800; color:var(--text-navy); letter-spacing:.3px; }
.dm-od-actions { display:flex; gap:12px; flex-wrap:wrap; margin-bottom:0; }
.dm-od-btn-outline {
  background:#fff; color:var(--text-navy); border:1px solid var(--border);
  border-radius:10px; padding:11px 20px; font-size:12.5px; font-weight:800;
  letter-spacing:.2px; display:flex; align-items:center; gap:8px; cursor:pointer;
  font-family:'Montserrat',sans-serif; transition:all .15s;
}
.dm-od-btn-outline:hover { background:var(--navy); color:#fff; border-color:var(--navy); }
.dm-od-btn-outline:hover svg { stroke:#fff; }
.dm-od-btn-outline svg { width:14px; height:14px; stroke:var(--navy); transition:stroke .15s; }
.dm-co-btn {
  background:var(--navy); color:#fff; border:none; border-radius:10px;
  padding:11px 20px; font-size:12.5px; font-weight:800; letter-spacing:.2px;
  display:flex; align-items:center; gap:8px; cursor:pointer;
  font-family:'Montserrat',sans-serif; transition:all .15s;
}
.dm-co-btn:hover { background:var(--navy-mid); }
.dm-co-btn svg { width:14px; height:14px; }
.dm-od-columns { display:flex; gap:16px; flex:1; min-height:0; }
.dm-od-card {
  flex:1; min-width:0; background:#fff; border-radius:14px;
  padding:20px; box-shadow:0 6px 18px rgba(15,30,60,.05);
  display:flex; flex-direction:column; gap:14px; overflow:hidden;
}
.dm-od-card-header { display:flex; align-items:center; gap:12px; flex-shrink:0; }
.dm-od-icon-circle { width:42px; height:42px; border-radius:50%; display:flex; align-items:center; justify-content:center; color:#fff; flex-shrink:0; }
.dm-od-icon-circle.navy { background:var(--navy); }
.dm-od-icon-circle.red  { background:var(--dm-red); }
.dm-od-card-header h3 { font-size:16px; font-weight:800; letter-spacing:.4px; color:var(--text-navy); }
.dm-od-table-wrap { flex:1; overflow-y:auto; min-height:0; }
.dm-od-total {
  display:flex; align-items:center; gap:12px;
  background:#f8f9fb; border:1px solid #eef1f6; border-radius:12px; padding:14px 18px;
  flex-shrink:0;
}
.dm-od-total-icon { width:38px; height:38px; border-radius:10px; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.dm-od-total-icon.navy { background:#e7edf6; color:var(--navy); }
.dm-od-total-icon.red  { background:var(--dm-red-bg); color:var(--dm-red); }
.dm-od-total span { font-size:12.5px; font-weight:800; letter-spacing:.3px; color:var(--text-navy); }
.dm-od-total strong { margin-left:auto; font-size:19px; font-weight:800; color:var(--text-navy); }
.dm-od-total.red strong { color:var(--dm-red); }

/* ================================================================
   REPARTIÇÃO — dm-rep-* classes
   ================================================================ */
.dm-rep-header { text-align:center; background:#fff; padding:22px 28px 18px; border-bottom:1px solid #eef1f6; flex-shrink:0; }
.dm-rep-header h2 { font-size:32px; font-weight:800; letter-spacing:.4px; color:var(--text-navy); }
.dm-rep-underline { width:70px; height:3px; background:var(--gold); margin:10px auto 0; border-radius:2px; }
.dm-rep-flow { display:flex; gap:40px; align-items:flex-start; padding:0 0 16px 0; flex-shrink:0; }
.dm-rep-branch { flex:1; min-width:0; display:flex; flex-direction:column; align-items:center; }
.dm-rep-node {
  background:#fff; border:1px solid #eef0f6; border-radius:14px;
  box-shadow:0 8px 20px rgba(15,30,60,.06); padding:14px 18px;
  display:flex; align-items:center; gap:12px; width:100%;
}
.dm-rep-node.total { max-width:360px; padding:16px 24px; box-shadow:0 10px 24px rgba(15,30,60,.1); }
.dm-rep-icon { width:46px; height:46px; border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.dm-rep-icon svg { width:20px; height:20px; }
.dm-rep-icon.gold { background:#fbeed9; color:var(--gold-dark); }
.dm-rep-icon.navy { background:#e7edf6; color:var(--navy); }
.dm-rep-icon.total-icon { width:50px; height:50px; }
.dm-rep-node strong { display:block; font-size:13.5px; font-weight:800; letter-spacing:.2px; color:var(--text-navy); }
.dm-rep-value { display:block; font-size:13.5px; font-weight:700; color:var(--gold-dark); margin-top:2px; }
.dm-rep-value.total { font-size:24px; color:var(--dm-green); }
/* Vertical connector with arrow */
.dm-rep-connector { width:2px; height:30px; background:var(--navy); opacity:.55; position:relative; flex-shrink:0; align-self:center; }
.dm-rep-connector::after { content:""; position:absolute; left:50%; bottom:-1px; transform:translateX(-50%); width:0; height:0; border-left:5px solid transparent; border-right:5px solid transparent; border-top:7px solid var(--navy); opacity:.85; }
.dm-rep-connector.right { align-self:flex-end; margin-right:15%; }
.dm-rep-connector.left  { align-self:flex-start; margin-left:15%; }
/* Horizontal pair with arrow */
.dm-rep-pair { display:flex; align-items:center; gap:14px; width:100%; }
.dm-rep-hop { width:24px; height:2px; background:var(--navy); opacity:.7; position:relative; flex-shrink:0; }
.dm-rep-hop::after { content:""; position:absolute; right:-1px; top:50%; transform:translateY(-50%); width:0; height:0; border-top:5px solid transparent; border-bottom:5px solid transparent; border-left:7px solid var(--navy); }
/* Fork/branch (one → two) */
.dm-rep-tree { position:relative; width:100%; height:32px; flex-shrink:0; }
.dm-rep-tree .t-stem { position:absolute; top:0; left:50%; width:2px; height:14px; background:var(--navy); opacity:.55; transform:translateX(-50%); }
.dm-rep-tree .t-bar  { position:absolute; top:14px; left:22%; right:22%; height:2px; background:var(--navy); opacity:.55; }
.dm-rep-tree .t-down { position:absolute; top:14px; width:2px; height:18px; background:var(--navy); opacity:.55; transform:translateX(-50%); }
.dm-rep-tree .t-down::after { content:""; position:absolute; left:50%; bottom:-1px; transform:translateX(-50%); width:0; height:0; border-left:5px solid transparent; border-right:5px solid transparent; border-top:7px solid var(--navy); opacity:.85; }
.dm-rep-tree .t-down.left  { left:22%; }
.dm-rep-tree .t-down.right { left:78%; }
/* Merge (two → one) */
.dm-rep-tree.merge .t-up { position:absolute; bottom:14px; width:2px; height:18px; background:var(--navy); opacity:.55; transform:translateX(-50%); }
.dm-rep-tree.merge .t-up.left  { left:22%; }
.dm-rep-tree.merge .t-up.right { left:78%; }
.dm-rep-tree.merge .t-bar  { top:auto; bottom:14px; }
.dm-rep-tree.merge .t-stem { top:auto; bottom:0; height:14px; }
.dm-rep-tree.merge .t-stem::after { content:""; position:absolute; left:50%; bottom:-1px; transform:translateX(-50%); width:0; height:0; border-left:5px solid transparent; border-right:5px solid transparent; border-top:7px solid var(--navy); opacity:.85; }
/* Final merge (two branches → total) */
.dm-rep-total-wrap { display:flex; flex-direction:column; align-items:center; width:100%; flex-shrink:0; }
.dm-rep-merge-final { position:relative; width:100%; height:32px; }
.dm-rep-merge-final .m-up { position:absolute; bottom:14px; width:2px; height:18px; background:var(--navy); opacity:.55; }
.dm-rep-merge-final .m-up.left  { left:22%; transform:translateX(-50%); }
.dm-rep-merge-final .m-up.right { left:78%; transform:translateX(-50%); }
.dm-rep-merge-final .m-bar  { position:absolute; bottom:14px; left:22%; right:22%; height:2px; background:var(--navy); opacity:.55; }
.dm-rep-merge-final .m-stem { position:absolute; bottom:0; left:50%; width:2px; height:14px; background:var(--navy); opacity:.55; transform:translateX(-50%); }
.dm-rep-merge-final .m-stem::after { content:""; position:absolute; left:50%; bottom:-1px; transform:translateX(-50%); width:0; height:0; border-left:5px solid transparent; border-right:5px solid transparent; border-top:7px solid var(--navy); opacity:.85; }
/* Info box */
.dm-rep-info { background:#fff; border-radius:14px; padding:18px 22px; box-shadow:0 8px 20px rgba(15,30,60,.06); display:flex; align-items:center; gap:20px; flex-shrink:0; }
.dm-rep-info-col { display:flex; align-items:flex-start; gap:12px; flex:1; min-width:0; }
.dm-rep-info-icon { width:40px; height:40px; border-radius:50%; display:flex; align-items:center; justify-content:center; flex-shrink:0; }
.dm-rep-info-icon.blue { background:#e7f0fb; color:#2f6fb0; }
.dm-rep-info-icon.gold { background:#fbeed9; color:var(--gold-dark); }
.dm-rep-info-icon svg { width:18px; height:18px; }
.dm-rep-info-col h4 { font-size:12px; font-weight:800; letter-spacing:.3px; color:var(--text-navy); margin-bottom:4px; }
.dm-rep-info-col p  { font-size:12px; color:#5b6472; font-weight:600; line-height:1.5; }
.dm-rep-info-note   { font-size:12px; font-weight:700; color:var(--text-navy); align-self:center; }
.dm-rep-info-divider { width:1px; align-self:stretch; background:#e5e8ee; }
/* Rep footer */
.dm-rep-footer { padding:12px 24px 16px; display:flex; align-items:center; justify-content:center; gap:10px; color:var(--text-navy); font-size:11px; font-style:italic; flex-wrap:wrap; text-align:center; flex-shrink:0; }
.dm-rep-footer svg { width:15px; height:15px; color:var(--gold-dark); stroke:var(--gold-dark); fill:none; flex-shrink:0; }
.dm-rep-footer .ref { font-style:normal; font-weight:800; color:var(--gold-dark); }
.dm-rep-footer .sep { color:#c7cede; font-style:normal; }
/* KPI row for reparticao bottom */
.reprt-kpis { display:grid; grid-template-columns:repeat(3,1fr); gap:14px; flex-shrink:0; }
.reprt-kpi { background:#fff; border-radius:12px; box-shadow:var(--shadow-sm); border:1px solid var(--border); padding:16px 20px; text-align:center; }
.reprt-kpi-label { font-size:10px; font-weight:700; letter-spacing:.8px; text-transform:uppercase; color:var(--text-gray); margin-bottom:8px; }
.reprt-kpi-val   { font-size:24px; font-weight:900; color:var(--navy); }
.reprt-kpi:nth-child(1) .reprt-kpi-val { color:#2f6fb0; }
.reprt-kpi:nth-child(2) .reprt-kpi-val { color:var(--dm-green); }
.reprt-kpi:nth-child(3) .reprt-kpi-val { color:var(--gold-dark); }

/* ================================================================
   CASAS DE ORAÇÃO MODAL
   ================================================================ */
.modal-overlay { position:absolute; inset:0; background:rgba(6,14,28,.6); z-index:1000; align-items:center; justify-content:center; padding:24px; display:none; }
.modal-overlay.open { display:flex; }
.dashboard-modal, .modal-box {
  width:min(900px,100%); height:min(920px,100%);
  background:#fff; border-radius:18px; overflow:hidden;
  display:flex; flex-direction:column; box-shadow:0 40px 90px rgba(0,0,0,.4);
}
.modal-header { background:linear-gradient(135deg,var(--navy),var(--navy-mid)); padding:18px 24px; display:flex; align-items:center; justify-content:space-between; flex-shrink:0; }
.modal-header h2 { font-size:18px; font-weight:800; color:#fff; letter-spacing:-.2px; }
.modal-header p  { font-size:11px; color:rgba(255,255,255,.55); margin-top:2px; }
.modal-close { background:none; border:none; cursor:pointer; padding:6px; display:flex; align-items:center; }
.modal-close svg { width:18px; height:18px; stroke:rgba(255,255,255,.7); transition:stroke .15s; }
.modal-close:hover svg { stroke:#fff; }
.modal-body { flex:1; overflow-y:auto; padding:24px; display:flex; flex-direction:column; gap:20px; }
.modal-section { background:var(--off-white); border-radius:12px; padding:18px; border:1px solid var(--border); }
.modal-section-title { font-size:11px; font-weight:800; letter-spacing:.8px; text-transform:uppercase; color:var(--text-navy); margin-bottom:12px; }
.form-row { display:flex; gap:10px; align-items:flex-end; }
.form-field { display:flex; flex-direction:column; gap:5px; flex:1; }
.form-field label { font-size:10px; font-weight:700; color:var(--text-gray); letter-spacing:.5px; text-transform:uppercase; }
.form-field input, .form-field select, .dm-co-input, .dm-co-select {
  border:1.5px solid var(--border); border-radius:8px; padding:9px 12px;
  font-family:'Montserrat',sans-serif; font-size:12px; color:var(--text-navy);
  background:var(--white); transition:border .15s; outline:none;
}
.form-field input:focus, .form-field select:focus { border-color:var(--navy); }
.dm-co-select { display:flex; align-items:center; cursor:pointer; }
.dm-co-select svg { margin-left:auto; width:13px; height:13px; color:var(--text-gray); }
.btn-primary, .btn-secondary {
  font-family:'Montserrat',sans-serif; font-size:11px; font-weight:700;
  letter-spacing:.5px; text-transform:uppercase; border:none; border-radius:8px;
  padding:10px 18px; cursor:pointer; transition:all .15s; white-space:nowrap;
}
.btn-primary   { background:var(--navy); color:#fff; }
.btn-primary:hover { background:var(--navy-mid); transform:translateY(-1px); }
.btn-secondary { background:var(--off-white); color:var(--text-navy); border:1.5px solid var(--border); }
.btn-secondary:hover { background:var(--border); }
.casas-table-wrap { overflow-y:auto; max-height:200px; border-radius:8px; border:1px solid var(--border); }
.casas-table { width:100%; border-collapse:collapse; }
.casas-table thead th { background:var(--navy); color:#fff; font-size:11px; font-weight:700; text-transform:uppercase; letter-spacing:.5px; padding:10px 14px; position:sticky; top:0; }
.casas-table tbody td { padding:10px 14px; font-size:12px; border-bottom:1px solid #f0f2f7; }
.casas-table tbody tr:hover { background:#f8f9fc; }
.church-icon { margin-right:6px; }
.setor-cell { color:#2f6fb0; font-weight:600; }
.search-bar { display:flex; gap:10px; align-items:center; }
.search-bar input { flex:1; border:1.5px solid var(--border); border-radius:8px; padding:9px 12px; font-family:'Montserrat',sans-serif; font-size:12px; color:var(--text-navy); outline:none; transition:border .15s; }
.search-bar input:focus { border-color:var(--navy); }

/* ── IMPORT MODAL ─────────────────────────────────────── */
#modal-import .modal-box { width:640px; height:auto; max-height:88%; }
.import-step { display:none; }
.import-step.active { display:block; }
.import-step-title { font-size:15px; font-weight:800; color:var(--text-navy); margin-bottom:6px; }
.import-step-desc  { font-size:12px; color:var(--text-gray); margin-bottom:16px; }
.import-dropzone { border:2px dashed var(--border); border-radius:12px; padding:28px; text-align:center; cursor:pointer; transition:all .2s; margin-bottom:14px; }
.import-dropzone:hover { border-color:var(--navy); background:var(--off-white); }
.import-dropzone svg { width:44px; height:44px; stroke:var(--text-gray); margin-bottom:10px; }
.import-dropzone p { font-size:13px; color:var(--text-gray); }
.import-filename { font-size:12px; color:var(--dm-green); font-weight:600; background:var(--dm-green-bg); padding:8px 14px; border-radius:8px; margin-bottom:14px; display:flex; align-items:center; gap:8px; }
.sheet-group-label { font-size:10px; font-weight:800; color:var(--text-gray); letter-spacing:1px; text-transform:uppercase; margin:12px 0 5px; }
.sheet-check-wrap { display:flex; align-items:center; gap:8px; padding:7px 12px; border-radius:8px; border:1.5px solid var(--border); cursor:pointer; margin-bottom:5px; font-size:12px; font-weight:600; color:var(--text-navy); transition:all .15s; }
.sheet-check-wrap:hover { border-color:var(--navy); background:var(--off-white); }
.sheet-check-wrap input { accent-color:var(--navy); width:14px; height:14px; cursor:pointer; }
.import-warn { font-size:11px; color:var(--text-gray); margin-top:8px; padding:8px 12px; background:#fffbf0; border:1px solid #f0e0a0; border-radius:8px; }
.year-row { display:flex; align-items:center; gap:12px; margin-bottom:14px; background:var(--off-white); border-radius:8px; padding:10px 14px; }
.year-row label { font-size:11px; font-weight:700; color:var(--text-navy); letter-spacing:.5px; text-transform:uppercase; white-space:nowrap; }
.year-row input { border:1.5px solid var(--border); border-radius:8px; padding:6px 12px; font-family:'Montserrat',sans-serif; font-size:14px; font-weight:700; color:var(--text-navy); width:90px; outline:none; }
.import-progress { text-align:center; padding:16px 0; }
.import-progress-msg { font-size:14px; font-weight:700; color:var(--text-navy); margin-bottom:14px; }
.import-summary-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:10px; margin-top:14px; }
.import-summary-grid > div { background:var(--off-white); border-radius:10px; padding:12px; text-align:center; border:1px solid var(--border); }
.import-summary-grid span { display:block; font-size:22px; font-weight:800; color:var(--navy); }
.import-summary-grid small { font-size:9px; color:var(--text-gray); font-weight:600; text-transform:uppercase; letter-spacing:.5px; margin-top:3px; display:block; }
.modal-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:18px; }
.conflict-item { background:var(--off-white); border:1px solid var(--border); border-radius:10px; padding:12px 14px; margin-bottom:8px; font-size:12px; }
.conflict-item strong { display:block; margin-bottom:6px; color:var(--text-navy); }
.conflict-item span { color:var(--dm-red); margin-bottom:8px; display:block; }
.conflict-item label { display:block; margin-top:6px; cursor:pointer; }
.conflict-item label input { margin-right:6px; }
#import-conflict-box.hidden { display:none; }
.form-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:12px; margin-bottom:14px; }
.form-grid label { display:flex; flex-direction:column; gap:5px; font-size:10px; font-weight:700; color:var(--text-gray); letter-spacing:.5px; text-transform:uppercase; }
.form-grid input { border:1.5px solid var(--border); border-radius:8px; padding:9px 12px; font-family:'Montserrat',sans-serif; font-size:13px; color:var(--text-navy); outline:none; transition:border .15s; }
.form-grid input:focus { border-color:var(--navy); }
#modal-edit-overlay .modal-box { width:520px; height:auto; }

/* ── TOAST ───────────────────────────────────────────────── */
#toast-container { position:fixed; bottom:24px; right:24px; z-index:9999; display:flex; flex-direction:column; gap:10px; }
.toast { background:var(--navy); color:#fff; border-radius:10px; padding:12px 18px; font-family:'Montserrat',sans-serif; font-size:12px; font-weight:600; box-shadow:var(--shadow-md); opacity:0; transform:translateX(120%); transition:all .35s cubic-bezier(.34,1.56,.64,1); max-width:360px; border-left:4px solid var(--gold); }
.toast.show { opacity:1; transform:translateX(0); }
.toast.toast-error { background:#8b1a1a; border-left-color:var(--dm-red); }
.toast.toast-warn  { border-left-color:var(--gold); }

/* Scrollbar */
::-webkit-scrollbar { width:5px; height:5px; }
::-webkit-scrollbar-track { background:transparent; }
::-webkit-scrollbar-thumb { background:rgba(0,0,0,.14); border-radius:3px; }
