:root{font-family:Inter,system-ui,-apple-system,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;--bg-page: #f0f7f0;--bg-card: #fff;--bg-hover: #f5faf5;--bg-accent: #e8f5e8;--bg-input: #fff;--text: #2d3a2d;--text-secondary: #555;--text-muted: #999;--text-green: #6b8f6b;--green: #4caf50;--green-hover: #43a047;--green-dark: #2e7d32;--green-darker: #1a5c1a;--green-heading: #2a6e2a;--border: #c5dcc5;--border-light: #d4e8d4;--border-row: #eef5ee;--red: #ef5350;--red-dark: #d32f2f;--red-text: #c06060;--red-bg: #fdf2f2;--red-border: #e0a0a0;--blue: #42a5f5;--shadow-sm: 0 1px 4px rgba(0,0,0,.06);--shadow-md: 0 4px 16px rgba(0,0,0,.12);--shadow-lg: 0 4px 24px rgba(0,0,0,.1);--color-scheme: light;color:var(--text);background-color:var(--bg-page);accent-color:var(--green);color-scheme:light}[data-theme=dark]{--bg-page: #141814;--bg-card: #1e221e;--bg-hover: #262a26;--bg-accent: #2a322a;--bg-input: #232823;--text: #d4dbd4;--text-secondary: #a0a8a0;--text-muted: #707870;--text-green: #8aaa8a;--green: #4caf50;--green-hover: #5cc060;--green-dark: #66bb6a;--green-darker: #76cc7a;--green-heading: #5cb860;--border: #344034;--border-light: #2e382e;--border-row: #252d25;--red: #ef5350;--red-dark: #ef6360;--red-text: #e08080;--red-bg: #362020;--red-border: #503030;--blue: #42a5f5;--shadow-sm: 0 1px 4px rgba(0,0,0,.3);--shadow-md: 0 4px 16px rgba(0,0,0,.4);--shadow-lg: 0 4px 24px rgba(0,0,0,.4);--color-scheme: dark;color-scheme:dark}body{margin:0;min-width:320px;overscroll-behavior-x:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}h2{font-size:1.2rem;margin:1.5rem 0 .8rem;color:var(--green-darker)}h3{color:var(--green-heading)}button{border-radius:8px;border:1px solid var(--border);padding:.5em 1em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--bg-card);color:var(--text);cursor:pointer}@media(hover:hover){button{transition:all .2s}button:hover{background-color:var(--bg-accent);border-color:var(--green)}}button:active{background-color:var(--bg-accent);border-color:var(--green)}button:disabled{opacity:.4;cursor:default}.app{max-width:1280px;margin:0 auto;padding:0 1.5rem 2rem}.navbar{display:flex;align-items:center;gap:1.5rem;padding:1rem 0;border-bottom:2px solid var(--border);margin-bottom:1.5rem}.navbar .logo{font-size:1.5rem;font-weight:800;margin-right:auto;color:var(--green-dark)}.navbar a{color:var(--text-green);text-decoration:none;padding:.4rem 1rem;border-radius:8px;font-weight:500;transition:all .2s}@media(hover:hover){.navbar a:hover{background:var(--bg-accent);color:var(--green-dark)}}.navbar a.active{color:#fff;background:var(--green)}.nav-spacer{flex:1}.burger-wrap{display:block;position:relative}.burger-btn{background:none;border:1px solid var(--border);border-radius:8px;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;padding:0;cursor:pointer}.burger-icon{display:block;width:16px;height:1.5px;background:var(--green-dark);position:relative}.burger-icon:before,.burger-icon:after{content:"";display:block;width:16px;height:1.5px;background:var(--green-dark);position:absolute;left:0}.burger-icon:before{top:-5px}.burger-icon:after{top:5px}.burger-menu{position:absolute;right:0;top:100%;margin-top:.4rem;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-md);display:flex;flex-direction:column;min-width:160px;z-index:100}.burger-menu a,.burger-menu .burger-menu-item{white-space:nowrap}.burger-menu a{padding:.8rem 1.2rem;color:var(--text-green);text-decoration:none;font-weight:500;border-bottom:1px solid var(--border-row)}.burger-menu a:last-child{border-bottom:none}.burger-menu a:hover,.burger-menu a.active{background:var(--bg-accent);color:var(--green-dark)}.burger-divider{height:1px;background:var(--border);margin:.2rem 0}.burger-menu-item{padding:.8rem 1.2rem;background:none;border:none;border-top:1px solid var(--border-row);text-align:left;font-size:inherit;font-weight:500;cursor:pointer;width:100%}.burger-menu-item.danger{color:var(--red-text)}.burger-menu-item.danger:hover{background:var(--red-bg)}.btn-theme{background:none;border:none;padding:.3rem .5rem;cursor:pointer;font-size:1.1rem;line-height:1;border-radius:8px;color:var(--text-green)}.btn-theme:hover{background:var(--bg-accent)}.month-selector{display:flex;align-items:center;justify-content:center;gap:1rem;margin-bottom:1.5rem;position:relative;flex-wrap:wrap}.month-label{font-size:1.4rem;font-weight:700;min-width:220px;text-align:center;color:var(--green-darker)}.summary-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-bottom:1.5rem}.card{padding:1.2rem 1.5rem;border-radius:12px;background:var(--bg-card);box-shadow:var(--shadow-sm)}.card-income{border-left:5px solid var(--green)}.card-expense{border-left:5px solid var(--red)}.card-saved{border-left:5px solid var(--blue)}.card-title{font-size:.85rem;color:var(--text-green);margin-bottom:.3rem;text-transform:uppercase;letter-spacing:.5px;font-weight:600}.card-value{font-size:1.6rem;font-weight:800;color:var(--text)}.card-sub{font-size:.8rem;color:var(--text-muted);margin-top:.3rem}.dashboard-content{transition:opacity .2s ease}.dashboard-content.fading{opacity:.4}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1.5rem;align-items:start}.chart-container{background:var(--bg-card);border-radius:12px;padding:1.2rem;box-shadow:var(--shadow-sm);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}.chart-container,.chart-container *{outline:none!important;-webkit-tap-highlight-color:transparent!important;-webkit-user-select:none!important;user-select:none!important}.recharts-wrapper:focus,.recharts-surface:focus{outline:none!important}.chart-container h3{margin:0 0 1rem;font-size:1rem}.chart-empty-text{color:var(--text-muted);text-align:center;padding:2rem 0;font-size:.9rem}.savings-grid{display:flex;flex-direction:column;gap:1rem}.savings-block{background:var(--bg-card);border-radius:12px;padding:1rem 1.2rem;box-shadow:var(--shadow-sm)}.savings-block h3{margin:0 0 .6rem;font-size:.95rem}.savings-block table{width:100%;border-collapse:collapse}.savings-block td{padding:.3rem 0;font-size:.9rem}.savings-block .total td{border-top:2px solid var(--border);font-weight:700;padding-top:.5rem;color:var(--green-darker)}.num{text-align:right;font-variant-numeric:tabular-nums}.monthly-flow td{font-size:.78rem;color:var(--text-muted);padding:.1rem 0 .4rem}.flow-deposit{color:var(--green)}.flow-withdraw{color:var(--red)}.summary-table{width:100%;border-collapse:collapse}.summary-table td{padding:.4rem 0;font-size:.9rem}.summary-table .row-label{color:var(--text-secondary)}.summary-table .row-value{text-align:right;font-weight:600;font-variant-numeric:tabular-nums}.summary-table .section-gap td{padding-top:.8rem}.summary-table .section-title td{font-weight:700;color:var(--green-dark);padding-top:1rem;padding-bottom:.3rem;font-size:.85rem;text-transform:uppercase;letter-spacing:.5px}.start-month-card{text-align:center;background:var(--bg-card);border-radius:12px;padding:2rem;box-shadow:var(--shadow-sm);max-width:400px;margin:2rem auto}.start-month-card p{margin:0 0 .8rem;color:var(--text-secondary);font-size:1.1rem}.start-month-carryover{font-weight:600;color:var(--green-dark)!important}.btn-start-month{background:var(--green);color:#fff;border:none;padding:.7rem 2rem;border-radius:8px;cursor:pointer;font-weight:600;font-size:1rem;margin-top:.5rem}.btn-start-month:hover{background:var(--green-hover)}.btn-delete-month{background:none;border:1px solid var(--red-border);color:var(--red-text);padding:.5em 1em;border-radius:8px;cursor:pointer;font-size:.85em;font-weight:500;line-height:1.5;position:absolute;right:0}.btn-delete-month:hover{border-color:#d07070;color:#a04040;background:var(--red-bg)}.tx-form-v2{margin-bottom:1.5rem}.cat-dropdown{position:relative}.cat-trigger{display:flex;align-items:center;gap:.5rem;padding:.5rem .7rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-input);color:var(--text);font-size:.9rem;cursor:pointer;white-space:nowrap;min-width:160px;box-sizing:border-box}.cat-trigger:hover{border-color:var(--green)}.cat-arrow{margin-left:auto;font-size:.6rem;color:var(--text-muted)}.cat-picker{position:absolute;top:calc(100% + 4px);left:0;z-index:100;display:flex;flex-wrap:wrap;gap:.6rem;background:var(--bg-card);border-radius:12px;padding:.8rem;box-shadow:var(--shadow-md);min-width:320px}.cat-group{display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap}.cat-group-label{font-size:.75rem;font-weight:700;color:var(--text-green);text-transform:uppercase;letter-spacing:.5px;margin-right:.2rem;white-space:nowrap}.cat-group-items{display:flex;flex-wrap:wrap;gap:.3rem}.cat-chip{padding:.3rem .7rem;border-radius:16px;border:1px solid var(--border-light);background:var(--bg-hover);color:var(--text);font-size:.8rem;cursor:pointer;transition:all .15s;font-weight:400}.cat-chip:hover{background:var(--bg-accent);border-color:var(--green)}.cat-chip.active{background:var(--green);color:#fff;border-color:var(--green);font-weight:600}.cat-add-form{margin-bottom:1.5rem;background:var(--bg-card);border-radius:12px;padding:1rem;box-shadow:var(--shadow-sm)}.cat-type-chips{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.8rem}.cat-type-chip{padding:.35rem .8rem;border-radius:16px;border:1px solid var(--border-light);background:var(--bg-hover);color:var(--text);font-size:.8rem;cursor:pointer;transition:all .15s}.cat-type-chip:hover{background:var(--bg-accent);border-color:var(--green)}.cat-type-chip.active{background:var(--green);color:#fff;border-color:var(--green);font-weight:600}.cat-add-row{display:flex;gap:.5rem;align-items:center}.cat-add-row input{flex:1;padding:.5rem .7rem;border:1px solid var(--border);border-radius:8px;font-size:.9rem;background:var(--bg-input);color:var(--text)}.cat-add-row input:focus{outline:none;border-color:var(--green)}.cat-prefix{font-weight:600;color:var(--green-dark);white-space:nowrap}.cat-add-row button{background:var(--green);color:#fff;border:none;padding:.55rem 1.4rem;border-radius:8px;cursor:pointer;font-weight:600;white-space:nowrap}.cat-add-row button:hover{background:var(--green-hover)}.cat-section{margin-bottom:1rem}.cat-section h3{font-size:.9rem;margin:0 0 .5rem}.cat-list{display:flex;flex-wrap:wrap;gap:.4rem}.cat-item{display:flex;align-items:center;gap:.3rem;padding:.3rem .6rem;background:var(--bg-card);border:1px solid var(--border-light);border-radius:16px;font-size:.85rem}.cat-item .btn-delete{font-size:.75rem;padding:0;opacity:.4}.cat-item:hover .btn-delete{opacity:1}.cat-account-tag{font-size:.7rem;color:var(--text-muted);background:var(--bg-accent);padding:.1rem .4rem;border-radius:4px;margin-left:auto}.col-account{font-size:.8rem;color:var(--text-muted);white-space:nowrap}.acc-select{padding:.5rem .7rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-input);color:var(--text);font-size:.9rem}.acc-bank-row{display:flex;align-items:center;gap:.5rem;flex-wrap:wrap;margin-top:.5rem}.acc-bank-label{font-size:.85rem;color:var(--text-muted)}.acc-bank-input{width:140px;padding:.4rem .6rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-input);color:var(--text);font-size:.85rem}.savings-divider hr{border:none;border-top:1px solid var(--border);margin:.3rem 0}.cat-conv-arrow-small{font-size:.7rem;color:var(--text-muted)}.cat-conv-arrow{font-size:1.2rem;color:var(--text-muted);align-self:center}.cat-trigger-label{font-size:.7rem;color:var(--text);margin-right:.2rem}.tx-header-row{display:flex;align-items:center;gap:.8rem;margin-bottom:.8rem}.tx-header-row h2{margin:0}.tx-account-trigger{font-size:.8rem;padding:.3rem .6rem;color:var(--text-muted)}.tx-fields{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.tx-fields input{padding:.5rem .7rem;border-radius:8px;border:1px solid var(--border);background:var(--bg-input);color:var(--text);font-size:.9rem}.tx-fields input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 2px #4caf5026}.tx-fields input[type=number]{-moz-appearance:textfield}.tx-fields input[type=number]::-webkit-outer-spin-button,.tx-fields input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.tx-fields input[type=date]{width:140px;color-scheme:var(--color-scheme);-webkit-appearance:none;appearance:none}.tx-fields input[type=date]::-webkit-calendar-picker-indicator{filter:hue-rotate(90deg) saturate(1.5);cursor:pointer}::-webkit-datetime-edit-fields-wrapper{color:var(--text)}input[type=date]:focus{border-color:var(--green);box-shadow:0 0 0 2px #4caf5026}.tx-fields input[type=text]{flex:1;min-width:150px}.tx-fields input[type=number]{width:100px}.tx-fields button[type=submit]{background:var(--green);color:#fff;border:none;padding:.55rem 1.4rem;border-radius:8px;cursor:pointer;font-weight:600}.tx-fields button[type=submit]:hover{background:var(--green-hover)}.table-wrapper{overflow-x:auto;background:var(--bg-card);border-radius:12px;box-shadow:var(--shadow-sm)}.tx-table{width:100%;border-collapse:collapse;font-size:.9rem}.tx-table th,.tx-table td{padding:.6rem .8rem;text-align:left;border-bottom:1px solid var(--bg-accent)}.tx-table th{color:var(--text-green);font-weight:600;font-size:.8rem;text-transform:uppercase;background:var(--bg-hover)}.tx-table tbody tr:hover{background:var(--bg-hover)}.btn-delete{background:none;border:none;color:var(--red);cursor:pointer;font-size:1rem;padding:.2rem .5rem}.btn-delete:hover{color:var(--red-dark)}.row-actions{white-space:nowrap;position:relative}.row-actions-inline{display:none}.row-actions-burger{display:block;position:relative}.btn-edit{background:none;border:none;color:var(--text-green);cursor:pointer;font-size:1rem;padding:.2rem .5rem}.btn-edit:hover{color:var(--green-dark)}.btn-copy{background:none;border:none;color:var(--text-green);cursor:pointer;font-size:1rem;padding:.2rem .5rem}.btn-copy:hover{color:var(--green-dark)}.btn-row-burger{background:none;border:none;font-size:1.2rem;cursor:pointer;padding:.2rem .5rem;color:var(--text-green)}.row-burger-menu.drop-up{top:auto;bottom:100%}.row-burger-menu{position:absolute;right:0;top:100%;background:var(--bg-card);border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow-md);display:flex;flex-direction:column;min-width:140px;z-index:100}.row-burger-menu button{padding:.7rem 1rem;background:none;border:none;border-bottom:1px solid var(--border-row);text-align:left;font-size:.9rem;cursor:pointer;color:var(--text)}.row-burger-menu button:last-child{border-bottom:none}.row-burger-menu button.danger{color:var(--red-text)}.row-burger-menu button:hover{background:var(--bg-hover)}.editing-row td{padding:.3rem .4rem}.editing-row input{width:100%;padding:.3rem .4rem;border:1px solid var(--border);border-radius:6px;font-size:.85rem;box-sizing:border-box;background:var(--bg-input);color:var(--text)}.editing-row input:focus{outline:none;border-color:var(--green)}.editing-row input[type=number]{-moz-appearance:textfield}.editing-row input[type=number]::-webkit-outer-spin-button,.editing-row input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.inline-dropdown{position:relative}.inline-dropdown .cat-trigger{font-size:.85rem;padding:.3rem .4rem}.inline-dropdown .cat-picker{min-width:200px}.edit-actions{display:flex;gap:.3rem}.btn-save{background:none;border:none;color:var(--green);cursor:pointer;font-size:1rem;padding:.2rem .5rem}.btn-cancel{background:none;border:none;color:var(--text-muted);cursor:pointer;font-size:1rem;padding:.2rem .5rem}.btn-save:hover{color:var(--green-dark)}.btn-cancel:hover{color:var(--text-secondary)}.expense-total{display:flex;justify-content:space-between;padding-top:.5rem;border-top:2px solid var(--border);margin-top:.3rem;font-weight:700;font-size:.95rem;color:var(--green-darker)}.toast-container{position:fixed;top:calc(1rem + env(safe-area-inset-top));right:calc(1rem + env(safe-area-inset-right));z-index:1000;display:flex;flex-direction:column;gap:.5rem}.toast{padding:.6rem 1.2rem;border-radius:8px;font-size:.9rem;font-weight:500;box-shadow:var(--shadow-md);animation:toast-in .3s ease}.toast-success{background:var(--green);color:#fff}.toast-error{background:var(--red);color:#fff}@keyframes toast-in{0%{opacity:0;transform:translate(1rem)}to{opacity:1;transform:translate(0)}}@media(max-width:900px){.navbar{gap:.8rem}.navbar .nav-right{font-size:.85rem}.dashboard-grid,.summary-cards{grid-template-columns:1fr}.dashboard-header .btn-delete-month{position:static}.dashboard-header{flex-wrap:wrap;justify-content:center}}@media(max-height:500px)and (orientation:landscape){.app{padding:0 .8rem 1rem}.navbar .nav-extra,.navbar .nav-right{display:none}.navbar .nav-always{display:inline}.burger-wrap{display:block}.table-wrapper{margin:0 -.8rem;border-radius:0}}@media(max-width:600px){.app{padding:0 .8rem 1rem}.navbar{gap:.8rem}.navbar .logo{font-size:1.2rem}.navbar .nav-extra,.navbar .nav-right{display:none}.navbar .nav-always{display:inline}.burger-wrap{display:block}.btn-delete-month{display:none}.month-label{font-size:1.1rem;min-width:160px}.card-value{font-size:1.3rem}.cat-add-form .cat-add-row{flex-direction:column;align-items:stretch}.cat-add-form .cat-dropdown{position:static;width:100%}.cat-add-form .cat-trigger{width:100%;box-sizing:border-box}.cat-add-form .cat-picker{position:relative;top:4px;left:0;transform:none;width:100%;min-width:0;box-sizing:border-box}.cat-add-form .cat-conv-arrow{text-align:center;transform:rotate(90deg)}.cat-picker{gap:.4rem;padding:.6rem;min-width:0;max-width:calc(100vw - 2.4rem)}.tx-fields{flex-direction:column}.tx-fields>*,.tx-fields .cat-trigger{width:100%!important;min-width:0!important;box-sizing:border-box!important}.tx-fields button[type=submit]{width:100%}.table-wrapper{-webkit-overflow-scrolling:touch}.tx-table{font-size:.8rem;min-width:600px}.tx-table th,.tx-table td{padding:.4rem;white-space:nowrap}.month-selector{gap:.5rem}.start-month-card{margin:1rem auto;padding:1.5rem}h2{font-size:1rem}.goal-add{flex-direction:column}.goal-add>*{width:100%!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important;flex:none!important}.goal-add input[type=date]{-webkit-appearance:none;appearance:none;color:inherit}.goal-add .cat-trigger{width:100%!important}}.login-page{display:flex;align-items:center;justify-content:center;min-height:100vh}.login-form{background:var(--bg-card);border-radius:16px;padding:2.5rem 2rem;box-shadow:var(--shadow-lg);width:320px;display:flex;flex-direction:column;gap:1rem}.login-title{text-align:center;color:var(--green-dark);font-size:2rem;margin:0 0 .5rem}.login-error{background:var(--red-bg);color:var(--red-text);padding:.6rem;border-radius:8px;font-size:.9rem;text-align:center}.login-form input{padding:.7rem 1rem;border:1px solid var(--border);border-radius:8px;font-size:1rem;background:var(--bg-input);color:var(--text)}.login-form input:focus{outline:none;border-color:var(--green);box-shadow:0 0 0 2px #4caf5026}.login-password-wrap{position:relative;display:flex}.login-password-wrap input{flex:1;padding-right:2.5rem}.login-toggle-pass{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;padding:.3rem;line-height:1;color:var(--text-muted);display:flex;align-items:center}.login-form button[type=submit]{background:var(--green);color:#fff;border:none;padding:.7rem;border-radius:8px;font-size:1rem;font-weight:600;cursor:pointer}.login-form button[type=submit]:hover{background:var(--green-hover)}.btn-logout{background:none;border:none;color:var(--red-text);padding:.4rem 1rem;border-radius:8px;cursor:pointer;font-weight:500}.btn-logout:hover{background:var(--red-bg);border-color:#d07070}.cat-filter-chips{display:flex;flex-wrap:wrap;gap:.3rem;margin-bottom:1rem}.cat-filter-chip{padding:.25rem .6rem;border-radius:14px;border:1px solid var(--border-light);background:var(--bg-hover);color:var(--text);font-size:.75rem;cursor:pointer;transition:all .15s}.cat-filter-chip:hover{border-color:var(--green)}.cat-filter-chip.active{color:#fff;font-weight:600}.budget-list{display:flex;flex-direction:column;gap:.8rem;margin-bottom:1.5rem}.budget-card{background:var(--bg-card);border-radius:12px;padding:1rem 1.2rem;box-shadow:var(--shadow-sm)}.budget-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem}.budget-name{font-weight:600;font-size:.95rem;color:var(--text)}.budget-bar-wrap{height:8px;background:var(--bg-accent);border-radius:4px;overflow:hidden;margin-bottom:.4rem}.budget-bar{height:100%;background:var(--green);border-radius:4px;transition:width .3s}.budget-bar.over{background:var(--red)}.budget-nums{display:flex;justify-content:space-between;font-size:.85rem;color:var(--text-green)}.budget-over{color:var(--red);font-weight:600}.budget-remain{font-weight:500}.budget-limit{color:var(--text-muted)}.budget-add{display:flex;gap:.5rem;align-items:center}.budget-add .cat-dropdown{flex:1}.budget-add .cat-trigger{width:100%}.budget-add input{flex:1;padding:.5rem .7rem;border:1px solid var(--border);border-radius:8px;font-size:.9rem;background:var(--bg-input);color:var(--text)}.budget-add input:focus{outline:none;border-color:var(--green)}.budget-add input[type=number]{-moz-appearance:textfield}.budget-add input[type=number]::-webkit-outer-spin-button,.budget-add input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.budget-add>button.btn-budget-add{background:var(--green);color:#fff;border:none;padding:.55rem 1.4rem;border-radius:8px;cursor:pointer;font-weight:600;white-space:nowrap}.budget-add>button.btn-budget-add:hover{background:var(--green-hover)}.goals-list{display:flex;flex-direction:column;gap:.8rem;margin-top:1rem;margin-bottom:1.5rem}.goal-card{background:var(--bg-card);border-radius:12px;padding:1rem 1.2rem;box-shadow:var(--shadow-sm)}.goal-account{font-size:.8rem;color:var(--text-green);margin-bottom:.4rem}.goal-deadline{font-size:.8rem;color:var(--text-muted);margin-top:.4rem}.goal-monthly{color:var(--green-dark);font-weight:500}.goal-add{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap}.goal-add input{flex:1;min-width:120px;padding:.5rem .7rem;border:1px solid var(--border);border-radius:8px;font-size:.9rem;background:var(--bg-input);color:var(--text);color-scheme:var(--color-scheme)}.goal-add input:focus{outline:none;border-color:var(--green)}.goal-add input[type=number]{-moz-appearance:textfield}.goal-add input[type=number]::-webkit-outer-spin-button,.goal-add input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.goal-add .cat-dropdown{flex:1;min-width:140px}.goal-add .cat-trigger{width:100%}.btn-goal-add{background:var(--green);color:#fff;border:none;padding:.55rem 1.4rem;border-radius:8px;cursor:pointer;font-weight:600;white-space:nowrap}.btn-goal-add:hover{background:var(--green-hover)}.btn-goal-cancel{background:none;border:1px solid var(--border);padding:.55rem 1.4rem;border-radius:8px;cursor:pointer;font-weight:600;color:var(--text-green);white-space:nowrap}.btn-goal-cancel:hover{background:var(--bg-hover)}.goal-burger{position:relative}.goal-edit-form{display:flex;flex-direction:column;gap:.5rem}.goal-edit-form input{padding:.5rem .7rem;border:1px solid var(--border);border-radius:8px;font-size:.9rem;background:var(--bg-input);color:var(--text);color-scheme:var(--color-scheme)}.goal-edit-form input:focus{outline:none;border-color:var(--green)}.goal-edit-form input[type=number]{-moz-appearance:textfield}.goal-edit-form input[type=number]::-webkit-outer-spin-button,.goal-edit-form input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.goal-edit-form .cat-dropdown,.goal-edit-form .cat-trigger{width:100%}.goal-edit-actions{display:flex;gap:.5rem}.goal-edit-actions .btn-goal-add,.goal-edit-actions .btn-goal-cancel{flex:1}.goal-editing{border:2px solid var(--green)}.investments-page{max-width:800px}.inv-cash{background:var(--bg-hover);border:1px solid var(--border-light);border-radius:10px;padding:.8rem 1.2rem;margin-bottom:1rem;font-size:.95rem}.inv-positions{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:1rem}.inv-card{background:var(--bg-card);border:1px solid var(--border-light);border-radius:12px;padding:1rem 1.2rem}.inv-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.inv-ticker{font-size:1.2rem;font-weight:700;color:var(--text)}.inv-qty{font-size:.85rem;color:var(--text-green)}.inv-row{display:flex;justify-content:space-between;padding:.25rem 0;font-size:.9rem;color:var(--text-secondary)}.inv-value{font-weight:500}.inv-pnl{font-weight:600;margin-top:.3rem;padding-top:.4rem;border-top:1px solid var(--border-row)}.inv-pnl.up,.inv-day-change.up{color:#2e7d32}.inv-pnl.down,.inv-day-change.down{color:#c62828}[data-theme=dark] .inv-pnl.up,[data-theme=dark] .inv-day-change.up{color:#66bb6a}[data-theme=dark] .inv-pnl.down,[data-theme=dark] .inv-day-change.down{color:#ef5350}.inv-day-change{margin-top:.6rem;padding-top:.4rem;border-top:1px solid var(--border-row);font-size:.8rem;text-align:right}.offline-bar{background:#888;color:#fff;text-align:center;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;padding:.3rem 0;padding-top:calc(.3rem + env(safe-area-inset-top));position:fixed;top:0;left:0;right:0;z-index:1000}.app.has-offline-bar{padding-top:1.5rem}.offline-banner{background:#e67e22;color:#fff;padding:.5rem 1rem;border-radius:8px;text-align:center;margin-bottom:1rem;font-weight:500}.pending-banner{background:#ff9800;color:#fff;padding:.5rem 1rem;border-radius:8px;text-align:center;margin-bottom:1rem;font-weight:500;display:flex;align-items:center;justify-content:center;gap:.75rem}.pending-sync-btn{background:#ffffff40;color:#fff;border:1px solid rgba(255,255,255,.5);padding:.25rem .75rem;border-radius:6px;cursor:pointer;font-size:.85rem}.pending-transactions{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}.pending-tx-row{display:flex;align-items:center;gap:.75rem;padding:.5rem .75rem;background:var(--bg-card);border:1px dashed #ff9800;border-radius:8px;font-size:.9rem}.pending-tx-badge{background:#ff9800;color:#fff;padding:.1rem .4rem;border-radius:4px;font-size:.7rem;font-weight:600;text-transform:uppercase;flex-shrink:0}.pending-tx-cat{font-weight:500}.pending-tx-desc{color:var(--text-secondary)}.pending-tx-amount{margin-left:auto;font-weight:600;white-space:nowrap}.pending-tx-delete{background:none;border:none;color:var(--expense);cursor:pointer;font-size:1rem;padding:.2rem;flex-shrink:0}.login-debug-btn{position:fixed;bottom:1rem;left:1rem;background:none;border:none;font-size:1.2rem;opacity:.5;cursor:pointer;padding:.5rem}.dev-console-overlay{position:fixed;inset:0;z-index:10000;background:#00000080;display:flex;flex-direction:column}.dev-console{display:flex;flex-direction:column;height:100%;background:var(--bg-page);color:var(--text-primary)}.dev-console-header{padding:.5rem;padding-top:calc(.5rem + env(safe-area-inset-top));border-bottom:1px solid var(--border);background:var(--bg-card);flex-shrink:0}.dev-console-header-top{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.dev-console-title{font-weight:700;font-size:1rem;margin-right:auto}.dev-console-filters{display:flex;gap:.25rem}.dev-console-filter{padding:.15rem .5rem;border:1px solid var(--border);border-radius:4px;background:none;color:var(--text);font-size:.75rem;cursor:pointer}.dev-console-filter.active{background:var(--accent, #4caf50);color:#fff;border-color:var(--accent, #4caf50)}.dev-console-btn{padding:.15rem .5rem;border:1px solid var(--border);border-radius:4px;background:none;color:var(--text);font-size:.85rem;cursor:pointer}.dev-console-body{flex:1;overflow-y:auto;padding:.5rem;font-family:SF Mono,Menlo,monospace;font-size:.7rem;line-height:1.4;-webkit-overflow-scrolling:touch}.dev-console-empty{color:var(--text-secondary);text-align:center;padding:2rem}.dev-console-line{padding:.15rem 0;border-bottom:1px solid var(--border);word-break:break-all}.dev-console-line-main{display:flex;gap:.4rem}.dev-console-body-preview{margin:.25rem 0 .25rem 3.5rem;padding:.4rem;background:var(--bg-accent);border-radius:4px;font-size:.65rem;line-height:1.3;overflow-x:auto;white-space:pre-wrap;max-height:12rem;color:var(--text)}.dev-console-time{color:var(--text-secondary);flex-shrink:0}.dev-console-type{flex-shrink:0;width:2.5rem;font-weight:600}.dev-console-msg{flex:1;white-space:pre-wrap}.reconcile-page h2{margin:0 0 1rem}.reconcile-form{background:var(--bg-card);border:1px solid var(--border);border-radius:12px;padding:1rem 1.2rem;margin-bottom:1.5rem}.reconcile-row{display:flex;align-items:center;gap:.8rem;flex-wrap:wrap}.reconcile-row+.reconcile-row{margin-top:.8rem}.reconcile-row select,.reconcile-row input[type=date]{padding:.5rem .7rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text);font-size:.95rem}.reconcile-row input[type=file]{flex:1;min-width:0;font-size:.9rem;color:var(--text)}.reconcile-file-label{display:flex;flex-direction:column;gap:.3rem;font-size:.8rem;color:var(--text-muted);flex:1}.reconcile-file-label input[type=file]::file-selector-button{background:var(--green);color:#fff;border:none;padding:.45rem 1rem;border-radius:8px;cursor:pointer;font-weight:600;font-size:.9rem;margin-right:.7rem}.reconcile-file-label input[type=file]::file-selector-button:hover{background:var(--green-hover)}.reconcile-chips{display:flex;gap:.4rem}.reconcile-chips .chip{padding:.4rem .9rem;border-radius:20px;border:1px solid var(--border);background:var(--bg-card);color:var(--text);cursor:pointer;font-size:.85rem}.reconcile-chips .chip.active{background:var(--green);color:#fff;border-color:var(--green)}.btn-reconcile{padding:.5rem 1.4rem;background:var(--green);color:#fff;border:none;border-radius:8px;font-weight:600;cursor:pointer;font-size:.95rem}.btn-reconcile:disabled{opacity:.6;cursor:not-allowed}.reconcile-tabs{display:flex;gap:.3rem;margin-bottom:1rem;flex-wrap:wrap}.reconcile-tabs .tab{padding:.5rem 1rem;border:1px solid var(--border);border-radius:8px;background:var(--bg-card);color:var(--text);cursor:pointer;font-size:.85rem}.reconcile-tabs .tab.active{background:var(--green);color:#fff;border-color:var(--green)}.reconcile-table-wrap{overflow-x:auto}.reconcile-table{width:100%;border-collapse:collapse;font-size:.9rem}.reconcile-table th,.reconcile-table td{padding:.5rem .7rem;border-bottom:1px solid var(--border-light);text-align:left}.reconcile-table th{font-weight:600;color:var(--text-muted);font-size:.8rem;text-transform:uppercase}.reconcile-table tr.expense .amount{color:var(--red)}.reconcile-table tr.income .amount{color:var(--green)}.reconcile-table .amount{white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums}.reconcile-empty{text-align:center;color:var(--text-muted);padding:2rem 0}@media(max-width:700px){.reconcile-row{flex-direction:column;align-items:stretch}.reconcile-chips{width:100%}.reconcile-chips .chip{flex:1;text-align:center}}.journal-header{display:flex;align-items:center}.journal-header .scroll-btn{margin-left:auto}.scroll-buttons{display:none}.scroll-fixed{position:fixed;bottom:calc(1.5rem + env(safe-area-inset-bottom));right:.5rem;z-index:90;display:none}.scroll-bottom{display:flex;justify-content:flex-end;padding:.5rem 0}@media(max-width:600px){.scroll-fixed{display:block}.scroll-bottom{display:flex}}.scroll-btn{width:40px;height:40px;border-radius:50%;background:var(--bg-card);box-shadow:0 2px 8px #0003;display:flex;align-items:center;justify-content:center;cursor:pointer;touch-action:manipulation}.scroll-btn svg{stroke:var(--green-dark)}[data-theme=dark] .scroll-btn svg{stroke:#ccc}@media(max-width:600px){.scroll-buttons{display:flex}}.quick-expense-fab{position:fixed;bottom:calc(1.5rem + env(safe-area-inset-bottom));right:1.5rem;width:56px;height:56px;min-width:56px;min-height:56px;max-width:56px;max-height:56px;padding:0;border-radius:50%;background:none;color:#fff;font-size:2rem;font-weight:300;border:none;cursor:pointer;box-shadow:0 4px 12px #0000004d;z-index:90;display:flex;align-items:center;justify-content:center;line-height:1;touch-action:manipulation}.quick-expense-fab-icon{stroke:#4caf50}[data-theme=dark] .quick-expense-fab-icon{stroke:#fff}.quick-expense-overlay{position:fixed;inset:0;background:#00000080;z-index:200;display:flex;align-items:flex-end;justify-content:center}.quick-expense-form{background:var(--bg-card);color-scheme:var(--color-scheme);border-radius:16px 16px 0 0;padding:1.2rem;padding-bottom:calc(1.2rem + env(safe-area-inset-bottom));width:100%;max-width:500px;display:flex;flex-direction:column;gap:.8rem}.quick-expense-header{display:flex;justify-content:space-between;align-items:center;font-weight:600;font-size:1.1rem;color:var(--text)}.quick-expense-close{background:none!important;border:none!important;font-size:1.8rem;color:var(--green-dark)!important;cursor:pointer;padding:0 .3rem}.quick-expense-input{width:100%;padding:.7rem;border:1px solid var(--border);border-radius:8px;font-size:1rem;background:var(--bg-page);color:var(--text);box-sizing:border-box}.quick-expense-input:focus{outline:none;border-color:var(--income)}.quick-expense-categories{display:flex;flex-wrap:wrap;gap:.4rem;max-height:150px;overflow-y:auto}.quick-expense-chip{padding:.4rem .7rem;border-radius:16px;border:1px solid var(--border);background:var(--bg-page);color:var(--text);font-size:.85rem;cursor:pointer;touch-action:manipulation}.quick-expense-chip.selected{background:var(--income);color:#fff;border-color:var(--income)}.quick-expense-save{padding:.75rem;border-radius:8px;border:none;background:var(--income);color:#fff;font-size:1rem;font-weight:600;cursor:pointer;touch-action:manipulation}.quick-expense-save:disabled{opacity:.5;cursor:default}
