:root{--bg: #f5f5f7;--card: #ffffff;--text: #1d1d1f;--muted: #6e6e73;--border: rgba(0, 0, 0, .08);--shadow: 0 1px 2px rgba(0, 0, 0, .06);--radius: 16px;--radius-pill: 999px;--neg: #d70015;--pos: #1a7f37;font-family:system-ui,-apple-system,SF Pro Display,SF Pro Text,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--text);background-color:var(--bg)}*{box-sizing:border-box}body{margin:0;background-color:var(--bg);color:var(--text)}h1,h2,h3,h4{margin:0;font-weight:600}p{margin:0}.app-shell{min-height:100vh;padding:48px 20px 80px;background:var(--bg)}.app-shell__content{max-width:1120px;margin:0 auto;display:flex;flex-direction:column;gap:32px}.app-shell__header{display:flex;align-items:center;justify-content:space-between;gap:16px}.app-shell__brand{font-weight:600;font-size:1.1rem}.app-shell__nav{display:flex;gap:4px;flex:1;margin-left:24px}.app-shell__nav-item{background:transparent;border:none;padding:8px 16px;border-radius:6px;font-size:.9rem;color:var(--muted);cursor:pointer;transition:background .15s,color .15s}.app-shell__nav-item:hover{background:#0000000d;color:var(--text)}.app-shell__nav-item.active{background:#00000014;color:var(--text);font-weight:500}.page-header{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap}.page-title{display:flex;flex-direction:column;gap:12px}.page-title h1{font-size:clamp(2.25rem,3vw,2.8rem);letter-spacing:-.02em}.page-subtitle{color:var(--muted);font-size:1rem}.month-selector{display:flex;align-items:center;gap:12px}.month-selector label{font-weight:600;color:var(--text)}.month-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}select,input{border:1px solid var(--border);border-radius:12px;padding:10px 14px;font-size:1rem;background:#fff;color:var(--text);transition:border-color .2s ease,box-shadow .2s ease}select:focus,input:focus{outline:none;border-color:#0003;box-shadow:0 0 0 3px #0000000f}select:disabled,input:disabled{background:var(--bg);color:var(--text-muted);cursor:not-allowed}button{border:1px solid var(--border);background:var(--card);border-radius:var(--radius-pill);padding:10px 18px;cursor:pointer;font-size:.95rem;font-weight:600;color:var(--text);transition:background .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease;display:inline-flex;align-items:center;gap:8px}button:hover:not(:disabled){background:#00000008;border-color:#00000029}button:disabled{opacity:.6;cursor:not-allowed}button,.button-link,.button-primary,.button-secondary{text-decoration:none}.button-link{border:1px solid var(--border);background:var(--card);border-radius:var(--radius-pill);padding:10px 18px;cursor:pointer;font-size:.95rem;font-weight:600;color:var(--text);transition:background .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease;display:inline-flex;align-items:center;gap:8px}.button-link:hover{background:#00000008;border-color:#00000029}.button-primary{background:#fff;box-shadow:var(--shadow)}.button-secondary{background:#fff9}.button-icon{font-size:1.1rem;line-height:1}.card{background:var(--card);border-radius:var(--radius);padding:24px;border:1px solid var(--border);box-shadow:var(--shadow)}.state{padding:12px 16px;color:var(--muted)}.state.error{color:var(--neg)}.analytics-page{display:flex;flex-direction:column;gap:24px}.analytics-tabs{display:inline-flex;background:#fff;border:1px solid var(--border);border-radius:var(--radius-pill);padding:4px;gap:4px;align-self:flex-start}.analytics-tabs__button{border:none;background:transparent;padding:8px 16px;border-radius:var(--radius-pill);font-weight:600;color:var(--muted);cursor:pointer}.analytics-tabs__button.active{background:#00000014;color:var(--text)}.analytics-section{display:flex;flex-direction:column;gap:16px}.analytics-section__header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.analytics-controls{display:flex;flex-wrap:wrap;gap:16px;align-items:flex-end}.analytics-control{display:flex;flex-direction:column;gap:8px;min-width:200px}.analytics-control--inline{flex-direction:row;align-items:center;gap:12px;flex-wrap:wrap}.analytics-card{display:flex;flex-direction:column;gap:16px}.analytics-total{text-align:right;display:flex;flex-direction:column;gap:4px;color:var(--muted)}.analytics-total strong{color:var(--text);font-size:1.1rem}.analytics-table{display:grid;gap:8px}.analytics-table__header,.analytics-table__row{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;align-items:center}.analytics-table--compact .analytics-table__header,.analytics-table--compact .analytics-table__row{grid-template-columns:repeat(3,minmax(0,1fr))}.analytics-table__header{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 4px}.analytics-table__row{background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 8px;text-align:left;cursor:pointer;transition:box-shadow .2s ease,border-color .2s ease}.analytics-table__row:hover{border-color:#0003;box-shadow:var(--shadow)}.status-pill{display:inline-flex;align-items:center;padding:4px 10px;border-radius:var(--radius-pill);font-size:.8rem;font-weight:600;text-transform:capitalize}.status-pill--in_progress{background:#00000014;color:var(--text)}.status-pill--under{background:#1a7f371f;color:var(--pos)}.status-pill--over{background:#d700151f;color:var(--neg)}.year-toggle{display:inline-flex;align-items:center;gap:8px;background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:4px}.year-toggle__btn{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border:none;background:transparent;border-radius:6px;cursor:pointer;font-size:1rem;color:var(--text);transition:background .15s ease}.year-toggle__btn:hover:not(:disabled){background:#0000000f}.year-toggle__btn:disabled{opacity:.3;cursor:not-allowed}.year-toggle__value{font-weight:600;font-size:1rem;min-width:60px;text-align:center}.trend-chart{display:grid;gap:16px}.trend-chart__canvas{background:#fff;border:1px solid var(--border);border-radius:16px;padding:16px}.trend-chart__canvas svg{width:100%;height:auto;overflow:visible}.trend-chart__line{stroke:var(--primary, #2563eb);stroke-width:2.5;stroke-linejoin:round;stroke-linecap:round}.trend-chart__dot{fill:var(--primary, #2563eb);cursor:pointer;transition:r .15s ease}.trend-chart__dot--hovered{fill:var(--primary-dark, #1d4ed8)}.trend-chart__axis-line{stroke:#0000004d;stroke-width:1}.trend-chart__grid-line{stroke:#00000014;stroke-width:1;stroke-dasharray:4 4}.trend-chart__zero{stroke:#dc262666;stroke-width:1.5;stroke-dasharray:6 4}.trend-chart__y-label,.trend-chart__x-label{font-size:11px;fill:var(--muted, #6b7280)}.trend-chart__tooltip-bg{fill:#000000d9}.trend-chart__tooltip-date{font-size:11px;fill:#ffffffb3}.trend-chart__tooltip-value{font-size:13px;font-weight:600;fill:#fff}.transactions-list-page{display:flex;flex-direction:column;gap:24px}.transactions-table{display:grid;gap:8px}.transactions-table__header,.transactions-table__row{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;align-items:center}.transactions-table__header{font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 4px}.transactions-table__row{border:1px solid var(--border);border-radius:12px;padding:12px 8px;background:#fff}.state.success{color:var(--pos)}.home__banner{border-radius:var(--radius);border:1px solid rgba(26,127,55,.2);background:#1a7f3714;max-width:420px;width:100%;text-align:center}.empty-state{background:var(--card);border-radius:var(--radius);padding:16px;border:1px solid var(--border)}.redirect{color:var(--muted);font-size:.9rem}.content{display:flex;flex-direction:column;gap:24px}.summary-card{display:grid;grid-template-columns:1fr auto 1fr auto 1fr;gap:0;align-items:center}.summary-metric{display:flex;flex-direction:column;gap:8px;padding:6px 8px}.summary-value{font-size:clamp(1.8rem,3vw,2.4rem);font-weight:600}.summary-label{color:var(--muted);font-size:.95rem}.summary-divider{width:1px;height:100%;background:var(--border)}.value-negative{color:var(--neg)}.value-positive{color:var(--pos)}.allocations-card{display:flex;flex-direction:column;gap:16px}.section-header h2{font-size:1.4rem}.allocations-list{display:flex;flex-direction:column;gap:12px}.allocation-row-card{border-radius:14px;border:1px solid var(--border);background:#fff;overflow:hidden;transition:background .2s ease,box-shadow .2s ease}.allocation-row-card.negative{background:#d700150a}.allocation-row-button{width:100%;border:none;background:transparent;box-shadow:none;border-radius:0;padding:18px 20px;display:flex;align-items:center;gap:16px;justify-content:flex-start;text-align:left}.allocation-row-button:hover{background:#00000008}.allocation-row-main{display:flex;flex-direction:column;gap:6px;min-width:0}.allocation-row-content{flex:1;display:flex;flex-direction:column;gap:14px;min-width:0}.allocation-row-header{display:flex;align-items:flex-start;gap:16px}.allocation-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.allocation-name{font-size:1.1rem;font-weight:600}.allocation-subline{color:var(--muted);font-size:.95rem}.allocation-row-meta{display:flex;flex-direction:column;align-items:flex-end;gap:6px;min-width:170px;margin-left:auto}.allocation-balance{font-size:1.5rem;font-weight:600}.allocation-meta-label{color:var(--muted);font-size:.9rem}.allocation-progress{position:relative;width:100%;height:8px;background:#00000014;border-radius:999px;overflow:hidden}.allocation-progress-fill{height:100%;border-radius:inherit;transition:width .2s ease}.allocation-progress-fill.under{background:#1a7f37cc}.allocation-progress-fill.over{background:#d70015cc}.allocation-progress-overflow{position:absolute;top:0;right:0;height:100%;background:#d7001573}.allocation-chevron{color:var(--muted);font-size:1.5rem;margin-left:12px}.allocation-transactions{padding:16px 20px 20px;border-top:1px solid var(--border);background:#00000005}.badge{display:inline-flex;padding:2px 8px;border-radius:999px;background:#007aff1a;color:#0369a1;font-size:.75rem;font-weight:600}.badge.rollover{background:#007aff1f}.transactions{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}.transactions li{background:#fff;border-radius:12px;border:1px solid var(--border);padding:12px 14px}.transaction-summary{display:grid;grid-template-columns:120px minmax(0,1fr) 120px 180px;gap:12px;align-items:center}.transaction-name{display:flex;flex-direction:column;gap:4px;font-weight:600}.transaction-description{color:var(--muted);font-weight:400;font-size:.85rem}.transaction-amount{text-align:right;font-weight:600;color:var(--text)}.transaction-amount.refund{color:var(--pos)}.transaction-actions{display:flex;gap:8px;justify-content:flex-end;flex-wrap:wrap}.transaction-edit{margin-top:12px;display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;padding:12px;border-radius:12px;border:1px solid var(--border);background:#fffc}.transaction-edit label{display:flex;flex-direction:column;gap:6px;font-size:.9rem}.transaction-edit-actions{display:flex;gap:8px;justify-content:flex-end;align-items:center;flex-wrap:wrap}.empty-transactions{color:var(--muted);margin:0}.create-budget,.add-transactions{display:flex;flex-direction:column;gap:24px}.home,.auth{min-height:calc(100vh - 128px);display:flex;align-items:center;justify-content:center}.home{flex-direction:column;gap:16px}.home__card,.auth__card{max-width:420px;width:100%;display:flex;flex-direction:column;gap:20px;text-align:center;padding:32px}.home__actions{display:flex;flex-direction:column;gap:12px}.home__actions a{justify-content:center}.auth{display:flex;flex-direction:column;gap:24px}.auth__header{display:flex;flex-direction:column;gap:8px;text-align:left}.auth__form{display:flex;flex-direction:column;gap:12px;text-align:left}.auth__form label{display:flex;flex-direction:column;gap:6px;font-weight:600;color:var(--text)}.auth__switch{color:var(--muted);font-size:.95rem;text-align:left}.auth__switch a{color:var(--text);font-weight:600}.budget-form,.transactions-form{display:flex;flex-direction:column;gap:16px}.budget-form label,.transactions-form label{display:flex;flex-direction:column;gap:6px;font-size:.9rem}.allocations-form{display:flex;flex-direction:column;gap:12px}.allocations-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.allocations-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.allocation-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#00000005;align-items:center}.allocation-row-inline{grid-template-columns:minmax(200px,1.5fr) minmax(200px,1fr) auto auto;align-items:end}.checkbox{flex-direction:row;align-items:center;gap:8px;align-self:center}.transactions-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.transactions-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.transaction-row{display:grid;grid-template-columns:minmax(140px,1fr) minmax(160px,1fr) minmax(180px,1.2fr) minmax(140px,.8fr) minmax(180px,1.2fr) auto;gap:12px;padding:12px;border:1px solid var(--border);border-radius:12px;background:#00000005;align-items:end;width:100%}.transaction-row label{min-width:0}.transaction-row input,.transaction-row select{width:100%}@media (max-width: 900px){.transaction-summary{grid-template-columns:1fr;text-align:left}.transaction-amount{text-align:left}.allocation-row-button{flex-direction:column;align-items:flex-start}.allocation-row-meta{align-items:flex-start}}@media (max-width: 720px){.summary-card{grid-template-columns:1fr;gap:16px}.summary-divider{display:none}.month-actions{width:100%;justify-content:flex-start}.transaction-row,.allocation-row-inline{grid-template-columns:1fr}}.linked-accounts,.transaction-review,.ignored-transactions{display:flex;flex-direction:column;gap:24px}.accounts-list{display:flex;flex-direction:column;gap:12px;margin-top:12px}.account-row{display:flex;align-items:center;justify-content:space-between;padding:12px;border:1px solid var(--border);border-radius:12px;background:#00000005;gap:12px}.account-info{display:flex;flex-direction:column;gap:4px}.account-name{font-weight:600;color:var(--text)}.account-type{font-size:.9rem;color:var(--muted);text-transform:capitalize}.account-status{display:flex;align-items:center}.status-badge{padding:4px 12px;border-radius:999px;font-size:.85rem;font-weight:600}.status-badge.active{background:#1a7f371a;color:var(--pos)}.status-badge.inactive{background:#00000014;color:var(--muted)}.badge{padding:4px 12px;border-radius:999px;font-size:.85rem;font-weight:600;background:#00000014;color:var(--muted)}.review-list,.ignored-list{display:flex;flex-direction:column;gap:12px;margin-top:12px}.review-row,.ignored-row{display:flex;align-items:center;justify-content:space-between;padding:16px;border:1px solid var(--border);border-radius:12px;background:#00000005;gap:16px;flex-wrap:wrap}.review-info,.ignored-info{display:grid;grid-template-columns:100px 1fr auto;gap:12px;align-items:center;flex:1;min-width:0}.review-date,.ignored-date{font-size:.9rem;color:var(--muted)}.review-name,.ignored-name{font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis}.review-amount,.ignored-amount{font-weight:600;text-align:right;white-space:nowrap}.review-actions,.ignored-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.review-selection{display:flex;align-items:center;gap:12px;margin-top:6px;color:var(--muted);font-size:.9rem}.select-all{display:inline-flex;align-items:center;gap:6px}.selection-count{font-weight:600}.bulk-actions{display:flex;align-items:center;gap:8px}.review-row.has-pending{background-color:var(--success-bg, #f0fdf4)}.review-select{display:flex;align-items:center}.review-select input{width:18px;height:18px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}.category-select{min-width:180px}.section-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.pill-button{border:1px solid var(--border);background:var(--card);border-radius:var(--radius-pill);padding:10px 18px;cursor:pointer;font-size:.95rem;font-weight:600;color:var(--text);transition:background .2s ease,border-color .2s ease,box-shadow .2s ease,transform .2s ease;display:inline-flex;align-items:center;gap:8px}.pill-button:hover:not(:disabled){background:#00000008;border-color:#00000029}.pill-button:disabled{opacity:.6;cursor:not-allowed}@media (max-width: 720px){.review-info,.ignored-info{grid-template-columns:1fr;gap:8px}.review-amount,.ignored-amount{text-align:left}.review-row,.ignored-row{flex-direction:column;align-items:stretch}.review-actions,.ignored-actions,.category-select{width:100%}}.pagination{display:flex;align-items:center;justify-content:center;gap:16px;padding:16px;border-top:1px solid var(--border);margin-top:12px}.pagination-button{border:1px solid var(--border);background:var(--card);border-radius:var(--radius-pill);padding:8px 16px;cursor:pointer;font-size:.9rem;font-weight:500;color:var(--text);transition:background .2s ease,border-color .2s ease}.pagination-button:hover:not(:disabled){background:#00000008;border-color:#00000029}.pagination-button:disabled{opacity:.5;cursor:not-allowed}.pagination-info{font-size:.9rem;color:var(--muted)}
