@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');
:root{--bg:#f5f7fb;--card:#fff;--ink:#0c1424;--muted:#718096;--line:#e7ebf2;--brand:#635bff;--brand2:#8a7dff;--mint:#16b98b;--danger:#ef5b70;--amber:#e7a928;--shadow:0 18px 50px rgba(32,43,70,.08)}*{box-sizing:border-box}body{margin:0;font-family:'DM Sans',sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer}a{text-decoration:none;color:inherit}.hidden{display:none!important}.eyebrow{font-size:11px;letter-spacing:.16em;font-weight:800;color:#7d8798}.toast{position:fixed;right:24px;top:22px;z-index:1000;background:#101828;color:#fff;padding:13px 17px;border-radius:13px;box-shadow:var(--shadow);opacity:0;transform:translateY(-10px);pointer-events:none;transition:.25s}.toast.show{opacity:1;transform:none}.auth-view{min-height:100vh;display:grid;grid-template-columns:minmax(360px,560px) minmax(320px,520px);justify-content:center;gap:70px;align-items:center;padding:50px;background:radial-gradient(circle at 10% 10%,#e9e7ff 0,transparent 32%),radial-gradient(circle at 85% 85%,#d9fff3 0,transparent 30%),#f7f8fc;position:relative;overflow:hidden}.auth-card{background:rgba(255,255,255,.86);backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.9);box-shadow:0 35px 90px rgba(49,58,95,.14);border-radius:30px;padding:36px;position:relative;z-index:2}.brand-lockup,.side-brand{display:flex;gap:12px;align-items:center}.brand-icon{width:42px;height:42px;border-radius:14px;display:grid;place-items:center;background:linear-gradient(135deg,var(--brand),#9d8fff);color:#fff;font:800 22px Manrope;box-shadow:0 12px 24px rgba(99,91,255,.25)}.brand-lockup b,.side-brand b{display:block;font:800 15px Manrope;letter-spacing:.12em}.brand-lockup span,.side-brand span{display:block;color:#98a2b3;font-size:9px;letter-spacing:.18em;margin-top:2px}.auth-copy{margin:55px 0 28px}.auth-copy h1{font:800 42px/1.08 Manrope;margin:8px 0 13px;letter-spacing:-.04em}.auth-copy p{color:var(--muted);line-height:1.65;margin:0}.auth-tabs{display:flex;background:#f0f2f7;border-radius:12px;padding:4px;margin-bottom:22px}.auth-tab{border:0;background:transparent;flex:1;padding:10px;border-radius:9px;color:#778195;font-weight:700}.auth-tab.active{background:#fff;color:var(--ink);box-shadow:0 4px 12px rgba(20,30,50,.07)}.auth-form{display:grid;gap:15px}.auth-form label,.form-grid label{font-size:12px;font-weight:700;color:#465166;display:grid;gap:7px}.auth-form input,.form-grid input,.form-grid select,.form-grid textarea,.table-search{border:1px solid var(--line);background:#fff;border-radius:12px;padding:13px 14px;outline:none;color:var(--ink)}input:focus,select:focus,textarea:focus{border-color:#a69fff;box-shadow:0 0 0 4px rgba(99,91,255,.09)}.primary-btn{border:0;background:linear-gradient(135deg,var(--brand),#806fff);color:#fff;border-radius:12px;padding:13px 17px;font-weight:800;box-shadow:0 12px 25px rgba(99,91,255,.22)}.primary-btn.wide{width:100%;display:flex;justify-content:space-between}.auth-foot{display:flex;justify-content:space-between;color:#9aa3b2;font-size:10px;margin-top:22px}.auth-preview{width:100%;background:#0d1628;border-radius:28px;padding:28px;color:#fff;box-shadow:0 35px 90px rgba(13,22,40,.24);position:relative;overflow:hidden}.auth-preview:after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;background:#635bff;filter:blur(80px);opacity:.35;right:-80px;top:-90px}.preview-top,.preview-bottom{display:flex;justify-content:space-between;position:relative;z-index:1}.preview-top span,.preview-top b{font-size:11px;color:#aab4c7}.preview-profit{padding:65px 0 25px;position:relative;z-index:1}.preview-profit small{color:#aab4c7;display:block}.preview-profit strong{display:block;font:800 38px Manrope;margin:8px 0}.preview-profit span{font-size:12px;color:#58e1b7}.preview-bars{height:170px;display:flex;align-items:end;gap:13px;position:relative;z-index:1}.preview-bars i{flex:1;background:linear-gradient(#8e84ff,#625bff);border-radius:8px 8px 2px 2px;min-height:15px}.preview-bottom{border-top:1px solid #253047;padding-top:18px;margin-top:24px}.preview-bottom div{display:grid;gap:5px}.preview-bottom small{color:#7f8aa0}.preview-bottom b{font-size:14px}.app{min-height:100vh;display:flex}.sidebar{width:255px;background:#0b1220;color:#d9deea;display:flex;flex-direction:column;padding:25px 16px;position:fixed;inset:0 auto 0 0;z-index:20}.side-brand{padding:0 10px 24px;border-bottom:1px solid #202a3d}.side-brand b{color:#fff}.workspace{display:flex;align-items:center;gap:9px;padding:15px 10px;margin:10px 0 15px;background:#121c2f;border:1px solid #1e2a40;border-radius:14px}.workspace-dot{width:8px;height:8px;background:#41d7aa;border-radius:50%;box-shadow:0 0 0 4px rgba(65,215,170,.1)}.workspace div{flex:1}.workspace small{display:block;font-size:8px;letter-spacing:.14em;color:#78849a}.workspace b{display:block;font-size:12px;margin-top:2px;color:#fff}.workspace>span:last-child{color:#7f8ba0}.sidebar nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;color:#8f9bb0;text-align:left;padding:12px 13px;border-radius:11px;display:flex;gap:12px;align-items:center;font-weight:700;font-size:13px}.nav-item span{width:19px;text-align:center}.nav-item:hover,.nav-item.active{background:linear-gradient(90deg,#1b2540,#131c30);color:#fff}.nav-item.active{box-shadow:inset 3px 0 var(--brand)}.side-tip{margin-top:auto;background:linear-gradient(145deg,#18223a,#10182a);border:1px solid #23304a;border-radius:18px;padding:16px}.side-tip span{font-size:9px;color:#8f9bb0;letter-spacing:.16em}.side-tip b{display:block;color:#fff;margin:6px 0}.side-tip p{font-size:10px;color:#8994a8;line-height:1.5;margin:0}.logout{border:0;background:transparent;color:#8590a4;text-align:left;padding:15px 10px 0;font-weight:700}.main{margin-left:255px;min-width:0;flex:1}.topbar{height:86px;background:rgba(255,255,255,.84);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 36px;position:sticky;top:0;z-index:10}.topbar h2{margin:3px 0 0;font:800 21px Manrope}.top-kicker{font-size:9px;color:#929baa;letter-spacing:.15em;font-weight:800}.top-actions{display:flex;align-items:center;gap:12px}.search{display:flex;gap:8px;align-items:center;border:1px solid var(--line);background:#f9fafc;border-radius:12px;padding:9px 12px;width:250px}.search span{color:#9aa3b2}.search input{border:0;outline:0;background:transparent;width:100%;font-size:12px}.icon-circle{width:38px;height:38px;border:1px solid var(--line);background:#fff;border-radius:12px}.profile{display:flex;align-items:center;gap:9px}.profile>div:first-child{width:36px;height:36px;background:#e9e7ff;color:#554bde;border-radius:50%;display:grid;place-items:center;font-weight:800}.profile b,.profile small{display:block}.profile b{font-size:12px}.profile small{font-size:9px;color:#8a94a6;margin-top:2px}.page{padding:32px 36px 60px}.page-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-end;margin-bottom:25px}.page-head h1{font:800 30px Manrope;margin:5px 0 7px;letter-spacing:-.03em}.page-head p{margin:0;color:var(--muted);font-size:12px}.page-actions{display:flex;gap:9px}.secondary-btn{border:1px solid var(--line);background:#fff;border-radius:11px;padding:11px 15px;font-weight:800;color:#4d596e}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:15px}.stat{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:0 10px 30px rgba(31,43,67,.04);position:relative;overflow:hidden}.stat:after{content:"";position:absolute;width:80px;height:80px;background:#eceaff;border-radius:50%;right:-35px;top:-30px}.stat small{color:#8d97a7;font-size:10px}.stat b{display:block;font:800 25px Manrope;margin:7px 0}.stat .up{color:var(--mint);font-size:10px}.dash-grid{display:grid;grid-template-columns:1.6fr 1fr;gap:15px;margin-top:15px}.panel{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 10px 30px rgba(31,43,67,.04)}.panel-head{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:18px}.panel-head h3{font:800 15px Manrope;margin:3px 0}.panel-head p{font-size:10px;color:#8c96a7;margin:0}.chart-scroll{display:block;width:100%;max-width:100%;overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;touch-action:pan-x pan-y;scrollbar-width:auto;scrollbar-color:#aeb6c8 #f0f2f7;padding-bottom:2px}.chart-scroll::-webkit-scrollbar{height:10px}.chart-scroll::-webkit-scrollbar-track{background:#f0f2f7;border-radius:999px}.chart-scroll::-webkit-scrollbar-thumb{background:#aeb6c8;border-radius:999px;border:2px solid #f0f2f7}.chart-scroll::-webkit-scrollbar-thumb:hover{background:#8792a8}.chart-inner{min-width:760px;width:100%}.chart{height:260px;display:flex;align-items:end;gap:12px;padding:15px 4px 0;border-bottom:1px solid #eef1f5}.bar-col{flex:1;min-width:34px;height:100%;display:flex;align-items:end;gap:4px}.bar-col i{flex:1;border-radius:5px 5px 0 0;min-height:3px}.bar-income{background:linear-gradient(#8d84ff,#635bff)}.bar-expense{background:#dfe3ec}.chart-labels{display:flex;justify-content:space-between;color:#a2abba;font-size:9px;padding-top:9px}.chart-labels span{flex:1;min-width:34px;text-align:center}.metric-list{display:grid;gap:12px}.metric-row{display:flex;align-items:center;justify-content:space-between}.metric-row>div{display:flex;gap:9px;align-items:center}.metric-dot{width:9px;height:9px;border-radius:50%}.metric-dot.green{background:#31c89c}.metric-dot.red{background:#ef6a7c}.metric-row span{font-size:11px;color:#697589}.metric-row b{font-size:12px}.recent-list{display:grid}.recent{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid #f0f2f6}.recent:last-child{border-bottom:0}.recent b{font-size:11px}.recent small{display:block;color:#8e98a8;font-size:9px;margin-top:3px}.income{color:#18a77e}.expense{color:#e4576b}.table-panel{padding:0;overflow:hidden}.toolbar{display:flex;justify-content:space-between;gap:10px;padding:15px;border-bottom:1px solid var(--line)}.toolbar .table-search{max-width:260px;flex:1}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:700px}th,td{text-align:left;padding:13px 16px;border-bottom:1px solid #eef1f5;font-size:11px}th{font-size:9px;color:#8c96a7;letter-spacing:.08em;text-transform:uppercase;background:#fbfcfe}td small{display:block;color:#8c96a7;margin-top:3px}.badge{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:9px;font-weight:800}.badge.green{background:#e8faf4;color:#11956f}.badge.red{background:#ffedf0;color:#d84e63}.badge.amber{background:#fff6df;color:#b37b0c}.badge.gray{background:#eef1f5;color:#677286}.action-link{border:0;background:transparent;color:#635bff;font-weight:800;font-size:10px}.form-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.form-grid textarea{min-height:90px;resize:vertical}.modal{position:fixed;inset:0;z-index:100}.modal-backdrop{position:absolute;inset:0;background:rgba(7,13,25,.55);backdrop-filter:blur(5px)}.modal-card{position:relative;z-index:1;background:#fff;border-radius:22px;max-width:650px;width:calc(100% - 32px);max-height:90vh;overflow:auto;margin:5vh auto;padding:25px;box-shadow:0 30px 100px rgba(0,0,0,.2)}.modal-close{position:absolute;right:16px;top:13px;border:0;background:#f1f3f7;border-radius:50%;width:30px;height:30px;font-size:18px}.modal-card h3{font:800 20px Manrope;margin:0 0 6px}.modal-card p{font-size:11px;color:#7f8999}.items{display:grid;gap:8px;margin:15px 0}.item-line{display:grid;grid-template-columns:1fr 70px 100px 70px 34px;gap:7px}.item-line input{border:1px solid var(--line);padding:9px;border-radius:9px}.danger-btn{border:0;background:#ffedf0;color:#d94f64;border-radius:9px}.plans{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.plan-card{background:#fff;border:1px solid var(--line);border-radius:20px;padding:23px;position:relative}.plan-card.featured{border:2px solid var(--brand);box-shadow:0 15px 40px rgba(99,91,255,.13)}.plan-card .tag{position:absolute;right:14px;top:14px;background:#eeebff;color:#5b50dc;font-size:8px;padding:5px 8px;border-radius:999px;font-weight:800}.plan-card h3{font:800 18px Manrope}.plan-card .price{font:800 31px Manrope;margin:14px 0}.plan-card .price span{font-size:10px;color:#8b95a5;font-weight:500}.plan-card ul{padding:0;margin:20px 0;list-style:none;display:grid;gap:9px;color:#657084;font-size:10px}.plan-card li:before{content:'✓';color:var(--mint);font-weight:800;margin-right:7px}.plan-card button{width:100%}.notice{background:#f3f1ff;border:1px solid #e4e0ff;color:#5b51c7;border-radius:13px;padding:12px;font-size:10px;margin-bottom:15px}.notice.bad{background:#fff0f2;border-color:#ffd6dc;color:#b3324b}.admin-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:15px}.mobile-menu{display:none}.empty{padding:45px;text-align:center;color:#8a94a4;font-size:12px}.danger-text{color:var(--danger)}@media(max-width:1050px){.stats{grid-template-columns:repeat(2,1fr)}.plans{grid-template-columns:1fr}.dash-grid,.admin-grid{grid-template-columns:1fr}.auth-view{grid-template-columns:minmax(320px,560px)}.auth-preview{display:none}}@media(max-width:780px){.sidebar{transform:translateX(-100%);transition:.25s}.sidebar.open{transform:none}.main{margin-left:0}.mobile-menu{display:inline-flex;border:0;background:#fff;border:1px solid var(--line);border-radius:9px;padding:7px;margin-right:7px}.topbar{padding:0 17px}.top-actions .search,.icon-circle{display:none}.page{padding:22px 16px 45px}.page-head{align-items:flex-start;flex-direction:column}.stats{grid-template-columns:1fr 1fr}.form-grid{grid-template-columns:1fr}.auth-view{padding:20px}.auth-card{padding:25px}.auth-copy{margin-top:40px}.auth-copy h1{font-size:34px}}@media(max-width:480px){.stats{grid-template-columns:1fr}.profile div:last-child{display:none}.page-head h1{font-size:25px}}

/* Savro: confine horizontal scrolling to the chart only */
.dash-grid {
  min-width: 0;
  grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr);
}

.dash-grid > .panel {
  min-width: 0;
  max-width: 100%;
}

.chart-scroll {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  box-sizing: border-box;
  overflow-x: auto;
  overflow-y: hidden;
  overscroll-behavior-x: contain;
}

.chart-inner {
  width: 760px;
  min-width: 760px;
  max-width: none;
}

.chart {
  width: 100%;
  box-sizing: border-box;
}

@media(max-width:480px) {
  .stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
  }

  .stat {
    min-width: 0;
    padding: 14px 12px;
    border-radius: 15px;
  }

  .stat b {
    font-size: 20px;
    overflow-wrap: anywhere;
  }

  .stat small {
    font-size: 9px;
  }

  .profile div:last-child {
    display: none;
  }

  .page-head h1 {
    font-size: 25px;
  }
}

/* Savro: mobile dashboard panel layout fix */
@media (max-width: 780px) {
  .dash-grid,
  .admin-grid {
    grid-template-columns: minmax(0, 1fr) !important;
    width: 100%;
    min-width: 0;
    gap: 16px;
  }

  .dash-grid > .panel,
  .admin-grid > .panel {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    box-sizing: border-box;
  }

  /* Keep the chart scroll inside its own panel */
  .chart-scroll {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    overscroll-behavior-x: contain;
    -webkit-overflow-scrolling: touch;
  }

  .chart-inner {
    width: 760px;
    min-width: 760px;
    max-width: none;
  }

  /* Prevent dashboard content from widening the page */
  .main,
  .page {
    min-width: 0;
    max-width: 100%;
  }
}

@media (max-width: 480px) {
  .panel {
    padding: 16px;
    border-radius: 18px;
  }

  .panel-head {
    gap: 10px;
    flex-wrap: wrap;
  }

  .panel-head h3 {
    overflow-wrap: anywhere;
  }

  .metric-row {
    gap: 10px;
  }

  .metric-row > div {
    min-width: 0;
  }

  .metric-row b {
    flex-shrink: 0;
    text-align: right;
  }

  .recent {
    gap: 10px;
    min-width: 0;
  }

  .recent > div {
    min-width: 0;
    overflow-wrap: anywhere;
  }

  .recent > strong,
  .recent > b {
    flex-shrink: 0;
  }
}
/* Fix topbar search and refresh alignment */
.topbar {
  min-width: 0;
}

.top-actions {
  flex: 0 1 auto;
  min-width: 0;
  gap: 12px;
}

.top-actions .search {
  flex: 0 1 250px;
  width: 250px;
  min-width: 0;
  box-sizing: border-box;
}

.search input {
  flex: 1 1 auto;
  min-width: 0;
  text-overflow: ellipsis;
}

.top-actions .icon-circle {
  flex: 0 0 38px;
}

.top-actions .profile {
  flex: 0 0 auto;
}