.login-page{background-color:var(--color-bg);min-height:100vh;padding:var(--space-4);justify-content:center;align-items:center;display:flex}.login-page__inner{width:100%;max-width:440px}.login-page__card{width:100%}.login-page__header{margin-bottom:var(--space-5)}.login-page__title{margin:0 0 var(--space-2) 0;color:var(--color-text-primary);font-size:var(--font-size-xl);font-weight:var(--font-weight-bold)}.login-page__subtitle{color:var(--color-text-secondary);font-size:var(--font-size-sm);margin:0}.login-form{gap:var(--space-4);flex-direction:column;display:flex}.login-form__field{gap:var(--space-2);flex-direction:column;display:flex}.login-form__error{color:var(--color-danger);font-size:var(--font-size-sm);margin:0}.login-form__signup-link{margin-top:var(--space-2);color:var(--color-tertiary);font-size:var(--font-size-sm);text-align:center;text-decoration:none}.login-form__signup-link:hover{color:var(--color-tertiary-hover)}.card{background-color:var(--color-surface);border:1px solid var(--color-border-subtle);border-radius:var(--radius-lg);box-shadow:var(--shadow-md)}.card-padded{padding:var(--space-4)}.label{align-items:center;gap:var(--space-1);color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);line-height:1.2;display:inline-flex}.label-text{display:inline}.label-required{color:var(--color-danger);font-weight:var(--font-weight-bold)}.input-wrapper{gap:var(--space-1);flex-direction:column;display:flex}.input{width:100%;padding:var(--space-2) var(--space-3);background-color:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:var(--font-size-md);transition:all .2s}.input::placeholder{color:var(--color-text-muted)}.input:hover{background-color:var(--color-surface-hover)}.input:focus{border-color:var(--color-focus);box-shadow:0 0 0 1px var(--color-focus);outline:none}.input:disabled{opacity:.6;cursor:not-allowed}.input-error{border-color:var(--color-danger)}.input-error:focus{border-color:var(--color-danger);box-shadow:0 0 0 1px var(--color-danger)}.input-error-text{font-size:var(--font-size-sm);color:var(--color-danger)}.input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.input[type=number]{appearance:textfield}.btn{border-radius:var(--radius-md);cursor:pointer;border:1px solid #0000;font-family:inherit;font-weight:600;transition:all .2s}.btn-sm{padding:6px 10px;font-size:.8rem}.btn-md{padding:10px 16px;font-size:1rem}.btn-lg{padding:14px 20px;font-size:1.1rem}.btn-primary{background-color:var(--color-primary);color:var(--color-text-primary)}.btn-primary:hover{background-color:var(--color-primary-hover)}.btn-primary:active{background-color:var(--color-primary-active)}.btn-secondary{background-color:var(--color-secondary);color:var(--color-text-primary);border-color:var(--color-border)}.btn-secondary:hover{background-color:var(--color-secondary-hover)}.btn-danger{background-color:var(--color-danger);color:var(--color-text-primary)}.btn-danger:hover{background-color:var(--color-danger-hover)}.btn-ghost{color:var(--color-primary);border-color:var(--color-border);background-color:#0000}.btn:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.btn:disabled{opacity:.5;cursor:not-allowed}.app-shell{background-color:var(--color-bg);flex-direction:column;min-height:100vh;display:flex}.app-shell__main{flex:1;width:100%}.app-shell__content{width:min(1200px,100%);padding:var(--space-5) var(--space-4);margin:0 auto}.app-header{background-color:var(--color-bg-elevated);border-bottom:1px solid var(--color-border);width:100%}.app-header__inner{width:min(1200px,100%);padding:var(--space-4);justify-content:space-between;align-items:center;gap:var(--space-4);margin:0 auto;display:flex}.app-header__brand{align-items:center;display:flex}.app-header__title{color:var(--color-text-primary);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);margin:0;text-decoration:none}a.app-header__title:hover{color:var(--color-primary-hover)}.app-header__nav{justify-content:center;align-items:center;gap:var(--space-4);flex:1;display:flex}.app-header__link{color:var(--color-text-secondary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);text-decoration:none;transition:color .2s}.app-header__link:hover,.app-header__link.active{color:var(--color-text-primary)}.app-header__link:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px;border-radius:var(--radius-xs)}.app-header__actions{align-items:center;gap:var(--space-3);display:flex}.app-header__user{text-overflow:ellipsis;white-space:nowrap;max-width:220px;color:var(--color-text-secondary);font-size:var(--font-size-sm);overflow:hidden}.app-header__logout{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background-color:var(--color-surface);color:var(--color-text-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);cursor:pointer;transition:background-color .2s,border-color .2s}.app-header__logout:hover{background-color:var(--color-surface-hover);border-color:var(--color-focus)}.app-header__logout:focus-visible{outline:2px solid var(--color-focus);outline-offset:2px}.app-footer{border-top:1px solid var(--color-border);background-color:var(--color-bg-elevated);width:100%}.app-footer__inner{width:min(1200px,100%);padding:var(--space-4);margin:0 auto}.app-footer__text{color:var(--color-text-muted);font-size:var(--font-size-sm);margin:0}.analysis-spending{height:100%}.analysis-spending__header,.analysis-spending__title,.analysis-spending__subtitle,.analysis-spending__total{margin:0}.analysis-spending__title{font-size:1.15rem}.analysis-spending__subtitle{margin-top:var(--space-1);color:var(--color-text-secondary);font-size:.95rem}.analysis-spending__total{margin-top:var(--space-4);font-size:clamp(1.9rem,3.2vw,2.5rem);font-weight:var(--font-weight-bold);color:var(--color-info);line-height:1.1}.analysis-spending__state{margin:var(--space-4) 0 0;color:var(--color-text-secondary)}.analysis-spending__state--error{color:var(--color-danger-hover)}.debt-snapshot{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;display:flex}.debt-snapshot+.debt-snapshot{border-top:1px solid var(--color-border-subtle)}.debt-snapshot__details,.debt-snapshot__values{min-width:0}.debt-snapshot__title,.debt-snapshot__meta,.debt-snapshot__amount{margin:0}.debt-snapshot__title{color:var(--color-text-primary);font-size:1rem;font-weight:var(--font-weight-medium)}.debt-snapshot__meta{align-items:center;gap:var(--space-2);margin-top:var(--space-1);color:var(--color-text-secondary);text-transform:capitalize;font-size:.9rem;display:flex}.debt-snapshot__dot{color:var(--color-text-muted)}.debt-snapshot__values{text-align:right}.debt-snapshot__amount{color:var(--color-warning);font-size:1rem;font-weight:var(--font-weight-bold)}@media (width<=640px){.debt-snapshot{flex-direction:column;align-items:flex-start}.debt-snapshot__values{text-align:left}}.skeleton-card{margin-top:var(--space-4);flex-direction:column;display:flex}.skeleton-card__row{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;display:flex}.skeleton-card__row+.skeleton-card__row{border-top:1px solid var(--color-border-subtle)}.skeleton-card__left,.skeleton-card__right{gap:var(--space-2);flex-direction:column;display:flex}.skeleton-card__right{align-items:flex-end}.skeleton-card__line{border-radius:var(--radius-sm);background:linear-gradient(100deg,#ffffff14 15%,#ffffff2e 50%,#ffffff14 85%) 0 0/220% 100%;animation:1.4s ease-in-out infinite skeleton-shimmer;display:inline-block}.skeleton-card__line--title{width:160px;height:14px}.skeleton-card__line--meta{width:120px;height:11px}.skeleton-card__line--amount{width:86px;height:14px}.skeleton-card__line--chip{width:64px;height:11px}@media (width<=640px){.skeleton-card__row{flex-direction:column;align-items:flex-start}.skeleton-card__right{align-items:flex-start}}.income-source-snapshot{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;display:flex}.income-source-snapshot+.income-source-snapshot{border-top:1px solid var(--color-border-subtle)}.income-source-snapshot__details,.income-source-snapshot__values{min-width:0}.income-source-snapshot__title,.income-source-snapshot__meta,.income-source-snapshot__amount,.income-source-snapshot__status{margin:0}.income-source-snapshot__title{color:var(--color-text-primary);font-size:1rem;font-weight:var(--font-weight-medium)}.income-source-snapshot__meta{align-items:center;gap:var(--space-2);margin-top:var(--space-1);color:var(--color-text-secondary);text-transform:capitalize;font-size:.9rem;display:flex}.income-source-snapshot__dot{color:var(--color-text-muted)}.income-source-snapshot__values{text-align:right}.income-source-snapshot__amount{color:var(--color-warning);font-size:1rem;font-weight:var(--font-weight-bold)}.income-source-snapshot__status{margin-top:var(--space-1);font-size:.8rem;font-weight:var(--font-weight-medium);border-radius:999px;padding:2px 10px;display:inline-flex}.income-source-snapshot__status--active{color:var(--color-success);background:var(--color-success-bg)}.income-source-snapshot__status--paused{color:var(--color-warning);background:var(--color-warning-bg)}@media (width<=640px){.income-source-snapshot{flex-direction:column;align-items:flex-start}.income-source-snapshot__values{text-align:left}}.transaction-snapshot{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;display:flex}.transaction-snapshot+.transaction-snapshot{border-top:1px solid var(--color-border-subtle)}.transaction-snapshot__details,.transaction-snapshot__values{min-width:0}.transaction-snapshot__title,.transaction-snapshot__meta,.transaction-snapshot__amount,.transaction-snapshot__kind{margin:0}.transaction-snapshot__title{color:var(--color-text-primary);font-size:1rem;font-weight:var(--font-weight-medium)}.transaction-snapshot__meta{align-items:center;gap:var(--space-2);margin-top:var(--space-1);color:var(--color-text-secondary);font-size:.9rem;display:flex}.transaction-snapshot__dot{color:var(--color-text-muted)}.transaction-snapshot__values{text-align:right}.transaction-snapshot__actions{gap:var(--space-2);margin-top:var(--space-2);justify-content:flex-end;display:flex}.transaction-snapshot__amount{font-size:1rem;font-weight:var(--font-weight-bold)}.transaction-snapshot__amount--income{color:var(--color-success)}.transaction-snapshot__amount--expense{color:var(--color-danger-hover)}.transaction-snapshot__kind{margin-top:var(--space-1);color:var(--color-text-secondary);text-transform:capitalize;font-size:.85rem}@media (width<=640px){.transaction-snapshot{flex-direction:column;align-items:flex-start}.transaction-snapshot__values{text-align:left;width:100%}.transaction-snapshot__actions{justify-content:flex-start;width:100%}.transaction-snapshot__actions button{flex:1}}.dashboard-panel{height:100%}.dashboard-panel__header{justify-content:space-between;align-items:flex-start;gap:var(--space-3);display:flex}.dashboard-panel__title,.dashboard-panel__subtitle,.dashboard-panel__empty{margin:0}.dashboard-panel__title{font-size:1.15rem}.dashboard-panel__subtitle{margin-top:var(--space-1);color:var(--color-text-secondary);font-size:.95rem}.dashboard-panel__list{margin-top:var(--space-4)}.dashboard-panel__empty{margin-top:var(--space-4);color:var(--color-text-secondary)}.dashboard-panel__state{margin:var(--space-4) 0 0;color:var(--color-text-secondary)}.dashboard-panel__state--error{color:var(--color-danger-hover)}.dashboard-page__hero{gap:var(--space-5);margin-bottom:var(--space-5);background:radial-gradient(circle at 100% 0,#569cd629,#0000 30%),linear-gradient(135deg,#0e639c1f,#2d2d30d9);grid-template-columns:minmax(0,1.8fr) minmax(260px,.8fr);display:grid;position:relative;overflow:hidden}.dashboard-page__hero:after{content:"";filter:blur(6px);background:#4ec9b014;border-radius:50%;width:220px;height:220px;position:absolute;inset:auto -60px -80px auto}.dashboard-page__hero-copy,.dashboard-page__hero-meta{z-index:1;position:relative}.dashboard-page__eyebrow,.dashboard-page__title,.dashboard-page__subtitle,.dashboard-page__hero-label,.dashboard-page__hero-value{margin:0}.dashboard-page__eyebrow{color:var(--color-info);font-size:.85rem;font-weight:var(--font-weight-bold);letter-spacing:.08em;text-transform:uppercase}.dashboard-page__title{margin-top:var(--space-2);font-size:clamp(1.8rem,3vw,2.5rem);line-height:1.1}.dashboard-page__subtitle{max-width:56ch;margin-top:var(--space-3);color:var(--color-text-secondary);font-size:1rem}.dashboard-page__hero-meta{padding:var(--space-4);border-radius:var(--radius-md);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#1e1e1e70;border:1px solid #ffffff0f;align-self:start}.dashboard-page__hero-label{color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:.85rem}.dashboard-page__hero-value{margin-top:var(--space-2);word-break:break-word;color:var(--color-text-primary);font-size:1rem;font-weight:var(--font-weight-medium)}.dashboard-page__snapshots{gap:var(--space-5);flex-direction:column;display:flex}.dashboard-page__analysis-row,.dashboard-page__snapshot-row{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));display:grid}@media (width<=900px){.dashboard-page__hero,.dashboard-page__snapshot-row,.dashboard-page__analysis-row{grid-template-columns:1fr}}.toast{margin:0 0 var(--space-4);pointer-events:none;justify-content:flex-start;display:flex}.toast__chip{font-size:.9rem;font-weight:var(--font-weight-medium);box-shadow:var(--shadow-sm);border:1px solid #0000;border-radius:999px;align-items:center;padding:10px 14px;display:inline-flex}.toast--success .toast__chip{color:var(--color-success);background:var(--color-success-bg);border-color:#4ec9b059}.toast--entering{animation:.22s ease-out forwards toast-in}.toast--exiting{animation:.22s ease-in forwards toast-out}.transaction-create-form-card{max-height:550px}.transaction-create-form-card__header{margin-bottom:var(--space-4)}.transaction-create-form-card__title,.transaction-create-form-card__subtitle,.transaction-create-form__error{margin:0}.transaction-create-form-card__title{font-size:1.15rem}.transaction-create-form-card__subtitle{margin-top:var(--space-1);color:var(--color-text-secondary);font-size:.95rem}.transaction-create-form{gap:var(--space-3);flex-direction:column;display:flex}.transaction-create-form__row{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.transaction-create-form__field{gap:var(--space-1);flex-direction:column;display:flex}.transaction-create-form__select,.transaction-create-form__textarea{width:100%;padding:var(--space-2) var(--space-3);background-color:var(--color-surface);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:var(--radius-sm);font-size:1rem}.transaction-create-form__textarea{resize:vertical;min-height:84px}.transaction-create-form__select:focus,.transaction-create-form__textarea:focus{border-color:var(--color-focus);box-shadow:0 0 0 1px var(--color-focus);outline:none}.transaction-create-form__error{color:var(--color-danger-hover)}.transaction-create-form__actions{gap:var(--space-2);display:flex}.transaction-create-form__actions button{flex:1}@media (width<=740px){.transaction-create-form__row{grid-template-columns:1fr}.transaction-create-form__actions{flex-direction:column}}.transactions-page__hero{margin-bottom:var(--space-5)}.transactions-page__title,.transactions-page__subtitle{margin:0}.transactions-page__title{font-size:clamp(1.6rem,2.5vw,2.1rem)}.transactions-page__subtitle{margin-top:var(--space-2);color:var(--color-text-secondary)}.transactions-page__grid{gap:var(--space-5);grid-template-columns:minmax(280px,1fr) minmax(0,1.4fr);display:grid}.dashboard-panel{max-height:700px;overflow-y:scroll}@media (width<=1024px){.transactions-page__grid{grid-template-columns:1fr}}.debt-create-form-card{height:fit-content}.debt-create-form-card__header{margin-bottom:var(--space-4)}.debt-create-form-card__title,.debt-create-form-card__subtitle{margin:0}.debt-create-form-card__title{font-size:1.15rem;font-weight:var(--font-weight-bold)}.debt-create-form-card__subtitle{margin-top:var(--space-1);color:var(--color-text-secondary);font-size:.95rem}.debt-create-form{gap:var(--space-4);flex-direction:column;display:flex}.debt-create-form__field{gap:var(--space-2);flex-direction:column;display:flex}.debt-create-form__row{gap:var(--space-3);grid-template-columns:repeat(2,1fr);display:grid}.debt-create-form__select{padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-sm);background:var(--color-bg-secondary);color:var(--color-text-primary);cursor:pointer;font-family:inherit;font-size:1rem;transition:border-color .2s}.debt-create-form__select:hover:not(:disabled){border-color:var(--color-border-hover)}.debt-create-form__select:focus{border-color:var(--color-info);outline:none;box-shadow:0 0 0 3px #569cd61a}.debt-create-form__select:disabled{opacity:.6;cursor:not-allowed}.debt-create-form__error{padding:var(--space-2) var(--space-3);border-left:3px solid var(--color-danger-hover);border-radius:var(--radius-sm);color:var(--color-danger-hover);background:#dc26261a;margin:0;font-size:.9rem}.debt-create-form__actions{gap:var(--space-3);margin-top:var(--space-2);display:flex}@media (width<=640px){.debt-create-form__row{grid-template-columns:1fr}.debt-create-form__actions{flex-direction:column}.debt-create-form__actions button{width:100%}}.debts-page__hero{margin-bottom:var(--space-5);background:linear-gradient(135deg,#dc262614,#78350f14)}.debts-page__title,.debts-page__subtitle{margin:0}.debts-page__title{font-size:1.8rem;font-weight:var(--font-weight-bold);margin-bottom:var(--space-1)}.debts-page__subtitle{color:var(--color-text-secondary);margin-bottom:var(--space-3);font-size:1rem}.debts-page__total{align-items:center;gap:var(--space-2);padding-top:var(--space-3);border-top:1px solid #ffffff1a;display:flex}.debts-page__total-label{color:var(--color-text-secondary);font-size:.9rem;font-weight:var(--font-weight-medium)}.debts-page__total-amount{color:var(--color-warning);font-size:1.3rem;font-weight:var(--font-weight-bold)}.debts-page__grid{gap:var(--space-5);grid-template-columns:1fr 2fr;display:grid}.debts-page__list-container{gap:var(--space-4);flex-direction:column;display:flex}.debts-page__feedback{padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);margin:0;font-size:.95rem}.debts-page__feedback--success{color:var(--color-success);background:#22c55e1a;border:1px solid #22c55e4d}.debts-page__feedback--error{color:var(--color-danger-hover);background:#dc26261a;border:1px solid #dc26264d}.debts-page__list{flex-direction:column;display:flex}.debts-page__item{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) 0;border-bottom:1px solid var(--color-border-subtle);display:flex}.debts-page__item:last-child{border-bottom:none}.debts-page__item-details{flex:1;min-width:0}.debts-page__item-title,.debts-page__item-meta{margin:0}.debts-page__item-title{color:var(--color-text-primary);font-size:1rem;font-weight:var(--font-weight-medium)}.debts-page__item-meta{align-items:center;gap:var(--space-2);margin-top:var(--space-1);color:var(--color-text-secondary);text-transform:capitalize;font-size:.9rem;display:flex}.debts-page__dot{color:var(--color-text-muted)}.debts-page__item-values{align-items:flex-end;gap:var(--space-2);text-align:right;flex-direction:column;display:flex}.debts-page__item-amount{color:var(--color-warning);font-size:1rem;font-weight:var(--font-weight-bold);margin:0}.debts-page__item-actions{gap:var(--space-2);display:flex}.debts-page__item-actions button{white-space:nowrap}.debts-page__state,.debts-page__empty{color:var(--color-text-secondary);text-align:center;margin:var(--space-4) 0;font-size:.95rem}@media (width<=1024px){.debts-page__grid{grid-template-columns:1fr}}@media (width<=640px){.debts-page__title{font-size:1.4rem}.debts-page__item{flex-direction:column;align-items:flex-start}.debts-page__item-values{align-items:flex-start;width:100%}.debts-page__item-actions{flex-direction:column;width:100%}.debts-page__item-actions button{width:100%}}:root{--color-bg:#1e1e1e;--color-bg-elevated:#252526;--color-surface:#2d2d30;--color-surface-hover:#3a3d41;--color-border:#3c3c3c;--color-border-subtle:#2a2a2a;--color-text-primary:#d4d4d4;--color-text-secondary:#bdcad7;--color-text-muted:#6a737d;--color-text-inverse:#fff;--color-primary:#0e639c;--color-primary-hover:#17b;--color-primary-active:#0b4f7a;--color-accent:#599ede;--color-secondary:#3a3d41;--color-secondary-hover:#4a4d52;--color-tertiary:#b8b1e7;--color-tertiary-hover:#ae89d8;--color-success:#4ec9b0;--color-success-bg:#4ec9b01a;--color-warning:#d7ba7d;--color-warning-bg:#d7ba7d1a;--color-danger:#c74e39;--color-danger-hover:#d16969;--color-danger-bg:#c74e391a;--color-info:#569cd6;--color-info-bg:#569cd61a;--color-focus:#007fd4;--color-hover-overlay:#ffffff0d;--color-active-overlay:#0000004d;--shadow-sm:0 1px 2px #0000004d;--shadow-md:0 2px 8px #0006;--shadow-lg:0 4px 16px #00000080;--radius-xs:4px;--radius-sm:6px;--radius-md:8px;--radius-lg:12px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--font-family-base:"Noto Sans Display", sans-serif;--font-size-sm:1rem;--font-size-md:1.25rem;--font-size-lg:1.5rem;--font-size-xl:1.75rem;--font-weight-regular:400;--font-weight-medium:500;--font-weight-bold:600}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%;margin:0;padding:0}body{background-color:var(--color-bg);color:var(--color-text-primary);font-family:var(--font-family-base);font-size:var(--font-size-md);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;line-height:1.5}button,input,textarea,select{color:inherit;font-family:inherit}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:var(--color-bg)}::-webkit-scrollbar-thumb{background:var(--color-surface);border-radius:var(--radius-sm)}::-webkit-scrollbar-thumb:hover{background:var(--color-surface-hover)}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes toast-out{0%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-6px)scale(.98)}}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-20% 0}}
