:root{--bg:#f4f7fb;--card:#fff;--txt:#0f172a;--muted:#64748b;--pri:#2563eb;--green:#16a34a;--red:#dc2626;--border:#e2e8f0;--shadow:0 12px 30px rgba(2,6,23,.08);--side:260px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,system-ui,Segoe UI,Arial,sans-serif;background:var(--bg);color:var(--txt);overflow-x:hidden}.sidebar{position:fixed;inset:0 auto 0 0;width:var(--side);background:linear-gradient(180deg,#0f172a,#1e293b);color:white;padding:24px;display:flex;flex-direction:column;z-index:30;transition:transform .25s ease}.brand{font-weight:800;font-size:20px;margin-bottom:26px;line-height:1.2}.sidebar a{display:block;color:#dbeafe;text-decoration:none;padding:12px 14px;border-radius:14px;margin:4px 0}.sidebar a:hover{background:rgba(255,255,255,.1)}.userbox{margin-top:auto;color:#cbd5e1;font-size:14px}.userbox a{padding-left:0}.main{margin-left:var(--side);padding:28px;min-height:100vh}h1{margin:0 0 12px;font-size:30px}h2,h3{margin-top:0}.grid{display:grid;gap:18px}.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--card);border:1px solid var(--border);border-radius:22px;padding:20px;box-shadow:var(--shadow);min-width:0}.stat .num{font-size:28px;font-weight:800;margin-top:8px;word-break:break-word}.muted{color:var(--muted)}.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:end;margin-bottom:16px}.toolbar label{min-width:150px;flex:0 1 190px}.btn{border:0;border-radius:14px;padding:11px 15px;cursor:pointer;font-weight:700;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px}.primary{background:var(--pri);color:white}.danger{background:var(--red);color:white}.light{background:#e2e8f0;color:#0f172a}.success{background:var(--green);color:white}input,select,textarea{width:100%;border:1px solid var(--border);border-radius:14px;padding:11px 12px;background:white;font:inherit;min-height:42px}textarea{min-height:95px;resize:vertical}label{font-size:13px;font-weight:700;color:#334155;margin:8px 0 5px;display:block}table{width:100%;border-collapse:collapse;background:white;border-radius:18px;overflow:hidden}th,td{padding:12px;border-bottom:1px solid var(--border);text-align:left;font-size:14px;vertical-align:top}th{background:#f8fafc;color:#334155}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:18px}.table-wrap table{min-width:720px}.actions{display:flex;gap:8px;flex-wrap:wrap}.modal{display:none;position:fixed;inset:0;background:rgba(15,23,42,.55);align-items:center;justify-content:center;padding:20px;z-index:50}.modal.show{display:flex}.modal-content{background:white;border-radius:24px;max-width:720px;width:100%;padding:22px;box-shadow:var(--shadow);max-height:92vh;overflow-y:auto}.close{float:right;font-size:24px;cursor:pointer;line-height:1}.login-bg{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0f172a,#2563eb);padding:18px}.login-card{width:min(380px,100%);background:white;border-radius:28px;padding:32px;box-shadow:var(--shadow)}.alert{background:#fee2e2;color:#991b1b;padding:12px;border-radius:14px;margin:12px 0}.badge{padding:6px 10px;border-radius:999px;color:white;font-size:12px;display:inline-block;white-space:nowrap}canvas{max-width:100%!important}.mobile-menu-btn{display:none;position:fixed;top:14px;left:14px;z-index:60;border:0;border-radius:14px;background:#0f172a;color:white;width:46px;height:46px;font-size:22px;box-shadow:var(--shadow)}.mobile-overlay{display:none;position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:20}.mobile-overlay.show{display:block}.hide-desktop{display:none}@media(max-width:1180px){.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){:root{--side:280px}.mobile-menu-btn{display:block}.sidebar{transform:translateX(-105%);box-shadow:var(--shadow)}.sidebar.open{transform:translateX(0)}.main{margin-left:0;padding:76px 16px 22px}.grid-4,.grid-2{grid-template-columns:1fr}.toolbar{display:grid;grid-template-columns:1fr 1fr;align-items:end}.toolbar label,.toolbar .btn,.toolbar a.btn{width:100%;min-width:0}.card{border-radius:18px;padding:16px}.stat .num{font-size:23px}h1{font-size:25px}.modal{padding:12px;align-items:flex-start}.modal-content{border-radius:20px;margin-top:42px;padding:18px}.table-wrap{margin:0 -4px;width:calc(100% + 8px)}.table-wrap table{min-width:760px}.hide-mobile{display:none}.hide-desktop{display:block}}@media(max-width:560px){.main{padding-left:12px;padding-right:12px}.toolbar{grid-template-columns:1fr}.grid{gap:12px}.card{padding:14px}.btn{width:100%;padding:10px 12px}.actions .btn{width:auto;flex:1 1 120px}th,td{font-size:13px;padding:10px}.login-card{padding:24px;border-radius:22px}.brand{font-size:18px}.sidebar{width:min(86vw,300px);padding:22px 18px}.modal-content{max-height:88vh}.grid-2 label{margin-top:4px}}@media(max-width:390px){.stat .num{font-size:20px}.mobile-menu-btn{top:10px;left:10px;width:42px;height:42px}.main{padding-top:68px}.table-wrap table{min-width:680px}}
.chart-card{min-height:420px}.small-num{font-size:20px!important;line-height:1.2}.apexcharts-canvas{max-width:100%!important}.report-toolbar .success{background:linear-gradient(135deg,#16a34a,#059669)}
@media(max-width:900px){.chart-card{min-height:360px}.small-num{font-size:18px!important}}
.echart{width:100%;height:360px;min-height:320px}.chart-card h3{margin-bottom:8px}.report-toolbar{position:sticky;top:0;background:rgba(244,247,251,.92);backdrop-filter:blur(10px);z-index:10;padding:8px 0}.stat{position:relative;overflow:hidden}.stat:after{content:"";position:absolute;right:-28px;top:-28px;width:90px;height:90px;border-radius:999px;background:rgba(37,99,235,.08)}
@media(max-width:900px){.echart{height:340px}.report-toolbar{position:static}.chart-card{min-height:390px}}
@media(max-width:560px){.echart{height:310px}.chart-card{min-height:350px}}
/* Bank CSV Import */
.between{justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.compact-table input,.compact-table select,.compact-table textarea{width:100%;min-width:130px;border:1px solid #dbe3ef;border-radius:10px;padding:8px;background:#fff;font-size:14px}
.compact-table textarea{min-height:58px;resize:vertical}
.compact-table td{vertical-align:top}
.is-duplicate{opacity:.62;background:#f8fafc}
.badge.green{background:#16a34a;color:#fff}.badge.gray{background:#64748b;color:#fff}
.btn.small{padding:7px 10px;font-size:13px;border-radius:10px}.mt-1{margin-top:6px}.muted{color:#64748b}.stat{background:linear-gradient(135deg,#ffffff,#f8fafc);border:1px solid #e5edf7;border-radius:18px;padding:18px;box-shadow:0 10px 28px rgba(15,23,42,.06)}.stat span{display:block;color:#64748b;font-size:13px;margin-bottom:8px}.stat b{font-size:24px;color:#0f172a}
@media(max-width:768px){.compact-table input,.compact-table select,.compact-table textarea{min-width:190px}.toolbar.between{align-items:stretch}.toolbar.between>div{display:grid;gap:8px;width:100%}.toolbar.between .btn{width:100%}}
