:root{
  --bg:#0f172a;--panel:#1e293b;--text:#e2e8f0;--muted:#94a3b8;
  --in:#22c55e;--out:#ef4444;--accent:#6366f1;--border:#334155;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}
.top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:16px 20px;background:#111c33;border-bottom:1px solid var(--border)}
.top h1{margin:0;font-size:1.3rem}
.filter{display:flex;align-items:center;gap:8px}
main{max-width:1000px;margin:0 auto;padding:20px;display:grid;gap:20px}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;perspective:900px}
.card{padding:20px;border-radius:14px;background:var(--panel);border:1px solid var(--border);
  display:flex;flex-direction:column;gap:6px;transform-style:preserve-3d;
  transition:transform .15s ease,box-shadow .15s ease;box-shadow:0 10px 25px rgba(0,0,0,.35)}
.card span{color:var(--muted);font-size:.85rem}
.card strong{font-size:1.6rem}
.income strong{color:var(--in)}.expense strong{color:var(--out)}
.balance strong{color:#a5b4fc}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}
.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:12px}
.panel h2{margin:0;font-size:1.05rem}
label{display:flex;flex-direction:column;gap:4px;font-size:.85rem;color:var(--muted)}
input,select{background:#0b1220;border:1px solid var(--border);color:var(--text);padding:10px;border-radius:8px;font-size:.95rem}
input:focus,select:focus{outline:2px solid var(--accent)}
.seg{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.seg label{flex-direction:row}
.seg input{display:none}
.seg span{width:100%;text-align:center;padding:10px;border-radius:8px;border:1px solid var(--border);cursor:pointer;color:var(--text)}
.seg input:checked+span{background:var(--accent);border-color:var(--accent)}
.row{display:flex;gap:8px;align-items:center}
.between{justify-content:space-between}
.btn{background:#334155;color:var(--text);border:0;padding:10px 16px;border-radius:8px;cursor:pointer;font-size:.9rem}
.btn:hover{filter:brightness(1.15)}
.btn.primary{background:var(--accent)}
.btn.small{padding:5px 9px;font-size:.8rem}
.btn.danger{background:#7f1d1d}
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{padding:10px 8px;border-bottom:1px solid var(--border);text-align:left}
th{color:var(--muted);font-weight:600}
.r{text-align:right}
td.masuk{color:var(--in)}td.keluar{color:var(--out)}
.muted{color:var(--muted)}
footer{text-align:center;color:var(--muted);font-size:.8rem;padding:20px}

/* Grafik batang 3D */
.chart3d{display:flex;align-items:flex-end;gap:18px;height:220px;padding:10px 6px 0;perspective:700px}
.bar{flex:1;min-width:34px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;gap:6px}
.bar .col{position:relative;width:100%;transform-style:preserve-3d;transform:rotateX(-18deg) rotateY(-28deg);transition:height .4s}
.bar .face{position:absolute;inset:0}
.bar .front{background:linear-gradient(#818cf8,#4f46e5)}
.bar .side{left:100%;width:14px;background:#3730a3;transform-origin:left;transform:rotateY(90deg)}
.bar .topf{top:-14px;height:14px;background:#a5b4fc;transform-origin:bottom;transform:rotateX(90deg)}
.bar small{font-size:.7rem;color:var(--muted);text-align:center;word-break:break-word}
.bar b{font-size:.7rem}
