:root{--bg:#f8fafc;--bg-card:#fff;--text:#0f172a;--text-muted:#64748b;--border:#e2e8f0;--income:#10b981;--expense:#ef4444;--emi:#f59e0b;--accent:#3b35b2;--shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;--shadow-lg:0 10px 15px -3px #00000014,0 4px 6px -2px #0000000a}[data-theme=dark]{--bg:#020617;--bg-card:#0f172a;--text:#f8fafc;--text-muted:#94a3b8;--border:#1e293b;--income:#34d399;--expense:#f87171;--emi:#fbbf24;--accent:#818cf8;--shadow:0 4px 6px -1px #00000080,0 2px 4px -1px #0000004d;--shadow-lg:0 10px 20px -5px #0009}*{box-sizing:border-box;margin:0;padding:0}body{-webkit-font-smoothing:antialiased;background:#f8fafc;background:var(--bg);color:#0f172a;color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,system-ui,sans-serif;line-height:1.5;overscroll-behavior-x:none;width:100%}.app,body{overflow-x:hidden}.app{min-height:100vh;padding-bottom:80px;touch-action:pan-y pinch-zoom}.container{margin:0 auto;max-width:600px;padding:12px}.header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px;padding:12px 0}.header h1{font-size:1.1rem;font-weight:700}.header-actions{align-items:center;display:flex;gap:6px}.toggle{height:22px;position:relative;width:40px}.toggle input{display:none}.toggle-slider{background:#e2e8f0;background:var(--border);border-radius:22px;cursor:pointer;inset:0;position:absolute;transition:.2s}.toggle-slider:before{background:#fff;border-radius:50%;bottom:3px;content:"";height:16px;left:3px;position:absolute;transition:.2s;width:16px}.toggle input:checked+.toggle-slider{background:#3b35b2;background:var(--accent)}.toggle input:checked+.toggle-slider:before{transform:translateX(18px)}.tabs{-webkit-overflow-scrolling:touch;background:#fff;background:var(--bg-card);border-radius:10px;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;box-shadow:var(--shadow);display:flex;gap:4px;margin-bottom:12px;overflow-x:auto;padding:4px;scroll-snap-type:x mandatory;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{background:#0000;border:none;border-radius:8px;color:#64748b;color:var(--text-muted);cursor:pointer;flex:0 0 auto;font-size:.8rem;font-weight:600;min-width:70px;padding:10px 14px;scroll-snap-align:start;text-align:center;transition:all .15s;white-space:nowrap}.tab:hover{color:#0f172a;color:var(--text)}.tab.active{background:#3b35b2;background:var(--accent);box-shadow:0 2px 8px #0080804d;color:#fff}.btn{border:none;border-radius:10px;cursor:pointer;font-size:.85rem;font-weight:600;padding:10px 14px;touch-action:manipulation;transition:all .15s}.btn:active{transform:scale(.97)}.btn-primary{background:#3b35b2;background:var(--accent);color:#fff}.btn-secondary{background:#f8fafc;background:var(--bg);border:1px solid #e2e8f0;border:1px solid var(--border);color:#0f172a;color:var(--text)}.btn-sm{font-size:.75rem;padding:6px 10px}.month-nav{align-items:center;display:flex;gap:12px;justify-content:center;margin-bottom:12px}.month-nav button{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;box-shadow:var(--shadow);color:#0f172a;color:var(--text);cursor:pointer;font-size:1.1rem;height:40px;width:40px}.month-nav button:active{background:#e2e8f0;background:var(--border)}.month-nav span{font-size:1rem;font-weight:700;min-width:140px;text-align:center}.money-needed-card{background:#3b35b2;border-radius:20px;box-shadow:0 10px 25px -5px #4f46e566;color:#fff;margin-bottom:16px;overflow:hidden;padding:24px 20px;position:relative;text-align:center}.money-needed-card:before{background:radial-gradient(circle at top right,#ffffff1a 0,#0000 60%);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.money-needed-label{font-size:.85rem;margin-bottom:6px;opacity:.9}.money-needed-value{font-size:1.8rem;font-weight:800;letter-spacing:-.5px;margin-bottom:6px}.money-needed-value.positive{color:#fff}.money-needed-value.negative{color:#fecaca;text-shadow:0 0 10px #ef444480}.money-needed-breakdown{font-size:.8rem;opacity:.85}.warning{background:#fef2f2;border:1px solid #fecaca;border-radius:10px;color:#b91c1c;font-size:.85rem;font-weight:500;margin-bottom:12px;padding:12px}[data-theme=dark] .warning{background:#450a0a;border-color:#7f1d1d;color:#fca5a5}.summary{grid-gap:12px;display:grid;gap:12px;grid-template-columns:1fr 1fr;margin-bottom:16px}.summary-card{background:#fff;background:var(--bg-card);border:1px solid #0000;border-radius:16px;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;box-shadow:var(--shadow);padding:16px;text-align:center;transition:transform .2s,box-shadow .2s}.summary-card:active{transform:scale(.98)}[data-theme=light] .summary-card{border:1px solid #e2e8f099}.summary-card .label{color:#64748b;color:var(--text-muted);font-size:.7rem;font-weight:700;letter-spacing:.5px;margin-bottom:6px;text-transform:uppercase}.summary-card .value{font-size:1.25rem;font-weight:800;letter-spacing:-.5px}.summary-card.income .value{color:#10b981;color:var(--income)}.summary-card.expense .value{color:#ef4444;color:var(--expense)}.summary-card.emi .value{color:#f59e0b;color:var(--emi)}.summary-card.cash .value{color:#3b35b2;color:var(--accent)}.summary-card.debt .value{color:#ef4444;color:var(--expense)}.summary-card.owe .value{color:#10b981;color:var(--income)}.summary-card.next-emi{background:#f59e0b0d;border:2px solid #f59e0b;border:2px solid var(--emi)}[data-theme=dark] .summary-card.next-emi{background:#fbbf240d}.summary-card.next-emi .value{color:#f59e0b;color:var(--emi)}.summary-card.positive .value{color:#10b981;color:var(--income)}.summary-card.negative .value{color:#ef4444;color:var(--expense)}.section{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:18px;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;box-shadow:var(--shadow);margin-bottom:16px;overflow:hidden}.section-header{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:12px 14px}.section-header h2{font-size:.85rem;font-weight:700}.emi-section{border-left:3px solid #f59e0b;border-left:3px solid var(--emi)}.emi-total{color:#f59e0b;color:var(--emi)}.emi-total,.expense-total{font-size:.9rem;font-weight:700}.expense-total{color:#ef4444;color:var(--expense)}.owe-section{border-left:3px solid #10b981;border-left:3px solid var(--income)}.owe-total{color:#10b981;color:var(--income);font-size:.9rem;font-weight:700}.list-item{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;min-height:56px;padding:12px 14px}.list-item:last-child{border-bottom:none}.list-item:active{background:#f8fafc;background:var(--bg)}.list-item-info{flex:1 1;min-width:0}.list-item-info h3{font-size:.9rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.list-item-info p{color:#64748b;color:var(--text-muted);font-size:.75rem;margin-top:2px}.list-item-right{align-items:center;display:flex;flex-shrink:0;gap:10px}.amount{font-size:.95rem;font-weight:700}.amount.income{color:#10b981;color:var(--income)}.amount.expense{color:#ef4444;color:var(--expense)}.amount.emi{color:#f59e0b;color:var(--emi)}.delete-btn{align-items:center;background:#f8fafc;background:var(--bg);border:none;border-radius:8px;color:#64748b;color:var(--text-muted);cursor:pointer;display:flex;font-size:1.2rem;height:32px;justify-content:center;width:32px}.delete-btn:active{color:#ef4444;color:var(--expense)}.delete-btn:active,.tag{background:#e2e8f0;background:var(--border)}.tag{border-radius:6px;color:#64748b;color:var(--text-muted);display:inline-block;font-size:.65rem;font-weight:600;padding:3px 8px}.tag.closed{background:#ef4444;background:var(--expense);color:#fff}.stats-row{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr 1fr;margin-bottom:12px}.stat-box{background:#fff;background:var(--bg-card);border-radius:12px;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;box-shadow:var(--shadow);padding:14px;text-align:center}.stat-box .stat-label{color:#64748b;color:var(--text-muted);font-size:.65rem;font-weight:600;margin-bottom:4px;text-transform:uppercase}.stat-box .stat-value{font-size:1rem;font-weight:700}.stat-box.next-emi{border:2px solid #f59e0b;border:2px solid var(--emi)}.stat-box.next-emi .stat-value{color:#f59e0b;color:var(--emi)}.loan-card{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);padding:14px}.loan-card:last-child{border-bottom:none}.loan-card.closed{opacity:.5}.loan-header{align-items:flex-start;display:flex;gap:10px;justify-content:space-between;margin-bottom:10px}.loan-header h3{flex:1 1;font-size:.95rem;font-weight:700}.loan-type{color:#64748b;color:var(--text-muted);display:block;font-size:.7rem;margin-top:2px}.loan-stats{grid-gap:8px;display:grid;font-size:.8rem;gap:8px;grid-template-columns:repeat(3,1fr)}.loan-stat .label{color:#64748b;color:var(--text-muted);font-size:.65rem;font-weight:600;text-transform:uppercase}.loan-stat .value{font-weight:700;margin-top:2px}.emi-progress-container{background:#e2e8f0;background:var(--border);border-radius:4px;height:8px;margin-top:14px;overflow:hidden}.emi-progress-bar{background:linear-gradient(90deg,#3b35b2,#10b981);background:linear-gradient(90deg,var(--accent) 0,var(--income) 100%);border-radius:4px;height:100%;min-width:0;transition:width .4s ease-out}.emi-progress-label{color:#64748b;color:var(--text-muted);font-size:.7rem;font-weight:500;margin-top:6px;text-align:center}.loan-card.closed .emi-progress-bar{background:#10b981;background:var(--income)}.cash-balance-card{background:#fff;background:var(--bg-card);border-radius:16px;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;box-shadow:var(--shadow);margin-bottom:12px;padding:24px;text-align:center}.cash-balance-card .label{color:#64748b;color:var(--text-muted);font-size:.8rem;font-weight:600;margin-bottom:8px}.cash-balance-card .value{font-size:2rem;font-weight:800;margin-bottom:16px}.cash-actions{display:flex;gap:10px;justify-content:center}.empty{color:#64748b;color:var(--text-muted);font-size:.9rem;padding:32px;text-align:center}.modal-overlay{align-items:flex-end;background:#0009;display:flex;inset:0;justify-content:center;padding:0;position:fixed;z-index:100}.modal{animation:slideUp .3s ease;background:#fff;background:var(--bg-card);border-radius:20px 20px 0 0;max-height:90vh;max-width:500px;overflow-y:auto;padding:20px;width:100%}@keyframes slideUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.modal h2{font-size:1.1rem;font-weight:700;margin-bottom:16px;text-align:center}.form-group{margin-bottom:14px}.form-group label{display:block;font-size:.8rem;font-weight:600;margin-bottom:6px}.form-group input,.form-group select{background:#f8fafc;background:var(--bg);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:10px;color:#0f172a;color:var(--text);font-size:1rem;padding:12px 14px;width:100%}.form-group input:focus,.form-group select:focus{border-color:#3b35b2;border-color:var(--accent);outline:none}.form-row{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr 1fr}.checkbox-label{align-items:center;cursor:pointer;display:flex;font-size:.9rem;gap:10px;padding:8px 0}.checkbox-label input{accent-color:#3b35b2;accent-color:var(--accent);height:20px;width:20px}.type-tabs{display:flex;gap:8px;margin-bottom:16px}.type-tab{background:#0000;border:2px solid #e2e8f0;border:2px solid var(--border);border-radius:10px;cursor:pointer;flex:1 1;font-size:.85rem;font-weight:600;padding:12px}.type-tab.income{color:#10b981;color:var(--income)}.type-tab.expense{color:#ef4444;color:var(--expense)}.type-tab.loan{color:#f59e0b;color:var(--emi)}.type-tab.income.active{background:#10b981;background:var(--income);border-color:#10b981;border-color:var(--income);color:#fff}.type-tab.expense.active{background:#ef4444;background:var(--expense);border-color:#ef4444;border-color:var(--expense);color:#fff}.type-tab.loan.active{background:#f59e0b;background:var(--emi);border-color:#f59e0b;border-color:var(--emi);color:#fff}.form-actions{display:flex;gap:10px;margin-top:20px;padding-bottom:20px}.form-actions button{flex:1 1;font-size:1rem;padding:14px}.import-zone{border:2px dashed #e2e8f0;border:2px dashed var(--border);border-radius:12px;cursor:pointer;padding:40px 20px;text-align:center}.import-zone:active{background:#f8fafc;background:var(--bg);border-color:#3b35b2;border-color:var(--accent)}.import-zone input{display:none}.import-result{margin-top:16px;padding:16px}.import-preview,.import-result{background:#f8fafc;background:var(--bg);border-radius:10px}.import-preview{font-size:.85rem;margin:12px 0;padding:12px}.preview-row{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;gap:10px;padding:8px 0}.preview-row:last-child{border-bottom:none}@media (min-width:640px){.container{max-width:700px;padding:20px}.header h1{font-size:1.3rem}.summary{grid-template-columns:repeat(4,1fr)}.summary.summary-row-2{grid-template-columns:repeat(2,1fr)}.money-needed-value{font-size:2.5rem}.summary-card .value{font-size:1.25rem}.stats-row{grid-template-columns:repeat(3,1fr)}.modal-overlay{align-items:center;padding:20px}.modal{border-radius:20px;max-width:450px}.app{padding-bottom:40px}}@media (min-width:1024px){.container{max-width:800px}.loan-stats{grid-template-columns:repeat(6,1fr)}}.login-container{align-items:center;background:#f8fafc;background:var(--bg);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-card{background:#fff;background:var(--bg-card);border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:20px;box-shadow:0 4px 6px -1px #0000000d,0 2px 4px -1px #00000008;box-shadow:var(--shadow);max-width:400px;padding:32px;width:100%}.login-header{margin-bottom:24px;text-align:center}.login-header h1{color:#0f172a;color:var(--text);font-size:1.5rem;margin-bottom:8px}.login-header p{color:#64748b;color:var(--text-muted);font-size:.9rem}.error-message{background:#fef2f2;border-radius:8px;color:#b91c1c;font-size:.9rem;margin-bottom:16px;padding:10px;text-align:center}.full-width{width:100%}.login-footer{color:#64748b;color:var(--text-muted);font-size:.9rem;margin-top:20px;text-align:center}.btn-link{background:none;border:none;color:#3b35b2;color:var(--accent);cursor:pointer;font-size:.9rem;font-weight:600;margin-left:6px;padding:0}.btn-link:hover{text-decoration:underline}.coming-soon-banner{background:#fff;background:var(--bg-card);border:2px dashed #3b35b2;border:2px dashed var(--accent);border-radius:12px;margin-bottom:24px;padding:24px;text-align:center}.payment-grid{grid-gap:12px;display:grid;gap:12px;grid-template-columns:repeat(2,1fr);margin-top:16px}.payment-btn{align-items:center;border-radius:12px;display:flex;font-size:1.1rem;font-weight:700;height:60px;justify-content:center;text-decoration:none;transition:transform .1s}.payment-btn:active{transform:scale(.98)}.theme-btn{align-items:center;background:#0000;border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:50%;color:var(--text-primary);cursor:pointer;display:flex;height:36px;justify-content:center;padding:0;transition:all .2s ease;width:36px}.theme-btn:hover{background:var(--bg-secondary);border-color:#3b35b2;border-color:var(--accent);color:#3b35b2;color:var(--accent);transform:rotate(15deg)}.theme-btn svg{height:20px;width:20px}.transaction-item{align-items:center;border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;padding:14px;transition:background .2s}.transaction-item:hover{background:#f8fafc;background:var(--bg)}.trx-left{gap:12px}.trx-left,.trx-type-icon{align-items:center;display:flex}.trx-type-icon{background:#f8fafc;background:var(--bg);border-radius:10px;color:#64748b;color:var(--text-muted);font-size:1.1rem;font-weight:700;height:36px;justify-content:center;width:36px}.trx-type-icon[data-type=income]{background:#dcfce7;color:#166534}[data-theme=dark] .trx-type-icon[data-type=income]{background:#05966933;color:#34d399}.trx-type-icon[data-type=cash_spend],.trx-type-icon[data-type=emi_payment],.trx-type-icon[data-type=expense]{background:#fee2e2;color:#991b1b}[data-theme=dark] .trx-type-icon[data-type=cash_spend],[data-theme=dark] .trx-type-icon[data-type=emi_payment],[data-theme=dark] .trx-type-icon[data-type=expense]{background:#ef444433;color:#f87171}.trx-type-icon[data-type=cash_add]{background:#e0f2fe;color:#075985}.trx-desc{font-size:.9rem;font-weight:600}.trx-date{color:#64748b;color:var(--text-muted);font-size:.75rem}.trx-amount{font-size:.95rem;font-weight:700}.trx-amount.positive{color:#10b981;color:var(--income)}.trx-amount.negative{color:#ef4444;color:var(--expense)}.user-badge{border:1px solid #e2e8f0;border:1px solid var(--border);border-radius:20px;color:#3b35b2;color:var(--accent);font-size:.75rem;font-weight:700;padding:4px 10px}.loading-overlay{align-items:center;background:#000000b3;display:flex;flex-direction:column;gap:16px;inset:0;justify-content:center;position:fixed;z-index:9999}.loading-overlay span{color:#fff;font-size:1rem;font-weight:600}.loading-spinner{animation:spin .8s linear infinite;border:4px solid #ffffff4d;border-radius:50%;border-top:4px solid var(--accent);height:48px;width:48px}.clean-table{border-collapse:collapse;font-size:.9rem;width:100%}.clean-table th{border-bottom:2px solid #e2e8f0;border-bottom:2px solid var(--border);color:#64748b;color:var(--text-muted);font-size:.75rem;font-weight:600;padding:12px;text-align:left;text-transform:uppercase}.clean-table td{border-bottom:1px solid #e2e8f0;border-bottom:1px solid var(--border);padding:12px;vertical-align:middle}.clean-table tr:last-child td{border-bottom:none}.clean-table tr:hover{background-color:#f8fafc;background-color:var(--bg)}.badge{background-color:#3b35b2;background-color:var(--accent);border-radius:4px;color:#fff;display:inline-block;font-size:.65rem;font-weight:600;margin-top:2px;opacity:.8;padding:2px 6px}.delete-btn-icon{background:#0000;border:none;border-radius:4px;color:#64748b;color:var(--text-muted);cursor:pointer;font-size:1.2rem;opacity:.4;padding:4px 8px;transition:all .2s}.delete-btn-icon:hover{background-color:#fee2e2;color:#b91c1c;opacity:1}[data-theme=dark] .delete-btn-icon:hover{background-color:#450a0a;color:#fca5a5}@media (max-width:480px){.clean-table td,.clean-table th{padding:10px 8px}.clean-table{font-size:.85rem}}.page-content{animation-duration:.4s;animation-fill-mode:forwards;animation-timing-function:cubic-bezier(.2,.8,.2,1);width:100%}@keyframes slideInRight{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.slide-right{animation-name:slideInRight}.slide-left{animation-name:slideInLeft}.user-badge{background:#f8fafc;background:var(--bg);border-radius:6px;color:#64748b;color:var(--text-muted);font-size:.8rem;font-weight:600;padding:4px 8px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.spin{animation:spin 1s linear infinite}@media (max-width:480px){.user-badge{display:none}}