/* ============================================================================
   Banking Mitra — Premium Fintech Dashboard (v2)
   Evolves the existing navy + orange identity. Scoped under .bmx-dash so it
   never affects other pages. All data is server-rendered (dashboard-data.php).
   ============================================================================ */
.bmx-dash{
  --navy:#0B2A6F; --navy-2:#0a2358; --navy-ink:#08204f;
  --orange:#FF7A00; --orange-2:#ff9a3d;
  --bg:#eef3fb; --card:#ffffff; --ink:#0f1b33; --muted:#6b7793;
  --line:#e6ecf6; --line-2:#eef2f9;
  --ok:#1a7f37; --warn:#b7791f; --danger:#d64545; --info:#2b6cb0;
  --r:18px; --r-sm:12px;
  --sh:0 1px 2px rgba(11,42,111,.04), 0 8px 24px rgba(11,42,111,.06);
  --sh-hi:0 6px 14px rgba(11,42,111,.10), 0 18px 42px rgba(11,42,111,.12);
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  color:var(--ink); background:var(--bg);
  padding:20px; max-width:1560px; margin:0 auto;
}
.bmx-dash *{box-sizing:border-box}

/* motion */
@keyframes bmx-rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.bmx-dash .bmx-anim{opacity:0;animation:bmx-rise .55s cubic-bezier(.2,.7,.3,1) forwards}
@media (prefers-reduced-motion:reduce){
  .bmx-dash .bmx-anim{animation:none;opacity:1;transform:none}
  .bmx-dash *{transition:none!important}
}

/* header */
.bmx-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:20px}
.bmx-head h1{font-size:29px;line-height:1.1;margin:0;letter-spacing:-.5px}
.bmx-head p{margin:6px 0 0;color:var(--muted);font-size:14px}
.bmx-head .bmx-when{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--muted)}
.bmx-refresh{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--line);border-radius:10px;padding:8px 13px;color:var(--navy);font-weight:600;font-size:13px;cursor:pointer;text-decoration:none;box-shadow:var(--sh);transition:.2s}
.bmx-refresh:hover{box-shadow:var(--sh-hi);transform:translateY(-1px)}

/* section titles */
.bmx-sec-t{display:flex;align-items:center;justify-content:space-between;margin:26px 2px 12px}
.bmx-sec-t h2{font-size:15px;letter-spacing:.4px;text-transform:uppercase;color:var(--navy);margin:0;font-weight:800}
.bmx-sec-t a{font-size:12.5px;color:var(--muted);text-decoration:none;font-weight:600}
.bmx-sec-t a:hover{color:var(--orange)}

/* generic card */
.bmx-card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);box-shadow:var(--sh);position:relative;overflow:hidden}
.bmx-card:hover{box-shadow:var(--sh-hi)}

/* quick actions */
.bmx-quick{display:grid;grid-template-columns:repeat(auto-fill,minmax(104px,1fr));gap:12px;margin-bottom:6px}
.bmx-qa{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;padding:16px 8px;background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);text-decoration:none;color:var(--ink);font-size:12.5px;font-weight:600;transition:.2s;box-shadow:var(--sh)}
.bmx-qa .ic{width:42px;height:42px;border-radius:12px;display:grid;place-items:center;background:linear-gradient(135deg,#eef2fb,#e2e9f8);color:var(--navy);transition:.2s}
.bmx-qa:hover{transform:translateY(-3px);box-shadow:var(--sh-hi);border-color:#d6e0f2}
.bmx-qa:hover .ic{background:linear-gradient(135deg,var(--navy),var(--navy-2));color:#fff}
.bmx-qa .material-symbols-outlined{font-size:23px}

/* KPI grids */
.bmx-grid{display:grid;gap:14px}
.bmx-g4{grid-template-columns:repeat(4,1fr)}
.bmx-g3{grid-template-columns:repeat(3,1fr)}
.bmx-g2{grid-template-columns:repeat(2,1fr)}

/* balance cards */
.bmx-bal{padding:18px}
.bmx-bal .row{display:flex;align-items:center;gap:13px}
.bmx-bal .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;color:#fff;flex:none;box-shadow:0 6px 14px rgba(11,42,111,.18)}
.bmx-bal .ic.navy{background:linear-gradient(135deg,var(--navy),var(--navy-2))}
.bmx-bal .ic.orange{background:linear-gradient(135deg,var(--orange),var(--orange-2));box-shadow:0 6px 14px rgba(255,122,0,.22)}
.bmx-bal .lbl{font-size:12.5px;color:var(--muted);font-weight:600}
.bmx-bal .val{font-size:21px;font-weight:800;margin-top:2px;letter-spacing:-.3px}

/* big KPI cards with 3D bg motif */
.bmx-kpi{padding:20px 20px 16px;color:#fff;min-height:132px;display:flex;flex-direction:column;justify-content:space-between}
.bmx-kpi.navy{background:linear-gradient(135deg,#12357f 0%,var(--navy) 55%,var(--navy-2) 100%)}
.bmx-kpi.orange{background:linear-gradient(135deg,#ff8f1f 0%,var(--orange) 60%,#ef6f00 100%)}
.bmx-kpi .bmx-3d{position:absolute;right:-14px;bottom:-22px;font-size:120px;opacity:.14;transform:rotate(-8deg);pointer-events:none;line-height:1}
.bmx-kpi .k-lbl{font-size:12.5px;font-weight:600;opacity:.9;text-transform:uppercase;letter-spacing:.4px}
.bmx-kpi .k-val{font-size:27px;font-weight:800;margin-top:4px;letter-spacing:-.4px}
.bmx-kpi .k-sub{font-size:12px;opacity:.85;margin-top:2px}
.bmx-kpi .k-more{display:inline-flex;align-items:center;gap:4px;color:#fff;text-decoration:none;font-size:11.5px;font-weight:700;opacity:.92;letter-spacing:.3px}
.bmx-kpi .k-more .material-symbols-outlined{font-size:15px;transition:.2s}
.bmx-kpi:hover .k-more .material-symbols-outlined{transform:translateX(3px)}

/* small stat cards */
.bmx-stat{padding:16px 17px;display:flex;flex-direction:column;gap:2px;text-decoration:none;color:var(--ink);transition:.2s}
.bmx-stat:hover{transform:translateY(-3px)}
.bmx-stat .st-top{display:flex;align-items:center;justify-content:space-between}
.bmx-stat .st-ic{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;background:#eef2fb;color:var(--navy)}
.bmx-stat .st-ic.o{background:#fff1e2;color:var(--orange)}
.bmx-stat .st-ic.r{background:#fdeaea;color:var(--danger)}
.bmx-stat .st-ic.g{background:#e8f5ec;color:var(--ok)}
.bmx-stat .st-val{font-size:22px;font-weight:800;margin-top:8px;letter-spacing:-.3px}
.bmx-stat .st-lbl{font-size:12.5px;color:var(--muted);font-weight:600}
.bmx-stat .st-chip{font-size:11px;font-weight:700;padding:2px 8px;border-radius:20px;background:#eef2fb;color:var(--navy)}
.bmx-stat .st-chip.o{background:#fff1e2;color:var(--orange)}
.bmx-stat .st-chip.r{background:#fdeaea;color:var(--danger)}

/* chart cards */
.bmx-chart{padding:18px}
.bmx-chart .ch-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px;gap:10px;flex-wrap:wrap}
.bmx-chart .ch-h h3{font-size:15px;margin:0;font-weight:700}
.bmx-chart .ch-h small{color:var(--muted);font-weight:500;font-size:12px}
.bmx-seg{display:inline-flex;background:#f1f5fc;border:1px solid var(--line);border-radius:9px;padding:2px;gap:2px}
.bmx-seg button{border:none;background:transparent;font-size:12px;font-weight:600;color:var(--muted);padding:5px 11px;border-radius:7px;cursor:pointer;transition:.15s}
.bmx-seg button.on{background:#fff;color:var(--navy);box-shadow:var(--sh)}

.bmx-line{position:relative;height:210px;padding:6px 6px 22px 46px}
.bmx-line svg{width:100%;height:100%;overflow:visible}
.bmx-yaxis{position:absolute;left:0;top:6px;bottom:22px;width:42px;display:flex;flex-direction:column;justify-content:space-between;align-items:flex-end;font-size:10px;color:var(--muted)}
.bmx-xaxis{position:absolute;left:46px;right:6px;bottom:2px;display:flex;justify-content:space-between;font-size:10px;color:var(--muted)}

/* bar chart */
.bmx-bars{display:flex;align-items:flex-end;gap:7px;height:200px;padding:16px 4px 0}
.bmx-bar-wrap{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}
.bmx-bar-v{font-size:10px;color:var(--muted);font-weight:600;min-height:12px}
.bmx-bar{width:100%;max-width:34px;border-radius:8px 8px 4px 4px;background:linear-gradient(180deg,var(--orange-2),var(--orange));min-height:3px;transition:height .8s cubic-bezier(.2,.7,.3,1)}
.bmx-bar.navy{background:linear-gradient(180deg,#2a4a92,var(--navy))}
.bmx-bar-labels{display:flex;gap:7px;padding:6px 4px 0}
.bmx-bar-labels span{flex:1;text-align:center;font-size:10.5px;color:var(--muted)}

/* donut */
.bmx-donut-wrap{display:flex;align-items:center;justify-content:center;padding:8px 0 4px}
.bmx-donut{width:172px;height:172px;border-radius:50%;display:grid;place-items:center;position:relative;box-shadow:inset 0 0 0 1px rgba(11,42,111,.04)}
.bmx-donut::after{content:"";position:absolute;width:108px;height:108px;background:#fff;border-radius:50%;box-shadow:0 4px 14px rgba(11,42,111,.08)}
.bmx-donut .in{position:relative;z-index:1;text-align:center}
.bmx-donut .in span{display:block;font-size:11px;color:var(--muted);font-weight:600}
.bmx-donut .in strong{display:block;font-size:23px;font-weight:800;color:var(--navy)}
.bmx-legend{display:flex;flex-wrap:wrap;gap:10px 16px;justify-content:center;margin-top:12px;font-size:12px;color:var(--ink)}
.bmx-legend span{display:inline-flex;align-items:center;gap:6px}
.bmx-legend i{width:10px;height:10px;border-radius:3px;display:inline-block}

/* progress ring / bar */
.bmx-target{padding:18px}
.bmx-target .t-top{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:10px}
.bmx-target .t-top .big{font-size:24px;font-weight:800}
.bmx-track{height:12px;border-radius:8px;background:#eef2f9;overflow:hidden}
.bmx-track>div{height:100%;border-radius:8px;background:linear-gradient(90deg,var(--orange),var(--orange-2));transition:width .9s cubic-bezier(.2,.7,.3,1)}
.bmx-target .t-foot{display:flex;justify-content:space-between;margin-top:8px;font-size:12px;color:var(--muted)}

/* tables */
.bmx-tbl{padding:0}
.bmx-tbl .tbl-h{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid var(--line-2)}
.bmx-tbl .tbl-h h3{margin:0;font-size:15px;font-weight:700;display:flex;align-items:center;gap:8px}
.bmx-tbl .tbl-h .material-symbols-outlined{color:var(--navy);font-size:20px}
.bmx-scroll{overflow-x:auto}
.bmx-tbl table{width:100%;border-collapse:collapse;font-size:13px;min-width:520px}
.bmx-tbl th,.bmx-tbl td{padding:11px 18px;text-align:left;white-space:nowrap}
.bmx-tbl th{background:#f7f9fd;color:var(--muted);font-weight:700;font-size:11px;letter-spacing:.4px;text-transform:uppercase}
.bmx-tbl tbody tr{border-top:1px solid var(--line-2)}
.bmx-tbl tbody tr:hover{background:#fafcff}
.bmx-tbl .strong{font-weight:700;color:var(--navy)}
.bmx-tbl .o{color:var(--orange);font-weight:700}
.bmx-perf-bar{height:7px;border-radius:5px;background:#eef2f9;overflow:hidden;min-width:90px}
.bmx-perf-bar>div{height:100%;background:linear-gradient(90deg,var(--navy),#2a4a92);border-radius:5px}

/* action center */
.bmx-actions{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:14px}
.bmx-act{display:flex;align-items:center;gap:13px;padding:16px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--navy);border-radius:var(--r-sm);text-decoration:none;color:var(--ink);transition:.2s;box-shadow:var(--sh)}
.bmx-act:hover{transform:translateY(-2px);box-shadow:var(--sh-hi)}
.bmx-act.warn{border-left-color:var(--orange)}
.bmx-act.danger{border-left-color:var(--danger)}
.bmx-act .a-ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:#eef2fb;color:var(--navy);flex:none}
.bmx-act.warn .a-ic{background:#fff1e2;color:var(--orange)}
.bmx-act.danger .a-ic{background:#fdeaea;color:var(--danger)}
.bmx-act .a-count{font-size:22px;font-weight:800;line-height:1}
.bmx-act .a-desc{font-size:12.5px;color:var(--muted);margin-top:2px}

/* recovery cards */
.bmx-rec{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.bmx-rec .r{padding:15px;background:#fff;border:1px solid var(--line);border-radius:var(--r-sm);box-shadow:var(--sh)}
.bmx-rec .r .l{font-size:11.5px;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.3px}
.bmx-rec .r .v{font-size:19px;font-weight:800;margin-top:6px}
.bmx-rec .r.hot .v{color:var(--danger)}

/* empty state */
.bmx-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:34px 16px;color:var(--muted);text-align:center}
.bmx-empty .material-symbols-outlined{font-size:38px;opacity:.5}
.bmx-empty p{margin:0;font-size:13px}

/* responsive */
@media (max-width:1180px){ .bmx-g4{grid-template-columns:repeat(2,1fr)} }
@media (max-width:900px){ .bmx-g3,.bmx-g2{grid-template-columns:1fr} .bmx-dash{padding:14px} }
@media (max-width:560px){ .bmx-g4{grid-template-columns:1fr} .bmx-head h1{font-size:24px} }
