:root{color-scheme:light;--color-bg: #eef2f6;--color-bg-accent: #e2e9f0;--color-surface: #ffffff;--color-surface-muted: #f6f8fb;--color-surface-raised: #ffffff;--color-border: #d7dee7;--color-border-strong: #c2ccd8;--color-text: #16202b;--color-text-muted: #566577;--color-text-subtle: #7a879a;--color-text-on-accent: #ffffff;--color-accent: #0f766e;--color-accent-hover: #0c635c;--color-accent-active: #0a534d;--color-accent-soft: #d6eeea;--color-accent-ring: rgba(15, 118, 110, .35);--color-danger: #b42318;--color-danger-soft: #fdeceb;--color-danger-border: #f3c6c2;--color-success: #167a4a;--color-success-soft: #e2f4ea;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, "Apple Color Emoji", "Segoe UI Emoji", sans-serif;--font-mono: ui-monospace, "SF Mono", "Cascadia Code", "Roboto Mono", Menlo, Consolas, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.375rem;--text-2xl: clamp(1.5rem, 1.2rem + 1.2vw, 1.875rem);--leading-tight: 1.25;--leading-normal: 1.55;--weight-normal: 400;--weight-medium: 500;--weight-semibold: 600;--weight-bold: 700;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 2.5rem;--space-8: 3rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-pill: 999px;--shadow-sm: 0 1px 2px rgba(15, 32, 43, .06), 0 1px 3px rgba(15, 32, 43, .08);--shadow-md: 0 4px 12px rgba(15, 32, 43, .08), 0 2px 4px rgba(15, 32, 43, .06);--shadow-lg: 0 12px 32px rgba(15, 32, 43, .12);--content-max: 1040px;--header-max: 1040px}@media(prefers-color-scheme:dark){:root{color-scheme:dark;--color-bg: #0d1520;--color-bg-accent: #111c2b;--color-surface: #16212f;--color-surface-muted: #1b283a;--color-surface-raised: #1c2a3b;--color-border: #2a3a4e;--color-border-strong: #38495f;--color-text: #e8eef5;--color-text-muted: #a4b2c4;--color-text-subtle: #7f8ea2;--color-text-on-accent: #04201d;--color-accent: #2dd4bf;--color-accent-hover: #45ddca;--color-accent-active: #14b8a6;--color-accent-soft: #123733;--color-accent-ring: rgba(45, 212, 191, .4);--color-danger: #f8837a;--color-danger-soft: #3a1c1a;--color-danger-border: #5e2a26;--color-success: #58d18e;--color-success-soft: #13301f;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 14px rgba(0, 0, 0, .45);--shadow-lg: 0 14px 34px rgba(0, 0, 0, .55)}}*,*:before,*:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{margin:0;min-height:100vh;font-family:var(--font-sans);font-size:var(--text-base);line-height:var(--leading-normal);color:var(--color-text);background-color:var(--color-bg);background-image:radial-gradient(1200px 600px at 100% -10%,var(--color-bg-accent),transparent 60%),radial-gradient(900px 500px at -10% 0%,var(--color-accent-soft),transparent 55%);background-attachment:fixed;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}h1,h2,h3,h4{margin:0;line-height:var(--leading-tight);color:var(--color-text);font-weight:var(--weight-semibold)}p{margin:0}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--color-accent);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:10;display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-3) var(--space-6);padding:var(--space-4) var(--space-5);background-color:color-mix(in srgb,var(--color-surface) 88%,transparent);-webkit-backdrop-filter:saturate(1.2) blur(8px);backdrop-filter:saturate(1.2) blur(8px);border-bottom:1px solid var(--color-border);box-shadow:var(--shadow-sm)}.app-header>*{margin-inline:auto}.app-header h1{margin:0;font-size:var(--text-xl);font-weight:var(--weight-bold);letter-spacing:-.01em;color:var(--color-accent);display:flex;align-items:center;gap:var(--space-2)}.app-header h1:before{content:"";width:.85em;height:.85em;border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--color-accent),var(--color-accent-active));box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--color-accent-soft) 60%,transparent)}.app-title a{color:inherit;text-decoration:none}.app-title a:hover{text-decoration:underline}.app-header{justify-content:center}.app-nav{display:flex;flex-wrap:wrap;gap:var(--space-1);align-items:center}.app-nav a{--nav-fg: var(--color-text-muted);display:inline-flex;align-items:center;padding:var(--space-2) var(--space-3);border-radius:var(--radius-pill);color:var(--nav-fg);font-size:var(--text-sm);font-weight:var(--weight-medium);text-decoration:none;transition:background-color .12s ease,color .12s ease}.app-nav a:hover{color:var(--color-text);background-color:var(--color-surface-muted);text-decoration:none}.app-nav a.active,.app-nav a[aria-current=page]{color:var(--color-text-on-accent);background-color:var(--color-accent)}.app-nav a.active:hover,.app-nav a[aria-current=page]:hover{background-color:var(--color-accent-hover);color:var(--color-text-on-accent)}.app-content{flex:1;width:100%;max-width:var(--content-max);margin:0 auto;padding:var(--space-6) var(--space-5) var(--space-8);display:flex;flex-direction:column;gap:var(--space-5)}.app-content>section{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-5)}.app-content>section>h2{font-size:var(--text-2xl);letter-spacing:-.01em}.app-content>section>h3{font-size:var(--text-lg)}.page-header h2,.app-content form>h2{font-size:var(--text-xl);letter-spacing:-.01em}.app-content>section>p{color:var(--color-text-muted);max-width:68ch}.app-content>section>section{background-color:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5);display:flex;flex-direction:column;gap:var(--space-4)}.app-content>section>section>p{color:var(--color-text-muted)}.page-header{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3)}.app-content button,.app-header button{font:inherit;font-weight:var(--weight-semibold);font-size:var(--text-sm);line-height:1;cursor:pointer;padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);border:1px solid transparent;transition:background-color .12s ease,border-color .12s ease,box-shadow .12s ease,transform 60ms ease}.app-content button[type=submit],.app-content .page-header button{background-color:var(--color-accent);color:var(--color-text-on-accent);box-shadow:var(--shadow-sm)}.app-content button[type=submit]:hover,.app-content .page-header button:hover{background-color:var(--color-accent-hover)}.app-content button[type=submit]:active,.app-content .page-header button:active{background-color:var(--color-accent-active);transform:translateY(1px)}.app-content button[type=button],.app-content button:not([type]){background-color:var(--color-surface);color:var(--color-accent);border-color:var(--color-border-strong)}.app-content button[type=button]:hover,.app-content button:not([type]):hover{background-color:var(--color-surface-muted);border-color:var(--color-accent)}.app-content .page-header button[type=button]{background-color:var(--color-accent);color:var(--color-text-on-accent);border-color:transparent}.app-content .page-header button[type=button]:hover{background-color:var(--color-accent-hover)}.app-content button:disabled{cursor:not-allowed;opacity:.55;box-shadow:none;transform:none}.app-content form{display:flex;flex-direction:column;gap:var(--space-4)}.app-content section[aria-label=Budgets]>form{padding-top:var(--space-5);border-top:1px solid var(--color-border)}.app-content form>div{display:flex;flex-direction:column;gap:var(--space-2)}.app-content form label{font-size:var(--text-sm);font-weight:var(--weight-medium);color:var(--color-text)}.app-content input[type=text],.app-content input[type=number],.app-content input[type=date],.app-content input[type=file],.app-content select{font:inherit;color:var(--color-text);background-color:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);padding:var(--space-3) var(--space-3);width:100%;max-width:30rem;transition:border-color .12s ease,box-shadow .12s ease}.app-content select{cursor:pointer}.app-content input:focus-visible,.app-content select:focus-visible{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-ring)}.app-content input[aria-invalid=true]{border-color:var(--color-danger)}.app-content input[aria-invalid=true]:focus-visible{box-shadow:0 0 0 3px var(--color-danger-border)}.app-content input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--color-accent);cursor:pointer}.app-content label:has(input[type=checkbox]){flex-direction:row;display:inline-flex;align-items:center;gap:var(--space-2);cursor:pointer}.app-content input[type=file]{padding:var(--space-2);cursor:pointer}.app-content section[aria-label="Import bank file"] form{flex-direction:row;flex-wrap:wrap;align-items:center;gap:var(--space-3)}.app-content section[aria-label="Import bank file"] form label{flex-basis:100%}.app-content table{width:100%;border-collapse:collapse;font-size:var(--text-sm);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);overflow:hidden}.app-content thead th{text-align:left;font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted);background-color:var(--color-surface-muted);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);white-space:nowrap}.app-content tbody td{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border);vertical-align:middle;color:var(--color-text)}.app-content tbody tr:last-child td{border-bottom:none}.app-content tbody tr:nth-child(2n) td{background-color:color-mix(in srgb,var(--color-surface-muted) 55%,transparent)}.app-content tbody tr:hover td{background-color:var(--color-accent-soft)}.app-content section[aria-label=Budgets] tbody td:nth-child(4),.app-content section[aria-label=Budgets] tbody td:nth-child(5),.app-content section[aria-label=Budgets] tbody td:nth-child(6),.app-content section[aria-label=Budgets] thead th:nth-child(4),.app-content section[aria-label=Budgets] thead th:nth-child(5),.app-content section[aria-label=Budgets] thead th:nth-child(6){text-align:right;font-variant-numeric:tabular-nums}.app-content table td:nth-child(4),.app-content table th:nth-child(4){font-variant-numeric:tabular-nums}.app-content section[aria-label="Review transactions"] table td:nth-child(4),.app-content section[aria-label="Review transactions"] table th:nth-child(4){text-align:right}.app-content section[aria-label="Review transactions"] tbody td:last-child{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2)}.app-content section[aria-label="Review transactions"] tbody td:last-child select{width:auto;min-width:12rem}[role=alert]{color:var(--color-danger);font-size:var(--text-sm);font-weight:var(--weight-medium)}.app-content p[role=alert],.app-content div[role=alert]{background-color:var(--color-danger-soft);border:1px solid var(--color-danger-border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.app-content div[aria-label="Import summary"]{background-color:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3)}.app-content ul{margin:0;padding-left:var(--space-5);display:flex;flex-direction:column;gap:var(--space-1);color:var(--color-text-muted)}.app-content span[role=alert]{flex-basis:100%}@media(max-width:640px){.app-content{padding:var(--space-5) var(--space-4) var(--space-7);gap:var(--space-4)}.app-content>section{padding:var(--space-5);gap:var(--space-4);border-radius:var(--radius-md)}.app-content>section>section{padding:var(--space-4)}.app-content>section>h2{font-size:var(--text-xl)}.app-header{padding:var(--space-3) var(--space-4);gap:var(--space-2) var(--space-4)}.app-nav{width:100%;justify-content:center}.app-content button,.app-header button,.app-content input[type=text],.app-content input[type=number],.app-content input[type=date],.app-content input[type=file],.app-content select{min-height:44px}.app-content input[type=text],.app-content input[type=number],.app-content input[type=date],.app-content input[type=file],.app-content select{max-width:none}.app-content form button[type=submit]{width:100%}.app-content section[aria-label="Import bank file"] form{flex-direction:column;align-items:stretch}.app-content table,.app-content tbody,.app-content tr,.app-content td{display:block;width:100%}.app-content table{border:none;background-color:transparent;border-radius:0;overflow:visible}.app-content thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.app-content tbody tr{background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:var(--space-2) var(--space-4);margin-bottom:var(--space-4)}.app-content tbody tr:last-child{margin-bottom:0}.app-content tbody tr:nth-child(2n) td,.app-content tbody tr:hover td{background-color:transparent}.app-content tbody td{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:var(--space-2) var(--space-4);padding:var(--space-2) 0;border-bottom:1px solid var(--color-border);text-align:right;background-color:transparent;overflow-wrap:anywhere}.app-content tbody td:last-child{border-bottom:none}.app-content tbody td[data-label]:before{content:attr(data-label);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-subtle);text-align:left}.app-content tbody td:not([data-label]){flex-direction:column;align-items:stretch;padding-top:var(--space-3)}.app-content tbody td:not([data-label]) button{width:100%}.app-content section[aria-label="Review transactions"] tbody td:last-child{flex-direction:column;align-items:stretch;gap:var(--space-3)}.app-content section[aria-label="Review transactions"] tbody td:last-child select,.app-content section[aria-label="Review transactions"] tbody td:last-child button{width:100%;min-width:0}}@media(max-width:480px){.app-content{padding:var(--space-4) var(--space-3) var(--space-6)}.app-content>section{padding:var(--space-4)}.app-content>section>h2{font-size:var(--text-lg)}.app-header h1{font-size:var(--text-lg)}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}.app-content section[aria-label="Upcoming charges"] table td:nth-child(3),.app-content section[aria-label="Upcoming charges"] table th:nth-child(3){text-align:right;font-variant-numeric:tabular-nums}.charge-badge{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;border:1px solid transparent}.charge-badge[data-state=funded]{color:var(--color-success);background-color:var(--color-success-soft);border-color:color-mix(in srgb,var(--color-success) 30%,transparent)}.charge-badge[data-state=at-risk]{color:var(--color-danger);background-color:var(--color-danger-soft);border-color:var(--color-danger-border)}.charge-badge[data-state=not-funded]{color:var(--color-warning, #92400e);background-color:var(--color-warning-soft, #fef3c7);border-color:color-mix(in srgb,var(--color-warning, #b45309) 30%,transparent)}.funding-bar{position:relative;display:flex;align-items:center;min-width:96px;height:18px;border-radius:var(--radius-pill);background-color:var(--color-surface-sunken, #e5e7eb);overflow:hidden}.funding-bar-fill{position:absolute;inset:0 auto 0 0;background-color:var(--color-success, #16a34a);transition:width .2s ease}.funding-bar[data-state=partial] .funding-bar-fill{background-color:var(--color-warning, #d97706)}.funding-bar[data-state=surplus] .funding-bar-fill{background-color:var(--color-accent, #2563eb)}.funding-bar-label{position:relative;margin:0 auto;font-size:var(--text-xs);font-weight:var(--weight-semibold)}.app-content tbody tr.budget-row[data-status=on-track] td{background-color:var(--color-success-soft, #ecfdf5)}.app-content tbody tr.budget-row[data-status=at-risk] td{background-color:var(--color-danger-soft, #fef2f2)}.funding-amount{display:block;margin-top:var(--space-1);font-size:var(--text-xs);color:var(--color-text-muted, #6b7280)}.filter-bar{display:flex;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3)}.app-content .empty-state{background-color:var(--color-surface-muted);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5) var(--space-5);display:flex;flex-direction:column;gap:var(--space-3);align-items:flex-start}.app-content .empty-state h3{margin:0}.app-content .empty-state p{margin:0;color:var(--color-text-muted);max-width:48rem}.app-content .empty-state button[type=button]{background-color:var(--color-accent);color:var(--color-text-on-accent);border:1px solid transparent;border-radius:var(--radius-md);padding:var(--space-3) var(--space-4);font:inherit;font-weight:var(--weight-medium);cursor:pointer}.app-content .empty-state button[type=button]:hover{background-color:var(--color-accent-hover)}.free-to-spend-panel{display:flex;flex-wrap:wrap;gap:var(--space-4);margin:var(--space-4) 0}.free-to-spend-card{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4) var(--space-5);border-radius:var(--radius-lg, 12px);background-color:var(--color-success-soft, #ecfdf5);border:1px solid color-mix(in srgb,var(--color-success, #16a34a) 30%,transparent);min-width:16rem}.free-to-spend-label{font-size:var(--text-xs);font-weight:var(--weight-semibold);text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-muted)}.free-to-spend-amount{font-size:var(--text-2xl, 1.8rem);font-weight:var(--weight-bold);color:var(--color-text)}.free-to-spend-sub{font-size:var(--text-xs);color:var(--color-text-muted)}.start-links{display:flex;flex-wrap:wrap;gap:var(--space-3);margin-top:var(--space-4)}.start-links a{color:var(--color-accent);font-weight:var(--weight-semibold)}.budget-picker{position:relative;display:inline-block}.budget-picker-list{position:absolute;z-index:20;top:100%;left:0;margin:var(--space-1) 0 0;padding:var(--space-1);list-style:none;min-width:12rem;max-height:14rem;overflow-y:auto;background-color:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:0 8px 24px #0000001f}.budget-picker-list li{margin:0}.budget-picker-list button{width:100%;text-align:left;background:none;border:none;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);color:var(--color-text);cursor:pointer}.budget-picker-list button:hover{background-color:var(--color-accent-soft)}.app-content section[aria-label=Transactions] table{overflow:visible}.income-tag{display:inline-flex;align-items:center;padding:var(--space-1) var(--space-3);border-radius:var(--radius-pill);font-size:var(--text-xs);font-weight:var(--weight-semibold);color:var(--color-success);background-color:var(--color-success-soft);border:1px solid color-mix(in srgb,var(--color-success) 30%,transparent)}.transaction-toolbar{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center}.funding-bar-marker{position:absolute;inset:0 auto 0 0;background-color:var(--color-border-strong);opacity:.7}.app-content tbody tr.budget-row[data-status=behind] td{background-color:var(--color-warning-soft, #fef3c7)}.catch-up-control{display:inline-flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;margin-top:var(--space-2)}.catch-up-control input{width:8rem;max-width:8rem}.inline-field{display:flex;gap:var(--space-2);align-items:center}.inline-field input{width:auto;flex:0 1 auto}.auth-shell{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--space-6);background-color:var(--color-bg)}.auth-card{width:100%;max-width:24rem;background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);box-shadow:var(--shadow-md)}.auth-card>h2{margin:0 0 var(--space-5);font-size:var(--text-xl);letter-spacing:-.01em}.auth-brand{margin:0 0 var(--space-2);font-size:var(--text-lg);font-weight:var(--weight-semibold);color:var(--color-accent)}.auth-card form{display:flex;flex-direction:column;gap:var(--space-4)}.auth-card form>div{display:flex;flex-direction:column;gap:var(--space-1)}.auth-card label{font-size:var(--text-sm);font-weight:var(--weight-medium)}.auth-card input{font:inherit;color:var(--color-text);padding:var(--space-2) var(--space-3);border:1px solid var(--color-border);border-radius:var(--radius-md);background-color:var(--color-surface)}.auth-card input:focus-visible{outline:none;border-color:var(--color-accent);box-shadow:0 0 0 3px var(--color-accent-soft)}.auth-card button[type=submit]{font:inherit;font-weight:var(--weight-semibold);padding:var(--space-3) var(--space-4);border:1px solid transparent;border-radius:var(--radius-md);background-color:var(--color-accent);color:var(--color-text-on-accent);cursor:pointer}.auth-card button[type=submit]:hover{background-color:var(--color-accent-hover)}.auth-card button[type=submit]:disabled{cursor:not-allowed;opacity:.55}.auth-card p[role=alert]{margin:0;padding:var(--space-3) var(--space-4);background-color:var(--color-danger-soft);border:1px solid var(--color-danger-border);border-radius:var(--radius-md);color:var(--color-danger);font-size:var(--text-sm)}.auth-alt{margin:var(--space-5) 0 0;font-size:var(--text-sm);color:var(--color-text-muted)}.app-account{display:inline-flex;align-items:center;gap:var(--space-3)}.app-account-email{font-size:var(--text-sm);color:var(--color-text-muted)}
