.summary{background-color:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--spacing-xl)}.summary__heading{font-size:var(--font-size-xl);margin-bottom:var(--spacing-lg);color:var(--color-text)}.summary__stats{display:flex;flex-wrap:wrap;gap:var(--spacing-md);margin-bottom:var(--spacing-xl)}.summary__stat-card{flex:1 1 0;min-width:10rem;background-color:var(--color-bg);border-radius:var(--radius-md);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-xs)}.summary__stat-label{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.summary__stat-value{font-size:var(--font-size-xl);font-weight:700}.summary__stat-value--income{color:var(--color-success)}.summary__stat-value--expense{color:var(--color-danger)}.summary__stat-value--positive{color:var(--color-success)}.summary__stat-value--negative{color:var(--color-danger)}.summary__progress{position:relative;background-color:var(--color-border);border-radius:var(--radius-lg);height:1.5rem;overflow:hidden}.summary__progress-bar{height:100%;border-radius:var(--radius-lg);transition:width .4s ease}.summary__progress-bar--success{background-color:var(--color-success)}.summary__progress-bar--warning{background-color:var(--color-warning)}.summary__progress-bar--danger{background-color:var(--color-danger)}.summary__progress-label{position:absolute;top:50%;right:var(--spacing-sm);transform:translateY(-50%);font-size:var(--font-size-sm);font-weight:600;color:var(--color-text)}.categories{background-color:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--spacing-xl)}.categories__heading{font-size:var(--font-size-xl);margin-bottom:var(--spacing-lg);color:var(--color-text)}.categories__grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(16rem,1fr));gap:var(--spacing-md)}.categories__card{background-color:var(--color-bg);border-radius:var(--radius-md);border:1px solid var(--color-border);padding:var(--spacing-lg);display:flex;flex-direction:column;gap:var(--spacing-sm)}.categories__card-header{display:flex;justify-content:space-between;align-items:center}.categories__card-name{font-size:var(--font-size-base);font-weight:600;color:var(--color-text)}.categories__card-status{font-size:var(--font-size-sm);font-weight:600;text-transform:uppercase;letter-spacing:.05em}.categories__card-status--success{color:var(--color-success)}.categories__card-status--warning{color:var(--color-warning)}.categories__card-status--danger{color:var(--color-danger)}.categories__progress{position:relative;background-color:var(--color-border);border-radius:var(--radius-lg);height:1.5rem;overflow:hidden}.categories__progress-bar{height:100%;border-radius:var(--radius-lg);transition:width .4s ease}.categories__card-amounts{font-size:var(--font-size-sm);color:var(--color-text-muted)}.transactions{background-color:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--spacing-xl)}.transactions__heading{font-size:var(--font-size-xl);margin-bottom:var(--spacing-lg);color:var(--color-text)}.transactions__table-wrapper{overflow-x:auto}.transactions__table{width:100%;border-collapse:collapse}.transactions__header-row th{font-size:var(--font-size-sm);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;text-align:left;padding:var(--spacing-sm) var(--spacing-md);border-bottom:2px solid var(--color-border)}.transactions__row{border-bottom:1px solid var(--color-border);transition:background-color .15s ease}.transactions__row:hover{background-color:var(--color-bg)}.transactions__row td{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);color:var(--color-text)}.transactions__date{white-space:nowrap}.transactions__description{font-weight:500}.transactions__category{color:var(--color-text-muted)}.transactions__amount{font-weight:600;white-space:nowrap;text-align:right}.transactions__amount--income{color:var(--color-success)}.transactions__amount--expense{color:var(--color-danger)}.trend{background-color:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--spacing-xl)}.trend__heading{font-size:var(--font-size-xl);margin-bottom:var(--spacing-lg);color:var(--color-text)}.trend__chart{display:flex;align-items:flex-end;justify-content:space-around;gap:var(--spacing-md);height:16rem}.trend__column{display:flex;flex-direction:column;align-items:center;flex:1}.trend__amount{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--spacing-xs)}.trend__bar{width:100%;max-width:4rem;background-color:var(--color-primary);border-radius:var(--radius-sm) var(--radius-sm) 0 0;transition:height .3s ease}.trend__label{font-size:var(--font-size-sm);color:var(--color-text-muted);padding-top:var(--spacing-sm)}.actions{background-color:var(--color-surface);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--spacing-xl)}.actions__heading{font-size:var(--font-size-xl);margin-bottom:var(--spacing-lg);color:var(--color-text)}.actions__buttons{display:flex;flex-wrap:wrap;gap:var(--spacing-md)}.actions__btn{background-color:var(--color-primary);color:var(--color-surface);border:none;padding:var(--spacing-sm) var(--spacing-lg);border-radius:var(--radius-md);cursor:pointer;font-size:var(--font-size-base);font-weight:600;transition:background-color .2s}.actions__btn:hover{background-color:var(--color-primary-dark)}.dashboard__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--spacing-md)}.dashboard__spinner{width:2.5rem;height:2.5rem;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.dashboard__loading-text{color:var(--color-text-muted);font-size:var(--font-size-sm)}.dashboard__header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md) 0;border-bottom:1px solid var(--color-border);margin-bottom:var(--spacing-xl)}.dashboard__title{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text)}.dashboard__user-info{display:flex;align-items:center;gap:var(--spacing-md)}.dashboard__user-name{color:var(--color-text-muted);font-size:var(--font-size-sm)}.dashboard__sign-out-btn{padding:var(--spacing-xs) var(--spacing-md);background-color:transparent;color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-sm);transition:background-color .2s,color .2s}.dashboard__sign-out-btn:hover{background-color:var(--color-danger);color:var(--color-surface)}.dashboard__main{padding:var(--spacing-lg) 0}.dashboard__grid{display:flex;flex-direction:column;gap:var(--spacing-xl)}:root{--color-primary: #2563eb;--color-primary-dark: #1d4ed8;--color-secondary: #64748b;--color-success: #16a34a;--color-danger: #dc2626;--color-warning: #f59e0b;--color-bg: #f8fafc;--color-surface: #ffffff;--color-text: #1e293b;--color-text-muted: #64748b;--color-border: #e2e8f0;--font-family: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--font-size-base: 1rem;--font-size-sm: .875rem;--font-size-lg: 1.25rem;--font-size-xl: 1.5rem;--font-size-2xl: 2rem;--line-height-base: 1.5;--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: .25rem;--radius-md: .5rem;--radius-lg: .75rem;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px rgba(0, 0, 0, .07);--shadow-lg: 0 10px 15px rgba(0, 0, 0, .1);--max-width: 64rem}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:100%;-webkit-text-size-adjust:100%}body{font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-text);background-color:var(--color-bg);min-height:100vh}img,svg{display:block;max-width:100%}button,input,select,textarea{font:inherit;color:inherit}a{color:var(--color-primary);text-decoration:none}a:hover{text-decoration:underline}ul,ol{list-style:none}#app{max-width:var(--max-width);margin-inline:auto;padding:var(--spacing-lg)}.app-shell__loading{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:var(--spacing-md)}.app-shell__spinner{width:2.5rem;height:2.5rem;border:3px solid var(--color-border);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app-shell__loading-text{color:var(--color-text-muted);font-size:var(--font-size-sm)}.app-shell__header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md) 0;border-bottom:1px solid var(--color-border);margin-bottom:var(--spacing-xl)}.app-shell__title{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text)}.app-shell__user-info{display:flex;align-items:center;gap:var(--spacing-md)}.app-shell__user-name{color:var(--color-text-muted);font-size:var(--font-size-sm)}.app-shell__sign-out-btn{padding:var(--spacing-xs) var(--spacing-md);background-color:transparent;color:var(--color-danger);border:1px solid var(--color-danger);border-radius:var(--radius-sm);cursor:pointer;font-size:var(--font-size-sm);transition:background-color .2s,color .2s}.app-shell__sign-out-btn:hover{background-color:var(--color-danger);color:var(--color-surface)}.app-shell__main{padding:var(--spacing-lg) 0}.app-shell__welcome{font-size:var(--font-size-lg);color:var(--color-text)}.auth-form{max-width:28rem;margin:var(--spacing-2xl) auto;padding:var(--spacing-xl);background-color:var(--color-surface);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.auth-form__title{font-size:var(--font-size-xl);font-weight:700;color:var(--color-text);text-align:center;margin-bottom:var(--spacing-lg)}.auth-form__form{display:flex;flex-direction:column;gap:var(--spacing-md)}.auth-form__error{padding:var(--spacing-sm) var(--spacing-md);background-color:#fef2f2;border:1px solid var(--color-danger);border-radius:var(--radius-sm);color:var(--color-danger);font-size:var(--font-size-sm);line-height:var(--line-height-base)}.auth-form__error[hidden]{display:none}.auth-form__field{display:flex;flex-direction:column;gap:var(--spacing-xs)}.auth-form__label{font-size:var(--font-size-sm);font-weight:600;color:var(--color-text)}.auth-form__input{padding:var(--spacing-sm) var(--spacing-md);font-family:var(--font-family);font-size:var(--font-size-base);line-height:var(--line-height-base);color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.auth-form__input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px #2563eb26}.auth-form__input:disabled{opacity:.6;cursor:not-allowed;background-color:var(--color-bg)}.auth-form__input--error{border-color:var(--color-danger)}.auth-form__input--error:focus{box-shadow:0 0 0 3px #dc262626}.auth-form__field-error{font-size:var(--font-size-sm);color:var(--color-danger);min-height:1.25rem}.auth-form__submit{padding:var(--spacing-sm) var(--spacing-md);font-family:var(--font-family);font-size:var(--font-size-base);font-weight:600;color:var(--color-surface);background-color:var(--color-primary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color .15s ease;line-height:var(--line-height-base)}.auth-form__submit:hover{background-color:var(--color-primary-dark)}.auth-form__submit:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}.auth-form__submit:disabled{opacity:.6;cursor:not-allowed}.auth-form__toggle{margin-top:var(--spacing-md);text-align:center;font-size:var(--font-size-sm);color:var(--color-text-muted)}.auth-form__toggle-link{color:var(--color-primary);text-decoration:none;font-weight:600}.auth-form__toggle-link:hover{color:var(--color-primary-dark);text-decoration:underline}@media(max-width:480px){.auth-form{margin:var(--spacing-md);padding:var(--spacing-lg)}.auth-form__title{font-size:var(--font-size-lg)}}
