:root{--navy:#0b1a2b;--navy-light:#14263d;--bg:#f4f7fa;--card:#fff;--text:#1c2b3a;--text-muted:#5b6b7c;--border:#e1e7ee;--accent:#38bdf8;--accent-dark:#0ea5e9;--danger:#e0435b;--font:"Poppins", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--chart-accent:#0284c7;--chart-muted:#7c93a8;--chart-grid:var(--border);--chart-muted-text:var(--text-muted);--chart-warning:#a15c00}*{box-sizing:border-box}html,body,#root{height:100%}body{font-family:var(--font);background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0}h1,h2,h3{color:var(--text);margin:0 0 8px;font-weight:600}p{margin:0}button{font-family:inherit}.app-shell{flex-direction:column;min-height:100vh;display:flex}.nav{background:var(--navy);color:#fff;align-items:center;gap:32px;padding:14px 28px;display:flex}.nav-brand{letter-spacing:.02em;font-weight:600}.nav-links{flex:1;gap:20px;display:flex}.nav-links a{color:#ffffffb8;border-bottom:2px solid #0000;padding:6px 4px;font-size:14px;font-weight:500;text-decoration:none;transition:color .15s,border-color .15s}.nav-links a:hover{color:#fff}.nav-links a.active{color:#fff;border-bottom-color:var(--accent)}.nav-signout{color:#ffffffb8;cursor:pointer;background:0 0;border:1px solid #ffffff3d;border-radius:6px;padding:7px 14px;font-size:13px;transition:color .15s,border-color .15s}.nav-signout:hover{color:#fff;border-color:#ffffff80}.app-main{flex:1;padding:32px}.page-loading{min-height:100vh;color:var(--text-muted);justify-content:center;align-items:center;font-size:14px;display:flex}.auth-screen{background:var(--navy);background-image:linear-gradient(160deg, var(--navy) 0%, var(--navy-light) 100%);justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.auth-card{background:var(--card);border-radius:12px;flex-direction:column;gap:6px;width:100%;max-width:380px;padding:36px 32px;display:flex;box-shadow:0 20px 45px #020a1659}.mfa-enroll-card{align-items:stretch;max-width:420px}.auth-subtitle{color:var(--text-muted);margin-bottom:20px;font-size:14px}.auth-card label{color:var(--text-muted);margin-top:12px;margin-bottom:6px;font-size:13px;font-weight:500}.auth-card input{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:8px;padding:10px 12px;font-family:inherit;font-size:15px}.auth-card input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #38bdf840}.auth-card button[type=submit]{background:var(--accent-dark);color:#fff;cursor:pointer;border:none;border-radius:8px;margin-top:20px;padding:11px 16px;font-size:15px;font-weight:600;transition:background .15s}.auth-card button[type=submit]:hover:not(:disabled){background:#0284c7}.auth-card button[type=submit]:disabled{cursor:not-allowed;background:#b7c5d1}.auth-error{color:var(--danger);margin-top:10px;font-size:13px}.mfa-qr{border:1px solid var(--border);background:#fff;border-radius:8px;justify-content:center;margin:12px 0;padding:16px;display:flex}.mfa-qr img{width:180px;height:180px}.mfa-secret-label{color:var(--text-muted);margin-top:8px;font-size:13px}.mfa-secret{-webkit-user-select:all;user-select:all;background:var(--bg);border:1px solid var(--border);word-break:break-all;border-radius:6px;margin-top:6px;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:14px;display:block}.transactions-page{flex-direction:column;gap:20px;display:flex}.tx-filters{background:var(--card);border:1px solid var(--border);border-radius:10px;flex-wrap:wrap;gap:16px;padding:16px 20px;display:flex}.tx-filters label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:13px;font-weight:500;display:flex}.tx-filters input,.tx-filters select{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:6px;padding:8px 10px;font-family:inherit;font-size:14px}.tx-filters input:focus,.tx-filters select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #38bdf833}.tx-table{border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:10px;width:100%;overflow:hidden}.tx-table th,.tx-table td{text-align:left;border-bottom:1px solid var(--border);padding:10px 14px;font-size:14px}.tx-table tbody tr:last-child td{border-bottom:none}.tx-table th{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg);font-size:12px}.tx-amount-col{text-align:right;font-variant-numeric:tabular-nums}.tx-amount-credit{color:#16a34a}.tx-credit-hint{text-transform:uppercase;color:#16a34a;margin-left:6px;font-size:11px;font-weight:600}.tx-badge-pending{text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted);background:var(--bg);border:1px solid var(--border);border-radius:999px;margin-left:8px;padding:2px 8px;font-size:10px;font-weight:600;display:inline-block}.tx-loading,.tx-empty{text-align:center;color:var(--text-muted);padding:24px}.category-select{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:6px;padding:6px 8px;font-family:inherit;font-size:13px}.category-select:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #38bdf833}.tx-pagination{align-items:center;gap:12px;display:flex}.tx-pagination button{background:var(--card);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:6px;padding:8px 14px;font-size:13px}.tx-pagination button:hover:not(:disabled){border-color:var(--accent);color:var(--accent-dark)}.tx-pagination button:disabled{color:var(--text-muted);cursor:not-allowed;opacity:.6}.tx-pagination span{color:var(--text-muted);font-size:13px}.overview-page{flex-direction:column;gap:20px;display:flex}.stat-tiles{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;display:grid}.stat-tile{background:var(--card);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:6px;padding:18px 20px;display:flex}.stat-tile-label{color:var(--text-muted);font-size:13px;font-weight:500}.stat-tile-value{color:var(--text);font-size:28px;font-weight:600}.stat-tile-hint{color:var(--text-muted);font-size:12px}.chart-row{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));align-items:start;gap:16px;display:grid}.chart-card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:18px 20px}.chart-card-wide{grid-column:1/-1}.chart-card h3{font-size:15px;font-weight:600}.chart-subtitle{color:var(--text-muted);margin-bottom:12px;font-size:12px}.chart-empty{color:var(--text-muted);text-align:center;padding:24px 0;font-size:13px}.chart-tooltip{background:var(--card);border:1px solid var(--border);border-radius:8px;padding:8px 12px;box-shadow:0 8px 20px #020a161f}.chart-tooltip-value{color:var(--text);font-size:14px;font-weight:600}.chart-tooltip-label{color:var(--text-muted);margin-top:2px;font-size:12px}.nmpf-page{flex-direction:column;gap:20px;display:flex}.nmpf-exceptions{grid-template-columns:repeat(auto-fit,minmax(360px,1fr));align-items:start;gap:16px;display:grid}.budget-meter{flex-direction:column;gap:8px;margin-top:4px;display:flex}.budget-meter-header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.budget-meter-title{color:var(--text);font-size:14px;font-weight:600}.budget-meter-amounts{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:13px}.budget-meter-track{background:var(--bg);border:1px solid var(--border);border-radius:999px;height:14px;overflow:hidden}.budget-meter-fill{border-radius:999px;height:100%;transition:width .2s}.budget-meter-fill--accent{background:var(--chart-accent)}.budget-meter-fill--warning{background:var(--chart-warning)}.budget-meter-fill--danger{background:var(--danger)}.budget-meter-footer{justify-content:space-between;font-size:12px;display:flex}.budget-meter-status{color:var(--text);font-weight:600}.budget-meter-pct{color:var(--text-muted);font-variant-numeric:tabular-nums}.budget-empty{margin-top:4px}.budget-edit-toggle{background:var(--card);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:6px;align-self:flex-start;margin-top:12px;padding:8px 14px;font-size:13px}.budget-edit-toggle:hover{border-color:var(--accent);color:var(--accent-dark)}.budget-edit-form{flex-direction:column;gap:8px;max-width:280px;margin-top:12px;display:flex}.budget-edit-form label{color:var(--text-muted);font-size:13px;font-weight:500}.budget-edit-form input{border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 10px;font-family:inherit;font-size:14px}.budget-edit-form input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 3px #38bdf833}.budget-edit-actions{gap:8px;display:flex}.budget-edit-actions button{cursor:pointer;border-radius:6px;padding:8px 14px;font-size:13px}.budget-edit-actions button[type=submit]{background:var(--accent-dark);border:1px solid var(--accent-dark);color:#fff}.budget-edit-actions button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.budget-edit-actions button[type=button]{background:var(--card);border:1px solid var(--border);color:var(--text)}.admin-page{flex-direction:column;gap:24px;display:flex}.admin-section{background:var(--card);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:14px;padding:20px 24px;display:flex}.admin-section h2{font-size:16px}.admin-success{color:#16a34a;margin-top:10px;font-size:13px}.plaid-connect{flex-direction:column;align-items:flex-start;gap:8px;display:flex}.plaid-connect button,.admin-item-actions button{background:var(--accent-dark);color:#fff;cursor:pointer;border:none;border-radius:6px;padding:9px 16px;font-size:13px;font-weight:600}.plaid-connect button:hover:not(:disabled),.admin-item-actions button:hover:not(:disabled){background:#0284c7}.plaid-connect button:disabled,.admin-item-actions button:disabled{cursor:not-allowed;background:#b7c5d1}.admin-items{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:16px;display:grid}.admin-item-card{background:var(--bg);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;padding:16px 18px;display:flex}.admin-item-header{justify-content:space-between;align-items:center;gap:8px;display:flex}.admin-item-header h3{font-size:15px}.admin-item-meta{color:var(--text-muted);font-size:12px}.admin-badge{text-transform:uppercase;letter-spacing:.03em;border-radius:999px;padding:3px 10px;font-size:11px;font-weight:600;display:inline-block}.admin-badge--ok{color:#16a34a;background:#16a34a1f}.admin-badge--login_required{color:var(--chart-warning);background:#a15c001f}.admin-badge--error{color:var(--danger);background:#e0435b1f}.admin-item-actions{gap:8px;display:flex}.admin-sync-result{color:var(--text-muted);font-size:12px}.admin-table{border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:10px;width:100%;overflow:hidden}.admin-table th,.admin-table td{text-align:left;border-bottom:1px solid var(--border);padding:8px 12px;font-size:13px}.admin-table tbody tr:last-child td{border-bottom:none}.admin-table th{text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--bg);font-size:11px}.admin-table input[type=text],.admin-table input[type=number],.admin-table select{border:1px solid var(--border);border-radius:6px;padding:5px 8px;font-family:inherit;font-size:13px}.admin-row-actions{gap:6px;display:flex}.admin-row-actions button{background:var(--card);border:1px solid var(--border);cursor:pointer;color:var(--text);border-radius:6px;padding:6px 10px;font-size:12px}.admin-row-actions button:hover{border-color:var(--accent);color:var(--accent-dark)}.admin-inline-form{flex-wrap:wrap;align-items:flex-end;gap:14px;display:flex}.admin-inline-form label{color:var(--text-muted);flex-direction:column;gap:6px;font-size:12px;font-weight:500;display:flex}.admin-inline-form input,.admin-inline-form select{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:6px;padding:8px 10px;font-family:inherit;font-size:14px}.admin-checkbox-label{align-items:center;flex-direction:row!important;gap:8px!important}.admin-inline-form button[type=submit]{background:var(--accent-dark);color:#fff;cursor:pointer;border:none;border-radius:6px;height:fit-content;padding:9px 16px;font-size:13px;font-weight:600}.admin-inline-form button[type=submit]:hover:not(:disabled){background:#0284c7}.admin-inline-form button[type=submit]:disabled{cursor:not-allowed;background:#b7c5d1}
