:root{color:#172033;font-synthesis:none;text-rendering:geometricprecision;-webkit-font-smoothing:antialiased;background:#f4f7fb;font-family:Inter,Segoe UI,system-ui,sans-serif}*{box-sizing:border-box}html,body,#root{min-width:320px;min-height:100%;margin:0}body{overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}.app-shell{background:#f4f7fb;grid-template-columns:220px minmax(0,1fr);min-height:100vh;display:grid}.sidebar{background:#fffffff5;border-right:1px solid #e8edf4;flex-direction:column;padding:24px 16px;display:flex}.brand{align-items:center;gap:10px;height:48px;padding:0 10px;font-size:18px;font-weight:750;display:flex}.brand-mark{color:#fff;background:#5b67d9;border-radius:12px;place-items:center;width:34px;height:34px;display:grid;box-shadow:0 8px 18px #5b67d938}.sidebar nav{margin-top:24px}.nav-item{color:#4b5568;background:0 0;border:0;border-radius:12px;align-items:center;gap:12px;width:100%;height:48px;padding:0 14px;font-weight:650;transition:color .12s,background-color .12s;display:flex}.nav-item.active{color:#4e5bc5;background:#eef0ff}.nav-item span{font-size:18px}.content{min-width:0;height:100vh;padding:28px 36px 40px;overflow:auto}.topbar,.topbar-actions,.panel-header,.card-label,.category-meta{align-items:center;display:flex}.topbar{justify-content:space-between;margin-bottom:24px}.topbar h1,.panel h2,.modal h2{margin:0;line-height:1.25}.topbar h1{letter-spacing:-.02em;font-size:28px}.eyebrow{color:#8a94a6;text-transform:uppercase;letter-spacing:.08em;margin:0 0 5px;font-size:12px;font-weight:750}.topbar-actions{gap:8px}.month-button,.primary-button,.secondary-button{color:#394258;background:#fff;border:1px solid #dde4ee;border-radius:12px;height:42px;font-weight:700;transition:opacity .12s,transform .12s,background-color .12s}.month-button{min-width:42px;font-size:20px}.month-button.today{min-width:68px;font-size:13px}.month-button:hover{background:#f8faff}.primary-button{color:#fff;background:#5b67d9;border-color:#5b67d9;padding:0 16px;box-shadow:0 8px 18px #5b67d929}.primary-button:active,.month-button:active{transform:scale(.98)}.error-banner{color:#8d3434;background:#fff4f4;border:1px solid #f0b4b4;border-radius:12px;margin-bottom:16px;padding:12px 14px}.search-row{align-items:center;gap:8px;height:48px;margin-bottom:16px;display:flex}.search-row input{color:#172033;background:#fff;border:1px solid #dde4ee;border-radius:12px;outline:none;flex:1;height:48px;padding:0 14px}.search-row input:focus{border-color:#7f88dc;box-shadow:0 0 0 3px #5b67d917}.search-row button{color:#69748a;background:#edf1f6;border:0;border-radius:10px;height:36px;padding:0 12px}.summary-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-bottom:16px;display:grid}.summary-card{background:#fff;border:1px solid #e8edf4;border-radius:14px;min-height:116px;padding:20px 22px;box-shadow:0 10px 30px -18px #1720332e}.summary-card strong{letter-spacing:-.03em;margin-top:18px;font-size:25px;display:block}.card-label{color:#748096;gap:8px;font-size:13px;font-weight:700}.status-dot{border-radius:50%;width:8px;height:8px}.status-dot.income{background:#3eb489}.status-dot.expense{background:#ed7b7b}.status-dot.balance-dot{background:#5b67d9}.summary-card.balance{border-top:3px solid #6672d9}.dashboard-grid{grid-template-columns:minmax(420px,1.55fr) minmax(300px,.75fr);align-items:start;gap:16px;display:grid}.panel{background:#fff;border:1px solid #e8edf4;border-radius:14px;box-shadow:0 10px 30px -18px #17203329}.panel-header{border-bottom:1px solid #edf1f6;justify-content:space-between;height:82px;padding:18px 22px}.panel-header h2{font-size:17px}.panel-header>span{color:#98a1b1;font-size:12px}.transaction-list{height:430px;overflow-y:auto}.transaction-row{border-bottom:1px solid #f0f3f7;grid-template-columns:42px minmax(0,1fr) auto 32px 32px;align-items:center;gap:12px;min-height:78px;margin:0 16px;display:grid}.transaction-row:last-child{border-bottom:0}.transaction-icon{border-radius:12px;place-items:center;width:40px;height:40px;font-size:18px;font-weight:800;display:grid}.transaction-icon.income{color:#278967;background:#eaf7f2}.transaction-icon.expense{color:#b95a5a;background:#fff0f0}.transaction-info{flex-direction:column;gap:5px;min-width:0;display:flex}.transaction-info strong{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.transaction-info span{color:#909aaa;font-size:12px}.amount{white-space:nowrap;font-size:14px}.income-text{color:#278967}.expense-text{color:#9b5555}.delete-button{color:#0000;background:0 0;border:0;border-radius:9px;width:32px;height:32px;font-size:18px}.transaction-row:hover .delete-button{color:#9da6b4}.delete-button:hover{color:#b95555;background:#fff0f0}.edit-button{color:#7d8798;font-size:14px}.edit-button:hover{background:#eef0ff;color:#4e5bc5!important}.annual-panel{min-height:440px}.annual-grid{grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px;padding:20px;display:grid}.annual-month{text-align:left;color:#69748a;background:#fff;border:1px solid #e8edf4;border-radius:12px;grid-template-columns:1fr;gap:5px;min-height:118px;padding:14px;transition:transform .12s,border-color .12s,background-color .12s;display:grid}.annual-month:hover{background:#fafbff;border-color:#ccd3ee;transform:translateY(-2px)}.annual-month strong{color:#172033;text-transform:capitalize}.annual-month span{font-size:12px}.annual-month b{color:#394258;margin-top:4px;font-size:14px}.annual-income{color:#278967}.annual-expense{color:#b95555}.reserve-panel{min-height:440px}.reserve-content{grid-template-columns:minmax(260px,.9fr) minmax(320px,1.1fr);gap:20px;min-height:358px;padding:20px;display:grid}.reserve-total{color:#fff;background:linear-gradient(135deg,#6672d9,#7f6fd1);border-radius:14px;flex-direction:column;justify-content:center;padding:32px;display:flex;box-shadow:0 16px 36px -18px #5b67d973}.reserve-total span{opacity:.86;font-size:13px;font-weight:700}.reserve-total strong{letter-spacing:-.04em;margin-top:12px;font-size:clamp(28px,4vw,42px);line-height:1.1}.reserve-total small{opacity:.78;margin-top:14px}.reserve-details{align-content:center;gap:10px;display:grid}.reserve-details article{border:1px solid #e8edf4;border-radius:12px;gap:9px;min-height:92px;padding:18px;display:grid}.reserve-details span{color:#748096;font-size:12px;font-weight:700}.reserve-details strong{font-size:20px}.empty-state{text-align:center;color:#99a2b1;place-content:center;height:100%;display:grid}.empty-state span{color:#dfe5ee;font-size:42px}.empty-state strong{color:#69748a;margin-top:8px}.empty-state p{margin:5px 0 0;font-size:13px}.category-chart{height:430px;padding:22px;overflow-y:auto}.category-row+.category-row{margin-top:20px}.category-meta{justify-content:space-between;gap:12px;font-size:13px}.category-meta span{color:#69748a;align-items:center;min-width:0;display:flex}.category-meta strong{white-space:nowrap}.category-dot{border-radius:50%;width:9px;height:9px;margin-right:8px}.category-track{background:#edf1f6;border-radius:999px;height:7px;margin-top:9px;overflow:hidden}.category-fill{border-radius:999px;height:100%}.dot-0,.fill-0{background:#6571d9}.dot-1,.fill-1{background:#4fb39a}.dot-2,.fill-2{background:#e69b6c}.dot-3,.fill-3{background:#9b7ad8}.dot-4,.fill-4{background:#6da2cc}.empty-chart{color:#98a1b1;place-items:center;height:100%;font-size:13px;display:grid}.modal-backdrop{z-index:20;background:#19213047;place-items:center;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:16px;width:min(520px,100vw - 32px);padding:24px;box-shadow:0 24px 80px #17203333}.modal-header{justify-content:space-between;align-items:flex-start;height:48px;display:flex}.modal-header button{color:#7d8798;background:#f2f4f8;border:0;border-radius:10px;width:34px;height:34px;font-size:18px}.modal form{gap:14px;margin-top:14px;display:grid}.modal label{color:#69748a;gap:7px;font-size:12px;font-weight:750;display:grid}.modal input,.modal select{color:#172033;background:#fff;border:1px solid #dde4ee;border-radius:12px;outline:none;width:100%;height:44px;padding:0 12px}.modal input:focus,.modal select:focus{border-color:#7f88dc;box-shadow:0 0 0 3px #5b67d917}.form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.modal-actions{justify-content:flex-end;gap:10px;margin-top:6px;display:flex}.secondary-button{padding:0 16px}.account-button{padding-inline:14px}.auth-page{background:linear-gradient(135deg,#f4f7fb,#edf0fb);place-items:center;min-height:100vh;padding:20px;display:grid}.auth-card{color:#172033;background:#fff;border:1px solid #e5eaf3;border-radius:16px;gap:14px;width:min(420px,100%);padding:30px;display:grid;box-shadow:0 18px 50px #1720331f}.auth-card h1{margin:4px 0 0;font-size:26px}.auth-card>p{color:#748096;margin:0 0 4px;line-height:1.5}.auth-brand{align-items:center;gap:10px;font-size:18px;display:flex}.auth-card label{color:#69748a;gap:7px;font-size:12px;font-weight:750;display:grid}.auth-card input{border:1px solid #dde4ee;border-radius:12px;outline:none;height:46px;padding:0 12px}.auth-card input:focus{border-color:#7f88dc;box-shadow:0 0 0 3px #5b67d917}.auth-submit{width:100%}.auth-submit:disabled{cursor:wait;opacity:.65}.auth-link{color:#5965c7;background:0 0;border:0;padding:4px;font-weight:700}.auth-message{color:#8d3434;background:#fff4f4;border-radius:10px;padding:10px 12px;font-size:13px}@media (width<=980px){.app-shell{grid-template-columns:76px minmax(0,1fr)}.brand{padding:0 5px}.brand>span:last-child,.nav-item:not(.active){font-size:0}.sidebar{padding-inline:10px}.nav-item{justify-content:center;padding:0}.nav-item span{font-size:18px!important}.dashboard-grid{grid-template-columns:1fr}.categories-panel{margin-bottom:20px}.annual-grid{grid-template-columns:repeat(3,minmax(140px,1fr))}.reserve-content{grid-template-columns:1fr}}@media (width<=650px){.app-shell{display:block}.sidebar{display:none}.content{height:100vh;padding:20px 16px}.topbar{align-items:flex-start}.topbar-actions{flex-wrap:wrap;justify-content:flex-end}.topbar-actions .primary-button{order:4;width:100%;margin-top:6px}.summary-grid{grid-template-columns:1fr}.summary-card{min-height:94px}.summary-card strong{margin-top:10px}.transaction-list,.category-chart{height:360px}.transaction-row{grid-template-columns:42px minmax(0,1fr) auto 32px 32px}.delete-button{opacity:0;position:absolute;right:24px}}
