:root{--accent: #f97316;--accent-dark: #c2410c;--accent-blue: #3b82f6;--accent-blue-dark: #1d4ed8;--bg: #0a0a0b;--surface: #19191c;--text: #f4f4f5;--text-secondary: #a1a1aa;--text-muted: #737379;--border: #2a2a2e;--danger: #ef4444;--success: #22c55e;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}.app-frame{width:100%;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;padding:20px 20px 12px;background:var(--bg);position:sticky;top:0;z-index:5}.app-header__actions{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}.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}.loading-text{text-align:center;color:var(--text-muted);margin-top:60px}.tab-bar{flex:none;display:flex;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;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}.tab-bar__item--active{color:var(--accent)}.card{background:var(--surface);border-radius:16px;padding:16px;margin-bottom:12px}.summary-card{display:flex;flex-direction:column;gap:4px;background:linear-gradient(135deg,var(--accent),var(--accent-dark));color:#fff}.summary-card__label{font-size:13px;opacity:.85}.summary-card__value{font-size:30px;font-weight:600;letter-spacing:-.5px}.summary-card__sub{font-size:13px;opacity:.85}.summary-card__sub--up{color:#bbf7d0;opacity:1}.summary-card__sub--down{color:#fecaca;opacity:1}.section-title{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.4px;margin:20px 4px 8px}.category-card{padding:14px 16px}.category-card__row{display:flex;align-items:center;justify-content:space-between;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}.category-card__amount{color:var(--text-secondary);font-variant-numeric:tabular-nums}.category-card__amount--over{color:var(--danger)}.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;gap:4px;height:140px}.cashflow-chart--scroll{overflow-x:auto;padding-bottom:2px}.cashflow-chart__col{flex:none;width:20px;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}.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)}.legend{display:flex;gap: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;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-radius:16px;padding:12px}.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%}.holding-card{display:flex;align-items:center;justify-content:space-between;padding:14px 16px}.holding-card__main{display:flex;flex-direction:column}.holding-card__ticker{font-weight:600;font-size:14px}.holding-card__name{font-size:12px;color:var(--text-muted)}.holding-card__figures{display:flex;flex-direction:column;align-items:flex-end}.holding-card__value{font-size:14px;font-weight:500;font-variant-numeric:tabular-nums}.holding-card__change{font-size:12px;font-variant-numeric:tabular-nums}.holding-card__change--up{color:var(--success)}.holding-card__change--down{color:var(--danger)}.login-screen{height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.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:linear-gradient(135deg,var(--accent),var(--accent-blue-dark));color:#fff;font-size:28px;font-weight:700;display:flex;align-items:center;justify-content:center;margin-bottom:8px}.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-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:linear-gradient(135deg,var(--accent),var(--accent-blue-dark));color:#fff;font-size:22px;font-weight:600}.profile-header__name{font-size:16px;font-weight:600}.profile-header__email{font-size:13px;color:var(--text-muted)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.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(--surface);color:var(--text);font-size:14px;font-family:inherit}.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:var(--accent);color:#fff;font-size:14px;font-weight:500;cursor:pointer;box-sizing:border-box}.button-primary:disabled{opacity:.6;cursor:default}.button-secondary{padding:13px 16px;border-radius:14px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:14px;font-weight:500;cursor:pointer;box-sizing:border-box}.button-secondary:disabled{opacity:.6;cursor:default}.config-hint{font-size:13px;color:var(--text-secondary);margin:0 4px 12px}.scheme-card{display:flex;align-items:center;justify-content:space-between;padding:14px 16px}.card[role=button]{cursor:pointer}.scheme-card__name{font-size:14px;font-weight:500}.scheme-card__date{font-size:12px;color:var(--text-muted);margin-top:2px}.scheme-card__right{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}.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);background:transparent;color:var(--accent);font-size:14px;font-weight:500;cursor:pointer;box-sizing:border-box}.type-badge{display:inline-block;font-size:11px;font-weight:500;color:var(--text-secondary);background:var(--bg);border-radius:6px;padding:2px 7px;margin-left:4px;vertical-align:middle}.segmented{display:flex;border:1px solid var(--border);border-radius:10px;overflow:hidden}.segmented__option{flex:1;padding:10px 8px;border:none;background:var(--surface);color:var(--text-secondary);font-size:13px;font-weight:500;cursor:pointer}.segmented__option+.segmented__option{border-left:1px solid var(--border)}.segmented__option--active{background:var(--accent);color:#fff}
