@import url(https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap);body{margin:0}code{font-family:Menlo,Monaco,Consolas,Courier New,monospace}.calendar-container{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.calendar-header{align-items:center;background:var(--color-bg);border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;padding:1.5rem 2rem}.calendar-title{color:var(--color-text);font-size:1.25rem;font-weight:700}.nav-btn{align-items:center;background:#0000;border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;display:flex;font-size:1.5rem;height:2.5rem;justify-content:center;transition:all .2s ease;width:2.5rem}.nav-btn:hover{background:var(--color-surface);border-color:var(--color-primary);color:var(--color-primary);transform:scale(1.05)}.calendar-grid{grid-gap:1px;background:var(--color-border);display:grid;gap:1px;grid-template-columns:repeat(7,1fr);padding:1px}.calendar-day-name{background:var(--color-surface);color:var(--color-text-muted);font-size:.875rem;font-weight:600;letter-spacing:.05em;padding:1rem;text-align:center;text-transform:uppercase}.calendar-day{background:var(--color-surface);min-height:120px;padding:.75rem;position:relative;transition:all .2s ease}.calendar-day:hover:not(.empty){background:var(--color-bg)}.calendar-day.empty{opacity:.4}.calendar-day.today{position:relative}.calendar-day.today:before{background:var(--color-primary);border-radius:4px;bottom:0;content:"";left:0;opacity:.08;pointer-events:none;position:absolute;right:0;top:0}[data-theme=dark] .calendar-day.today:before{opacity:.15}.calendar-day.today .day-number{background:var(--color-primary);color:#fff}.calendar-day.past:not(.today){opacity:.5}.day-number{align-items:center;border-radius:50%;color:var(--color-text);display:inline-flex;font-size:.875rem;font-weight:600;height:1.75rem;justify-content:center;margin-bottom:.5rem;width:1.75rem}.day-bills{gap:.375rem}.bill-indicator,.day-bills{display:flex;flex-direction:column}.bill-indicator{background:var(--color-surface);border:1px solid var(--color-border);border-left:3px solid var(--color-primary);border-radius:6px;cursor:pointer;font-size:.75rem;gap:.125rem;padding:.375rem .5rem;transition:all .2s ease}[data-theme=dark] .bill-indicator{background:#1c2433}.bill-indicator:hover{border-left-width:4px;box-shadow:var(--shadow-md);transform:translateX(2px)}.bill-indicator.selected{background:var(--color-primary);border-left-color:var(--color-primary);box-shadow:0 0 0 2px var(--color-primary)}.bill-indicator.selected .bill-amount,.bill-indicator.selected .bill-vendor{color:#fff}.bill-indicator.paid{border-left-color:var(--color-success);opacity:.8}.bill-indicator.overdue{background:var(--color-overdue-bg);border-left-color:var(--color-danger)}.bill-indicator.projected{border-left-color:var(--color-text-muted);border-style:dashed;cursor:default;opacity:.65}.bill-indicator.projected:hover{box-shadow:none;transform:none}.calendar-legend{border-bottom:1px solid var(--color-border);color:var(--color-text-muted);display:flex;font-size:.75rem;gap:1.25rem;padding:.625rem 2rem}.legend-item{align-items:center;display:flex;gap:.375rem}.legend-dot{border-left:3px solid;border-radius:2px;flex-shrink:0;height:10px;width:10px}.legend-dot.pending{color:var(--color-primary)}.legend-dot.paid{color:var(--color-success)}.legend-dot.overdue{color:var(--color-danger)}.legend-dot.projected{border-style:dashed;color:var(--color-text-muted)}.bill-vendor{color:var(--color-text);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bill-amount{color:var(--color-text-muted);font-weight:500}@media (max-width:1024px){.calendar-day{min-height:100px}.bill-indicator{font-size:.625rem;padding:.25rem .375rem}}@media (max-width:768px){.calendar-header{padding:1rem}.calendar-title{font-size:1.25rem}.calendar-day{min-height:80px;padding:.5rem}.calendar-day-name{font-size:.75rem;padding:.5rem}.day-number{font-size:.75rem;height:1.5rem;width:1.5rem}.bill-vendor{font-size:.625rem}.bill-amount{display:none}}.bill-form{padding:2rem}.form-row{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:1fr 1fr;margin-bottom:1rem}.form-group{display:flex;flex-direction:column;gap:.5rem}.form-group label{color:var(--color-text);font-size:.875rem;font-weight:600}.form-group input,.form-group select,.form-group textarea{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);font-family:Manrope,sans-serif;font-size:.875rem;padding:.625rem .875rem;transition:all .2s ease}.form-group input:focus,.form-group select:focus,.form-group textarea:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a;outline:none}.form-group textarea{min-height:80px;resize:vertical}.form-group small{color:var(--color-text-muted);font-size:.75rem;margin-top:-.25rem}.category-add-row{align-items:center;display:flex;gap:.5rem}.category-add-row input{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);flex:1 1;font-family:Manrope,sans-serif;font-size:.875rem;padding:.625rem .875rem}.category-add-row input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb1a;outline:none}.category-add-row button{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;font-family:Manrope,sans-serif;font-size:.8rem;padding:.5rem .75rem;transition:all .2s ease;white-space:nowrap}.category-add-row button:first-of-type{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.category-add-row button:first-of-type:hover{background:var(--color-primary-hover)}.form-group-checkbox{justify-content:flex-end;padding-bottom:.25rem}.checkbox-label{align-items:center;color:var(--color-text);cursor:pointer;display:flex;font-size:.875rem;font-weight:600;gap:.5rem}.checkbox-label input[type=checkbox]{accent-color:var(--color-primary);cursor:pointer;height:1rem;width:1rem}.form-actions{border-top:1px solid var(--color-border);display:flex;gap:1rem;justify-content:flex-end;margin-top:2rem;padding-top:1.5rem}@media (max-width:640px){.form-row{grid-template-columns:1fr}.bill-form{padding:1.5rem}.form-actions{flex-direction:column-reverse}.form-actions button{width:100%}}.bill-details{max-width:500px}.details-content{padding:2rem}.detail-header{border-bottom:1px solid var(--color-border);margin-bottom:1.5rem;padding-bottom:1.5rem;text-align:center}.vendor-name{color:var(--color-text);font-size:1.5rem;font-weight:700;margin-bottom:.5rem}.amount-display{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,var(--color-primary),#7c3aed);-webkit-background-clip:text;background-clip:text;font-size:3rem;font-weight:800}.status-banner{border-radius:var(--radius-md);display:flex;flex-direction:column;gap:.25rem;margin-bottom:1.5rem;padding:1rem;text-align:center}.status-banner.pending{background:var(--color-pending-bg);border:1px solid var(--color-pending-border)}.status-banner.paid{background:var(--color-paid-bg);border:1px solid var(--color-paid-border)}.status-banner.overdue{background:var(--color-overdue-bg);border:1px solid var(--color-overdue-border)}.status-text{font-size:.875rem;font-weight:700;letter-spacing:.05em}.status-banner.pending .status-text{color:var(--color-pending-text)}.status-banner.paid .status-text{color:var(--color-paid-text)}.status-banner.overdue .status-text{color:var(--color-overdue-text)}.days-until{font-size:.875rem;font-weight:600}.overdue-text{color:var(--color-danger);font-weight:700}.detail-grid{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:1fr 1fr}.detail-item{display:flex;flex-direction:column;gap:.375rem}.detail-item.full-width{grid-column:1/-1}.detail-item label{color:var(--color-text-muted);font-size:.75rem;font-weight:600;letter-spacing:.05em;text-transform:uppercase}.detail-item p{color:var(--color-text);font-size:.9375rem;font-weight:500}.category-badge{border:1px solid var(--color-border);border-radius:100px;display:inline-block;font-weight:600;padding:.375rem .875rem}.category-badge,.notes-text{background:var(--color-bg);font-size:.875rem}.notes-text{border:1px solid var(--color-border);border-radius:var(--radius-sm);line-height:1.6;padding:.875rem}.details-actions{background:var(--color-bg);border-top:1px solid var(--color-border);display:flex;gap:1rem;justify-content:space-between;padding:1.5rem 2rem}.details-actions button{flex:1 1}@media (max-width:640px){.details-content{padding:1.5rem}.amount-display{font-size:2.5rem}.detail-grid{gap:1rem;grid-template-columns:1fr}.details-actions{flex-direction:column-reverse}}.notification-test{background:var(--color-info-bg);border:1px solid var(--color-info-border);border-radius:var(--radius-md);margin-top:1.5rem;padding:1.5rem}[data-theme=dark] .notification-test{background:#1e3a8a4d;border-color:#3b82f680}.notification-test h4{color:var(--color-text);font-size:1rem;font-weight:700;margin-bottom:.5rem}.notification-test p{color:var(--color-text-muted);font-size:.875rem;margin-bottom:1rem}.notification-test .btn-primary{margin-bottom:1rem;width:100%}.test-result{border-radius:var(--radius-sm);font-size:.875rem;margin-bottom:1rem;padding:.875rem}.test-result.success{background:var(--color-paid-bg);border:1px solid var(--color-paid-border);color:var(--color-paid-text)}.test-result.error{background:var(--color-overdue-bg);border:1px solid var(--color-overdue-border);color:var(--color-overdue-text)}.test-tips{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:1rem}.test-tips strong{color:var(--color-text);display:block;font-size:.875rem;margin-bottom:.5rem}.test-tips ul{margin:0;padding-left:1.25rem}.test-tips li{color:var(--color-text-muted);font-size:.8125rem;margin-bottom:.25rem}.test-tips code{background:var(--color-bg);border-radius:3px;font-family:monospace;font-size:.75rem;padding:.125rem .375rem}.settings-modal{max-width:650px}.settings-tabs{border-bottom:1px solid var(--color-border);display:flex;gap:0;padding:0 1.5rem}.settings-tab{background:none;border:none;border-bottom:2px solid #0000;color:var(--color-text-muted);cursor:pointer;font-family:Manrope,sans-serif;font-size:.875rem;font-weight:600;margin-bottom:-1px;padding:.75rem 1.25rem;transition:all .15s ease}.settings-tab:hover{color:var(--color-text)}.settings-tab.active{border-bottom-color:var(--color-primary);color:var(--color-primary)}.settings-form{gap:1rem;padding:1.5rem 2rem}.settings-form,.users-panel{display:flex;flex-direction:column}.users-panel{gap:.75rem}.users-list{display:flex;flex-direction:column;gap:.5rem}.user-row{align-items:center;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);display:flex;gap:1rem;justify-content:space-between;padding:.75rem 1rem}.user-row-info{display:flex;flex-direction:column;gap:.125rem;min-width:0}.user-row-name{color:var(--color-text);font-size:.875rem;font-weight:600}.user-row-email{color:var(--color-text-muted);font-size:.75rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-row-actions{align-items:center;display:flex;flex-shrink:0;gap:.5rem}.user-role-select{background:var(--color-surface);color:var(--color-text);font-size:.8rem;padding:.3rem .5rem}.btn-user-delete,.user-role-select{border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer}.btn-user-delete{align-items:center;background:none;color:var(--color-text-muted);display:flex;font-size:1.1rem;height:1.75rem;justify-content:center;line-height:1;transition:all .2s ease;width:1.75rem}.btn-user-delete:hover{border-color:var(--color-danger);color:var(--color-danger)}.btn-add-user{background:#0000;border:1px dashed var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;font-size:.875rem;font-weight:600;padding:.5rem 1rem;text-align:center;transition:all .2s ease;width:100%}.btn-add-user:hover{border-color:var(--color-primary);color:var(--color-primary)}.add-user-form{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-sm);display:flex;flex-direction:column;gap:.75rem;padding:1rem}.add-user-actions{display:flex;gap:.75rem;justify-content:flex-end}.user-error{color:var(--color-danger);font-size:.8125rem;margin:0}.account-info{color:var(--color-text);font-size:.9375rem;font-weight:500}.account-email{font-weight:400}.account-email,.users-empty{color:var(--color-text-muted)}.users-empty{font-size:.875rem;padding:1rem;text-align:center}.checkbox-group{margin-top:1rem}.checkbox-group label{align-items:start;cursor:pointer;display:flex;gap:.75rem}.checkbox-group input[type=checkbox]{accent-color:var(--color-primary);cursor:pointer;height:1.25rem;margin-top:.125rem;width:1.25rem}.checkbox-group span{color:var(--color-text);font-size:.875rem;font-weight:600}.info-box{background:var(--color-info-bg);border:1px solid var(--color-info-border);border-radius:var(--radius-md);margin-top:2rem;padding:1.25rem}[data-theme=dark] .info-box{background:#1e3a8a4d;border-color:#3b82f680}.info-box h4{color:var(--color-text);font-size:.9375rem;font-weight:700;margin-bottom:.5rem}.info-box p{color:var(--color-text-muted);font-size:.875rem;line-height:1.6}.data-actions{display:flex;flex-direction:column;gap:1rem}.data-action-group{align-items:center;background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;gap:1rem;justify-content:space-between;padding:.875rem 1rem}.data-action-label{color:var(--color-text-muted);font-size:.875rem;margin:0}.btn-data-action{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;font-family:Manrope,sans-serif;font-size:.875rem;font-weight:600;padding:.5rem 1rem;transition:all .2s ease;white-space:nowrap}.btn-data-action:hover{border-color:var(--color-primary);color:var(--color-primary)}.import-status{align-items:center;border-radius:var(--radius-sm);display:flex;font-size:.875rem;gap:.5rem;justify-content:space-between;margin-top:.75rem;padding:.625rem .875rem}.import-status button{background:none;border:none;color:inherit;cursor:pointer;font-size:1rem;line-height:1;opacity:.7;padding:0}.import-status-success{background:#10b9811a;border:1px solid #10b9814d;color:var(--color-success)}.import-status-error{background:#ef44441a;border:1px solid #ef44444d;color:var(--color-danger)}.import-status-loading{background:#6366f11a;border:1px solid #6366f14d;color:var(--color-primary)}.save-error{color:var(--color-danger)}.save-error,.save-indicator{align-items:center;display:flex;font-size:.875rem;font-weight:600}.save-indicator{animation:fadeIn .3s ease;color:var(--color-success);gap:.25rem}@media (max-width:640px){.settings-form{padding:1.5rem}}.login-screen{align-items:center;background:var(--color-bg);display:flex;justify-content:center;min-height:100vh;padding:1rem}.login-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-xl);max-width:360px;padding:2.5rem 2rem;text-align:center;width:100%}.login-logo{font-size:3rem;line-height:1;margin-bottom:.75rem}.login-logo-img{height:2.25rem;margin-bottom:1.25rem;object-fit:contain;width:auto}.login-title{color:var(--color-text);font-size:1.5rem;font-weight:700;margin:0 0 .25rem}.login-subtitle{color:var(--color-text-muted);font-size:.9rem;margin:0 0 1.75rem}.login-form{display:flex;flex-direction:column;gap:.75rem}.login-input{background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius-md);box-sizing:border-box;color:var(--color-text);font-family:inherit;font-size:1rem;padding:.75rem 1rem;transition:border-color .2s ease;width:100%}.login-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #0891b226;outline:none}.login-error{color:var(--color-danger);font-size:.85rem;margin:0;text-align:left}.login-btn{background:var(--color-primary);border:none;border-radius:var(--radius-md);color:#fff;cursor:pointer;font-family:inherit;font-size:1rem;font-weight:600;padding:.75rem 1rem;transition:background .2s ease,opacity .2s ease;width:100%}.login-btn:hover:not(:disabled){background:var(--color-primary-hover)}.login-btn:disabled{cursor:not-allowed;opacity:.6}.expenses-container{margin:0 auto;max-width:1400px;padding:2rem}.expenses-header{align-items:center;display:flex;gap:1rem;justify-content:space-between;margin-bottom:2rem}.btn-export-csv{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text-muted);cursor:pointer;font-family:Manrope,sans-serif;font-size:.875rem;font-weight:600;padding:.5rem 1rem;transition:all .2s ease}.btn-export-csv:hover{border-color:var(--color-primary);color:var(--color-primary)}.expenses-title{text-align:center}.expenses-title h2{color:var(--color-text);font-size:1.5rem;font-weight:700;margin:0}.expenses-year-total{color:var(--color-text-muted);font-size:.9rem}.year-nav-btn{align-items:center;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer;display:flex;flex-shrink:0;font-size:1.5rem;height:2.5rem;justify-content:center;transition:all .2s ease;width:2.5rem}.year-nav-btn:hover{background:var(--color-primary);border-color:var(--color-primary);color:#fff}.months-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(4,1fr);margin-bottom:2rem}.month-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;display:flex;flex-direction:column;gap:.3rem;padding:1.25rem 1rem 1rem;transition:all .2s ease}.month-card:hover{border-color:var(--color-primary);box-shadow:var(--shadow-md);transform:translateY(-2px)}.month-card.current{border-color:var(--color-primary);box-shadow:0 0 0 2px #0891b226}.month-card.selected{background:var(--color-info-bg);border-color:var(--color-primary);box-shadow:0 0 0 3px #0891b240}.month-card.has-projections{border-style:dashed}.month-card.empty{opacity:.5}.month-name{color:var(--color-text-muted);font-size:.8rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.month-card.current .month-name{color:var(--color-primary)}.month-total{color:var(--color-text);font-size:1.3rem;font-weight:700;line-height:1.2}.month-count{color:var(--color-text-muted);font-size:.75rem}.month-status-bar{background:var(--color-border);border-radius:2px;display:flex;height:4px;margin-top:.5rem;overflow:hidden}.bar-paid{background:var(--color-success)}.bar-paid,.bar-pending{transition:width .3s ease}.bar-pending{background:var(--color-warning)}.drill-down{animation:fadeIn .2s ease;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);overflow:hidden}.drill-down-header{align-items:center;border-bottom:1px solid var(--color-border);display:flex;flex-wrap:wrap;gap:.75rem;justify-content:space-between;padding:1.25rem 1.5rem}.drill-down-header h3{color:var(--color-text);font-size:1.125rem;font-weight:700;margin:0}.drill-down-summary{display:flex;font-size:.875rem;font-weight:600;gap:1.25rem}.ds-total{color:var(--color-text)}.ds-paid{color:var(--color-success)}.ds-pending{color:var(--color-warning)}.drill-empty{color:var(--color-text-muted);padding:2rem 1.5rem;text-align:center}.bill-rows{padding:.5rem 0}.bill-row{grid-gap:1rem;align-items:center;border-bottom:1px solid var(--color-border);display:grid;gap:1rem;grid-template-columns:1fr auto auto auto;padding:.875rem 1.5rem;transition:background .15s ease}.bill-row:last-child{border-bottom:none}.bill-row:hover{background:var(--color-bg)}.bill-row.projected{border-left:3px dashed var(--color-border);opacity:.75;padding-left:calc(1.5rem - 3px)}.bill-row-vendor{align-items:center;color:var(--color-text);display:flex;font-weight:600;gap:.4rem}.proj-tilde{color:var(--color-text-muted);font-weight:400}.bill-row-meta{align-items:center;display:flex;gap:.5rem}.bill-row-category{background:var(--color-bg);border:1px solid var(--color-border);border-radius:100px;color:var(--color-text-muted);font-size:.75rem;padding:.15rem .6rem}.bill-row-recurring{background:var(--color-info-bg);border:1px solid var(--color-info-border);border-radius:100px;color:var(--color-primary);font-size:.7rem;padding:.15rem .6rem}.bill-row-amount{color:var(--color-text);font-size:1rem;font-weight:700;white-space:nowrap}.bill-row-status{min-width:80px;text-align:right}.status-badge.projected{background:var(--color-info-bg);border:1px dashed var(--color-info-border);border-radius:100px;color:var(--color-text-muted);font-size:.7rem;font-weight:600;letter-spacing:.025em;padding:.25rem .75rem;text-transform:uppercase}@media (max-width:900px){.months-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:640px){.expenses-container{padding:1rem}.months-grid{grid-template-columns:repeat(2,1fr)}.bill-row{gap:.5rem;grid-template-columns:1fr auto;grid-template-rows:auto auto}.bill-row-meta{grid-column:1}.bill-row-status{grid-column:2;grid-row:1}.drill-down-summary{flex-direction:column;gap:.25rem}}.dashboard{display:flex;flex-direction:column;gap:2.5rem;margin:0 auto;max-width:1200px;padding:2rem}.dashboard-error,.dashboard-loading{color:var(--color-text-muted);padding:3rem;text-align:center}.dash-section{display:flex;flex-direction:column;gap:1rem}.dash-section-header{align-items:baseline;display:flex;gap:1rem;justify-content:space-between}.dash-section-title{color:var(--color-text-muted);font-size:1rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.dash-empty{color:var(--color-text-muted);font-size:.875rem;padding:.5rem 0}.summary-cards{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(3,1fr)}.summary-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:.25rem;padding:1.25rem 1.5rem}.sc-label{color:var(--color-text-muted);font-size:.75rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase}.sc-value{color:var(--color-text);font-size:1.75rem;font-weight:800;line-height:1.1}.sc-sub{color:var(--color-text-muted);font-size:.8rem}.sc-paid{border-left:3px solid var(--color-success)}.sc-paid .sc-value{color:var(--color-success)}.sc-pending{border-left:3px solid var(--color-warning)}.sc-pending .sc-value{color:var(--color-warning)}.sc-overdue{border-left:3px solid var(--color-danger)}.sc-overdue .sc-value{color:var(--color-danger)}.monthly-bars{align-items:flex-end;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;gap:.75rem;height:160px;padding:1.5rem 1.5rem .75rem}.monthly-bar-item{align-items:center;display:flex;flex:1 1;flex-direction:column;gap:.4rem;height:100%}.monthly-bar-track{align-items:flex-end;background:var(--color-bg);flex:1 1;min-height:4px}.monthly-bar-fill,.monthly-bar-track{border-radius:var(--radius-sm);display:flex;overflow:hidden;width:100%}.monthly-bar-fill{background:var(--color-warning);flex-direction:column;justify-content:flex-start;transition:height .4s ease}.monthly-bar-paid{background:var(--color-success);transition:height .4s ease;width:100%}.monthly-bar-label{color:var(--color-text-muted);font-size:.7rem;font-weight:700;text-transform:uppercase}.monthly-bar-amount{color:var(--color-text-muted);font-size:.65rem;white-space:nowrap}.monthly-legend{display:flex;font-size:.75rem;font-weight:600;gap:1rem}.legend-paid:before,.legend-pending:before{border-radius:2px;content:"";display:inline-block;height:10px;margin-right:5px;vertical-align:middle;width:10px}.legend-paid:before{background:var(--color-success)}.legend-pending:before{background:var(--color-warning)}.legend-paid{color:var(--color-success)}.legend-pending{color:var(--color-warning)}.cat-bars{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);display:flex;flex-direction:column;gap:.85rem;padding:1rem 1.5rem}.cat-bar-row{grid-gap:1rem;align-items:center;display:grid;gap:1rem;grid-template-columns:160px 1fr 80px}.cat-bar-name{color:var(--color-text);font-size:.875rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cat-bar-track{background:var(--color-bg);border-radius:4px;height:8px;overflow:hidden}.cat-bar-fill{background:var(--color-primary);border-radius:4px;height:100%;transition:width .4s ease}.cat-bar-amount{color:var(--color-text);font-size:.875rem;font-weight:700;text-align:right}.subs-total-equiv{color:var(--color-primary);font-size:.875rem;font-weight:700}.subs-table{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.subs-header{background:var(--color-bg);color:var(--color-text-muted);font-size:.7rem;font-weight:700;letter-spacing:.05em;padding:.75rem 1.5rem;text-transform:uppercase}.subs-header,.subs-row{grid-gap:1rem;border-bottom:1px solid var(--color-border);display:grid;gap:1rem;grid-template-columns:2fr 1.2fr 1fr 1fr 1fr .8fr}.subs-row{align-items:center;padding:.9rem 1.5rem;transition:background .15s}.subs-row:last-child{border-bottom:none}.subs-row:hover{background:var(--color-bg)}.subs-vendor{align-items:center;color:var(--color-text);display:flex;font-weight:600;gap:.4rem}.cancel-link{color:var(--color-text-muted);font-size:.75rem;opacity:.6;text-decoration:none;transition:opacity .15s}.cancel-link:hover{color:var(--color-primary);opacity:1}.subs-amount{color:var(--color-text);font-weight:700;white-space:nowrap}.subs-cadence{font-size:.8em;font-weight:400;margin-left:1px}.subs-cadence,.subs-equiv{color:var(--color-text-muted)}.subs-equiv{font-weight:600}.tag-cat{background:var(--color-bg);border:1px solid var(--color-border);border-radius:100px;font-size:.75rem;padding:.15rem .6rem}.tag-cat,.tag-none{color:var(--color-text-muted)}.tag-none{opacity:.4}.tag-recurring{background:var(--color-info-bg);border:1px solid var(--color-info-border);color:var(--color-primary);padding:.15rem .6rem}.badge-autorenew,.tag-recurring{border-radius:100px;font-size:.7rem}.badge-autorenew{font-weight:700;padding:.15rem .5rem;text-transform:uppercase}.badge-autorenew.on{background:var(--color-paid-bg);border:1px solid var(--color-paid-border);color:var(--color-paid-text)}.badge-autorenew.off{background:var(--color-bg);color:var(--color-text-muted)}.badge-autorenew.off,.price-changes{border:1px solid var(--color-border)}.price-changes{background:var(--color-surface);border-radius:var(--radius-md);overflow:hidden}.pc-row{grid-gap:1rem;align-items:center;border-bottom:1px solid var(--color-border);display:grid;font-size:.875rem;gap:1rem;grid-template-columns:2fr 1.5fr 1fr 1fr;padding:.875rem 1.5rem}.pc-row:last-child{border-bottom:none}.pc-vendor{color:var(--color-text);font-weight:600}.pc-amounts{align-items:center;color:var(--color-text-muted);display:flex;gap:.5rem}.pc-arrow{font-size:.75rem}.pc-new{color:var(--color-text)}.pc-diff,.pc-new{font-weight:700}.pc-diff.up{color:var(--color-danger)}.pc-diff.down{color:var(--color-success)}.pc-pct{font-size:.8em;font-weight:400}.pc-date{color:var(--color-text-muted);font-size:.8rem}@media (max-width:900px){.summary-cards{grid-template-columns:repeat(2,1fr)}.subs-header,.subs-row{grid-template-columns:2fr 1fr 1fr 1fr}.subs-header span:nth-child(2),.subs-header span:nth-child(6),.subs-row>div:nth-child(2),.subs-row>div:nth-child(6){display:none}.pc-row{grid-template-columns:1fr 1fr 1fr}.pc-row>.pc-date{display:none}}@media (max-width:640px){.dashboard{padding:1rem}.summary-cards{grid-template-columns:repeat(2,1fr)}.cat-bar-row{gap:.5rem;grid-template-columns:100px 1fr 70px}.subs-header,.subs-row{grid-template-columns:1fr 1fr 1fr}.subs-header span:nth-child(2),.subs-header span:nth-child(3),.subs-header span:nth-child(6),.subs-row>div:nth-child(2),.subs-row>div:nth-child(3),.subs-row>div:nth-child(6){display:none}}:root{--color-bg:#f6f8fa;--color-surface:#fff;--color-primary:#0891b2;--color-primary-hover:#0e7490;--color-secondary:#636c76;--color-text:#1f2328;--color-text-muted:#636c76;--color-border:#d0d7de;--color-danger:#cf222e;--color-success:#1a7f37;--color-warning:#9a6700;--color-pending-bg:#fff8c5;--color-pending-border:#d4a72c;--color-pending-text:#7d4e00;--color-paid-bg:#dafbe1;--color-paid-border:#2da44e;--color-paid-text:#116329;--color-overdue-bg:#ffebe9;--color-overdue-border:#ff8182;--color-overdue-text:#82071e;--color-info-bg:#ddf4ff;--color-info-border:#54aeff;--shadow-sm:0 1px 2px 0 #1f23280f;--shadow-md:0 4px 6px -1px #1f23281a,0 2px 4px -1px #1f23280f;--shadow-lg:0 10px 15px -3px #1f23281a,0 4px 6px -2px #1f23280d;--shadow-xl:0 20px 25px -5px #1f23281f,0 10px 10px -5px #1f23280f;--radius-sm:8px;--radius-md:12px;--radius-lg:16px}[data-theme=dark]{--color-bg:#0d1117;--color-surface:#161b22;--color-primary:#26d4e8;--color-primary-hover:#06b6d4;--color-secondary:#8b949e;--color-text:#e6edf3;--color-text-muted:#8b949e;--color-border:#30363d;--color-danger:#f85149;--color-success:#3fb950;--color-warning:#d29922;--color-pending-bg:#2d2208;--color-pending-border:#9e6a03;--color-pending-text:#e3b341;--color-paid-bg:#0d1f17;--color-paid-border:#238636;--color-paid-text:#3fb950;--color-overdue-bg:#1f0d0d;--color-overdue-border:#b91c1c;--color-overdue-text:#f85149;--color-info-bg:#0d1526;--color-info-border:#1f6feb;--shadow-sm:0 1px 2px 0 #00000080;--shadow-md:0 4px 6px -1px #0009,0 2px 4px -1px #00000080;--shadow-lg:0 10px 15px -3px #000000b3,0 4px 6px -2px #0009;--shadow-xl:0 20px 25px -5px #000c,0 10px 10px -5px #000000b3}*{box-sizing:border-box;margin:0;padding:0}*,:after,:before{transition:background-color .3s ease,border-color .3s ease,color .3s ease}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background:#f6f8fa;background:var(--color-bg);color:#1f2328;color:var(--color-text);font-family:Manrope,-apple-system,BlinkMacSystemFont,sans-serif}.app{display:flex;flex-direction:column;min-height:100vh}.app-header{backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);background:#f6f8fad9;border-bottom:1px solid #d0d7de;border-bottom:1px solid var(--color-border);padding:.875rem 2rem;position:sticky;top:0;z-index:100}[data-theme=dark] .app-header{background:#0d1117d9}.header-content{gap:2rem;justify-content:space-between;margin:0 auto;max-width:1400px}.app-brand,.header-content{align-items:center;display:flex}.app-logo{height:2.75rem;object-fit:contain;width:auto}.title-icon{-webkit-text-fill-color:#0000;background:linear-gradient(135deg,#0891b2,#7c3aed);background:linear-gradient(135deg,var(--color-primary),#7c3aed);-webkit-background-clip:text;background-clip:text;font-size:2rem}.header-actions{align-items:center;display:flex;gap:.75rem}.view-toggle{background:#0000;border:1px solid #d0d7de;border:1px solid var(--color-border);border-radius:8px;border-radius:var(--radius-sm);color:#636c76;color:var(--color-text-muted);cursor:pointer;font-family:Manrope,sans-serif;font-size:.875rem;font-weight:500;padding:.5rem 1rem;transition:all .2s ease}.view-toggle:hover{background:#f6f8fa;background:var(--color-bg);color:#1f2328;color:var(--color-text)}.view-toggle.active{border-color:#0891b2;border-color:var(--color-primary)}.btn-primary,.view-toggle.active{background:#0891b2;background:var(--color-primary);color:#fff}.btn-primary{border:none;border-radius:8px;border-radius:var(--radius-sm);box-shadow:0 1px 2px 0 #1f23280f;box-shadow:var(--shadow-sm);cursor:pointer;font-family:Manrope,sans-serif;font-size:.875rem;font-weight:600;padding:.625rem 1.25rem;transition:all .2s ease}.btn-primary:hover{background:#0e7490;background:var(--color-primary-hover);box-shadow:0 4px 6px -1px #1f23281a,0 2px 4px -1px #1f23280f;box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn-secondary{background:#0000;border:1px solid #d0d7de;border:1px solid var(--color-border);border-radius:8px;border-radius:var(--radius-sm);color:#1f2328;color:var(--color-text);cursor:pointer;font-family:Manrope,sans-serif;font-size:.875rem;font-weight:500;padding:.625rem 1.25rem;transition:all .2s ease}.btn-secondary:hover{background:#f6f8fa;background:var(--color-bg)}.user-menu{align-items:center;display:flex;gap:.375rem}.user-name{color:#636c76;color:var(--color-text-muted);font-size:.8125rem;font-weight:600;max-width:120px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-role-badge{background:#ddf4ff;background:var(--color-info-bg);border:1px solid #54aeff;border:1px solid var(--color-info-border);border-radius:100px;color:#0891b2;color:var(--color-primary);font-size:.625rem;font-weight:700;letter-spacing:.05em;padding:.1rem .4rem;text-transform:uppercase}.btn-logout{align-items:center;background:#0000;border:1px solid #d0d7de;border:1px solid var(--color-border);border-radius:8px;border-radius:var(--radius-sm);color:#636c76;color:var(--color-text-muted);cursor:pointer;display:flex;font-size:1.1rem;justify-content:center;padding:.5rem;transition:all .2s ease}.btn-logout:hover{background:#f6f8fa;background:var(--color-bg);border-color:#cf222e;border-color:var(--color-danger);color:#cf222e;color:var(--color-danger)}.btn-settings{background:#0000;border:1px solid #d0d7de;border:1px solid var(--color-border);border-radius:8px;border-radius:var(--radius-sm);cursor:pointer;font-size:1.25rem;padding:.5rem;transition:all .2s ease}.btn-settings:hover{background:#f6f8fa;background:var(--color-bg);transform:rotate(90deg)}.btn-theme-toggle{align-items:center;background:#0000;border:1px solid #d0d7de;border:1px solid var(--color-border);border-radius:8px;border-radius:var(--radius-sm);cursor:pointer;display:flex;font-size:1.25rem;justify-content:center;padding:.5rem;transition:all .2s ease}.btn-theme-toggle:hover{background:#f6f8fa;background:var(--color-bg);transform:scale(1.1)}.btn-danger{background:#cf222e;background:var(--color-danger);border:none;border-radius:8px;border-radius:var(--radius-sm);color:#fff;cursor:pointer;font-family:Manrope,sans-serif;font-size:.875rem;font-weight:600;padding:.625rem 1.25rem;transition:all .2s ease}.btn-danger:hover{background:#b91c1c}.app-main{flex:1 1;margin:0 auto;max-width:1400px;padding:2rem}.app-main,.list-view{width:100%}.list-filters{display:flex;flex-wrap:wrap;gap:.625rem;margin-bottom:1.25rem}.list-filters select{background:#fff;background:var(--color-surface);color:#1f2328;color:var(--color-text);padding:.5rem .75rem}.btn-clear-filters,.list-filters select{border:1px solid #d0d7de;border:1px solid var(--color-border);border-radius:8px;border-radius:var(--radius-sm);cursor:pointer;font-family:Manrope,sans-serif;font-size:.875rem}.btn-clear-filters{background:#0000;color:#636c76;color:var(--color-text-muted);padding:.5rem .875rem;transition:all .2s ease}.btn-clear-filters:hover{border-color:#cf222e;border-color:var(--color-danger);color:#cf222e;color:var(--color-danger)}.empty-state{color:#636c76;color:var(--color-text-muted);padding:4rem 2rem;text-align:center}.empty-state p{font-size:1.125rem}.bills-list{grid-gap:1.5rem;display:grid;gap:1.5rem;grid-template-columns:repeat(auto-fill,minmax(320px,1fr))}.bill-card{background:#fff;background:var(--color-surface);border:1px solid #d0d7de;border:1px solid var(--color-border);border-radius:12px;border-radius:var(--radius-md);cursor:pointer;padding:1.5rem;transition:all .2s ease}.bill-card:hover{box-shadow:0 10px 15px -3px #1f23281a,0 4px 6px -2px #1f23280d;box-shadow:var(--shadow-lg);transform:translateY(-2px)}.bill-card.selected,.bill-card:hover{border-color:#0891b2;border-color:var(--color-primary)}.bill-card.selected{box-shadow:0 0 0 3px #2563eb1a}.bill-card-header{align-items:start;display:flex;justify-content:space-between;margin-bottom:1rem}.bill-card-header h3{color:#1f2328;color:var(--color-text);font-size:1.125rem;font-weight:600}.status-badge{border-radius:100px;font-size:.75rem;font-weight:600;letter-spacing:.025em;padding:.25rem .75rem;text-transform:uppercase}.status-badge.pending{background:#fff8c5;background:var(--color-pending-bg);border:1px solid #d4a72c;border:1px solid var(--color-pending-border);color:#7d4e00;color:var(--color-pending-text)}.status-badge.paid{background:#dafbe1;background:var(--color-paid-bg);border:1px solid #2da44e;border:1px solid var(--color-paid-border);color:#116329;color:var(--color-paid-text)}.status-badge.overdue{background:#ffebe9;background:var(--color-overdue-bg);border:1px solid #ff8182;border:1px solid var(--color-overdue-border);color:#82071e;color:var(--color-overdue-text)}.bill-card-body .amount{color:#1f2328;color:var(--color-text);font-size:1.875rem;font-weight:700;margin-bottom:.5rem}.bill-card-body .due-date{font-size:.875rem;margin-bottom:.75rem}.bill-card-body .due-date,.category-tag{color:#636c76;color:var(--color-text-muted)}.category-tag{background:#f6f8fa;background:var(--color-bg);border-radius:100px;display:inline-block;font-size:.75rem;font-weight:500;padding:.25rem .75rem}.modal-overlay{align-items:center;animation:fadeIn .2s ease;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#0f172a80;bottom:0;display:flex;justify-content:center;left:0;padding:1rem;position:fixed;right:0;top:0;z-index:1000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal-content{animation:slideUp .3s ease;background:#fff;background:var(--color-surface);border-radius:16px;border-radius:var(--radius-lg);box-shadow:0 20px 25px -5px #1f23281f,0 10px 10px -5px #1f23280f;box-shadow:var(--shadow-xl);max-height:90vh;max-width:600px;overflow-y:auto;width:100%}@keyframes slideUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.modal-header{align-items:center;border-bottom:1px solid #d0d7de;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;padding:1.5rem 2rem}.modal-header h2{color:#1f2328;color:var(--color-text);font-size:1.25rem;font-weight:700}.close-btn{align-items:center;background:none;border:none;color:#636c76;color:var(--color-text-muted);cursor:pointer;display:flex;font-size:2rem;height:2rem;justify-content:center;line-height:1;padding:0;transition:all .2s ease;width:2rem}.close-btn:hover{color:#1f2328;color:var(--color-text);transform:rotate(90deg)}@media (max-width:768px){.header-content{flex-direction:column;gap:1rem}.header-actions{justify-content:space-between;width:100%}.app-main{padding:1rem}.bills-list{grid-template-columns:1fr}.modal-content{margin:1rem;max-height:calc(100vh - 2rem)}}.error-banner{align-items:center;animation:fadeIn .2s ease;background:#ffebe9;background:var(--color-overdue-bg);border-bottom:1px solid #ff8182;border-bottom:1px solid var(--color-overdue-border);display:flex;font-size:.9rem;font-weight:500;gap:1rem;justify-content:space-between;padding:.75rem 2rem}.error-banner,.error-banner-close{color:#82071e;color:var(--color-overdue-text)}.error-banner-close{background:none;border:none;cursor:pointer;flex-shrink:0;font-size:1.25rem;line-height:1;padding:0;transition:opacity .2s ease}.error-banner-close:hover{opacity:.7}
/*# sourceMappingURL=main.01a0981b.css.map*/