@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@500;600;700&family=Public+Sans:wght@400;500;600;700&display=swap";:root{--bg:#0c0d11;--surface:#15171e;--elevated:#1d2029;--line:#262a36;--text:#ecedf1;--muted:#878da0;--income:#2fd4a0;--exceeded:#ff6b6b;--accent:#5b7cfa;--radius-card:16px;--font-ui:"Public Sans", system-ui, sans-serif;--font-figures:"Space Grotesk", system-ui, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;color:var(--text);font-family:var(--font-ui);margin:0}button,input{font-family:inherit}.app-loading{min-height:100dvh;color:var(--muted);justify-content:center;align-items:center;display:flex}.pwa-banner{z-index:100;background:var(--elevated);border:1px solid var(--line);color:var(--text);border-radius:12px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:.875rem;display:flex;position:fixed;bottom:16px;left:16px;right:16px}.pwa-banner button{background:var(--accent);color:var(--text);cursor:pointer;border:none;border-radius:8px;flex-shrink:0;padding:6px 12px;font-size:.875rem;font-weight:600}.pwa-banner-offline{border-color:var(--exceeded);color:var(--exceeded)}.centered-screen{justify-content:center;align-items:center;min-height:100dvh;padding:24px;display:flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);width:100%;max-width:360px;padding:32px 28px}.card-heading{color:var(--text);margin:0 0 24px;font-size:1.5rem;font-weight:600}.card-subtitle{color:var(--muted);margin:-16px 0 24px;font-size:.9rem}.form-field{flex-direction:column;gap:6px;margin-bottom:16px;display:flex}.form-field label{color:var(--muted);font-size:.875rem}.form-field input,.form-field select{background:var(--elevated);border:1px solid var(--line);color:var(--text);border-radius:10px;padding:10px 12px;font-size:1rem}.form-field input:focus,.form-field select:focus{outline:2px solid var(--accent);outline-offset:1px}.form-error{color:var(--exceeded);margin:-4px 0 16px;font-size:.875rem}.form-submit{background:var(--accent);width:100%;color:var(--text);cursor:pointer;border:none;border-radius:10px;padding:12px;font-size:1rem;font-weight:600}.form-submit:disabled{opacity:.6;cursor:not-allowed}.form-switch{color:var(--muted);text-align:center;margin-top:20px;font-size:.875rem}.form-switch button{color:var(--accent);font-size:inherit;cursor:pointer;background:0 0;border:none;margin-left:4px;padding:0}.form-back{color:var(--muted);cursor:pointer;background:0 0;border:none;margin-top:20px;padding:0;font-size:.875rem}.welcome-actions{flex-direction:column;gap:12px;display:flex}.welcome-action{cursor:pointer;text-align:center;border-radius:10px;width:100%;padding:14px;font-size:1rem;font-weight:600}.welcome-action.primary{background:var(--accent);color:var(--text);border:none}.welcome-action.secondary{border:1px solid var(--line);background:var(--elevated);color:var(--text)}.household-screen{max-width:480px;min-height:100dvh;margin:0 auto;padding:32px 24px}.household-header{justify-content:space-between;align-items:center;margin-bottom:24px;display:flex}.household-header h1{color:var(--text);margin:0;font-size:1.5rem;font-weight:600}.household-header button{background:var(--elevated);border:1px solid var(--line);color:var(--text);cursor:pointer;border-radius:10px;padding:8px 14px;font-size:.875rem}.household-section{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-card);margin-bottom:16px;padding:20px}.household-section h2{color:var(--text);margin:0 0 12px;font-size:1rem;font-weight:600}.member-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:8px 0;display:flex}.member-row:last-child{border-bottom:none}.member-name{color:var(--text)}.role-badge{background:var(--elevated);color:var(--muted);border-radius:999px;padding:2px 10px;font-size:.75rem;font-weight:600}.role-badge.admin{color:var(--accent);background:#5b7cfa26}.invite-generate{background:var(--accent);color:var(--text);cursor:pointer;border:none;border-radius:10px;padding:10px 16px;font-size:.9rem;font-weight:600}.invite-token-row{align-items:center;gap:8px;margin-top:12px;display:flex}.invite-token{background:var(--elevated);border:1px solid var(--line);color:var(--text);letter-spacing:.02em;white-space:nowrap;border-radius:10px;flex:1;padding:10px 12px;font-size:.85rem;overflow-x:auto}.invite-copy{border:1px solid var(--line);background:var(--elevated);color:var(--text);cursor:pointer;white-space:nowrap;border-radius:10px;padding:10px 14px;font-size:.875rem}.tab-bar{background:var(--surface);border:1px solid var(--line);border-radius:12px;gap:4px;margin-bottom:20px;padding:4px;display:flex}.tab-bar button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;padding:8px;font-size:.875rem;font-weight:600}.tab-bar button.active{background:var(--elevated);color:var(--text)}.empty-message{color:var(--muted);margin:0 0 12px;font-size:.9rem}.household-section-group{flex-direction:column;display:flex}.currency-group{margin-bottom:16px}.currency-group h3{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 8px;font-size:.8rem;font-weight:600}.account-row{border:none;border-bottom:1px solid var(--line);cursor:pointer;text-align:left;background:0 0;justify-content:space-between;align-items:center;width:100%;padding:10px 0;display:flex}.account-row:last-child{border-bottom:none}.account-row.muted{opacity:.6}.account-name{color:var(--text)}.account-balance-column{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.account-balance{color:var(--text);font-family:var(--font-figures)}.account-balance-converted{color:var(--muted);font-size:.75rem}.account-balance-converted.muted{font-style:italic}.fx-rate-note{color:var(--exceeded);margin:4px 0 0;font-size:.8rem}.form-danger{border:1px solid var(--exceeded);width:100%;color:var(--exceeded);cursor:pointer;background:0 0;border-radius:10px;margin-top:12px;padding:12px;font-size:.9rem;font-weight:600}.color-picker{flex-wrap:wrap;gap:8px;display:flex}.color-swatch{cursor:pointer;border:2px solid #0000;border-radius:999px;width:28px;height:28px}.color-swatch.selected{border-color:var(--text)}.category-row{border-bottom:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:8px 0;display:flex}.category-row:last-child{border-bottom:none}.category-row-main{cursor:pointer;text-align:left;background:0 0;border:none;flex:1;align-items:center;gap:10px;padding:0;display:flex}.category-color{border-radius:999px;flex-shrink:0;width:12px;height:12px}.category-name{color:var(--text)}.row-delete{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:.8rem}.row-delete-confirm{color:var(--exceeded);align-items:center;gap:8px;font-size:.8rem;display:flex}.kind-toggle{background:var(--elevated);border:1px solid var(--line);border-radius:10px;gap:4px;margin-bottom:16px;padding:4px;display:flex}.kind-toggle button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:8px;flex:1;padding:8px;font-size:.875rem;font-weight:600}.kind-toggle button.active{background:var(--surface);color:var(--text)}.split-toggle{color:var(--text);cursor:pointer;align-items:center;gap:8px;margin-bottom:16px;font-size:.9rem;display:flex}.split-lines{flex-direction:column;gap:8px;margin-bottom:16px;display:flex}.split-line{gap:8px;display:flex}.split-line select{background:var(--elevated);border:1px solid var(--line);color:var(--text);border-radius:10px;flex:2;padding:10px 8px}.split-line input{background:var(--elevated);border:1px solid var(--line);color:var(--text);border-radius:10px;flex:1;min-width:0;padding:10px 8px}.split-line button{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:.8rem}.split-add-line{color:var(--accent);cursor:pointer;background:0 0;border:none;align-self:flex-start;padding:0;font-size:.875rem;font-weight:600}.remaining-indicator{color:var(--exceeded);margin:0;font-size:.9rem;font-weight:600}.remaining-indicator.balanced{color:var(--income)}.transaction-row{border-bottom:1px solid var(--line);padding:10px 0}.transaction-row:last-child{border-bottom:none}.transaction-row-main{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;width:100%;padding:0;display:flex}.transaction-merchant{color:var(--text)}.transaction-amount{font-family:var(--font-figures);color:var(--income)}.transaction-amount.expense{color:var(--text)}.transaction-actions{align-items:center;gap:12px;margin-top:6px;display:flex}.transaction-actions>button:first-child{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:.8rem}.transaction-lines{flex-direction:column;gap:8px;margin-top:10px;display:flex}.transaction-line-label{color:var(--muted);justify-content:space-between;margin-bottom:4px;font-size:.8rem;display:flex}.bar-track{background:var(--elevated);border-radius:999px;width:100%;height:6px;overflow:hidden}.bar-fill{border-radius:999px;height:100%}.custom-range-fields{gap:12px;margin-top:12px;display:flex}.custom-range-fields .form-field{flex:1;margin-bottom:0}.report-total-label{color:var(--muted);margin:0;font-size:.875rem}.report-total-amount{font-family:var(--font-figures);color:var(--text);margin:4px 0 8px;font-size:2rem}.report-comparison{margin:0;font-size:.875rem;font-weight:600}.report-comparison.worse{color:var(--exceeded)}.report-comparison.better{color:var(--income)}.report-comparison.muted{color:var(--muted);font-weight:400}.donut-wrapper{width:200px;height:200px;margin:0 auto 20px;position:relative}.donut-svg{width:100%;height:100%}.donut-segment{transition:stroke-dasharray .7s}.donut-center{flex-direction:column;justify-content:center;align-items:center;gap:2px;display:flex;position:absolute;inset:0}.donut-total{font-family:var(--font-figures);color:var(--text);font-size:1.25rem}.donut-total-label{color:var(--muted);font-size:.75rem}.spending-list{flex-direction:column;gap:12px;margin-top:16px;display:flex}.spending-row-header{align-items:center;gap:8px;margin-bottom:6px;display:flex}.spending-row-name{color:var(--text);flex:1;font-size:.9rem}.spending-row-pct{color:var(--muted);font-size:.8rem}.spending-row-amount{font-family:var(--font-figures);color:var(--text);font-size:.9rem}.budget-card-header{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.budget-card-header h3{color:var(--text);margin:0;font-size:1rem;font-weight:600}.budget-card-top{align-items:center;gap:20px;margin-bottom:12px;display:flex}.budget-ring-wrapper{flex-shrink:0;width:120px;height:120px;position:relative}.budget-ring{width:100%;height:100%}.budget-ring-fill{transition:stroke-dasharray .7s}.budget-ring-center{justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.budget-ring-pct{font-family:var(--font-figures);color:var(--text);font-size:1.1rem}.budget-card-stats{flex-direction:column;gap:4px;display:flex}.budget-spent-line{font-family:var(--font-figures);color:var(--text);margin:0;font-size:1.1rem}.budget-days-left{color:var(--muted);margin:0;font-size:.8rem}.budget-trajectory{margin:0 0 16px;font-size:.85rem;font-weight:600}.budget-trajectory.good{color:var(--income)}.budget-trajectory.bad{color:var(--exceeded)}.budget-goals{border-top:1px solid var(--line);flex-direction:column;gap:14px;padding-top:12px;display:flex}.budget-goal-header{align-items:center;gap:8px;margin-bottom:6px;display:flex}.budget-goal-name{color:var(--text);flex:1;font-size:.875rem}.budget-goal-amount{font-family:var(--font-figures);color:var(--muted);font-size:.8rem}.budget-goal-amount.exceeded{color:var(--exceeded)}.budget-goal-over{color:var(--exceeded);margin:4px 0 0;font-size:.75rem}.form-field-heading{color:var(--muted);margin:0 0 8px;font-size:.875rem}.budget-goal-form-row{gap:8px;display:flex}.budget-goal-form-row select:first-child{flex:2}.budget-goal-form-row select:nth-child(2){flex:1}.budget-goal-form-row select,.budget-goal-form-row input{background:var(--elevated);border:1px solid var(--line);color:var(--text);border-radius:10px;min-width:0;padding:10px 8px}.budget-goal-form-row input{flex:1}.budget-goal-form-row button{color:var(--muted);cursor:pointer;background:0 0;border:none;font-size:.8rem}.upcoming-subheading{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin:16px 0 8px;font-size:.8rem;font-weight:600}.upcoming-row{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:12px;padding:10px 0;display:flex}.upcoming-row:last-child{border-bottom:none}.upcoming-row-main{flex-direction:column;gap:2px;display:flex}.upcoming-merchant{color:var(--text);font-size:.9rem}.upcoming-meta{color:var(--muted);font-size:.75rem}.upcoming-row-side{flex-direction:column;align-items:flex-end;gap:4px;display:flex}.upcoming-amount{font-family:var(--font-figures);color:var(--text);font-size:.9rem}.upcoming-mark{background:var(--elevated);border:1px solid var(--line);color:var(--accent);cursor:pointer;border-radius:8px;padding:4px 10px;font-size:.75rem}.transactions-header-actions{flex-wrap:wrap;gap:8px;display:flex}.filters-section h2{margin-bottom:12px}.filters-grid{grid-template-columns:repeat(2,1fr);gap:12px;display:grid}.filters-grid .form-field{margin-bottom:0}@media (width<=420px){.filters-grid{grid-template-columns:1fr}}.transfer-badge{color:var(--accent);background:#5b7cfa26;border-radius:999px;margin-left:8px;padding:1px 8px;font-size:.7rem;font-weight:600}.import-preview-list{flex-direction:column;gap:8px;max-height:320px;margin:16px 0;display:flex;overflow-y:auto}.import-preview-row{border:1px solid var(--line);cursor:pointer;border-radius:10px;align-items:center;gap:10px;padding:8px;display:flex}.import-preview-row.duplicate{border-color:var(--exceeded)}.import-preview-main{color:var(--text);flex:1;justify-content:space-between;gap:8px;font-size:.85rem;display:flex}.import-duplicate-badge{color:var(--exceeded);white-space:nowrap;font-size:.7rem}.fx-rate-note.muted{color:var(--muted)}.goal-amounts{font-family:var(--font-figures);color:var(--text);margin:0 0 8px}.goal-account-note{font-family:var(--font-ui);color:var(--muted);font-size:.75rem}.goal-pct{color:var(--muted);margin:8px 0 0;font-size:.8rem}.goal-pct.reached{color:var(--income);font-weight:600}.goal-target-date{color:var(--muted);margin:4px 0 0;font-size:.75rem}
