.login-page{background-image:repeating-linear-gradient(to bottom, transparent, transparent 27px, var(--color-rule) 28px);justify-content:center;align-items:center;min-height:100%;padding:24px;display:flex}.login-card{background:var(--color-ink-soft);border:1px solid var(--color-rule);border-radius:var(--radius);text-align:center;width:100%;max-width:400px;padding:48px 36px 40px;position:relative}.stamp{border:2px solid var(--color-accent-bright);width:56px;height:56px;color:var(--color-accent-bright);font-family:var(--font-mono);letter-spacing:.05em;opacity:.85;border-radius:50%;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;top:-18px;right:-14px;transform:rotate(9deg)}.eyebrow{font-family:var(--font-mono);letter-spacing:.12em;text-transform:uppercase;color:var(--color-accent-bright);margin:0 0 16px;font-size:12px}.login-card h1{font-family:var(--font-display);margin:0 0 12px;font-size:28px;font-weight:500;line-height:1.25}.subhead{color:var(--color-text-muted);margin:0 0 32px;font-size:14px;line-height:1.5}.login-action{justify-content:center;display:flex}.route-loading{min-height:100%;color:var(--color-text-muted);font-family:var(--font-mono);justify-content:center;align-items:center;font-size:13px;display:flex}.google-signin{border-radius:var(--radius);border:1px solid var(--color-rule);background:var(--color-accent-bright);width:100%;color:var(--color-ink);cursor:pointer;padding:12px 20px;font-size:14px;font-weight:600;transition:opacity .15s}.google-signin:disabled{opacity:.6;cursor:default}.login-error{color:#d97373;margin:16px 0 0;font-size:13px}.login-notice{border-radius:var(--radius);border:1px solid var(--color-rule);color:#d9b373;background:#d9b3731f;margin:0 0 24px;padding:10px 14px;font-size:13px;line-height:1.4}.dashboard{flex-direction:column;min-height:100%;display:flex}.dashboard-bar{border-bottom:1px solid var(--color-rule);flex-wrap:wrap;justify-content:space-between;align-items:center;row-gap:10px;padding:18px 28px;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:.01em;font-size:18px;font-weight:600}.dashboard-bar-right{flex-wrap:wrap;align-items:center;gap:16px;display:flex}@media (width<=640px){.dashboard-bar-right{justify-content:flex-start;width:100%}.dashboard-body{padding:16px}}.user-email{font-family:var(--font-mono);color:var(--color-text-muted);font-size:13px}.sign-out{border:1px solid var(--color-rule);color:var(--color-text);border-radius:var(--radius);cursor:pointer;background:0 0;padding:8px 14px;font-size:13px;transition:border-color .15s}.sign-out:hover{border-color:var(--color-accent-bright)}.dashboard-body{flex:1;justify-content:center;align-items:center;padding:24px;display:flex}.dashboard-status{color:var(--color-text-muted);font-size:14px}.dashboard-status.error{color:#e0665f}.ledger-empty{text-align:center;border:1px dashed var(--color-rule);border-radius:var(--radius);width:100%;max-width:480px;padding:48px 32px}.ledger-empty-title{font-family:var(--font-display);margin:0 0 8px;font-size:20px}.ledger-empty-copy{color:var(--color-text-muted);margin:0;font-size:14px}.ledger-container{width:100%;max-width:880px}.ledger-title{font-family:var(--font-display);margin:0 0 20px;font-size:22px}.ledger-title-row{justify-content:flex-end;margin-bottom:16px;display:flex}.dashboard-section+.dashboard-section{margin-top:24px}.layout-order-btn{border-radius:var(--radius);border:1px solid var(--color-rule);width:24px;height:24px;color:var(--color-text-muted);cursor:pointer;background:0 0;font-family:inherit;font-size:12px}.layout-order-btn:hover:not(:disabled){border-color:var(--color-accent-bright);color:var(--color-text)}.layout-order-btn:disabled{opacity:.35;cursor:default}.accounts-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;display:grid}.account-card{border:1px solid var(--color-rule);border-radius:var(--radius);background:var(--color-ink-soft);flex-direction:column;gap:10px;padding:20px;text-decoration:none;transition:border-color .15s;display:flex}.account-card:hover{border-color:var(--color-accent-bright)}.account-info{flex-direction:column;gap:4px;display:flex}.account-name{font-family:var(--font-display);font-size:17px}.account-meta{font-family:var(--font-mono);color:var(--color-text-muted);font-size:12px}.account-balance{font-family:var(--font-mono);font-size:24px;font-weight:600}.account-balance.negative{color:#e0665f}.account-updated{color:var(--color-text-muted);font-size:12px}.account-page{flex-direction:column;min-height:100%;display:flex}.account-page-body{flex:1;width:100%;max-width:880px;margin:0 auto;padding:24px 28px 48px}@media (width<=640px){.account-page-body{padding:16px 16px 32px}}.back-link{color:var(--color-text-muted);margin-bottom:20px;font-size:13px;text-decoration:none;transition:color .15s;display:inline-block}.back-link:hover{color:var(--color-accent-bright)}.account-page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:24px;display:flex}.account-page-name{font-family:var(--font-display);margin:0 0 6px;font-size:28px}.account-name-row{flex-wrap:wrap;align-items:baseline;gap:12px;display:flex}.account-name-edit{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.account-name-edit input{min-width:220px;font-size:20px}.account-page-meta{font-family:var(--font-mono);color:var(--color-text-muted);margin:0;font-size:13px}.account-page-balance-block{text-align:right}.account-page-balance{font-family:var(--font-mono);font-size:28px;font-weight:600}.account-page-balance.negative{color:#e0665f}@media (width<=640px){.account-page-name,.account-page-balance{font-size:22px}.account-page-balance-block{text-align:left}}.stat-tiles{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:24px;display:grid}.stat-tile{border:1px solid var(--color-rule);border-radius:var(--radius);background:var(--color-ink-soft);flex-direction:column;gap:4px;padding:18px 20px;display:flex}.stat-tile-label{color:var(--color-text-muted);font-size:12px}.stat-tile-value{font-family:var(--font-mono);font-size:22px;font-weight:600}.stat-tile-context{color:var(--color-text-muted);font-size:12px}.chart-card{border:1px solid var(--color-rule);border-radius:var(--radius);background:var(--color-ink-soft);padding:20px 20px 8px}.chart-card+.chart-card,.dashboard-summary-card{margin-top:24px}.summary-config-panel{border:1px solid var(--color-rule);border-radius:var(--radius);background:var(--color-ink);flex-direction:column;gap:10px;margin-bottom:16px;padding:16px;display:flex}.summary-config-hint{color:var(--color-text-muted);margin:0 0 4px;font-size:12px}.summary-config-divider{border-top:1px solid var(--color-rule);margin:6px 0}.summary-config-row{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.summary-config-name{font-size:13px}.chart-title-row{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:12px;display:flex}.chart-title{font-family:var(--font-display);margin:0;font-size:17px}.chart-title-toggle{color:inherit;cursor:pointer;text-align:left;background:0 0;border:none;margin:0;padding:0;display:block}.chart-title-toggle:hover{color:var(--color-accent-bright)}.view-transactions-link{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:13px;text-decoration:none;transition:color .15s}.view-transactions-link:hover{color:var(--color-accent-bright)}.chart-tooltip{background:var(--color-ink);border:1px solid var(--color-rule);border-radius:var(--radius);color:var(--color-text);padding:10px 12px;font-size:12px}.chart-tooltip-title{font-family:var(--font-mono);color:var(--color-text-muted);margin-bottom:6px}.chart-tooltip-hint{color:var(--color-text-muted);margin-top:6px;font-size:11px}.chart-tooltip-row{align-items:center;gap:6px;line-height:1.6;display:flex}.chart-tooltip-swatch{border-radius:2px;width:8px;height:8px;display:inline-block}.chart-tooltip-swatch.income{background:#3987e5}.chart-tooltip-swatch.expenses{background:#008300}.chart-tooltip-swatch.balance{background:#8452d4}.txn-list-wrap{padding-bottom:12px;overflow-x:auto}.txn-list{width:100%;font-size:13px}.txn-list-header,.txn-row{grid-template-columns:90px 2fr 84px 96px 1fr;align-items:center;column-gap:12px;display:grid}.txn-list-header{color:var(--color-text-muted);border-bottom:1px solid var(--color-rule);padding-bottom:8px;font-size:12px;font-weight:400}.txn-row{border-bottom:1px solid var(--color-rule);padding:10px 0}.txn-row:last-child{border-bottom:none}.txn-cell{min-width:0}.txn-amount-col{text-align:right}.txn-amount{font-family:var(--font-mono);text-align:right}.txn-amount.negative{color:#e0665f}.txn-type{color:var(--color-text-muted);font-size:12px}.txn-pending-row{opacity:.75;font-style:italic}.rule-inline-form-cell{grid-column:1/-1}@media (width<=640px){.txn-list-header{display:none}.txn-row{grid-template-columns:1fr auto;grid-template-areas:"date amount""type amount""details details""labels labels";row-gap:4px;padding:12px 0}.txn-cell-date{grid-area:date}.txn-cell-type{grid-area:type}.txn-cell-amount{grid-area:amount;align-self:center}.txn-cell-details{grid-area:details}.txn-cell-labels{grid-area:labels}}.txn-pending-badge{border:1px solid var(--color-rule);text-transform:uppercase;letter-spacing:.03em;color:var(--color-accent-bright);border-radius:999px;margin-left:6px;padding:2px 8px;font-size:10px;font-style:normal;display:inline-block}.txn-pending-hint{color:var(--color-text-muted);white-space:normal;font-size:11px}.txn-details-cell{white-space:normal}.txn-details{align-items:flex-start;gap:10px;display:flex}.txn-merchant-logo{object-fit:contain;background:var(--color-ink);border-radius:6px;flex-shrink:0;width:24px;height:24px;margin-top:2px}.txn-details-text{flex-direction:column;gap:2px;min-width:0;display:flex}.txn-primary{font-size:13px}.txn-secondary{color:var(--color-text-muted);font-size:11px;font-family:var(--font-mono)}.txn-category-picker{display:flex}.txn-category-select{color:var(--color-accent-bright);background:0 0;border:1px solid #0000;border-radius:4px;max-width:100%;padding:1px 4px;font-family:inherit;font-size:11px}.txn-category-select:hover{border-color:var(--color-rule)}.txn-category-select.manual{color:var(--color-text);border-color:var(--color-accent-bright)}.txn-category-fixed{color:var(--color-text-muted);cursor:default;padding:1px 4px;font-size:11px}.label-chips{white-space:normal;flex-wrap:wrap;gap:6px;display:flex}.label-chip{border:1px solid var(--color-rule);color:var(--color-text-muted);cursor:pointer;background:0 0;border-radius:999px;padding:4px 10px;font-family:inherit;font-size:11px;transition:border-color .15s,color .15s,background .15s}.label-chip:hover{border-color:var(--color-accent-bright);color:var(--color-text)}.label-chip.active{background:var(--color-accent-bright);border-color:var(--color-accent-bright);color:var(--color-ink)}.page-subtitle{margin-bottom:20px}.pending-toggle{color:var(--color-text-muted);cursor:pointer;align-items:center;gap:8px;margin-bottom:16px;font-size:13px;display:inline-flex}.pending-toggle input{accent-color:var(--color-accent-bright)}.transactions-filters-row{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:20px;display:flex}.filters-search{flex:1;min-width:200px}.filters-date{min-width:0}.filters-clear{white-space:nowrap}@media (width<=640px){.filters-search{min-width:100%}}.pagination-row{justify-content:center;align-items:center;gap:16px;margin-top:20px;display:flex}.pagination-page{color:var(--color-text-muted);font-size:13px}.load-more-button{border:1px solid var(--color-rule);color:var(--color-text);border-radius:var(--radius);cursor:pointer;background:0 0;padding:8px 20px;font-size:13px;transition:border-color .15s}.load-more-button:hover:not(:disabled){border-color:var(--color-accent-bright)}.load-more-button:disabled{opacity:.6;cursor:default}.rule-form{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.rule-form-input{background:var(--color-ink);border:1px solid var(--color-rule);border-radius:var(--radius);min-width:220px;color:var(--color-text);flex:1;padding:8px 12px;font-family:inherit;font-size:13px}.rule-form-select{background:var(--color-ink);border:1px solid var(--color-rule);border-radius:var(--radius);color:var(--color-text);padding:8px 12px;font-family:inherit;font-size:13px}.rule-form-input:focus,.rule-form-select:focus{outline:2px solid var(--color-accent-bright);outline-offset:-1px}.rule-list{flex-direction:column;gap:10px;display:flex}.rule-row{border:1px solid var(--color-rule);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.rule-row-text{color:var(--color-text-muted);font-size:13px}.rule-row-text strong{color:var(--color-text);font-weight:500}.rule-delete-button{color:var(--color-text-muted);cursor:pointer;background:0 0;border:none;padding:0;font-size:12px;transition:color .15s}.rule-delete-button:hover{color:#e0665f}.rule-chip{border-style:dashed}.rule-notice{color:var(--color-accent-bright);margin:0 0 10px;font-size:12px}.rule-inline-form-cell{white-space:normal;background:var(--color-ink);padding:14px 16px!important}.rule-create-form{flex-direction:column;gap:12px;display:flex}.rule-preview{flex-direction:column;gap:8px;display:flex}.rule-preview-empty{color:var(--color-text-muted);margin:0;font-size:12px}.rule-preview-list{flex-direction:column;gap:4px;max-height:180px;display:flex;overflow-y:auto}.rule-preview-row{grid-template-columns:70px 1fr auto auto;align-items:center;gap:10px;padding:4px 0;font-size:12px;display:grid}.rule-preview-date{color:var(--color-text-muted);font-family:var(--font-mono)}.rule-preview-desc{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.rule-preview-account{color:var(--color-text-muted)}.rule-preview-more{color:var(--color-text-muted);margin:0;font-size:11px}.rule-preview-checkbox{color:var(--color-text);cursor:pointer;align-items:center;gap:8px;font-size:12px;display:flex}.rule-form-actions{align-items:center;gap:12px;display:flex}:root{--color-ink:#10151f;--color-ink-soft:#1a2130;--color-paper:#f6f1e4;--color-accent:#2b7a6b;--color-accent-bright:#3fa98f;--color-text:#ece7da;--color-text-muted:#8d93a1;--color-rule:#ece7da1f;--font-display:"Fraunces", serif;--font-body:"Inter", system-ui, sans-serif;--font-mono:"IBM Plex Mono", monospace;--radius:6px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--color-ink);color:var(--color-text);font-family:var(--font-body);-webkit-font-smoothing:antialiased}button{font-family:inherit}a{color:inherit}:focus-visible{outline:2px solid var(--color-accent-bright);outline-offset:2px}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
