:root{--accent: #f97316;--accent-dark: #c2410c;--accent-soft: rgba(249, 115, 22, .14);--accent-blue: #3b82f6;--accent-blue-dark: #1d4ed8;--bg: #09090b;--surface: #161619;--surface-2: #1f1f24;--text: #f4f4f5;--text-secondary: #a1a1aa;--text-muted: #7c7c85;--border: #26262c;--border-strong: #3a3a42;--danger: #f87171;--success: #4ade80;--brand-gradient: linear-gradient(135deg, #fdba74, #f97316 55%, #ea580c);--card-shadow: 0 1px 2px rgba(0, 0, 0, .35), 0 4px 14px rgba(0, 0, 0, .18);color-scheme:dark;font:16px/1.5 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--text);-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;background:var(--bg)}h1{font-size:20px;font-weight:600;margin:0;letter-spacing:-.2px}button{font:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app-frame{width:100%;height:100vh;height:100dvh;background:var(--bg);position:relative;overflow:hidden}.app-shell{display:flex;flex-direction:column;height:100%}.app-header{flex:none;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 20px 12px;background:var(--bg);position:sticky;top:0;z-index:5}.app-header h1{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-header__actions{flex:none;display:flex;gap:8px}.icon-button{border:none;background:var(--surface);color:var(--text-secondary);width:36px;height:36px;border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;text-decoration:none;transition:background-color .15s,color .15s}@media (hover: hover){.icon-button:hover{background:var(--surface-2);color:var(--text)}}.icon-button--avatar{padding:0;overflow:hidden}.avatar-thumb{width:100%;height:100%;object-fit:cover;border-radius:inherit}.app-content{flex:1;overflow-y:auto;padding:4px 16px 16px}.app-content__inner{width:100%;max-width:760px;margin:0 auto}.loading-text{text-align:center;color:var(--text-muted);margin-top:60px}.tab-bar{flex:none;display:flex;gap:2px;background:var(--surface);border-top:1px solid var(--border);padding:8px 4px calc(8px + env(safe-area-inset-bottom,0px))}.tab-bar__item{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;text-decoration:none;color:var(--text-muted);font-size:11px;font-weight:500;border-radius:12px;transition:background-color .15s,color .15s}.tab-bar__item span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tab-bar__item--active{color:var(--accent);background:var(--accent-soft)}.card{background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:16px;margin-bottom:12px;box-shadow:var(--card-shadow)}.section-title{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin:20px 4px 8px;text-align:center}.section-title--nav{display:flex;align-items:center;justify-content:center;gap:10px}.section-title__nav-arrow{border:none;background:none;color:var(--text-muted);padding:2px;display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:6px;transition:color .15s}@media (hover: hover){.section-title__nav-arrow:hover:not(:disabled){color:var(--text)}}.section-title__nav-arrow:disabled{opacity:.3;cursor:default}.category-card{padding:14px 16px}.category-card__row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:14px}.category-card__row--muted{color:var(--text-muted);font-size:12px;margin-top:4px}.category-card__name{font-weight:500;display:flex;align-items:center;gap:8px;min-width:0}.category-card__amount{color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}.category-card__amount--over{color:var(--danger)}.category-card__subrow{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;padding:8px 0 8px 20px;border-top:1px solid var(--border);color:var(--text-secondary)}.category-card__subrow--dense{padding:5px 0 5px 20px;font-size:12px}.category-card__subrow-label{display:flex;align-items:center;gap:8px;min-width:0}.category-card__collapse-toggle{border:none;background:none;padding:0;margin:-2px 0;display:flex;align-items:center;justify-content:center;color:var(--text-muted);cursor:pointer;flex:none}@media (hover: hover){.category-card__collapse-toggle:hover{color:var(--text)}}.category-card__subfooter{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;padding-top:8px;border-top:1px solid var(--border)}.category-card__subfooter .field__success,.category-card__subfooter .field__error{margin:0;font-size:12px}.category-card__save{padding:8px 14px;font-size:13px;flex:none;width:auto}.progress-track{height:6px;background:var(--border);border-radius:3px;margin-top:8px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:3px}.progress-fill--over{background:var(--danger)}.cashflow-chart{display:flex;align-items:flex-end;justify-content:center;gap:4px;height:140px}.cashflow-chart--scroll{overflow-x:auto;padding-bottom:2px;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}.cashflow-chart--scroll::-webkit-scrollbar{height:6px}.cashflow-chart--scroll::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:3px}.cashflow-chart__col{flex:1 0 20px;min-width:20px;max-width:44px;display:flex;flex-direction:column;align-items:center;height:100%;border:none;background:none;padding:0;font:inherit;cursor:pointer}.cashflow-chart__bars{flex:1;display:flex;align-items:flex-end;gap:2px;width:100%;justify-content:center;background-image:repeating-linear-gradient(to top,var(--border) 0,var(--border) 1px,transparent 1px,transparent 25%)}.cashflow-chart__bar{width:6px;border-radius:2px 2px 0 0}.cashflow-chart__bar--income-stack,.cashflow-chart__bar--expense{display:flex;flex-direction:column-reverse;overflow:hidden;background:var(--border)}.cashflow-chart__segment{width:100%}.cashflow-chart__label{font-size:10px;color:var(--text-muted);margin-top:6px}.cashflow-chart__col--selected .cashflow-chart__label{color:var(--text);font-weight:600}.cashflow-chart__col--selected .cashflow-chart__bar{box-shadow:0 0 0 1px var(--text)}.growth-line-chart{display:block;width:100%}.growth-line-chart__grid{stroke:var(--border);stroke-width:1}.growth-line-chart__grid-label{fill:var(--text-secondary);font-size:9px}.growth-line-chart__line{fill:none;stroke:var(--accent);stroke-width:2}.growth-line-chart__point-group{cursor:pointer}.growth-line-chart__point{fill:var(--accent-dark)}.growth-line-chart__point--selected{fill:var(--accent);stroke:#fff;stroke-width:1.5}.growth-line-chart__label{font-size:10px;fill:var(--text-muted)}.growth-line-chart__label--selected{fill:var(--text);font-weight:600}.growth-chart__readout{display:flex;justify-content:space-between;gap:8px;font-size:13px;color:var(--text-secondary);margin-top:10px;padding-top:10px;border-top:1px solid var(--border)}.growth-chart__readout span:last-child{font-weight:600;color:var(--text);font-variant-numeric:tabular-nums}.distribution-pie{display:flex;justify-content:center;padding:8px 0}.distribution-pie__svg{width:160px;height:160px}.legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin-top:12px;justify-content:center}.legend__item{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-secondary)}.legend__dot{width:8px;height:8px;flex-shrink:0;border-radius:50%;display:inline-block;font-style:normal}.legend__dot--income{background:linear-gradient(135deg,#bbf7d0,#15803d)}.legend__dot--expense{background:linear-gradient(135deg,#fb923c,#dc2626)}.cashflow-tables{display:flex;gap:10px;align-items:flex-start}.cashflow-table{flex:1;min-width:0;background:var(--surface);border:1px solid var(--border);border-radius:16px;padding:12px;box-shadow:var(--card-shadow)}@media (max-width: 339px){.cashflow-tables{flex-direction:column;align-items:stretch}}.cashflow-table__title{font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin-bottom:6px}.cashflow-table__row{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:12px;padding:5px 0;border-top:1px solid var(--border)}.cashflow-table__row:first-of-type{border-top:none}.cashflow-table__name{display:flex;align-items:center;gap:6px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cashflow-table__amount{color:var(--text-secondary);font-variant-numeric:tabular-nums;white-space:nowrap}.donut-card{display:flex;justify-content:center;padding:24px}.donut{width:180px;height:180px;border-radius:50%;display:flex;align-items:center;justify-content:center}.donut__hole{width:108px;height:108px;border-radius:50%;background:var(--surface);display:flex;flex-direction:column;align-items:center;justify-content:center}.donut__hole span{font-size:24px;font-weight:600}.donut__hole small{font-size:11px;color:var(--text-muted)}.pie-chart-small{width:120px;height:120px;border-radius:50%}.pie-chart-tiny{width:72px;height:72px;flex:none;border-radius:50%}.donut-card--compact{padding:12px}.budget-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px}.budget-summary__side{display:flex;flex-direction:column;gap:4px;min-width:0}.budget-summary__side--right{align-items:flex-end;text-align:right}.budget-summary__amount{font-size:clamp(15px,4.6vw,18px);font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.login-screen{height:100%;display:flex;align-items:center;justify-content:center;padding:24px;background:radial-gradient(ellipse 90% 55% at 50% -10%,rgba(249,115,22,.12),transparent 70%),var(--bg)}.login-content{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;width:100%}.login-logo{width:64px;height:64px;border-radius:20px;background:var(--brand-gradient);color:#fff;font-size:28px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:8px;box-shadow:0 8px 24px #f9731640}.login-tagline{color:var(--text-secondary);font-size:14px;margin:0 0 32px}.google-button{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;max-width:280px;padding:13px 16px;border-radius:14px;border:1px solid #dadce0;background:#fff;color:#1f1f1f;font-size:14px;font-weight:500;cursor:pointer;text-decoration:none;box-sizing:border-box}.google-button:disabled{opacity:.6;cursor:default}.login-note{margin-top:16px;font-size:12px;color:var(--text-muted)}.profile-header{display:flex;align-items:center;gap:14px}.profile-header>div{min-width:0}.profile-avatar{width:56px;height:56px;border-radius:50%;object-fit:cover;flex:none}.profile-avatar--fallback{display:flex;align-items:center;justify-content:center;background:var(--brand-gradient);color:#fff;font-size:22px;font-weight:600}.profile-header__name{font-size:16px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.profile-header__email{font-size:13px;color:var(--text-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.field-row{display:flex;gap:12px}.field-row .field{flex:1;min-width:0}.field-row .field>.field__input{margin-top:auto}@media (max-width: 359px){.field-row{flex-direction:column;gap:0}}.field__checkbox-row{flex-direction:row;align-items:center;gap:10px}.field__checkbox-row input[type=checkbox]{width:18px;height:18px;flex:none;accent-color:var(--accent)}.field__checkbox-row .field__label{margin:0}.field__label{font-size:13px;font-weight:500;color:var(--text-secondary)}.field__input{padding:11px 12px;border-radius:10px;border:1px solid var(--border);background:var(--bg);color:var(--text);font-size:14px;font-family:inherit;min-width:0;width:100%;transition:border-color .15s,box-shadow .15s}.field__input--narrow{width:100px;flex:none}.field__input--tight{width:64px;flex:none;padding:6px 8px;border-radius:8px;font-size:13px}.field__input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.field__error{color:var(--danger);font-size:13px;margin:-4px 0 12px}.field__success{color:var(--success);font-size:13px;margin:-4px 0 12px}.field__hint{font-size:12px;color:var(--text-muted)}.button-primary{width:100%;padding:13px 16px;border-radius:14px;border:none;background:linear-gradient(180deg,#fb923c,var(--accent));color:#fff;font-size:14px;font-weight:600;cursor:pointer;box-sizing:border-box;transition:filter .15s}@media (hover: hover){.button-primary:hover:not(:disabled){filter:brightness(1.08)}}.button-primary:disabled{opacity:.6;cursor:default}.button-secondary{padding:13px 16px;border-radius:14px;border:1px solid var(--border-strong);background:var(--surface);color:var(--text);font-size:14px;font-weight:500;cursor:pointer;box-sizing:border-box;transition:background-color .15s,border-color .15s}@media (hover: hover){.button-secondary:hover:not(:disabled){background:var(--surface-2)}}.button-secondary:disabled{opacity:.6;cursor:default}.config-hint{font-size:13px;color:var(--text-secondary);margin:0 4px 12px;text-align:center}.scheme-card{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:14px 16px}.scheme-card>:first-child{flex:1;min-width:0}.scheme-card--compact{padding:8px 12px;margin-bottom:6px}.scheme-card--compact .scheme-card__name{font-size:13px;gap:6px}.scheme-card--compact .scheme-card__date{font-size:11px}.card[role=button]{cursor:pointer;transition:background-color .15s,border-color .15s}@media (hover: hover){.card[role=button]:hover{background:var(--surface-2);border-color:var(--border-strong)}}.scheme-card__name{font-size:14px;font-weight:500;display:flex;align-items:center;gap:8px;min-width:0}.scheme-card__name .legend__dot,.scheme-card__name .type-badge{flex-shrink:0}.scheme-card__name-text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scheme-card__date{font-size:12px;color:var(--text-muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scheme-card__right{flex:none;display:flex;align-items:center;gap:10px}.scheme-card__amount{font-size:14px;font-weight:500;font-variant-numeric:tabular-nums;white-space:nowrap}.icon-button--danger{color:var(--danger);background:transparent;width:32px;height:32px}@media (hover: hover){.icon-button--danger:hover:not(:disabled){background:#f871711f;color:var(--danger)}}.icon-button--danger:disabled{opacity:.5;cursor:default}.config-form__actions{display:flex;gap:10px}.config-form__actions .button-primary,.config-form__actions .button-secondary{flex:1;width:auto}.add-button{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:13px 16px;border-radius:14px;border:1px dashed var(--border-strong);background:transparent;color:var(--accent);font-size:14px;font-weight:500;cursor:pointer;box-sizing:border-box;transition:background-color .15s,border-color .15s}@media (hover: hover){.add-button:hover{background:var(--accent-soft);border-color:var(--accent)}}.type-badge{display:inline-block;font-size:11px;font-weight:500;color:var(--text-secondary);background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:2px 7px;margin-left:4px;vertical-align:middle;white-space:nowrap}.type-badge--discretionary{font-weight:700;color:var(--success);background:none;border:none;padding:0}.segmented{display:flex;border:1px solid var(--border);border-radius:10px;overflow:hidden}.segmented__option{flex:1;min-width:0;padding:10px 8px;border:none;background:var(--surface);color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:background-color .15s,color .15s}@media (hover: hover){.segmented__option:hover:not(.segmented__option--active){background:var(--surface-2);color:var(--text)}}.segmented__option+.segmented__option{border-left:1px solid var(--border)}.segmented__option--active{background:var(--accent);color:#fff}.app-shell__body{display:flex;flex-direction:column;flex:1;min-width:0;height:100%}.app-shell--desktop{flex-direction:row}.side-nav{flex:none;width:240px;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:22px 14px;gap:8px}@media (max-width: 1080px){.side-nav{width:200px}}.side-nav__brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:700;letter-spacing:-.2px;padding:4px 10px 18px}.side-nav__logo{width:32px;height:32px;border-radius:10px;background:var(--brand-gradient);color:#fff;display:flex;align-items:center;justify-content:center;font-size:16px;font-weight:700;flex:none}.side-nav__items{display:flex;flex-direction:column;gap:4px}.side-nav__item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:12px;color:var(--text-secondary);text-decoration:none;font-size:14px;font-weight:500;transition:background-color .15s,color .15s}.side-nav__item:hover{background:var(--surface-2);color:var(--text)}.side-nav__item--active{background:var(--accent-soft);color:var(--accent)}.app-shell--desktop .app-header{padding:24px 32px 16px}.app-shell--desktop .app-content{padding:4px 32px 32px}
