:root{--primary:#3b82f6;--primary-dark:#2563eb;--primary-light:#dbeafe;--bg:#f5f7f6;--card:#fff;--text:#1a1a2e;--text2:#6b7280;--text3:#9ca3af;--border:#e5e7eb;--success:#10b981;--danger:#ef4444;--danger-light:#fee2e2;--shadow:0 1px 3px rgba(0,0,0,.06);--radius:16px;--radius-sm:12px}

.material-icons{font-family:'Material Icons';font-weight:normal;font-style:normal;font-size:20px;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;-webkit-font-smoothing:antialiased}

.dark{--bg:#0f1117;--card:#1a1d28;--text:#e8eaed;--text2:#9aa0a6;--text3:#5f6368;--border:#2d3142;--primary-light:#3b82f61a;--danger-light:#ef44441a;--shadow:0 1px 3px rgba(0,0,0,.3)}
.dark .material-icons{color:var(--text)}
.dark .bp-cat-icon.material-icons{color:var(--text2)}
.dark .bill-icon .material-icons{color:var(--text2)}
.dark .budget-percat-item-icon .material-icons{color:inherit}
*{margin:0;padding:0;box-sizing:border-box}
body{font-family:'Inter',-apple-system,sans-serif;background:var(--bg);color:var(--text);min-height:100vh;-webkit-font-smoothing:antialiased}
.app{max-width:480px;margin:0 auto;padding-bottom:90px}

/* HEADER */
.header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:rgba(255,255,255,.72);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border-bottom:1px solid rgba(226,232,240,.5);position:sticky;top:0;z-index:100}
.h-left{display:flex;align-items:center;gap:10px}
.menu-btn{background:none;border:none;cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;line-height:1;color:var(--text);width:40px;height:40px;border-radius:50%}
.menu-btn:hover{background:rgba(0,122,255,.06)}
.menu-btn .material-icons{font-size:22px}
.dark .menu-btn .material-icons{color:#fff!important}
.dark .header{background:rgba(15,23,42,.72);border-bottom-color:rgba(255,255,255,.06)}
.h-title{font-size:15px;font-weight:800;background:linear-gradient(135deg,#3b82f6,#8b5cf6,#ec4899,#ef4444,#f97316);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.h-right{display:flex;align-items:center;gap:12px}
.h-date{font-size:12px;color:var(--text3)}
.avatar{width:32px;height:32px;border-radius:50%;background:#fbbf24;color:#fff;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700}

/* LOADER */
.loader{position:fixed;inset:0;background:rgba(255,255,255,.95);display:none;flex-direction:column;align-items:center;justify-content:center;z-index:9999;gap:12px;font-size:14px;color:var(--text2)}
.loader.active{display:flex}
.spin{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* TOASTS */
.toasts{position:fixed;top:70px;left:50%;transform:translateX(-50%);z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none}
.toast{background:var(--card);border-radius:12px;padding:10px 18px;box-shadow:var(--shadow-lg);font-size:13px;font-weight:600;pointer-events:auto;animation:toastIn .3s ease}
@keyframes toastIn{from{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}

/* PAGES */
.page{display:none;padding:20px 20px 120px 20px;animation:fadeUp .3s ease}
.page.active{display:block}
@keyframes fadeUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
.page-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}
.page-hd h1{font-size:22px;font-weight:800}
.add-btn{background:var(--primary);color:#fff;border:none;padding:8px 16px;border-radius:10px;font-size:13px;font-weight:700;cursor:pointer}

/* TRANSACTION PAGE */
.tx-page-hd{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.tx-page-icon{width:48px;height:48px;background:var(--primary-light);border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:24px}
.tx-page-icon .material-icons{font-size:26px}
.tx-page-hd h1{font-size:22px;font-weight:800}
.tx-page-sub{font-size:13px;color:var(--text2);margin-top:2px}
.tx-actions{display:flex;gap:10px;margin-bottom:16px}
.tx-btn-outline{flex:1;padding:12px;background:var(--card);border:1.5px solid var(--border);border-radius:12px;font-size:13px;font-weight:600;cursor:pointer;color:var(--text2)}
.tx-btn-primary{flex:1;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:12px;font-size:13px;font-weight:600;cursor:pointer}

/* FILTER CARD */
.filter-card{background:var(--card);border-radius:16px;padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.filter-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.filter-row-full{grid-template-columns:1fr !important}
.filter-card label{display:block;font-size:12px;font-weight:600;color:var(--text2);margin-bottom:6px}
.filter-sel2{width:100%;padding:10px 12px;border:1.5px solid var(--border);border-radius:10px;font-size:13px;background:var(--bg);color:var(--text);outline:none;font-family:inherit}
.filter-sel2:focus{border-color:var(--primary)}
select.filter-sel2{padding:10px 32px 10px 12px;background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer}
select.filter-sel2:focus{border-color:var(--primary)}
.filter-reset{background:none;border:none;color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;padding:8px 0}

/* Date input with calendar icon */
.date-input-wrap{position:relative}
.filter-date-input{padding-right:36px}
.date-cal-icon{position:absolute;right:10px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--text3);display:flex;align-items:center}
.date-cal-icon .material-icons{font-size:18px}

/* SEARCH INPUT WITH CLEAR BUTTON */
.search-wrap{position:relative;width:100%}
.search-input{width:100%;padding:10px 40px 10px 12px !important;box-sizing:border-box}
.search-clear-btn{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--text3);font-size:18px;font-weight:700;cursor:pointer;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .15s;line-height:1;opacity:0;pointer-events:none}
.search-clear-btn:hover{background:var(--bg);color:var(--text)}
.search-clear-btn.visible{opacity:1;pointer-events:auto}

/* TRANSACTION TABLE */


.tx-table-body .tx-row .col-date,.tx-table-body .tx-row .col-desc,.tx-table-body .tx-row .col-cat,.tx-table-body .tx-row .col-wallet,.tx-table-body .tx-row .col-amt,.tx-table-body .tx-row .col-act{background:var(--card)}

.tx-table-body .tx-row .col-date{font-size:12px;color:var(--text2);text-align:center;white-space:nowrap;line-height:1.4}
.tx-table-body .tx-row .col-desc{font-size:13px;font-weight:600;text-align:center;padding:0 4px;word-wrap:break-word;overflow-wrap:break-word}
.tx-table-body .tx-row .col-cat{font-size:12px;color:var(--text2);text-align:center;white-space:nowrap}
.tx-table-body .tx-row .col-wallet{font-size:13px;font-weight:600;color:var(--text);text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tx-table-body .tx-row .col-amt{font-size:14px;font-weight:700;text-align:right;white-space:nowrap;padding-right:4px}
.tx-table-body .tx-row .col-amt.income{color:var(--success)}
.tx-table-body .tx-row .col-amt.expense{color:var(--danger)}
.tx-table-body .tx-row .col-act{text-align:center;display:flex;gap:2px;justify-content:center;background:var(--card)}
.tx-table-body .tx-row .col-act button{background:none;border:none;cursor:pointer;opacity:.6;transition:opacity .2s;padding:6px;display:inline-flex;align-items:center;justify-content:center;border-radius:0}
.tx-table-body .tx-row .col-act button .material-icons{font-size:20px}
.tx-table-body .tx-row .col-act button:hover{opacity:1}

/* Remove border on last row cells */

/* WELCOME */
.welcome{margin-bottom:20px}
.welcome h1{font-size:22px;font-weight:800}
.welcome p{font-size:13px;color:var(--text2);margin-top:4px}

/* CARDS */
.card{background:var(--card);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.card-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}
.card-ttl{font-size:15px;font-weight:700}
.card-sub{font-size:12px;color:var(--text3)}
.filter-btn{background:var(--bg);border:none;padding:6px 12px;border-radius:8px;font-size:12px;color:var(--primary);cursor:pointer;font-weight:600}
.filter-btn .material-icons{font-size:16px}
.bp-action{padding:4px 8px;display:inline-flex;align-items:center;justify-content:center}
.bp-action .material-icons{font-size:18px}
.bp-action-delete{color:var(--danger)!important}
.bp-action-delete:hover{background:rgba(239,68,68,.1)!important}

/* BALANCE CARD */
.bal-card{background:linear-gradient(135deg,#ecfdf5,#d1fae5,#a7f3d0)}
.bal-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.bal-label{font-size:13px;color:var(--primary-dark);font-weight:600}
.bal-visibility{background:rgba(255,255,255,.5);border:none;padding:4px 8px;border-radius:8px;font-size:14px;cursor:pointer}
.bal-amount{font-size:30px;font-weight:800;margin-bottom:16px}
.bal-amount.hidden{filter:blur(8px);user-select:none}
.bal-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.bal-item{display:flex;align-items:center;gap:10px;padding:12px;background:rgba(255,255,255,.6);border-radius:12px}
.bal-ico{font-size:18px}
.bal-item-label{font-size:11px;color:var(--text2);display:block}
.bal-item-val{font-size:14px;font-weight:700;display:block}
.bal-item.income .bal-item-val{color:var(--success)}
.bal-item.expense .bal-item-val{color:var(--danger)}

/* CALENDAR */
.cal-card{overflow:hidden;padding:16px 12px}
.cal-nav{display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:8px}
.cal-arrow{width:26px;height:26px;border-radius:50%;background:var(--bg);border:none;font-size:13px;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0;color:var(--text2)}
.cal-month{font-size:14px;font-weight:700;min-width:90px;text-align:center;white-space:nowrap}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;text-align:center}
.cal-day{font-size:9px;font-weight:600;color:var(--text3);padding:2px 0}
.cal-date{font-size:10px;padding:0;border-radius:50%;width:24px;height:24px;display:flex;align-items:center;justify-content:center;margin:0 auto}
.cal-date.today{background:var(--primary);color:#fff;font-weight:700}
.cal-date.has-tx{background:var(--primary-light);color:var(--primary-dark)}
.cal-date.empty{visibility:hidden}

/* CHART */
.chart{height:120px;display:flex;align-items:flex-end;gap:3px;padding-top:10px}
.chart-bar{flex:1;border-radius:4px 4px 0 0;min-width:4px;transition:height .3s}
.chart-bar.income{background:var(--success)}
.chart-bar.expense{background:var(--danger)}

/* TREND */
.trend-bars{display:flex;flex-direction:column;gap:10px}
.trend-row{display:grid;grid-template-columns:110px 1fr;gap:10px;align-items:center}
.trend-label{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;justify-content:flex-start}
.trend-label .trend-ico{font-size:14px;flex-shrink:0;line-height:1}
.trend-label .trend-name{text-align:right;overflow:hidden;text-overflow:ellipsis}
.trend-bar-wrap{height:8px;background:var(--bg);border-radius:4px;overflow:hidden}
.trend-bar{height:100%;border-radius:4px;transition:width .3s}
.trend-bar.income{background:var(--success)}
.trend-bar.expense{background:var(--danger)}

/* CATEGORY */
.cat-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.cat-item:last-child{border-bottom:none}
.cat-ico{width:36px;height:36px;border-radius:10px;background:var(--bg);display:flex;align-items:center;justify-content:center;font-size:16px}
.cat-info{flex:1}
.cat-name{font-size:13px;font-weight:600}
.cat-count{font-size:11px;color:var(--text3)}
.cat-amt{font-size:14px;font-weight:700;color:var(--danger)}
.cat-pct{font-size:11px;color:var(--text3)}

/* TRANSACTION LIST */
.tx-list{display:flex;flex-direction:column;gap:8px}
.tx-item{display:flex;align-items:center;gap:10px;padding:12px;background:var(--bg);border-radius:12px}
.tx-ico{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px}
.tx-ico.income{background:var(--primary-light)}
.tx-ico.expense{background:var(--danger-light)}
.tx-info{flex:1}
.tx-name{font-size:13px;font-weight:600}
.tx-date{font-size:11px;color:var(--text3)}
.tx-wallet{font-size:10px;color:var(--primary);font-weight:600;margin-top:2px}
.tx-right{text-align:right}
.tx-amt{font-size:14px;font-weight:700}
.tx-amt.income{color:var(--success)}
.tx-amt.expense{color:var(--danger)}
.tx-act{display:flex;gap:4px;margin-top:4px;justify-content:flex-end}
.tx-act button{width:28px;height:28px;border-radius:6px;background:var(--card);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center}
.tx-act button .material-icons{font-size:16px}

/* FILTER BAR */
.filter-bar{display:flex;gap:8px;margin-bottom:16px}
.filter-sel{padding:8px 12px;border:1.5px solid var(--border);border-radius:10px;font-size:13px;background:var(--card);color:var(--text);outline:none;font-family:inherit}

/* FORM */
.form-group{margin-bottom:16px}
.form-group label{display:block;font-size:12px;font-weight:600;color:var(--text2);margin-bottom:8px}
.form-inp{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:12px;font-size:14px;font-family:inherit;background:var(--card);color:var(--text);outline:none}
.form-inp:focus{border-color:var(--primary)}
.type-toggle{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.type-btn{padding:10px;border:2px solid var(--border);border-radius:10px;background:var(--card);font-size:13px;font-weight:600;cursor:pointer;transition:all .2s}
.type-btn.expense-btn.active{border-color:var(--danger);background:#fee2e2;color:#dc2626}
.type-btn.income-btn.active{border-color:var(--success);background:#d1fae5;color:#059669}
.btn-primary{display:block;width:100%;padding:14px;background:var(--primary);color:#fff;border:none;border-radius:12px;font-size:14px;font-weight:700;cursor:pointer;margin-top:8px}
.btn-secondary{display:block;width:100%;padding:12px;background:transparent;color:var(--text2);border:none;font-size:13px;font-weight:600;cursor:pointer;margin-top:8px}

/* BOTTOM NAV */
/* BOTTOM NAV (Pill with FAB) */
.bnav{
  position:fixed;bottom:16px;left:50%;transform:translateX(-50%);
  width:auto;max-width:420px;
  background:rgba(248,249,250,.92);
  backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);
  border:1px solid var(--border);
  border-radius:28px;
  display:flex;align-items:center;justify-content:center;
  padding:8px 6px 8px;z-index:100;
  box-shadow:0 4px 24px rgba(0,0,0,.08),0 1px 4px rgba(0,0,0,.04);
}
.nav-item{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  cursor:pointer;padding:8px 14px;border-radius:20px;
  position:relative;transition:all .25s;
  min-width:44px;
}
.nav-item:active{background:rgba(59,130,246,.08);}
.nav-item.active{
  background:var(--primary);
  flex-direction:row;gap:6px;
  box-shadow:0 2px 12px rgba(59,130,246,.3);
}
.nav-ico{font-size:22px;color:var(--text3);transition:all .25s;line-height:1}
.nav-item.active .nav-ico{color:#fff;transform:none}
.nav-lbl{
  font-size:0;font-weight:600;color:var(--text3);
  transition:font-size .25s,color .25s;
  white-space:nowrap;overflow:hidden;
  max-height:0;opacity:0;
}
.nav-item.active .nav-lbl{
  font-size:13px;color:#fff;
  max-height:20px;opacity:1;
}

/* FAB (In-pill) */
.nav-item.nav-fab{
  position:relative;
  padding:0;min-width:0;
  background:linear-gradient(135deg,#3b82f6,#2563eb);
  border-radius:50%;
  width:52px;height:52px;
  margin:0 8px;
  margin-top:-26px;
  box-shadow:0 4px 20px rgba(59,130,246,.35),0 2px 8px rgba(0,0,0,.15);
  display:flex;align-items:center;justify-content:center;
  flex-direction:row!important;
  transition:transform .2s,box-shadow .2s;
}
.nav-item.nav-fab:hover{transform:scale(1.08)}
.nav-item.nav-fab:active{transform:scale(.95)}
.nav-item.nav-fab svg{width:24px;height:24px;stroke:#fff;stroke-width:2.5;fill:none}
.nav-item.nav-fab .nav-lbl{display:none}

/* FAB Floating (bottom-right corner) */
.fab-float{
  position:fixed;bottom:96px;right:20px;
  width:56px;height:56px;border-radius:50%;border:none;
  background:linear-gradient(135deg,#3b82f6,#2563eb);
  color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 24px rgba(59,130,246,.4),0 2px 8px rgba(0,0,0,.15);
  z-index:150;transition:transform .2s,box-shadow .2s;
}
.fab-float:hover{transform:scale(1.08);box-shadow:0 8px 32px rgba(59,130,246,.5),0 4px 12px rgba(0,0,0,.2)}
.fab-float:active{transform:scale(.92)}

/* Dark mode */
.dark .bnav{
  background:rgba(22,22,35,.88);
  border-color:rgba(255,255,255,.08);
  box-shadow:0 4px 24px rgba(0,0,0,.3),0 1px 4px rgba(0,0,0,.2);
}
.dark .nav-item:active{background:rgba(59,130,246,.12)}
.dark .nav-item.active{background:var(--primary);box-shadow:0 2px 12px rgba(59,130,246,.4)}


/* MODAL */
.modal-ov{position:fixed;inset:0;background:rgba(0,0,0,.6);display:none;align-items:flex-end;justify-content:center;z-index:200}
.modal-ov.active{display:flex}
.modal{background:var(--card);border-radius:20px 20px 0 0;padding:20px;width:100%;max-width:480px;max-height:80vh;overflow-y:auto;animation:slideUp .3s ease}
@keyframes slideUp{from{transform:translateY(100%)}to{transform:translateY(0)}}
.modal-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.modal-ttl{font-size:16px;font-weight:700}
.modal-x{width:28px;height:28px;border-radius:50%;background:var(--bg);border:none;font-size:12px;cursor:pointer}

/* WALLET MODAL */
.wallet-modal{padding:0;border-radius:24px 24px 0 0}
.wm-header{text-align:center;padding:24px 24px 20px;position:relative}
.wm-close{position:absolute;top:16px;right:16px;width:32px;height:32px;border-radius:50%;background:var(--border);border:none;font-size:16px;color:var(--text);cursor:pointer;display:flex;align-items:center;justify-content:center}
.wm-icon{font-size:36px;margin-bottom:12px}
.wm-icon .material-icons{font-size:36px}
.wm-title{font-size:20px;font-weight:700;margin-bottom:4px}
.wm-subtitle{font-size:13px;color:var(--text2)}
.wm-form{padding:0 24px 20px}
.wm-field{margin-bottom:14px}
.wm-field label{display:block;font-size:13px;font-weight:500;margin-bottom:6px;color:var(--text)}
.wm-field .req{color:var(--danger)}
.wm-inp{width:100%;padding:12px 14px;border:1.5px solid var(--border);border-radius:12px;font-size:14px;font-family:inherit;background:var(--bg);color:var(--text);outline:none}
.wm-inp:focus{border-color:var(--primary)}
.wm-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.wm-inp-sm{font-size:14px}
.wm-check{display:flex;align-items:flex-start;gap:12px;padding:14px;background:var(--bg);border-radius:12px;margin-bottom:16px;cursor:pointer}
.wm-check input[type=checkbox]{width:20px;height:20px;accent-color:var(--primary);margin-top:2px;flex-shrink:0}
.wm-check-title{font-size:14px;font-weight:600;display:block}
.wm-check-desc{font-size:12px;color:var(--text3);display:block;margin-top:2px}
.wm-actions{display:flex;gap:12px;padding:0 24px 24px}
.wm-btn{flex:1;padding:14px;border-radius:14px;font-size:15px;font-weight:600;cursor:pointer;border:none}
.wm-btn-cancel{background:transparent;color:var(--text2);border:1.5px solid var(--border)}
.wm-btn-save{background:#16a34a;color:#fff}

.empty{text-align:center;padding:30px;color:var(--text3);font-size:13px}

/* SALDO PAGE */
.saldo-hd{margin-bottom:16px}
.saldo-hd h1{font-size:20px;font-weight:700;color:var(--primary-dark)}
.saldo-sub{font-size:13px;color:var(--text2);margin-top:4px}
.saldo-add-btn{width:100%;padding:14px;background:var(--primary);color:#fff;border:none;border-radius:14px;font-size:15px;font-weight:600;cursor:pointer;margin-bottom:16px}
.saldo-total-card{background:linear-gradient(135deg,#059669,#10b981);border-radius:20px;padding:24px;color:#fff;margin-bottom:20px}
.saldo-total-label{font-size:14px;opacity:.85;display:block;margin-bottom:8px}
.saldo-total-row{display:flex;align-items:center;justify-content:space-between}
.saldo-total-amount{font-size:28px;font-weight:800}
.saldo-ico-card{width:44px;height:44px;border-radius:14px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-size:20px}
.saldo-ico-card .material-icons{font-size:24px;color:#fff}
.saldo-cards{display:flex;flex-direction:column;gap:12px}
.wallet-card{background:var(--card);border:2px solid var(--primary-light);border-radius:20px;padding:20px;position:relative}
.wallet-card .w-top{display:flex;align-items:center;gap:12px;margin-bottom:16px}
.wallet-card .w-ico{width:44px;height:44px;border-radius:14px;background:var(--primary-light);display:flex;align-items:center;justify-content:center;font-size:20px}
.wallet-card .w-ico .material-icons{font-size:22px}
.wallet-card .w-name{font-size:16px;font-weight:700}
.wallet-card .w-type{font-size:12px;color:var(--text3)}
.wallet-card .w-badge{margin-left:auto;padding:4px 12px;background:var(--primary-light);color:var(--primary-dark);border-radius:20px;font-size:11px;font-weight:600}
.wallet-card .w-amount{font-size:28px;font-weight:800;margin-bottom:4px}
.wallet-card .w-amount.negative{color:var(--danger)}
.wallet-card .w-currency{font-size:12px;color:var(--text3);margin-bottom:16px}
.wallet-card .w-footer{display:flex;justify-content:space-between;align-items:center;border-top:1px solid var(--border);padding-top:12px}
.wallet-card .w-date{font-size:11px;color:var(--text3)}
.wallet-card .w-actions{display:flex;gap:4px}
.wallet-card .w-act{width:32px;height:32px;border-radius:10px;background:var(--bg);border:none;font-size:13px;cursor:pointer}

/* REPORT */
.report-card{background:var(--card);border-radius:var(--radius);padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.rpt-row{display:flex;justify-content:space-between;padding:8px 0;border-bottom:1px solid var(--border)}
.rpt-row:last-child{border-bottom:none}
.rpt-label{color:var(--text2);font-size:13px}
.rpt-val{font-weight:700;font-size:14px}

/* TRANSACTION PAGE */
.tx-page-hd{display:flex;align-items:center;gap:14px;margin-bottom:20px}
.tx-page-icon{width:48px;height:48px;background:var(--primary-light);border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:24px}
.tx-page-icon .material-icons{font-size:26px}
.tx-page-hd h1{font-size:22px;font-weight:800}
.tx-page-sub{font-size:13px;color:var(--text2);margin-top:2px}
.tx-actions{display:flex;gap:10px;margin-bottom:16px}
.tx-btn-outline{flex:1;padding:12px;background:var(--card);border:1.5px solid var(--border);border-radius:12px;font-size:13px;font-weight:600;cursor:pointer;color:var(--text2)}
.tx-btn-primary{flex:1;padding:12px;background:var(--primary);color:#fff;border:none;border-radius:12px;font-size:13px;font-weight:600;cursor:pointer}
.filter-card{background:var(--card);border-radius:16px;padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.filter-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.filter-card label{display:block;font-size:12px;font-weight:600;color:var(--text2);margin-bottom:6px}
.filter-sel2{width:100%;padding:10px 12px;border:1.5px solid var(--border);border-radius:10px;font-size:13px;background:var(--bg);color:var(--text);outline:none;font-family:inherit}
.filter-sel2:focus{border-color:var(--primary)}
select.filter-sel2{padding:10px 32px 10px 12px;background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;appearance:none;-webkit-appearance:none;-moz-appearance:none;cursor:pointer}
select.filter-sel2:focus{border-color:var(--primary)}
.filter-reset{background:none;border:none;color:var(--primary);font-size:13px;font-weight:600;cursor:pointer;padding:8px 0}

/* BUDGET PAGE */
.budget-target-card{background:linear-gradient(135deg,var(--primary),#4f46e5);border-radius:20px;padding:24px;color:#fff;margin-bottom:16px;position:relative;overflow:hidden}
.budget-target-card::after{content:'';position:absolute;bottom:-40px;right:-40px;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.08)}
.budget-target-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.budget-target-label{font-size:14px;opacity:.85}
.budget-edit-btn{background:rgba(255,255,255,.2);border:none;color:#fff;padding:6px 14px;border-radius:8px;font-size:13px;cursor:pointer;transition:all .15s}
.budget-edit-btn:hover{background:rgba(255,255,255,.3)}
.budget-target-amount{font-size:32px;font-weight:800;margin-bottom:16px}
.budget-progress-wrap{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.budget-progress-bar{flex:1;height:12px;background:rgba(255,255,255,.2);border-radius:6px;overflow:hidden}
.budget-progress-fill{height:100%;background:#fff;border-radius:6px;transition:width .5s ease}
.budget-pct-badge{background:rgba(255,255,255,.25);padding:4px 10px;border-radius:12px;font-size:13px;font-weight:700;min-width:48px;text-align:center}
.budget-target-sub{font-size:13px;opacity:.75}

.budget-stats-row{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:16px}
.budget-stat-card{border-radius:16px;padding:16px;text-align:center}
.budget-stat-card.income{background:linear-gradient(135deg,#10b981,#059669);color:#fff}
.budget-stat-card.expense{background:linear-gradient(135deg,#ef4444,#dc2626);color:#fff}
.budget-stat-card.saving{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}
.budget-stat-label{font-size:11px;opacity:.85;display:block;margin-bottom:6px}
.budget-stat-value{font-size:15px;font-weight:700;display:block}

.budget-analysis-card{background:var(--card);border-radius:16px;padding:20px;margin-bottom:16px;display:flex;align-items:center;gap:16px;box-shadow:var(--shadow)}
.budget-analysis-icon{font-size:32px;flex-shrink:0}
.budget-analysis-icon .material-icons{font-size:32px}
.budget-analysis-text{font-size:14px;line-height:1.5;color:var(--text)}

.budget-history-card{background:var(--card);border-radius:16px;padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.budget-history-title{font-size:15px;font-weight:700;color:var(--text);margin-bottom:14px}
.budget-history-title .material-icons{font-size:18px}
.budget-history-list{display:flex;flex-direction:column;gap:10px}
.budget-history-item{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--bg);border-radius:12px}
.budget-history-item .hist-month{font-size:14px;font-weight:600;color:var(--text);min-width:80px}
.budget-history-item .hist-detail{display:flex;align-items:center;gap:10px}
.budget-history-item .hist-saving{font-size:13px;font-weight:500}
.budget-history-item .hist-saving.pos{color:#10b981}
.budget-history-item .hist-saving.neg{color:#ef4444}
.budget-history-item .hist-target{font-size:12px;color:var(--text2)}
.budget-history-item .hist-pct{font-size:12px;font-weight:700;padding:4px 10px;border-radius:10px}
.hist-pct.high{background:#10b981;color:#fff}
.hist-pct.mid{background:#f59e0b;color:#fff}
.hist-pct.low{background:#ef4444;color:#fff}
.hist-pct.negative{background:#6b7280;color:#fff}

/* ====== NEW DASHBOARD ELEMENTS ====== */

/* Quick Actions */
.quick-actions{display:flex;gap:10px;padding:0 20px 16px;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.quick-actions::-webkit-scrollbar{display:none}
.qa-btn{flex-shrink:0;background:var(--card);border:1.5px solid var(--border);border-radius:14px;padding:14px 16px;display:flex;align-items:center;gap:10px;cursor:pointer;transition:all .2s;min-width:130px}
.qa-btn:hover{border-color:var(--primary);box-shadow:0 2px 12px rgba(59,130,246,.1)}
.qa-btn:active{transform:scale(.97)}
.qa-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.qa-icon.material-icons{font-size:22px}
.qa-btn:nth-child(1) .qa-icon{background:rgba(59,130,246,.1)}
.qa-btn:nth-child(2) .qa-icon{background:rgba(239,68,68,.1)}
.qa-btn:nth-child(3) .qa-icon{background:rgba(59,130,246,.1)}
.qa-btn:nth-child(4) .qa-icon{background:rgba(245,158,11,.1)}
.qa-btn:nth-child(5) .qa-icon{background:rgba(139,92,246,.1)}
.qa-label{font-size:12px;font-weight:600;white-space:nowrap}

/* Quick Stats */
.quick-stats{display:grid!important;grid-template-columns:1fr 1fr!important;gap:10px!important;padding:0 16px 12px;width:100%;box-sizing:border-box;min-width:0}
.quick-stats > .qs-card{min-width:0}
.qs-card{background:var(--card);border-radius:16px;padding:14px 12px 12px;box-shadow:var(--shadow);position:relative;overflow:hidden;display:flex;flex-direction:column;min-width:0}
.qs-card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px}
.qs-card.green::before{background:#10b981}
.qs-card.red::before{background:#ef4444}
.qs-card.blue::before{background:#3b82f6}
.qs-card.amber::before{background:#f59e0b}
.qs-icon{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;margin-bottom:8px}
.qs-icon.material-icons{font-size:18px}
.qs-card.green .qs-icon{background:#10b981;color:#fff}
.qs-card.red .qs-icon{background:#ef4444;color:#fff}
.qs-card.blue .qs-icon{background:#3b82f6;color:#fff}
.qs-card.amber .qs-icon{background:#f59e0b;color:#fff}
.qs-label{font-size:10px;color:var(--text3);font-weight:600;text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}
.qs-rp{font-size:11px;font-weight:600;color:var(--text);margin-bottom:1px}
.qs-value{font-size:16px;font-weight:800;line-height:1.2;margin-bottom:4px}
.qs-value.green{color:#10b981}
.qs-value.red{color:#ef4444}
.qs-sub{font-size:10px;color:var(--text3);margin-top:auto;line-height:1.3}
.qs-sub .up{color:var(--success)}
.qs-sub .down{color:var(--danger)}

/* Dark mode quick-stats */
.dark .qs-card{background:#2a2a2e}
.dark .qs-label{color:#888}
.dark .qs-rp{color:#ccc}
.dark .qs-sub{color:#888}

/* Alerts */
.alerts{padding:0 20px 16px;display:flex;flex-direction:column;gap:8px}
.alert{display:flex;align-items:flex-start;gap:10px;padding:12px 14px;border-radius:12px;font-size:12px;font-weight:500}
.alert.warn{background:#fef3c7;color:#92400e;border:1px solid #fde68a}
.alert.danger{background:#fee2e2;color:#991b1b;border:1px solid #fecaca}
.alert.info{background:#dbeafe;color:#1e40af;border:1px solid #bfdbfe}
.alert-icon{font-size:16px;flex-shrink:0}
.alert-icon.material-icons{font-size:20px}
.alert-text{flex:1;line-height:1.4}
.alert-text strong{font-weight:700}
.alert-x{background:none;border:none;font-size:14px;cursor:pointer;color:inherit;opacity:.5;padding:0}

/* Insight */
.insight-card{background:linear-gradient(135deg,#667eea,#764ba2);border-radius:16px;padding:16px 20px;color:#fff;margin:0 20px 16px}
.insight-top{display:flex;align-items:center;gap:8px;margin-bottom:8px}
.insight-emoji{font-size:20px}
.insight-emoji.material-icons{font-size:24px}
.insight-title{font-size:13px;font-weight:700;opacity:.9}
.insight-text{font-size:12px;line-height:1.5;opacity:.85}
.insight-text strong{opacity:1}

/* Bills */
.bills-list{padding:0 20px 16px;display:flex;flex-direction:column;gap:10px}
.bill-card{background:var(--card);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);display:flex;align-items:flex-start;gap:12px}
.bill-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:18px;background:var(--primary-light);flex-shrink:0}
.bill-info{flex:1;min-width:0}
.bill-name{font-size:13px;font-weight:600;line-height:1.4}
.bill-date{font-size:11px;color:var(--text3);margin-top:2px}
.bill-amount{font-size:14px;font-weight:700;color:var(--danger);flex-shrink:0}
.bill-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:6px}
.bill-right{display:flex;align-items:center;gap:8px;flex-shrink:0}
.bill-actions{display:flex;gap:4px}
.bill-act-btn{background:none;border:none;color:var(--text3);cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;opacity:.4;transition:all .15s}
.bill-act-btn .material-icons{font-size:18px}
.bill-act-btn:hover{opacity:1;background:rgba(59,130,246,.1);color:#3b82f6}
.bill-act-delete:hover{background:rgba(239,68,68,.1)!important;color:var(--danger)!important}
.bill-due{font-size:10px;font-weight:600;padding:2px 8px;border-radius:6px;margin-left:8px;flex-shrink:0}
.bill-due.urgent{background:#fee2e2;color:#ef4444}
.bill-due.soon{background:#fef3c7;color:#f59e0b}
.bill-due.ok{background:rgba(16,185,129,.1);color:#10b981}

/* Budget Progress List (mini) */
.budget-progress-list{padding:0 20px 16px;display:flex;flex-direction:column;gap:10px}
.bp-card{background:var(--card);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow)}
.bp-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.bp-cat{display:flex;align-items:center;gap:8px}
.bp-cat-icon{font-size:16px;flex-shrink:0}
.bp-cat-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bp-pct{font-size:12px;font-weight:700;padding:2px 8px;border-radius:6px;flex-shrink:0}
.bp-pct.ok{background:rgba(16,185,129,.1);color:var(--success)}
.bp-pct.warn{background:rgba(245,158,11,.1);color:#f59e0b}
.bp-pct.danger{background:rgba(239,68,68,.1);color:var(--danger)}
.bp-bar{height:6px;background:var(--bg);border-radius:3px;overflow:hidden;margin-bottom:6px}
.bp-bar-fill{height:100%;border-radius:3px;transition:width .3s}
.bp-bar-fill.ok{background:var(--success)}
.bp-bar-fill.warn{background:#f59e0b}
.bp-bar-fill.danger{background:var(--danger)}
.bp-detail{display:flex;justify-content:space-between;font-size:11px;color:var(--text3)}

/* Goals Mini */
.goals-mini{padding:0 20px 16px;display:flex;flex-direction:column;gap:10px}
.goals-mini-card{background:var(--card);border-radius:14px;padding:14px 16px;box-shadow:var(--shadow);display:flex;align-items:center;gap:12px}
.goals-mini-icon{font-size:24px;flex-shrink:0}
.goals-mini-info{flex:1;min-width:0}
.goals-mini-name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.goals-mini-bar{height:6px;background:var(--bg);border-radius:3px;overflow:hidden;margin-top:4px}
.goals-mini-bar-fill{height:100%;border-radius:3px}
.goals-mini-right{text-align:right;flex-shrink:0}
.goals-mini-pct{font-size:14px;font-weight:700}
.goals-mini-sub{font-size:11px;color:var(--text3)}

/* Section Title (reusable) */
.section-title{font-size:15px;font-weight:700;padding:0 20px;margin-bottom:12px;display:flex;align-items:center;gap:6px}
.section-title .material-icons{font-size:18px}
.section-title a{font-size:12px;color:var(--primary);font-weight:600;text-decoration:none;cursor:pointer}

/* ====== DARK MODE ====== */
.dark-btn{width:32px;height:32px;border-radius:50%;background:var(--bg);border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--text)}
.dark-btn .material-icons{font-size:20px}
.dark body{background:var(--bg)}


/* TRANSACTION TABLE - horizontal scroll, stable layout */
.tx-table-card{background:var(--card);border-radius:16px;box-shadow:var(--shadow);border:1px solid var(--border);overflow:hidden}
.tx-table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
/* Header row */
.tx-table-hd{display:flex;min-width:780px;padding:14px 16px;background:var(--bg);font-size:11px;font-weight:700;color:var(--text3);text-transform:uppercase;letter-spacing:.5px;border-bottom:2px solid var(--border);position:sticky;top:0;z-index:2}
.tx-table-hd span{flex:1;text-align:center;white-space:nowrap}
.tx-table-hd span:nth-child(1){flex:0 0 80px}  /* Tanggal */
.tx-table-hd span:nth-child(2){flex:1 1 0}     /* Deskripsi - fluid */
.tx-table-hd span:nth-child(3){flex:0 0 100px} /* Kategori */
.tx-table-hd span:nth-child(4){flex:0 0 100px} /* Dompet */
.tx-table-hd span:nth-child(5){flex:0 0 130px} /* Jumlah */
.tx-table-hd span:nth-child(6){flex:0 0 100px} /* Aksi */

/* Body rows */
.tx-table-body .tx-row{display:flex;min-width:780px;padding:12px 16px;align-items:center;border-bottom:1px solid var(--border);transition:background .15s}
.tx-table-body .tx-row:last-child{border-bottom:none}
.tx-table-body .tx-row:hover{background:var(--bg)}

/* Cells - match header flex values exactly */
.tx-row .col-date{flex:0 0 80px;font-size:12px;color:var(--text2);text-align:center;white-space:nowrap;line-height:1.4}
.tx-row .col-desc{flex:1 1 0;font-size:13px;font-weight:600;word-wrap:break-word;overflow-wrap:break-word}
.tx-row .col-cat{flex:0 0 100px;font-size:12px;color:var(--text2);text-align:center;white-space:nowrap}
.tx-row .col-wallet{flex:0 0 100px;font-size:13px;font-weight:600;color:var(--text);text-align:center;white-space:nowrap}
.tx-row .col-amt{flex:0 0 130px;font-size:14px;font-weight:700;text-align:right;white-space:nowrap;padding-right:8px}
.tx-row .col-amt.income{color:var(--success)}
.tx-row .col-amt.expense{color:var(--danger)}
.tx-row .col-act{flex:0 0 100px;text-align:center;display:flex;gap:4px;align-items:center;justify-content:center}
.tx-row .col-act button{background:none;border:none;cursor:pointer;opacity:.5;transition:opacity .2s;padding:6px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px}
.tx-row .col-act button .material-icons{font-size:20px}
.tx-row .col-act button:hover{opacity:1}


.dark .tx-table-card,.dark .filter-card,.dark .wallet-card,.dark .card,.dark .bal-card,.dark .cal-card,.dark .saldo-total-card,.dark .report-card,.dark .budget-cat-item{background:var(--card)}
.dark .card{border:1px solid var(--border)}
.dark .filter-sel2,.dark .form-inp,.dark .wm-inp,.dark .tx-btn-outline{background:var(--bg);border-color:var(--border);color:var(--text)}
.dark select.filter-sel2{background:var(--bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center}
.dark .filter-sel2:focus,.dark .form-inp:focus,.dark .wm-inp:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-light)}
.dark .search-clear-btn:hover{background:var(--card);color:var(--text)}


/* Remove border on last row cells */

.dark 
.dark .tx-table-body,.dark .tx-table-row{border-bottom-color:var(--border)}
.dark .tx-table-row:hover{background:rgba(255,255,255,.04)}
.dark .wm-check{background:var(--bg)}
.dark .tx-act button,.dark .w-act{background:var(--bg)}
.dark .modal{background:var(--card)}
.dark .modal-x{background:var(--border);color:var(--text)}
.dark .type-btn{background:var(--card);border-color:var(--border);color:var(--text)}
.dark .expense-btn.active{background:#dc262622;color:#ef4444}
.dark .income-btn.active{background:#10b98122;color:#10b981}
.dark .saldo-add-btn{background:var(--primary)}
.dark .wm-btn-cancel{background:transparent;border-color:var(--border);color:var(--text2)}
.dark .cal-arrow{background:var(--card);color:var(--text)}
.dark .cal-date.has-tx{background:#3b82f633;color:#4dd9b0}
.dark .chart{background:transparent}

.dark .bal-card{background:linear-gradient(135deg,#3b82f633,#3b82f622,#3b82f611)}
.dark .saldo-total-card{background:linear-gradient(135deg,#3b82f633,#3b82f622)}
.dark .bal-item{background:rgba(255,255,255,.05)}
.dark .tx-item{background:var(--bg)}
.dark .tx-ico{background:var(--primary-light)}
.dark .tx-ico.expense{background:var(--danger-light)}
.dark .tx-wallet{color:#34c759}
.dark .stat-pill{background:var(--bg)}
.dark .stat-pill.up{background:#10b98122}
.dark .stat-pill.down{background:#ef444422}
.dark .upgrade-banner{background:linear-gradient(135deg,#3b82f633,#3b82f622)}
.dark .upgrade-title{color:#fff}
.dark .w-ico{background:var(--primary-light)}
.dark .cat-ico{background:var(--bg)}
.dark .progress-bar{background:var(--bg)}
.dark .trend-bar-wrap{background:var(--bg)}
.dark .avatar{background:#fbbf24}
.dark .avatar.large{background:#fbbf24}
.avatar.large{width:80px;height:80px;border-radius:50%;background:#fbbf24;color:#fff;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700;margin:0 auto 16px}
.profile-name{font-size:18px;font-weight:700;margin-bottom:4px}
.profile-sub{font-size:13px;color:var(--text2);margin-bottom:0}

/* SETTINGS */
.setting-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border)}
.setting-row:last-child{border-bottom:none}
.toggle-switch{position:relative;display:inline-block;width:44px;height:24px;flex-shrink:0}
.toggle-switch input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;cursor:pointer;top:0;left:0;right:0;bottom:0;background:var(--text3);transition:.2s;border-radius:24px}
.toggle-slider:before{position:absolute;content:"";height:18px;width:18px;left:3px;bottom:3px;background:#fff;transition:.2s;border-radius:50%}
.toggle-switch input:checked+.toggle-slider{background:var(--primary)}
.toggle-switch input:checked+.toggle-slider:before{transform:translateX(20px)}
/* New dashboard dark mode */
.dark .alert.warn{background:#422006;color:#fbbf24;border-color:#854d0e}
.dark .alert.danger{background:#450a0a;color:#fca5a5;border-color:#991b1b}
.dark .alert.info{background:#1e3a5f;color:#93c5fd;border-color:#2563eb}
.dark .bill-due.urgent{background:rgba(239,68,68,.2)}
.dark .bill-due.soon{background:rgba(245,158,11,.2)}
.dark .bill-due.ok{background:rgba(16,185,129,.15)}
.dark .bp-pct.ok{background:rgba(16,185,129,.15)}
.dark .bp-pct.warn{background:rgba(245,158,11,.15)}
.dark .bp-pct.danger{background:rgba(239,68,68,.15)}
.dark .insight-card{background:linear-gradient(135deg,#4f46e5,#7c3aed)}
.dark .budget-target-card{background:linear-gradient(135deg,#6366f1,#4f46e5)}
.dark .budget-analysis-card,.dark .budget-history-card{background:var(--card)}
.dark .budget-history-item{background:var(--bg)}

/* BUDGET PER KATEGORI */
.budget-percat-card{background:var(--card);border-radius:16px;padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.budget-percat-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.budget-percat-title{font-size:16px;font-weight:700;color:var(--text)}
.budget-add-cat-btn{background:var(--primary);color:#fff;border:none;padding:6px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}
.budget-add-cat-btn:hover{opacity:.85}
.budget-percat-summary{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:16px;padding:16px;background:var(--bg);border-radius:12px}
.budget-percat-summary-item{display:flex;flex-direction:column;align-items:center}
.budget-percat-summary-label{font-size:11px;color:var(--text3);margin-bottom:4px}
.budget-percat-summary-value{font-size:14px;font-weight:700;color:var(--text)}
.budget-percat-list{display:flex;flex-direction:column;gap:10px}
.budget-percat-item{padding:14px 16px;background:var(--bg);border-radius:12px}
.budget-percat-item-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}
.budget-percat-item-left{display:flex;align-items:center;gap:10px}
.budget-percat-item-icon{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0}
.budget-percat-item-name{font-size:14px;font-weight:600;color:var(--text)}
.budget-percat-item-pct{font-size:12px;font-weight:700;padding:3px 10px;border-radius:10px}
.budget-percat-bar-wrap{height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin-bottom:6px}
.budget-percat-bar-fill{height:100%;border-radius:3px;transition:width .5s ease}
.budget-percat-item-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:8px}
.budget-percat-item-amounts{display:flex;justify-content:space-between;font-size:12px;color:var(--text3);flex:1;margin-right:8px}
.budget-percat-item-amounts .spent{font-weight:600}
.budget-percat-item-actions{display:flex;gap:6px;flex-shrink:0}
.budget-percat-item-edit{background:none;border:none;color:var(--text3);cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;opacity:.4;transition:all .15s;flex-shrink:0}
.budget-percat-item-edit .material-icons{font-size:18px}
.budget-percat-item-edit:hover{opacity:1;background:rgba(59,130,246,.1);color:#3b82f6}
.budget-percat-item-delete{background:none;border:none;color:var(--text3);cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;opacity:.4;transition:all .15s;flex-shrink:0}
.budget-percat-item-delete .material-icons{font-size:18px}
.budget-percat-item-delete:hover{opacity:1;background:rgba(239,68,68,.1);color:var(--danger)}

/* ANALYTICS PAGE */
.analytics-card{background:var(--card);border-radius:16px;padding:20px;margin-bottom:16px;box-shadow:var(--shadow)}
.analytics-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}
.analytics-title{font-size:15px;font-weight:700;color:var(--text)}
.analytics-title .material-icons{font-size:18px}
.analytics-period{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:6px 12px;font-size:13px;color:var(--text);outline:none}
.analytics-chart-wrap{position:relative;width:100%;height:200px}
.analytics-chart-wrap canvas{width:100% !important;height:100% !important}
.analytics-pie-wrap{display:flex;gap:20px;align-items:center;flex-wrap:wrap;justify-content:center}
.analytics-pie-chart{flex-shrink:0;max-width:220px;width:100%}
.analytics-pie-chart canvas{max-width:220px;width:100% !important;height:auto !important}
.analytics-pie-legend{display:flex;flex-direction:column;gap:8px}
.analytics-pie-legend-item{display:flex;align-items:center;gap:8px;font-size:13px}
.analytics-pie-legend-color{width:12px;height:12px;border-radius:3px;flex-shrink:0}
.analytics-pie-legend-label{color:var(--text);font-weight:500}
.analytics-pie-legend-amount{font-weight:600;color:var(--text);white-space:nowrap}
.analytics-list{display:flex;flex-direction:column;gap:10px}
.analytics-list-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--border)}
.analytics-list-item:last-child{border-bottom:none}
.analytics-list-rank{font-size:14px;font-weight:700;color:var(--text3);width:28px;text-align:center}
.analytics-list-info{flex:1}
.analytics-list-name{font-size:14px;font-weight:600;color:var(--text)}
.analytics-list-bar{height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin-top:6px}
.analytics-list-bar-fill{height:100%;border-radius:3px;transition:width .5s ease}
.analytics-list-amount{font-size:14px;font-weight:700;color:var(--text);text-align:right}

/* GOALS PAGE */
.goals-summary{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px;margin-bottom:16px}
.goals-stat{background:var(--card);border-radius:16px;padding:16px;text-align:center;box-shadow:var(--shadow)}
.goals-stat-label{font-size:12px;color:var(--text3);display:block;margin-bottom:4px}
.goals-stat-value{font-size:20px;font-weight:800;color:var(--text);display:block}
.goals-list{display:flex;flex-direction:column;gap:14px;margin-bottom:16px}
.goal-card{background:var(--card);border-radius:16px;padding:20px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.goal-card::after{content:'';position:absolute;top:0;left:0;right:0;height:4px}
.goal-card-header{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.goal-card-icon{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:22px}
.goal-card-icon .material-icons{font-size:24px}
.goal-card-status{font-size:11px;padding:3px 10px;border-radius:10px;font-weight:600;display:flex;align-items:center;gap:4px}
.goal-status-ico{font-size:14px}
.goal-card-name{font-size:16px;font-weight:700;color:var(--text);flex:1}
.goal-card-status.active{background:rgba(59,130,246,.15);color:#3b82f6}
.goal-card-status.completed{background:rgba(16,185,129,.15);color:#10b981}
.goal-card-status.paused{background:rgba(107,114,128,.15);color:#6b7280}
.goal-card-amounts{display:flex;justify-content:space-between;margin-bottom:8px}
.goal-card-current{font-size:18px;font-weight:700;color:var(--text)}
.goal-card-target{font-size:13px;color:var(--text3)}
.goal-card-progress-wrap{height:10px;background:var(--border);border-radius:5px;overflow:hidden;margin-bottom:10px}
.goal-card-progress-fill{height:100%;border-radius:5px;transition:width .5s ease}
.goal-card-footer{display:flex;justify-content:space-between;align-items:center}
.goal-card-pct{font-size:14px;font-weight:700}
.goal-card-actions{display:flex;gap:8px}
.goal-card-actions button{background:var(--bg);border:none;padding:6px 12px;border-radius:8px;font-size:12px;font-weight:600;cursor:pointer;color:var(--text);transition:all .15s}
.goal-card-actions button:hover{background:var(--primary);color:#fff}
.goal-card-actions .goal-delete-btn{color:var(--danger)}
.goal-card-actions .goal-delete-btn:hover{background:var(--danger);color:#fff}
.goal-card-deadline{font-size:12px;color:var(--text3);margin-bottom:12px}
.goals-add-wrap{text-align:center;padding:20px 0}
.goals-add-btn{background:var(--primary);color:#fff;border:none;padding:12px 32px;border-radius:12px;font-size:15px;font-weight:700;cursor:pointer;transition:all .15s}
.goals-add-btn:hover{opacity:.85;transform:translateY(-1px)}

/* Goal icon & color picker */
.goal-icon-picker{display:flex;gap:8px;flex-wrap:wrap}
.goal-icon-opt{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;border:2px solid transparent;transition:all .15s;background:var(--bg)}
.goal-icon-opt.active{border-color:var(--primary);background:var(--primary-light)}
.goal-color-picker{display:flex;gap:10px}
.goal-color-opt{width:32px;height:32px;border-radius:50%;cursor:pointer;border:3px solid transparent;transition:all .15s}
.goal-color-opt.active{border-color:var(--text);transform:scale(1.15)}

/* DARK MODE */
.sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:190;display:none;opacity:0;transition:opacity .3s}
.sidebar-overlay.active{display:block;opacity:1}
.sidebar{position:fixed;top:0;left:0;bottom:0;width:300px;background:#EBEDF2;z-index:200;transform:translateX(-100%);transition:transform .3s ease;display:flex;flex-direction:column;overflow-y:auto}
.sidebar.active{transform:translateX(0)}
.sidebar-logo{padding:20px;display:flex;align-items:center;gap:12px;border-bottom:1px solid #C3C7CF}
.sidebar-logo-svg{width:160px;height:auto;display:block;flex-shrink:0}
.sl-logo-text{fill:#1a1a2e}
.dark .sl-logo-text{fill:#ffffff}
.sidebar-nav{flex:1;padding:8px}
.sidebar-item{display:flex;align-items:center;gap:12px;padding:12px 16px;border-radius:9999px;color:#43474E;cursor:pointer;font-size:14px;font-weight:500;margin-bottom:2px;transition:all .15s;letter-spacing:.5px}
.sidebar-item:hover{background:rgba(0,122,255,.08)}
.sidebar-item.active{background:#007AFF;color:#fff;font-weight:600}
.sidebar-item.active .material-icons{color:#fff !important}
.sidebar-item-ico{width:24px;text-align:center;font-size:20px}
.sidebar-item-ico.material-icons{font-size:20px;width:20px;height:20px}
.sidebar-item-lbl{flex:1}
.sidebar-profile{padding:8px 16px;border-top:1px solid #C3C7CF;display:flex;align-items:center;gap:12px;transition:all .25s}
.sidebar-profile.active{background:var(--primary)}
.sidebar-profile.active .sidebar-name{color:#fff}
.sidebar-profile.active .sidebar-avatar{background:rgba(255,255,255,.25);color:#fff}
.sidebar-avatar{width:40px;height:40px;border-radius:9999px;background:#E5F1FF;color:#002954;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:500}
.sidebar-name{font-size:14px;font-weight:500;color:#1A1C20}

/* DARK SIDEBAR */
.dark .sidebar{background:#1E1F25}
.dark .sidebar-logo{border-bottom-color:rgba(255,255,255,.08)}
.dark .sidebar-item{color:#C3C7CF}
.dark .sidebar-item:hover{background:rgba(255,255,255,.08)}
.dark .sidebar-profile{border-top-color:rgba(255,255,255,.08)}
.dark .sidebar-name{color:#E3E2E7}

/* DARK MODE - ANALYTICS & GOALS */
.dark .analytics-card,.dark .goal-card{background:var(--card)}

/* Analytics export */
.analytics-export-bar{text-align:center;padding:12px 0 4px}
.analytics-export-btn{background:var(--bg);color:var(--text2);border:1.5px solid var(--border);padding:6px 14px;border-radius:10px;font-size:12px;font-weight:600;cursor:pointer;transition:all .15s}
.analytics-export-btn:hover{background:var(--border);color:var(--text)}
.dark .analytics-list-item{border-bottom-color:var(--border)}
.dark .goal-card-actions button{background:var(--bg);color:var(--text)}
.dark .goal-icon-opt{background:var(--bg)}
.dark .goals-stat{background:var(--card)}

/* BUDGET PAGE */
.budget-summary{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px}
.budget-item{display:flex;flex-direction:column;gap:4px}
.budget-label{font-size:12px;color:var(--text3);font-weight:600}
.budget-value{font-size:18px;font-weight:800}
.budget-value.income{color:var(--success)}
.budget-bar-wrap{height:10px;background:var(--bg);border-radius:5px;overflow:hidden;margin-bottom:8px}
.budget-bar{height:100%;background:var(--primary);border-radius:5px;transition:width .3s}
.budget-bar.over{background:var(--danger)}
.budget-pct{font-size:12px;color:var(--text2);text-align:right}
.budget-cat-item{display:flex;align-items:center;gap:12px;padding:14px;background:var(--bg);border-radius:12px;margin-bottom:8px}
.budget-cat-ico{width:36px;height:36px;border-radius:10px;background:var(--primary-light);display:flex;align-items:center;justify-content:center;font-size:16px}
.budget-cat-info{flex:1}
.budget-cat-name{font-size:14px;font-weight:600}
.budget-cat-bar{height:6px;background:var(--border);border-radius:3px;margin-top:6px;overflow:hidden}
.budget-cat-fill{height:100%;border-radius:3px;transition:width .3s}
.budget-cat-fill.ok{background:var(--primary)}
.budget-cat-fill.warn{background:#f59e0b}
.budget-cat-fill.over{background:var(--danger)}
.budget-cat-amt{text-align:right;font-size:13px;font-weight:700}
.budget-cat-sub{font-size:11px;color:var(--text3)}
.budget-cat-del{width:28px;height:28px;border-radius:8px;background:transparent;border:none;font-size:12px;cursor:pointer;color:var(--danger)}

/* DARK BUDGET */
.dark .budget-cat-item{background:var(--bg)}
.dark .budget-cat-ico{background:rgba(59,130,246,.15)}
.dark .budget-cat-bar{background:var(--border)}

/* NO BOTTOM NAV */

.app{padding-bottom:20px}

/* PREMIUM BALANCE CARD */
.bal-premium-card{
  background:linear-gradient(145deg,#2d2d3d 0%,#1a1a2e 50%,#16213e 100%);
  border-radius:24px;
  padding:28px 24px 48px;
  margin-bottom:20px;
  position:relative;
  overflow:hidden;
  box-shadow:0 8px 32px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.05);
}
.bal-premium-card::before{
  content:'';position:absolute;top:-40%;right:-20%;width:300px;height:300px;
  background:radial-gradient(circle,rgba(255,255,255,.04) 0%,transparent 70%);
  pointer-events:none;
}
.bal-premium-card::after{
  content:'';position:absolute;bottom:-30%;left:-10%;width:250px;height:250px;
  background:radial-gradient(circle,rgba(59,130,246,.08) 0%,transparent 70%);
  pointer-events:none;
}
.bal-premium-top{
  display:flex;justify-content:space-between;align-items:center;margin-bottom:8px;
  position:relative;z-index:1;
}
.bal-premium-label{
  font-size:13px;color:rgba(255,255,255,.6);font-weight:500;
}
.bal-premium-circles{display:flex;align-items:center;}
.bal-circle{width:26px;height:26px;border-radius:50%;display:block;}
.bal-circle-red{background:#eb001b;margin-right:-8px;opacity:.9;}
.bal-circle-orange{background:#f79e1b;opacity:.9;}
.bal-premium-amount{
  font-size:26px;font-weight:800;color:#f0c040;
  margin-bottom:24px;position:relative;z-index:1;
  text-shadow:0 0 20px rgba(240,192,64,.15);
  letter-spacing:-.5px;
}
.bal-premium-amount.hidden{color:rgba(255,255,255,.8);letter-spacing:8px;user-select:none;}
.bal-premium-stat-val.hidden{color:rgba(255,255,255,.5);letter-spacing:4px;user-select:none;}
.bal-premium-bottom{
  display:flex;justify-content:space-between;align-items:flex-end;
  position:relative;z-index:1;
  padding-right:20px;
}
.bal-premium-stat{display:flex;flex-direction:column;gap:4px;}
.bal-premium-stat:first-child{}
.bal-premium-stat:last-child{text-align:right;}
.bal-premium-stat-label{font-size:12px;color:rgba(255,255,255,.45);font-weight:500;}
.bal-premium-stat-val{font-size:16px;font-weight:700;}
.bal-premium-stat-val.income{color:#10b981;}
.bal-premium-stat-val.expense{color:#ef4444;}
.bal-premium-visibility{
  position:absolute;top:24px;right:20px;
  width:32px;height:32px;border-radius:50%;
  background:rgba(255,255,255,.06);border:none;
  cursor:pointer;z-index:2;
  display:flex;align-items:center;justify-content:center;
  opacity:.5;transition:all .2s;
}
.bal-premium-visibility:hover{opacity:.8;background:rgba(255,255,255,.1);}
.bal-wave{
  position:absolute;top:50%;left:0;width:100%;height:200px;
  pointer-events:none;z-index:0;
  transform:translateY(-50%);
}

.dark .bal-premium-card{
  background:linear-gradient(145deg,#1e1e2e 0%,#141425 50%,#0f1a2e 100%);
  box-shadow:0 8px 32px rgba(0,0,0,.4),inset 0 1px 0 rgba(255,255,255,.04);
}

/* ========== CHART SECTION (Dark) ========== */
.chart-section{
  background:#1a1a2e;
  border-radius:24px;
  padding:20px 16px 16px;
  margin-bottom:20px;
  position:relative;
  overflow:hidden;
}
.chart-header{display:flex;justify-content:flex-end;margin-bottom:12px;}
.chart-title{font-size:14px;font-weight:700;color:var(--text)}
.chart-title .material-icons{font-size:16px}
.chart-pct-badge{
  background:rgba(16,185,129,.15);color:#10b981;
  font-size:13px;font-weight:600;padding:6px 14px;
  border-radius:20px;display:inline-flex;align-items:center;gap:4px;
}
.chart-pct-badge::before{content:'↗';font-size:12px;}
.chart-canvas-wrap{position:relative;height:180px;margin-bottom:16px;}
#lineChart{width:100%;height:100%;display:block;}
.chart-tooltip{
  position:absolute;top:10px;left:50%;transform:translateX(-50%);
  background:#10b981;border-radius:16px;padding:14px 18px;
  min-width:180px;text-align:center;pointer-events:none;
  opacity:0;transition:opacity .2s;
  box-shadow:0 4px 24px rgba(16,185,129,.3);
}
.chart-tooltip.visible{opacity:1;}
.chart-tooltip.red{background:#ef4444;box-shadow:0 4px 24px rgba(239,68,68,.3);}
.chart-tooltip-amt{font-size:20px;font-weight:800;color:#fff;margin-bottom:8px;}
.chart-tooltip-sub{font-size:12px;color:rgba(255,255,255,.85);line-height:1.6;}
.chart-dates{
  display:flex;align-items:center;justify-content:center;gap:6px;
  margin-bottom:16px;padding:0 4px;
}
.chart-date-items{
  display:flex;gap:2px;flex:1;justify-content:center;
}
.chart-date-items .chart-date-item{
  flex:1;max-width:48px;
}
.chart-date-arrow{
  width:28px;height:28px;border-radius:50%;background:rgba(255,255,255,.08);
  border:none;color:rgba(255,255,255,.5);font-size:11px;cursor:pointer;
  display:flex;align-items:center;justify-content:center;flex-shrink:0;
  transition:all .15s;
}
.chart-date-arrow:hover{background:rgba(255,255,255,.15);color:rgba(255,255,255,.8);}
.chart-date-arrow:disabled{opacity:.25;cursor:default;pointer-events:none;}
.chart-date-item{
  text-align:center;flex:1;cursor:pointer;padding:6px 2px;border-radius:8px;
  transition:background .15s;
}
.chart-date-item:hover{background:rgba(255,255,255,.05);}
.chart-date-item.active{background:rgba(255,255,255,.08);}
.chart-date-day{font-size:13px;font-weight:600;color:rgba(255,255,255,.7);}
.chart-date-item.active .chart-date-day{color:#fff;font-weight:700;}
.chart-date-label{font-size:10px;color:rgba(255,255,255,.35);margin-top:1px;}
.chart-date-item.active .chart-date-label{color:rgba(255,255,255,.5);}
.chart-date-dot{width:4px;height:4px;border-radius:50%;background:#ef4444;margin:3px auto 0;opacity:0;}
.chart-date-item.active .chart-date-dot,.chart-date-item.has-tx .chart-date-dot{opacity:1;}
.chart-toggle{
  display:flex;background:rgba(255,255,255,.06);border-radius:14px;
  padding:4px;gap:4px;
}
.chart-toggle-btn{
  flex:1;padding:10px;border:none;border-radius:11px;
  font-size:14px;font-weight:600;cursor:pointer;
  background:transparent;color:rgba(255,255,255,.45);
  transition:all .2s;
}
.chart-toggle-btn.active{
  background:rgba(255,255,255,.12);color:#fff;
  box-shadow:0 2px 8px rgba(0,0,0,.2);
}

/* ========== PROFILE STATS GRID ========== */
.summary-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:16px 0;}
.summary-grid .summary-card{padding:16px;border-radius:16px;border:1px solid var(--border);background:var(--card);text-align:center;display:flex;flex-direction:column;align-items:center;gap:4px;}
.summary-grid .summary-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;}
.summary-grid .summary-icon .material-icons{font-size:20px;}
.summary-grid .summary-lbl{font-size:12px;font-weight:600;color:var(--text2);text-transform:uppercase;letter-spacing:.5px;}
.summary-grid .summary-val{font-size:16px;font-weight:700;color:var(--text);}

/* ========== SUMMARY CARD ========== */
.summary-card{border-radius:24px;border:none;box-shadow:0 2px 16px rgba(0,0,0,.06);}
.summary-hd{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px;}
.summary-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;color:var(--text);}
.summary-dots{font-size:20px;color:#3b82f6;line-height:1;}
.summary-set-target{
  background:rgba(59,130,246,.1);color:#3b82f6;border:none;
  padding:6px 14px;border-radius:20px;font-size:12px;font-weight:600;cursor:pointer;
}
.summary-row{display:flex;align-items:center;gap:14px;}
.summary-icon-box{
  width:44px;height:44px;border-radius:14px;
  background:rgba(16,185,129,.1);
  display:flex;align-items:center;justify-content:center;font-size:22px;flex-shrink:0;
}
.summary-icon-box .material-icons{font-size:24px}
.summary-icon .material-icons{font-size:24px}
.summary-info{flex:1;min-width:0;}
.summary-label{font-size:13px;font-weight:500;color:var(--text2);margin-bottom:8px;}
.summary-bar-wrap{height:6px;background:var(--border);border-radius:3px;overflow:hidden;}
.summary-bar{height:100%;background:linear-gradient(90deg,#10b981,#34d399);border-radius:3px;transition:width .3s;}
.summary-right{text-align:right;flex-shrink:0;}
.summary-amount{font-size:18px;font-weight:700;color:var(--text);margin-bottom:2px;}
.summary-pct{font-size:12px;font-weight:600;color:#10b981;background:rgba(16,185,129,.1);padding:2px 8px;border-radius:10px;}
.summary-row-budget{margin-top:14px;padding-top:14px;border-top:1px solid var(--border);}
.summary-row-budget .summary-bar{background:linear-gradient(90deg,#3b82f6,#60a5fa);}
.summary-row-budget .summary-pct{color:#3b82f6;background:rgba(59,130,246,.1);}

.dark .chart-section{background:#141425;}
.dark .summary-card{border:1px solid var(--border);}

/* ====== MOBILE RESPONSIVE FIXES ====== */

/* Ensure all interactive elements have proper touch targets */
button, .qa-btn, .tx-act button, .w-act, .goal-card-actions button,
.cat-item-btn, .notif-btn, .dark-btn, .cal-arrow, .filter-btn,
.balance-item-value, .summary-set-target, .budget-edit-btn,
.budget-add-cat-btn, .budget-cat-del, .analytics-export-btn,
.goals-add-btn, .sidebar-item, .nav-item, .add-btn,
.tx-btn-outline, .tx-btn-primary, .wm-btn, .confirm-btn,
.notif-panel-clear, .import-drop, .alert-x, .bill-due {
  min-height: 36px;
  min-width: 36px;
}

/* Prevent text overflow in cards */
.tx-name, .bill-name, .bp-cat-name, .goals-mini-name,
.cat-name, .wallet-card .w-name, .sidebar-item-lbl,
.goal-card-name, .analytics-list-name, .notif-item-title,
.qa-label, .tx-table-desc, .budget-cat-name {
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Ensure form inputs are mobile-friendly */
.form-inp, .wm-inp, .filter-sel2, .filter-sel {
  font-size: 16px !important; /* Prevents zoom on iOS */
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
}

/* Make sure cards don't overflow on very small screens */
.bp-card, .goals-mini-card, .bill-card, .wallet-card,
.goal-card, .budget-cat-item, .analytics-card {
  word-wrap: break-word;
  overflow-wrap: break-word;
}

/* Fix bottom nav for very small screens */
@media (max-width: 360px) {
  .bnav { max-width: 340px; }
  .nav-item { padding: 8px 10px; }
  .fab-float { width: 48px; height: 48px; bottom: 88px; right: 14px; }
}

/* Fix quick stats on small screens */
@media (max-width: 380px) {
  .quick-stats { gap: 8px; padding: 0 12px 10px; }
  .qs-card { padding: 12px 10px 10px; }
  .qs-value { font-size: 14px; }
  .qs-icon { width: 28px; height: 28px; }
  .qs-label { font-size: 9px; }
  .qs-rp { font-size: 10px; }
  .qs-sub { font-size: 9px; }
}

/* Fix quick actions on small screens */
@media (max-width: 380px) {
  .qa-btn { min-width: 120px; padding: 12px 14px; }
  .qa-icon { width: 32px; height: 32px; font-size: 16px; }
  .qa-label { font-size: 11px; }
}

/* Fix bill cards on small screens */
@media (max-width: 380px) {
  .bill-card { padding: 12px; gap: 8px; }
  .bill-icon { width: 36px; height: 36px; font-size: 16px; }
  .bill-amount { font-size: 13px; }
  .bill-due { font-size: 9px; padding: 2px 6px; }
}

/* Fix budget progress on small screens */
@media (max-width: 380px) {
  .bp-card { padding: 12px; }
  .bp-pct { font-size: 11px; padding: 2px 6px; }
  .bp-detail { font-size: 10px; }
}

/* Fix goals mini on small screens */
@media (max-width: 380px) {
  .goals-mini-card { padding: 12px; gap: 8px; }
  .goals-mini-icon { font-size: 20px; }
  .goals-mini-pct { font-size: 13px; }
  .goals-mini-sub { font-size: 10px; }
}

/* Fix insight card on small screens */
@media (max-width: 380px) {
  .insight-card { padding: 14px 16px; }
  .insight-text { font-size: 11px; }
}

/* Fix alerts on small screens */
@media (max-width: 380px) {
  .alert { padding: 10px 12px; font-size: 11px; }
  .alert-icon { font-size: 14px; }
}

/* Fix section titles on small screens */
@media (max-width: 380px) {
  .section-title { font-size: 14px; padding: 0 16px; }
  .section-title a { font-size: 11px; }
}

/* Fix quick actions and stats padding on small screens */
@media (max-width: 380px) {
  .quick-actions { padding: 0 16px 12px; }
  .quick-stats { padding: 0 12px 10px !important; }
  .alerts { padding: 0 16px 12px; }
  .insight-card { margin: 0 16px 12px; }
  .bills-list { padding: 0 16px 12px; }
  .budget-progress-list { padding: 0 16px 12px; }
  .goals-mini { padding: 0 16px 12px; }
  .tx-list { padding: 0 16px 12px; }
}

/* Fix page padding on small screens */
@media (max-width: 380px) {
  .page { padding: 16px 16px 120px 16px; }
  .card { padding: 16px; }
}

/* Fix bottom nav safe area (iPhone notch) */
@supports (padding-bottom: env(safe-area-inset-bottom)) {
  .bnav {
    padding-bottom: calc(8px + env(safe-area-inset-bottom));
  }
  .app {
    padding-bottom: calc(20px + env(safe-area-inset-bottom));
  }
}

/* Fix landscape orientation */
@media (max-height: 500px) and (orientation: landscape) {
  .bnav { display: none; }
  .fab-float { display: none; }
  .app { padding-bottom: 20px; }
  .page { padding: 12px; }
  .header { padding: 8px 16px; }
}

/* Fix wallet cards on small screens */
@media (max-width: 380px) {
  .wallet-card { padding: 16px; }
  .wallet-card .w-amount { font-size: 24px; }
  .wallet-card .w-ico { width: 40px; height: 40px; }
}

/* Fix budget stats row on small screens */
@media (max-width: 380px) {
  .budget-stats-row { gap: 8px; }
  .budget-stat-card { padding: 12px; }
  .budget-stat-value { font-size: 13px; }
}

/* Fix goals summary on small screens */
@media (max-width: 380px) {
  .goals-summary { gap: 8px; }
  .goals-stat { padding: 12px; }
  .goals-stat-value { font-size: 18px; }
}

/* Fix analytics pie wrap on small screens */
@media (max-width: 380px) {
  .analytics-pie-wrap { flex-direction: column; gap: 16px; }
  .analytics-pie-chart { max-width: 200px; }
  .analytics-pie-chart canvas { max-width: 200px; }
  .analytics-pie-legend { width: 100%; gap: 6px; }
  .analytics-pie-legend-item { padding: 6px 0; border-bottom: 1px solid var(--border); gap: 8px; }
  .analytics-pie-legend-item:last-child { border-bottom: none; }
  .analytics-pie-legend-label { font-size: 12px; }
  .analytics-pie-legend-amount { font-size: 12px; }
}

/* Fix transaction table on small screens - already has overflow-x */
.tx-table-scroll { -webkit-overflow-scrolling: touch; }

/* Fix modal on very tall screens */
@media (min-height: 800px) {
  .modal { max-height: 70vh; }
}

/* Fix notification panel on small screens */
@media (max-width: 380px) {
  .notif-panel { width: calc(100vw - 24px); right: 12px; }
}

/* Fix sidebar on small screens */
@media (max-width: 380px) {
  .sidebar { width: 260px; }
}

/* Fix premium balance card on small screens */
@media (max-width: 380px) {
  .bal-premium-card { padding: 24px 20px 40px; }
  .bal-premium-amount { font-size: 22px; }
  .bal-premium-stat-val { font-size: 14px; }
}

/* Fix chart section on small screens */
@media (max-width: 380px) {
  .chart-section { padding: 16px 12px 12px; }
  .chart-toggle-btn { font-size: 13px; padding: 8px 12px; }
  .chart-date-day { font-size: 12px; }
}

/* Fix summary card on small screens */
@media (max-width: 380px) {
  .summary-card { padding: 16px; }
  .summary-icon-box { width: 40px; height: 40px; font-size: 20px; }
  .summary-amount { font-size: 16px; }
  .summary-row { gap: 10px; }
}

/* Fix form rows on small screens */
@media (max-width: 380px) {
  .form-row { gap: 8px; }
  .wm-row { gap: 8px; }
}

/* Fix budget per category on small screens */
@media (max-width: 380px) {
  .budget-percat-summary { grid-template-columns: 1fr; gap: 8px; padding: 12px; }
  .budget-percat-item { padding: 12px; }
}

/* Fix analytics list on small screens */
@media (max-width: 380px) {
  .analytics-list-item { gap: 8px; padding: 8px 0; }
  .analytics-list-rank { width: 24px; font-size: 13px; }
  .analytics-list-name { font-size: 13px; }
  .analytics-list-amount { font-size: 13px; }
}

/* Fix goal cards on small screens */
@media (max-width: 380px) {
  .goal-card { padding: 16px; }
  .goal-card-icon { width: 40px; height: 40px; font-size: 20px; }
  .goal-card-current { font-size: 16px; }
  .goal-card-actions button { padding: 6px 10px; font-size: 11px; }
}

/* Fix category management on small screens */
@media (max-width: 380px) {
  .cat-item { gap: 8px; padding: 8px 0; }
  .cat-item-btn { width: 28px; height: 28px; }
}

/* ====== SCAN STRUK (OCR) ====== */
.scan-upload-area{border:2px dashed var(--border);border-radius:16px;padding:40px 20px;text-align:center;cursor:pointer;transition:all .2s}
.scan-upload-area:hover{border-color:var(--primary);background:var(--primary-light)}
.scan-upload-icon{font-size:48px;margin-bottom:8px}
.scan-upload-icon .material-icons{font-size:48px}
.conf-badge{font-size:11px;font-weight:700;padding:4px 10px;border-radius:8px}
.conf-badge.ok{background:rgba(16,185,129,.1);color:var(--success)}
.conf-badge.warn{background:rgba(245,158,11,.1);color:#f59e0b}
.conf-badge.danger{background:rgba(239,68,68,.1);color:var(--danger)}
.spinner{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin 1s linear infinite;margin:0 auto}
@keyframes spin{to{transform:rotate(360deg)}}

/* ====== END MOBILE FIXES ====== */

/* CONFIRM MODAL */
.confirm-modal{
  display:flex;flex-direction:column;align-items:center;
  padding:32px 24px 24px;text-align:center;
  max-width:340px;margin:0 auto;
}
.confirm-icon{
  width:64px;height:64px;border-radius:50%;
  background:rgba(239,68,68,.1);
  display:flex;align-items:center;justify-content:center;
  font-size:28px;margin-bottom:16px;flex-shrink:0;
}
.confirm-title{
  font-size:17px;font-weight:700;color:var(--text);margin-bottom:8px;
}
.confirm-message{
  font-size:14px;color:var(--text2);line-height:1.5;margin-bottom:24px;
  max-width:280px;
}
.confirm-actions{
  display:flex;gap:12px;width:100%;
}
.confirm-btn{
  flex:1;padding:12px;border-radius:12px;font-size:14px;font-weight:600;
  cursor:pointer;border:none;transition:all .15s ease;
}
.confirm-btn-cancel{
  background:var(--bg);color:var(--text2);border:1.5px solid var(--border);
}
.confirm-btn-cancel:hover{background:var(--border);color:var(--text);}
.confirm-btn-danger{
  background:#ef4444;color:#fff;
  box-shadow:0 2px 8px rgba(239,68,68,.3);
}
.confirm-btn-danger:hover{background:#dc2626;box-shadow:0 4px 12px rgba(239,68,68,.4);}

.dark .confirm-icon{background:rgba(239,68,68,.15);}
.dark .confirm-btn-cancel{background:var(--bg);border-color:var(--border);}

/* Confirm modal centered override */
#confirmModal .confirm-modal{
  border-radius:20px !important;
  margin:auto !important;
  animation:confirmPop .25s ease !important;
}
@keyframes confirmPop{
  from{opacity:0;transform:scale(.92)}
  to{opacity:1;transform:scale(1)}
}

/* NOTIFICATION BUTTON */
.notif-btn{width:32px;height:32px;border-radius:50%;background:var(--bg);border:none;cursor:pointer;position:relative;display:flex;align-items:center;justify-content:center;color:var(--text)}
.notif-btn:hover{background:var(--border)}
.notif-btn .material-icons{font-size:20px}
.notif-badge{position:absolute;top:-2px;right:-2px;min-width:16px;height:16px;background:#ef4444;color:#fff;border-radius:8px;font-size:10px;font-weight:700;display:flex;align-items:center;justify-content:center;padding:0 4px}

/* NOTIFICATION PANEL */
.notif-panel{position:fixed;top:56px;right:12px;width:320px;max-height:70vh;background:var(--card);border-radius:16px;box-shadow:0 8px 32px rgba(0,0,0,.15);z-index:150;display:none;animation:panelSlide .2s ease;overflow:hidden}
.notif-panel.active{display:block}
@keyframes panelSlide{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}
.notif-panel-hd{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border-bottom:1px solid var(--border)}
.notif-panel-title{font-size:14px;font-weight:700;display:flex;align-items:center;gap:4px}
.notif-panel-title .material-icons{font-size:16px;vertical-align:middle}
.notif-panel-clear{font-size:12px;color:var(--primary);cursor:pointer;background:none;border:none;font-weight:600}
.notif-panel-list{overflow-y:auto;max-height:calc(70vh - 48px)}
.notif-item{padding:12px 16px;border-bottom:1px solid var(--border);display:flex;gap:10px;cursor:pointer;transition:background .15s}
.notif-item:hover{background:var(--primary-light)}
.notif-item.unread{border-left:3px solid var(--primary);background:rgba(59,130,246,.03)}
.notif-item-icon{font-size:20px;flex-shrink:0;margin-top:2px}
.notif-item-body{flex:1;min-width:0}
.notif-item-title{font-size:13px;font-weight:600;color:var(--text);margin-bottom:2px}
.notif-item-desc{font-size:12px;color:var(--text2);line-height:1.4}
.notif-item-time{font-size:11px;color:var(--text3);margin-top:4px}
.notif-empty{padding:32px 16px;text-align:center;color:var(--text3);font-size:13px}

/* IMPORT MODAL */
.import-drop{border:2px dashed var(--border);border-radius:12px;padding:32px;text-align:center;margin-bottom:16px;cursor:pointer;transition:all .2s}
.import-drop:hover,.import-drop.dragover{border-color:var(--primary);background:var(--primary-light)}
.import-drop-icon{font-size:32px;margin-bottom:8px}
.import-drop-text{font-size:13px;color:var(--text2)}
.import-drop-text b{color:var(--primary)}
#importFileInput{display:none}

/* IMPORT PREVIEW */
.import-preview{margin-top:12px;max-height:200px;overflow-y:auto;font-size:12px;color:var(--text2)}
.import-preview table{width:100%;border-collapse:collapse}
.import-preview th,.import-preview td{padding:4px 8px;text-align:left;border-bottom:1px solid var(--border)}
.import-preview th{background:var(--bg);font-weight:600}

.dark .notif-btn{background:var(--bg);color:var(--text)}
.dark .notif-btn .material-icons{color:#fff}
.dark .dark-btn .material-icons{color:#fff}
.dark .notif-item:hover{background:rgba(59,130,246,.08)}
.dark .import-drop{background:var(--bg)}
.dark .import-drop:hover,.dark .import-drop.dragover{border-color:var(--primary);background:rgba(59,130,246,.08)}

/* CATEGORY MANAGEMENT */
.cat-mgmt-header{display:flex;justify-content:space-between;align-items:center}
.cat-item{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid var(--border)}
.cat-item:last-child{border-bottom:none}
.cat-item-icon{font-size:22px;width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:10px;background:var(--bg);flex-shrink:0}
.cat-item-info{flex:1;min-width:0}
.cat-item-name{font-size:14px;font-weight:600;color:var(--text)}
.cat-item-slug{font-size:12px;color:var(--text3)}
.cat-item-actions{display:flex;gap:6px}
.cat-item-btn{width:30px;height:30px;border-radius:8px;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;transition:all .15s}
.cat-item-btn.edit{background:rgba(59,130,246,.1);color:#3b82f6}
.cat-item-btn.edit:hover{background:rgba(59,130,246,.2)}
.cat-item-btn.delete{background:rgba(239,68,68,.1);color:#ef4444}
.cat-item-btn.delete:hover{background:rgba(239,68,68,.2)}

/* NET WORTH PAGE */
.chart-wrap{background:var(--card);border-radius:16px;padding:16px;margin-top:12px}

/* RECEIPT THUMBNAIL */
.receipt-thumb{cursor:pointer;font-size:16px;padding:4px;opacity:.7;transition:opacity .15s}
.receipt-thumb:hover{opacity:1}
.dark .receipt-thumb{opacity:.5}
.dark .receipt-thumb:hover{opacity:1}

/* RECEIPT MODAL */
#receiptModal{display:none;align-items:center;justify-content:center;position:fixed;inset:0;z-index:9999;background:rgba(0,0,0,.85);backdrop-filter:blur(8px)}

/* Net Worth Snapshot Items */
.nw-snapshot-item{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--bg);border-radius:12px;margin-bottom:8px}
.nw-snapshot-icon{width:40px;height:40px;border-radius:12px;background:rgba(139,92,246,.1);display:flex;align-items:center;justify-content:center;flex-shrink:0}
.nw-snapshot-icon .material-icons{font-size:22px;color:#8b5cf6}
.nw-snapshot-info{flex:1;min-width:0}
.nw-snapshot-amount{font-size:15px;font-weight:700;color:var(--text)}
.nw-snapshot-date{font-size:11px;color:var(--text3);margin-top:2px}
.nw-snapshot-actions{display:flex;gap:4px;flex-shrink:0}
.nw-act-btn{background:none;border:none;color:var(--text3);cursor:pointer;width:28px;height:28px;display:flex;align-items:center;justify-content:center;border-radius:8px;opacity:.4;transition:all .15s}
.nw-act-btn .material-icons{font-size:18px}
.nw-act-btn:hover{opacity:1;background:rgba(59,130,246,.1);color:#3b82f6}
.nw-act-delete:hover{background:rgba(239,68,68,.1)!important;color:var(--danger)!important}
.tx-title-gradient{background:linear-gradient(135deg,#1e3a8a,#3b82f6,#60a5fa);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;color:transparent}

/* Mobile Transaction Table */
@media (max-width: 800px) {
  .tx-table { min-width: 0 !important; display: block !important; }
  .tx-table thead { display: none !important; }
  .tx-table tbody { display: block !important; }
  .tx-table tbody tr {
    display: block !important;
    padding: 14px !important;
    margin: 0 0 12px 0 !important;
    border: 1px solid var(--border) !important;
    border-radius: 14px !important;
    background: var(--card) !important;
    box-shadow: var(--shadow);
  }
  .tx-table tbody td {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    padding: 5px 0 !important;
    border: none !important;
    border-bottom: 1px solid rgba(0,0,0,.04) !important;
    white-space: normal !important;
    text-align: right !important;
    font-size: 13px !important;
  }
  .tx-table tbody tr td:last-child { border-bottom: none !important; }
  .tx-table .col-date { color: var(--text3) !important; font-size: 11px !important; }
  .tx-table .col-date::before { content: "Tanggal"; font-weight: 700; color: var(--text2); font-size: 11px; margin-right: auto; }
  .tx-table .col-desc { font-weight: 600 !important; }
  .tx-table .col-desc::before { content: "Deskripsi"; font-weight: 700; color: var(--text2); font-size: 11px; margin-right: auto; }
  .tx-table .col-cat::before { content: "Kategori"; font-weight: 700; color: var(--text2); font-size: 11px; margin-right: auto; }
  .tx-table .col-amt::before { content: "Jumlah"; font-weight: 700; color: var(--text2); font-size: 11px; margin-right: auto; }
  .tx-table .col-amt { font-size: 14px !important; font-weight: 700 !important; }
  .tx-table .col-act {
    display: flex !important;
    justify-content: center !important;
    gap: 12px !important;
    border-top: 1px solid var(--border) !important;
    margin-top: 10px !important;
    padding-top: 10px !important;
    border-bottom: none !important;
  }
  .tx-table .col-act::before { display: none !important; }
  .tx-table .col-act button { padding: 8px !important; }
}
