/* ─── DESIGN TOKENS — aligned with SPG HUB Home ─── */
:root {
  --bg:#FAFBFE;--bg2:#FFF;--bg3:#F1F3F9;--bg4:#E8ECF4;
  --t1:#1A1A2E;--t2:#5A5A7A;--t3:#8A8AAA;--t4:#B0B0C8;
  --bd:rgba(0,0,0,.06);--bd2:rgba(0,0,0,.04);
  --acc:#7C3AED;--acc-bg:rgba(124,58,237,.06);--acc-bg2:#EDE9FE;--acc-dark:#6D28D9;
  --pink:#EC4899;
  --grad-brand:linear-gradient(135deg,#7C3AED,#EC4899);
  --grad-brand-subtle:linear-gradient(135deg,rgba(124,58,237,.06),rgba(236,72,153,.06));
  --pos:#16A34A;--pos-bg:rgba(22,163,74,.08);--pos-t:#15803D;
  --neg:#DC2626;--neg-bg:rgba(220,38,38,.06);--neg-t:#B91C1C;
  --warn:#D97706;--warn-bg:rgba(217,119,6,.06);--warn-t:#92400E;
  --rd:12px;--rd-lg:16px;--rd-xl:20px;--rd-pill:50px;
  --sh:0 1px 3px rgba(0,0,0,.04),0 4px 16px rgba(0,0,0,.04);
  --sh2:0 4px 24px rgba(124,58,237,.08);
  --safe-top:env(safe-area-inset-top,0px);
  --tr:all .15s cubic-bezier(.4,0,.2,1);
}
*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'SF Pro Text','Segoe UI',Roboto,'Helvetica Neue',sans-serif;font-size:14px;color:var(--t1);background:var(--bg);-webkit-font-smoothing:antialiased;overflow:hidden;height:100dvh}
a{color:var(--acc);text-decoration:none}

.shell{display:flex;flex-direction:column;height:100dvh;opacity:0;animation:fadeIn .2s ease-out forwards}
@keyframes fadeIn{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
.shell-body{display:flex;flex:1;overflow:hidden}

/* ─── TOPBAR — clean, minimal ─── */
.topbar{display:flex;align-items:center;min-height:44px;padding:calc(8px + var(--safe-top)) 20px 8px;border-bottom:1px solid var(--bd2);background:var(--bg2);z-index:10}
.hamburger{display:none;width:32px;height:32px;border:none;background:none;font-size:18px;cursor:pointer;color:var(--t2);border-radius:var(--rd);margin-right:8px;align-items:center;justify-content:center}
.topbar-logo{font-size:15px;font-weight:700;background:var(--grad-brand);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;cursor:pointer;margin-right:12px;letter-spacing:-.3px}
.topbar-section{font-size:11px;color:var(--t3);padding:3px 10px;background:var(--bg3);border-radius:var(--rd-pill)}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:4px}
.tb-btn{width:34px;height:34px;border:none;background:none;cursor:pointer;color:var(--t3);font-size:15px;border-radius:var(--rd);display:flex;align-items:center;justify-content:center;transition:var(--tr);position:relative}
.tb-btn:hover{background:var(--bg3);color:var(--t2)}
.tb-dot{position:absolute;top:6px;right:6px;width:7px;height:7px;border-radius:50%;background:var(--neg);border:2px solid var(--bg2)}
.tb-user{display:flex;align-items:center;gap:8px;padding:4px 8px;border-radius:var(--rd-pill);cursor:pointer;transition:var(--tr);margin-left:4px}
.tb-user:hover{background:var(--bg3)}
.tb-avatar{width:28px;height:28px;border-radius:50%;background:var(--acc-bg2);display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:var(--acc)}
.tb-name{font-size:12px;font-weight:600}

/* ─── SIDEBAR — text-only, pill active ─── */
.sidebar{width:220px;background:var(--bg2);border-right:1px solid var(--bd);display:flex;flex-direction:column;flex-shrink:0;transition:width .2s cubic-bezier(.4,0,.2,1);overflow:hidden;padding:10px 0}
.sidebar.closed{width:0;padding:0;border:none}
.sd-toggle{width:16px;height:40px;display:flex;align-items:center;justify-content:center;flex-shrink:0;cursor:pointer;color:var(--t4);font-size:10px;border-right:1px solid var(--bd2);transition:var(--tr);user-select:none}
.sd-toggle:hover{color:var(--t2);background:var(--bg3)}
.sd-nav{flex:1;overflow-y:auto;overflow-x:hidden}
.sd-divider{height:1px;background:var(--bd);margin:8px 16px}
.sd-item{padding:7px 16px;font-size:13px;color:var(--t2);cursor:pointer;transition:var(--tr);white-space:nowrap;display:flex;align-items:center;gap:8px}
.sd-item:hover{background:var(--bg3);border-radius:var(--rd-pill);margin:0 8px;padding:7px 12px}
.sd-item.active{color:var(--acc);font-weight:600;background:var(--acc-bg);border-radius:var(--rd-pill);margin:0 8px;padding:7px 12px}
.sd-badge{margin-left:auto;font-size:9px;font-weight:700;padding:1px 6px;border-radius:8px;min-width:16px;text-align:center;line-height:14px}
.sd-badge.accent{background:var(--acc-bg2);color:var(--acc)}.sd-badge.subtle{background:var(--bg3);color:var(--t3)}
.sd-group-head{padding:7px 16px;font-size:13px;color:var(--t2);cursor:pointer;display:flex;align-items:center;gap:6px;transition:var(--tr);user-select:none}
.sd-group-head:hover{background:var(--bg3);border-radius:var(--rd-pill);margin:0 8px;padding:7px 12px}
.sd-group-label{font-size:10px;font-weight:600;color:var(--t4);text-transform:uppercase;letter-spacing:1.2px;flex:1}
.sd-group-badges{display:flex;gap:3px;margin-right:2px}
.sd-group.open .sd-group-badges{display:none}
.sd-group-arr{font-size:9px;color:var(--t4);transition:transform .2s ease;flex-shrink:0}
.sd-group.open .sd-group-arr{transform:rotate(90deg)}
.sd-sub{max-height:0;overflow:hidden;transition:max-height .25s ease}
.sd-group.open .sd-sub{max-height:500px}
.sd-sub-item{padding:7px 16px;font-size:13px;color:var(--t2);cursor:pointer;transition:var(--tr);display:flex;align-items:center;gap:8px}
.sd-sub-item:hover{background:var(--bg3);border-radius:var(--rd-pill);margin:0 8px;padding:7px 12px}
.sd-sub-item.active{color:var(--acc);font-weight:600;background:var(--acc-bg);border-radius:var(--rd-pill);margin:0 8px;padding:7px 12px}
.sd-foot{padding:8px 16px;border-top:1px solid var(--bd)}
.sd-ver{font-size:9px;color:var(--t4);margin-bottom:4px}
.sd-logout{font-size:12px;color:var(--neg);cursor:pointer;font-weight:500}

/* ─── MAIN CONTENT ─── */
.shell-main{flex:1;overflow-y:auto;overflow-x:hidden}
.page{display:none;padding:24px 28px 60px;max-width:1000px;margin:0 auto}
.page.on{display:block}
.ph{margin-bottom:20px;display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}
.ph-title{font-size:20px;font-weight:700;letter-spacing:-.3px}
.grad-text{background:var(--grad-brand);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}
.ph-desc{font-size:12px;color:var(--t3)}

/* ─── KPI — clean white, no colored borders/gradients ─── */
.kpi-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:18px}
.kpi{background:var(--bg2);border-radius:var(--rd);padding:16px 18px;box-shadow:var(--sh);border:1px solid var(--bd2);transition:var(--tr)}
.kpi:hover{box-shadow:var(--sh2);transform:translateY(-1px)}
.kpi-label{font-size:11px;color:var(--t3);font-weight:500;margin-bottom:6px;display:flex;align-items:center;gap:5px}
.kpi-val{font-size:22px;font-weight:700;letter-spacing:-.5px}
.kpi-sub{font-size:11px;color:var(--t3);margin-top:4px;display:flex;align-items:center;gap:4px}
.kpi-up{color:var(--pos)}.kpi-down{color:var(--neg)}
.kpi-highlight{border-color:rgba(124,58,237,.15);box-shadow:var(--sh2)}

/* ─── CARDS — clean, no colored accent lines ─── */
.card{background:var(--bg2);border-radius:var(--rd);padding:18px;box-shadow:var(--sh);border:1px solid var(--bd2);margin-bottom:14px}
.tbl-card{padding:0;overflow-x:auto;-webkit-overflow-scrolling:touch}
.card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.card-title{font-size:13px;font-weight:600}
.card-link{font-size:11px;color:var(--acc);cursor:pointer;font-weight:500;transition:var(--tr)}
.card-link:hover{color:var(--acc-dark);text-decoration:underline}

/* ─── TABLE — minimal, clean ─── */
.tbl{width:100%;border-collapse:collapse;font-size:12px}
.tbl th{text-align:left;font-size:10px;font-weight:600;color:var(--t4);text-transform:uppercase;letter-spacing:.5px;padding:8px 10px;border-bottom:2px solid var(--bg3);cursor:pointer;user-select:none;white-space:nowrap}
.tbl th:hover{color:var(--acc)}
.tbl th .arr{font-size:8px;margin-left:2px;opacity:.4}
.tbl td{padding:10px;border-bottom:1px solid var(--bd2);vertical-align:middle}
.tbl tr:last-child td{border-bottom:none}
.tbl tr:hover td{background:var(--acc-bg)}
.tbl .r{text-align:right}.tbl .pos{color:var(--pos)}.tbl .neg{color:var(--neg)}.tbl .muted{color:var(--t3)}.tbl .bold{font-weight:600}.tbl .mono{font-variant-numeric:tabular-nums}
.tbl-action{font-size:10px;color:var(--acc);cursor:pointer;font-weight:600;padding:4px 10px;border-radius:var(--rd-pill);transition:var(--tr);border:none;background:none}
.tbl-action:hover{background:var(--acc-bg2);color:var(--acc-dark)}

/* ─── TAGS — muted, consistent ─── */
.tag{display:inline-block;font-size:10px;font-weight:600;padding:2px 10px;border-radius:var(--rd-pill);line-height:1.4}
.tag-pos{background:var(--pos-bg);color:var(--pos-t)}
.tag-neg{background:var(--neg-bg);color:var(--neg-t)}
.tag-warn{background:var(--warn-bg);color:var(--warn-t)}
.tag-accent{background:var(--acc-bg2);color:var(--acc)}
.tag-muted{background:var(--bg3);color:var(--t3)}

/* ─── PROGRESS ─── */
.prog{height:5px;background:var(--bg3);border-radius:4px;overflow:hidden;margin-top:6px}
.prog-fill{height:100%;border-radius:4px;transition:width .3s ease}

/* ─── QUICK ACTIONS — primary = solid purple, ghost = subtle ─── */
.quick-bar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.quick-btn{display:flex;align-items:center;gap:6px;padding:8px 16px;border-radius:var(--rd-pill);font-size:12px;font-weight:600;cursor:pointer;transition:var(--tr);border:none}
.quick-btn:hover{transform:translateY(-1px)}
.quick-primary{background:var(--grad-brand);color:#fff;box-shadow:0 2px 8px rgba(124,58,237,.25)}
.quick-primary:hover{opacity:.9;box-shadow:0 4px 16px rgba(124,58,237,.35)}
.quick-ghost{background:var(--bg2);color:var(--t2);border:1px solid var(--bd)}
.quick-ghost:hover{border-color:rgba(124,58,237,.15);color:var(--acc);box-shadow:var(--sh)}

/* ─── ALERT — subtle left border ─── */
.alert-bar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-radius:var(--rd);margin-bottom:14px;font-size:12px;font-weight:500;border-left:3px solid}
.alert-warn{background:var(--warn-bg);color:var(--warn-t);border-left-color:var(--warn)}
.alert-danger{background:var(--neg-bg);color:var(--neg-t);border-left-color:var(--neg)}
.alert-info{background:var(--acc-bg);color:var(--acc);border-left-color:var(--acc)}
.alert-bar .alert-link{margin-left:auto;font-weight:600;cursor:pointer}

/* ─── AI INSIGHT — clean, subtle ─── */
.ai-card{background:var(--acc-bg);border-radius:var(--rd);padding:14px 16px;margin-bottom:14px;display:flex;gap:12px;align-items:flex-start;border:1px solid rgba(124,58,237,.08);cursor:pointer;transition:var(--tr)}
.ai-card:hover{border-color:rgba(124,58,237,.15);box-shadow:var(--sh2)}
.ai-avatar{width:28px;height:28px;border-radius:50%;background:var(--grad-brand);display:flex;align-items:center;justify-content:center;font-size:12px;color:#fff;flex-shrink:0}
.ai-body{flex:1;min-width:0}
.ai-label{font-size:9px;font-weight:600;color:var(--acc);text-transform:uppercase;letter-spacing:.5px;margin-bottom:3px}
.ai-text{font-size:12px;color:var(--t2);line-height:1.5}
.ai-text strong{color:var(--t1)}
.ai-actions{display:flex;gap:6px;margin-top:8px}
.ai-action{font-size:10px;padding:3px 10px;border-radius:var(--rd-pill);background:var(--acc-bg2);color:var(--acc);font-weight:600;cursor:pointer;border:none;transition:var(--tr)}
.ai-action:hover{background:rgba(124,58,237,.15)}

/* ─── ACCOUNT CARDS — subtle, not heavy gradients ─── */
.acc-scroll{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px;margin-bottom:16px;scroll-snap-type:x mandatory}
.acc-card{min-width:200px;border-radius:var(--rd);padding:16px 18px;color:#fff;position:relative;overflow:hidden;flex-shrink:0;scroll-snap-align:start;cursor:pointer;transition:var(--tr)}
.acc-card:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(0,0,0,.15)}
.acc-card::after{content:'';position:absolute;top:-30px;right:-30px;width:90px;height:90px;border-radius:50%;background:rgba(255,255,255,.06)}
.acc-card::before{content:'';position:absolute;bottom:-20px;left:-20px;width:70px;height:70px;border-radius:50%;background:rgba(255,255,255,.04)}
.acc-type{font-size:9px;text-transform:uppercase;letter-spacing:1px;opacity:.6;margin-bottom:4px}
.acc-name{font-size:13px;font-weight:600;margin-bottom:2px}
.acc-bank{font-size:10px;opacity:.5;margin-bottom:12px}
.acc-bal{font-size:22px;font-weight:700;letter-spacing:-.5px}
.acc-date{font-size:9px;opacity:.5;margin-top:4px}
.acc-tag{position:absolute;top:12px;right:14px;font-size:8px;padding:2px 7px;border-radius:var(--rd-pill);background:rgba(255,255,255,.15);font-weight:600}
.acc-total{min-width:160px;border-radius:var(--rd);padding:16px;border:1px dashed var(--bd);background:var(--bg2);display:flex;flex-direction:column;justify-content:center;flex-shrink:0;scroll-snap-align:start;cursor:pointer;transition:var(--tr)}
.acc-total:hover{border-color:rgba(124,58,237,.15)}
.acc-total-label{font-size:10px;color:var(--t3);margin-bottom:4px}
.acc-total-val{font-size:20px;font-weight:700;letter-spacing:-.3px}
.acc-total-sub{font-size:10px;color:var(--t3);margin-top:6px;line-height:1.4}

/* ─── TABS — pill style ─── */
.tabs{display:flex;gap:4px;margin-bottom:14px;flex-wrap:wrap}
.tab{padding:6px 14px;font-size:12px;font-weight:500;color:var(--t3);border-radius:var(--rd-pill);cursor:pointer;transition:var(--tr);border:1px solid var(--bd2)}
.tab:hover{background:var(--bg3);color:var(--t2);border-color:var(--bd)}
.tab.on{background:var(--acc);color:#fff;border-color:var(--acc);box-shadow:0 2px 8px rgba(124,58,237,.25)}
.tab .cnt{font-size:10px;font-weight:700;margin-left:4px;opacity:.7}
.g2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.toolbar{display:flex;gap:8px;margin-bottom:14px;align-items:center;flex-wrap:wrap}
.search-box{padding:7px 12px;font-size:12px;border:1px solid var(--bd);border-radius:var(--rd-pill);background:var(--bg2);outline:none;width:200px;transition:var(--tr)}
.search-box:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(124,58,237,.08)}
.filter-btn{padding:6px 14px;font-size:12px;font-weight:500;border:1px solid var(--bd);border-radius:var(--rd-pill);background:var(--bg2);cursor:pointer;color:var(--t2);transition:var(--tr)}
.month-nav{display:flex;align-items:center;gap:4px}
.month-nav .btn{padding:6px 12px;font-size:16px;line-height:1}
.month-nav .btn:disabled{opacity:.35;cursor:default}
.month-nav-label{min-width:118px;text-align:center;font-weight:600;font-size:13px}
.tbl tr.row-link{cursor:pointer}
.row-link{cursor:pointer}
.bar-row{margin:10px 0}
.mfa-qr{width:180px;height:180px;background:#fff;border-radius:var(--rd);padding:6px}
.view-switch{display:flex;background:var(--bg3);border-radius:var(--rd-pill);padding:2px;margin-right:6px}
.view-switch button{border:none;background:none;padding:5px 10px;border-radius:var(--rd-pill);font-size:12px;font-weight:600;color:var(--t2);cursor:pointer}
@media(max-width:768px){.topbar-section,.tb-name{display:none}.view-switch{margin-right:2px}.view-switch button{padding:5px 8px;font-size:11px}.topbar-right{gap:4px}}
.view-switch button.on{background:var(--bg2);color:var(--acc);box-shadow:0 1px 3px rgba(0,0,0,.08)}
.share-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:8px 0;border-bottom:1px solid var(--bd)}
.share-row select{padding:6px 8px;border:1px solid var(--bd);border-radius:var(--rd);font-size:12px;background:var(--bg)}
.busy-overlay{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:900;display:flex;align-items:center;justify-content:center}
.busy-box{background:var(--bg2);border-radius:var(--rd-lg);padding:22px 28px;display:flex;align-items:center;gap:14px;font-weight:600;box-shadow:0 20px 60px rgba(0,0,0,.15)}
.rcpt-photo-sm{width:120px;height:120px;background:var(--bg3);border-radius:var(--rd);overflow:hidden;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:32px}
.rcpt-photo-sm img{width:100%;height:100%;object-fit:cover}
.rcpt-photo-lg{background:var(--bg3);border-radius:var(--rd);min-height:160px;max-height:50vh;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:48px}
.rcpt-photo-lg img{width:100%;max-height:50vh;object-fit:contain}
.match-row{display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--bd)}
.txn-tools{display:flex;gap:8px;margin-bottom:12px;flex-wrap:wrap}
.split-line{display:grid;grid-template-columns:1fr 96px 96px auto auto;gap:6px;align-items:center;margin-bottom:8px}
.split-line select,.split-line input[type=number]{padding:8px;border:1px solid var(--bd);border-radius:var(--rd);font-size:13px;background:var(--bg);min-width:0}
.sl-tax{font-size:11px;display:flex;align-items:center;gap:3px;white-space:nowrap}
.sl-del{padding:6px 10px}
.split-total{margin-top:10px;font-weight:700;font-size:13px}
@media(max-width:768px){.split-line{grid-template-columns:1fr 1fr;}.split-line .sl-cat{grid-column:1/-1}.split-line .sl-del{justify-self:end;min-width:44px}}
.hist-row{font-size:12px;padding:4px 0;border-bottom:1px solid var(--bd)}
.mbar{display:grid;grid-template-columns:72px 1fr 92px;gap:10px;align-items:center;padding:6px 0;border-bottom:1px solid var(--bd)}
.mbar:last-child{border-bottom:none}
.mbar-label{font-size:12px;font-weight:600}
.mbar-row{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--t2);margin:2px 0}
.mbar-fill{height:8px;border-radius:4px;min-width:2px}
.pos-bg{background:var(--pos)}
.neg-bg{background:var(--neg)}
.mbar-net{text-align:right;font-size:12px;font-weight:700}
.bar-head{display:flex;justify-content:space-between;font-size:12px;margin-bottom:4px}
.check-label{display:flex!important;align-items:center;gap:8px;font-size:13px!important;font-weight:500!important;color:var(--t1)!important}
.check-label input{width:auto!important}
.tbl tr.row-link:hover td{background:rgba(124,58,237,.04)}
.filter-btn:hover{border-color:rgba(124,58,237,.15);color:var(--acc)}
.btn{padding:7px 16px;font-size:12px;font-weight:600;border:none;border-radius:var(--rd-pill);cursor:pointer;transition:var(--tr)}
.btn-primary{background:var(--grad-brand);color:#fff;box-shadow:0 2px 8px rgba(124,58,237,.25)}
.btn-primary:hover{opacity:.9;box-shadow:0 4px 16px rgba(124,58,237,.35)}
.btn-ghost{background:none;color:var(--acc);border:1px solid var(--bd)}
.btn-ghost:hover{background:var(--acc-bg)}
.btn-danger{background:none;color:var(--neg);border:1px solid var(--neg)}
.btn-danger:hover{background:var(--neg-bg)}
.spacer{flex:1}
.chart-ph{background:var(--bg);border:1px dashed var(--bd);border-radius:var(--rd);height:180px;display:flex;align-items:center;justify-content:center;color:var(--t4);font-size:12px;margin:12px 0}

/* ─── RECEIPT GRID ─── */
.rcpt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px}
.rcpt-thumb{aspect-ratio:3/4;border-radius:var(--rd);background:var(--bg3);display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:10px;color:var(--t3);cursor:pointer;transition:var(--tr);border:2px solid transparent;position:relative;overflow:hidden}
.rcpt-thumb:hover{border-color:rgba(124,58,237,.15);transform:translateY(-2px);box-shadow:var(--sh2)}
.rcpt-thumb .rcpt-icon{font-size:24px;margin-bottom:4px;opacity:.4}
.rcpt-thumb .rcpt-amt{font-weight:600;color:var(--t2);font-size:11px}
.rcpt-thumb .rcpt-date{font-size:9px;color:var(--t4)}
.rcpt-status{position:absolute;top:6px;right:6px;width:16px;height:16px;border-radius:50%;color:#fff;font-size:9px;display:flex;align-items:center;justify-content:center}
.rcpt-matched{background:var(--pos)}.rcpt-unmatched{background:var(--warn)}

/* ─── CREDIT CARD — dark card ─── */
.cc-card{background:linear-gradient(135deg,#1A1A2E,#2d2d44);border-radius:var(--rd);padding:16px 18px;color:#fff;min-width:210px;position:relative;overflow:hidden;flex-shrink:0}
.cc-card::after{content:'';position:absolute;top:-30px;right:-30px;width:80px;height:80px;border-radius:50%;background:rgba(255,255,255,.04)}
.cc-name{font-size:10px;opacity:.5;text-transform:uppercase;letter-spacing:1px;margin-bottom:8px}
.cc-num{font-size:13px;letter-spacing:2px;font-variant-numeric:tabular-nums;margin-bottom:10px;opacity:.7}
.cc-row{display:flex;justify-content:space-between;align-items:flex-end}
.cc-bal{font-size:16px;font-weight:700}
.cc-limit{font-size:10px;opacity:.4}
.cc-due{font-size:10px;background:rgba(255,255,255,.1);padding:3px 8px;border-radius:var(--rd-pill)}
.cc-list{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px;margin-bottom:14px}

/* ─── GOAL ─── */
.goal-item{display:flex;align-items:center;gap:14px;padding:12px 0;border-bottom:1px solid var(--bd2)}
.goal-item:last-child{border-bottom:none}
.goal-icon{width:36px;height:36px;border-radius:var(--rd);display:flex;align-items:center;justify-content:center;font-size:16px;flex-shrink:0;background:var(--bg3)}
.goal-info{flex:1;min-width:0}
.goal-name{font-size:13px;font-weight:600}
.goal-meta{font-size:11px;color:var(--t3);margin-top:2px}
.goal-amt{text-align:right}
.goal-cur{font-size:14px;font-weight:700}
.goal-target{font-size:10px;color:var(--t3)}

/* ─── LOAN BAR ─── */
.loan-bar{display:flex;height:24px;border-radius:var(--rd);overflow:hidden;margin:10px 0;background:var(--bg3)}
.loan-seg{display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:600;color:#fff}

/* ─── WHO AVATAR ─── */
.who{display:inline-flex;align-items:center;gap:4px;font-size:11px;font-weight:600}
.who-dot{width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:700;color:#fff;flex-shrink:0}
.who-or{background:var(--acc)}.who-pn{background:var(--pink)}

/* ─── TOOLTIP ─── */
.tip{position:relative;display:inline-flex;align-items:center;justify-content:center;width:14px;height:14px;border-radius:50%;background:var(--bg3);color:var(--t4);font-size:9px;font-weight:700;cursor:help;margin-left:4px;flex-shrink:0}
.tip:hover::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translateX(-50%);background:var(--t1);color:#fff;padding:5px 10px;border-radius:8px;font-size:10px;font-weight:400;white-space:normal;z-index:99;max-width:220px;line-height:1.4}

/* ─── NOTIFICATION ─── */
.notif-drop{position:absolute;top:100%;right:0;width:320px;max-height:400px;background:var(--bg2);border-radius:var(--rd-lg);box-shadow:var(--sh),0 8px 32px rgba(0,0,0,.12);z-index:200;transform:translateY(4px);opacity:0;pointer-events:none;transition:all .15s ease;overflow:hidden}
.notif-drop.show{transform:translateY(8px);opacity:1;pointer-events:auto}
.notif-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 10px;font-size:13px;font-weight:600}
.notif-mark{font-size:11px;color:var(--acc);cursor:pointer;font-weight:500}
.notif-list{max-height:340px;overflow-y:auto}
.notif-item{padding:10px 16px;font-size:12px;cursor:pointer;transition:var(--tr);border-left:3px solid transparent}
.notif-item:hover{background:var(--bg3)}
.notif-item.unread{background:var(--acc-bg);border-left-color:var(--acc)}
.notif-title{font-weight:600;font-size:12px;margin-bottom:2px}
.notif-body{color:var(--t3);font-size:11px}
.notif-time{color:var(--t4);font-size:10px;margin-top:3px}

/* ─── FAB ─── */
.fab{position:fixed;bottom:24px;right:24px;width:48px;height:48px;border-radius:var(--rd-lg);background:var(--acc);color:#fff;border:none;font-size:22px;font-weight:300;cursor:pointer;box-shadow:0 4px 16px rgba(124,58,237,.3);z-index:100;display:flex;align-items:center;justify-content:center;transition:var(--tr)}
.fab:hover{transform:translateY(-2px);box-shadow:0 6px 24px rgba(124,58,237,.4)}
.qa-overlay{position:fixed;inset:0;background:rgba(0,0,0,.15);z-index:600;opacity:0;pointer-events:none;transition:opacity .2s ease}
.qa-overlay.show{opacity:1;pointer-events:auto}
.qa-popup{position:fixed;bottom:84px;right:24px;width:220px;background:var(--bg2);border-radius:var(--rd-lg);box-shadow:var(--sh),0 8px 32px rgba(0,0,0,.12);z-index:601;transform:translateY(8px) scale(.95);opacity:0;pointer-events:none;transition:all .2s cubic-bezier(.4,0,.2,1);padding:8px}
.qa-popup.show{transform:translateY(0) scale(1);opacity:1;pointer-events:auto}
.qa-item{padding:10px 12px;font-size:13px;color:var(--t2);cursor:pointer;border-radius:var(--rd);display:flex;align-items:center;gap:10px;transition:var(--tr)}
.qa-item:hover{background:var(--bg3);color:var(--t1)}
.qa-icon{font-size:15px;width:20px;text-align:center}
.qa-sep{height:1px;background:var(--bd);margin:4px 8px}

/* ─── AI CHAT PANEL ─── */
.ai-chat-btn{position:fixed;bottom:24px;right:80px;width:44px;height:44px;border-radius:50%;background:var(--grad-brand);color:#fff;border:none;font-size:18px;cursor:pointer;box-shadow:0 4px 16px rgba(124,58,237,.3);z-index:100;display:flex;align-items:center;justify-content:center;transition:var(--tr)}
.ai-chat-btn:hover{transform:scale(1.08);box-shadow:0 6px 24px rgba(124,58,237,.4)}
.ai-overlay{position:fixed;inset:0;background:rgba(0,0,0,.15);z-index:700;opacity:0;pointer-events:none;transition:opacity .2s}
.ai-overlay.show{opacity:1;pointer-events:auto}
.ai-panel{position:fixed;top:0;right:-400px;width:400px;height:100%;background:var(--bg2);z-index:701;box-shadow:-8px 0 32px rgba(0,0,0,.08);display:flex;flex-direction:column;transition:right .3s cubic-bezier(.4,0,.2,1)}
.ai-panel.show{right:0}
.ai-panel-head{padding:16px 20px;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:10px}
.ai-panel-logo{width:32px;height:32px;border-radius:50%;background:var(--grad-brand);display:flex;align-items:center;justify-content:center;color:#fff;font-size:14px}
.ai-panel-title{flex:1}
.ai-panel-name{font-size:14px;font-weight:700}
.ai-panel-sub{font-size:10px;color:var(--t3)}
.ai-panel-close{width:32px;height:32px;border:none;background:none;font-size:16px;cursor:pointer;color:var(--t3);border-radius:var(--rd);display:flex;align-items:center;justify-content:center}
.ai-msgs{flex:1;overflow-y:auto;padding:16px 20px;display:flex;flex-direction:column;gap:12px}
.ai-msg{max-width:85%;padding:10px 14px;border-radius:var(--rd) var(--rd) var(--rd) 4px;font-size:12px;line-height:1.5}
.ai-msg.bot{background:var(--bg3);color:var(--t1);align-self:flex-start}
.ai-msg.user{background:var(--acc);color:#fff;align-self:flex-end;border-radius:var(--rd) var(--rd) 4px var(--rd)}
.ai-msg .ai-q{display:block;margin-top:6px;padding:5px 10px;background:var(--acc-bg);border-radius:var(--rd-pill);font-size:11px;color:var(--acc);cursor:pointer;border:none;text-align:left;transition:var(--tr);width:100%}
.ai-msg .ai-q:hover{background:var(--acc-bg2)}
.ai-input-row{padding:12px 20px;border-top:1px solid var(--bd);display:flex;gap:8px}
.ai-input{flex:1;padding:8px 14px;border:1px solid var(--bd);border-radius:var(--rd-pill);font-size:12px;outline:none;background:var(--bg)}
.ai-input:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(124,58,237,.08)}
.ai-send{width:36px;height:36px;border:none;border-radius:50%;background:var(--acc);color:#fff;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--tr)}
.ai-send:hover{background:var(--acc-dark)}

/* ─── MOBILE SIDEBAR ─── */
.sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.3);z-index:500;opacity:0;pointer-events:none;transition:opacity .25s ease}
.sidebar-overlay.open{opacity:1;pointer-events:auto}
.sidebar-panel{position:fixed;top:0;left:-280px;width:280px;height:100%;background:var(--bg2);z-index:501;transition:left .25s cubic-bezier(.4,0,.2,1);display:flex;flex-direction:column;overflow:hidden;padding-top:calc(var(--safe-top) + 8px)}
.sidebar-panel.open{left:0}
.mob-header{padding:20px 16px;border-bottom:1px solid var(--bd);display:flex;align-items:center;gap:12px}
.mob-avatar{width:36px;height:36px;border-radius:50%;background:var(--acc-bg2);display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--acc)}
.mob-info{flex:1}.mob-name{font-size:13px;font-weight:600}.mob-sub{font-size:10px;color:var(--t3)}
.mob-close{width:32px;height:32px;border:none;background:none;font-size:16px;cursor:pointer;color:var(--t3);border-radius:var(--rd);display:flex;align-items:center;justify-content:center}
.mob-nav{flex:1;overflow-y:auto;padding:10px 0}

/* ─── HERO SUMMARY (v7 new) ─── */
.hero{background:var(--bg2);border-radius:var(--rd-lg);padding:28px;box-shadow:var(--sh);border:1px solid var(--bd2);text-align:center;margin-bottom:16px}
.hero-val{font-size:34px;font-weight:700;letter-spacing:-1px;margin:4px 0}
.hero-label{font-size:11px;color:var(--t3);font-weight:500}
.hero-meta{font-size:11px;color:var(--t3);margin-top:8px}
.hero-stats{display:flex;justify-content:center;gap:24px;margin-top:14px;font-size:12px;font-weight:500}

/* ─── ACTION ITEM (v7 new) ─── */
.action-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:var(--rd);font-size:13px;transition:var(--tr)}
.action-item:hover{background:var(--bg3)}
.action-icon{font-size:16px;width:20px;text-align:center;flex-shrink:0}
.action-text{flex:1}
.action-urgent{background:var(--neg-bg)}

/* ─── TAB CONTENT (v7 new) ─── */
.tab-content{display:none}
.tab-content.on{display:block}

/* ─── RESPONSIVE ─── */
@media(max-width:768px){
  .sidebar,.sd-toggle{display:none}
  .hamburger{display:flex}
  .tb-name{display:none}
  .page{padding:16px 16px 60px}
  .fab{bottom:20px;right:16px}

  .qa-popup{right:16px;bottom:80px}
  .g2{grid-template-columns:1fr}
  .kpi-row{grid-template-columns:1fr 1fr}
  .ai-panel{width:100%;right:-100%}
  .notif-drop{position:fixed;top:auto;bottom:0;right:0;left:0;width:100%;max-height:60vh;border-radius:var(--rd-xl) var(--rd-xl) 0 0}
  /* phone: readable text and finger-sized controls (44px) */
  body{font-size:15px}
  input,select,textarea{font-size:16px}
  .btn,.tab,.tbl-action{min-height:44px;display:inline-flex;align-items:center;justify-content:center;font-size:14px}
  .mob-nav [data-p]{min-height:44px}
  .mob-logout{padding:14px 20px;font-size:15px;border-top:1px solid var(--bd)}
  .page{padding-bottom:96px}
}

/* ─── PAGE LOADING ─── */
.page-loading{display:flex;align-items:center;justify-content:center;height:300px}
.spinner{width:28px;height:28px;border:3px solid var(--bg3);border-top-color:var(--acc);border-radius:50%;animation:spin .6s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* ─── LOGIN ─── */
.login-shell{display:flex;align-items:center;justify-content:center;height:100dvh;background:var(--bg)}
.login-box{width:100%;max-width:360px;padding:40px 32px;text-align:center}
.login-logo{font-size:24px;font-weight:700;background:var(--grad-brand);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-bottom:4px}
.login-sub{font-size:12px;color:var(--t3);margin-bottom:28px}
.login-error{font-size:12px;color:var(--neg);margin-bottom:12px;min-height:16px}
.login-inp{display:block;width:100%;padding:10px 14px;font-size:13px;border:1px solid var(--bd);border-radius:var(--rd);background:var(--bg2);outline:none;margin-bottom:10px;transition:var(--tr)}
.login-inp:focus{border-color:var(--acc);box-shadow:0 0 0 3px rgba(124,58,237,.08)}
.login-btn{display:block;width:100%;padding:11px;font-size:13px;font-weight:600;border:none;border-radius:var(--rd-pill);background:var(--grad-brand);color:#fff;cursor:pointer;box-shadow:0 2px 8px rgba(124,58,237,.25);transition:var(--tr);margin-top:4px}
.login-btn:hover{opacity:.9;box-shadow:0 4px 16px rgba(124,58,237,.35)}
.login-alt{font-size:12px;color:var(--t3);margin-top:16px}
.login-alt a{color:var(--acc);font-weight:600}

/* ─── EMPTY STATE ─── */
.empty-state{text-align:center;padding:40px 20px;color:var(--t3)}
.empty-icon{font-size:40px;margin-bottom:12px;opacity:.4}
.empty-text{font-size:13px;margin-bottom:16px}

/* ─── MODAL ─── */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:800;display:flex;align-items:center;justify-content:center;animation:fadeIn .15s ease-out}
.modal-box{background:var(--bg2);border-radius:var(--rd-lg);max-width:480px;width:92%;max-height:85vh;overflow-y:auto;box-shadow:0 20px 60px rgba(0,0,0,.15);padding:24px;position:relative}
.modal-title{font-size:16px;font-weight:700;margin-bottom:18px;display:flex;align-items:center;gap:8px}
.modal-close{position:absolute;top:14px;right:14px;border:none;background:none;font-size:18px;cursor:pointer;color:var(--t3);width:28px;height:28px;border-radius:var(--rd);display:flex;align-items:center;justify-content:center;transition:var(--tr)}
.modal-close:hover{background:var(--bg3);color:var(--t1)}

/* ─── FORM ELEMENTS ─── */
.fg2{margin-bottom:14px}
.fg2 label{font-size:11px;font-weight:600;color:var(--t2);margin-bottom:4px;display:block}
.fg2 input,.fg2 select,.fg2 textarea{width:100%;padding:9px 12px;border:1px solid var(--bd);border-radius:var(--rd);font-size:13px;background:var(--bg);transition:var(--tr);font-family:inherit}
.fg2 input:focus,.fg2 select:focus,.fg2 textarea:focus{border-color:var(--acc);outline:none;box-shadow:0 0 0 3px rgba(124,58,237,.08)}
.fg2 textarea{resize:vertical;min-height:60px}
.fg2 .hint{font-size:10px;color:var(--t4);margin-top:3px}
.form-row{display:flex;gap:12px}
.form-row>*{flex:1}

/* ─── TYPE TOGGLE ─── */
.type-toggle{display:flex;border-radius:var(--rd-pill);overflow:hidden;border:1px solid var(--bd);margin-bottom:14px}
.type-toggle-btn{flex:1;padding:8px;text-align:center;font-size:12px;font-weight:600;cursor:pointer;transition:var(--tr);background:var(--bg);color:var(--t3);border:none}
.type-toggle-btn.active-expense{background:var(--neg-bg);color:var(--neg)}
.type-toggle-btn.active-income{background:var(--pos-bg);color:var(--pos)}

/* ─── COLOR PICKER ─── */
.color-row{display:flex;gap:6px;flex-wrap:wrap}
.color-dot{width:28px;height:28px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:var(--tr)}
.color-dot:hover{transform:scale(1.15)}
.color-dot.on{border-color:var(--t1);box-shadow:0 0 0 2px var(--bg2)}

/* ─── MEMBER CHIP ─── */
.member-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:var(--rd-pill);background:var(--bg3);font-size:12px;font-weight:500;margin:3px}
.member-chip .m-icon{font-size:14px}
.member-chip .m-edit{font-size:10px;color:var(--t4);cursor:pointer;margin-left:4px}
.member-chip .m-edit:hover{color:var(--neg)}

/* ─── TOAST ─── */
.wp-toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(20px);background:var(--t1);color:#fff;padding:10px 24px;border-radius:var(--rd-pill);font-size:13px;font-weight:500;opacity:0;transition:all .3s ease;z-index:9999;pointer-events:none;box-shadow:0 4px 16px rgba(0,0,0,.2)}
.wp-toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

@media(max-width:768px){
  .modal-box{width:96%;max-height:90vh;padding:18px}
  .form-row{flex-direction:column;gap:0}
}
