
:root{--ink:#152340;--muted:#66748d;--blue:#164eeb;--line:#e3e9f2;--bg:#f3f6fb;--radius:18px;font-family:Inter,"Segoe UI",system-ui,sans-serif;color:var(--ink);font-size:16px}*{box-sizing:border-box}body{margin:0;background:var(--bg)}a{color:var(--blue);text-decoration:none}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.55;cursor:wait}:focus-visible{outline:3px solid #8aafff;outline-offset:3px}.sidebar{position:fixed;width:250px;inset:0 auto 0 0;background:white;border-right:1px solid var(--line);padding:32px 22px;display:flex;flex-direction:column;z-index:3}.brand{display:flex;align-items:center;gap:12px;font-size:19px;font-weight:750;color:var(--ink)}.brand small{display:block;font-size:10px;letter-spacing:1.1px;color:var(--muted);margin-top:5px}.mark{display:grid;place-items:center;background:var(--blue);color:white;width:42px;height:42px;border-radius:12px;font-size:15px;letter-spacing:-1px;box-shadow:0 5px 12px #164eeb24}.nav-label{font-size:11px;letter-spacing:1.4px;color:#8590a3;font-weight:700;margin:52px 12px 14px}nav{display:grid;gap:8px}nav a{display:flex;align-items:center;gap:12px;padding:13px 12px;border-radius:10px;color:#66748d;font-size:14px;font-weight:600}nav a span{font-size:21px;width:22px;text-align:center}nav a.active,nav a:hover{background:#edf3ff;color:var(--blue)}.sidebar-bottom{margin-top:auto;display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:22px}.avatar{background:#e8eeff;color:var(--blue);width:34px;height:34px;border-radius:50%;display:grid;place-items:center;font-weight:700;flex-shrink:0}.account{font-size:12px;overflow-wrap:anywhere;flex:1}.account small{display:block;color:var(--muted);margin-top:4px}.logout{border:0;background:transparent;font-size:23px;color:var(--muted)}.workspace{margin-left:250px;padding:44px clamp(24px,3vw,54px);max-width:1750px}.eyebrow{font-size:11px;font-weight:750;letter-spacing:1.7px;color:var(--muted);margin-bottom:10px}h1{font-size:36px;letter-spacing:-1.4px;line-height:1.15;margin:0 0 10px}h2{font-size:22px;letter-spacing:-.5px;margin:0 0 9px}h3{font-size:16px;margin:0 0 12px}p{font-size:14px;color:var(--muted);line-height:1.65;margin:0 0 18px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:30px}.page-heading p{margin:0;font-size:16px}.button{display:inline-flex;justify-content:center;align-items:center;border:1px solid transparent;border-radius:9px;padding:12px 17px;font-size:14px;font-weight:650;white-space:nowrap;transition:background .15s,transform .15s}.button:hover{transform:translateY(-1px)}.primary{background:var(--blue);color:white;box-shadow:0 4px 10px #164eeb14}.primary:hover{background:#123fc1}.subtle{background:#edf3ff;color:var(--blue);border-color:#dbe5ff}.full{width:100%}.summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px;margin-bottom:28px}.summary-card{background:white;border:1px solid var(--line);padding:24px;border-radius:var(--radius)}.summary-card.bank{background:linear-gradient(125deg,#174dde,#1635a6);color:white;border:0;box-shadow:0 12px 24px #164eeb17}.summary-label{display:flex;justify-content:space-between;font-size:11px;font-weight:700;letter-spacing:1.3px;color:var(--muted)}.bank .summary-label,.bank .summary-caption{color:#d1ddff}.summary-label span{font-size:17px}.big-money{font-size:clamp(24px,2.8vw,38px);font-weight:750;letter-spacing:-1px;margin:21px 0 10px;font-variant-numeric:tabular-nums}.summary-caption{font-size:13px;color:var(--muted)}.budget-grid{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:24px;margin-bottom:24px}.panel{background:white;border:1px solid var(--line);border-radius:var(--radius);padding:26px;min-width:0;scroll-margin-top:20px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:22px}.section-heading h2{margin-bottom:0}.section-heading p{margin:8px 0 0}.envelope-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.envelope-card{border:1px solid var(--line);border-radius:13px;padding:19px;background:linear-gradient(150deg,#fff,#fafbfe)}.envelope-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px}.envelope-icon{display:grid;place-items:center;border-radius:10px;background:#edf3ff;color:var(--blue);width:36px;height:36px;font-size:21px}.icon-button{background:transparent;border:0;color:var(--muted);font-size:14px;padding:6px}.icon-button:hover{color:var(--blue);background:#edf3ff;border-radius:6px}.envelope-card h3{color:#59677e;font-size:14px;font-weight:600;overflow-wrap:anywhere;margin-bottom:9px}.envelope-money{font-size:25px;font-weight:750;letter-spacing:-.6px;font-variant-numeric:tabular-nums}.envelope-bottom{display:flex;align-items:center;gap:15px;font-size:12px;color:var(--muted);margin-top:20px}.balance-line{height:4px;border-radius:4px;background:#4676f4;flex:1}.overdrawn{background:#d35362}.negative{color:#bd3e51!important}.positive{color:#23735a}.reconcile{background:#fafcff}.reconcile p{font-size:14px}label{display:block;font-size:13px;font-weight:600;color:#52617a;margin-bottom:16px}input,select{display:block;width:100%;margin-top:7px;padding:11px 12px;border:1px solid #d8e0ec;border-radius:8px;background:white;color:var(--ink);font-size:14px;min-height:43px}input:focus,select:focus{border-color:#7298f8}input[type=file]{padding:9px}.help{font-size:12px;line-height:1.6;color:#7a879c}.reconcile-note{font-size:12px;line-height:1.7;border-top:1px solid var(--line);padding-top:18px;margin-top:21px;color:var(--muted)}.import-panel{margin-bottom:24px}.badge{display:inline-block;padding:6px 11px;border-radius:6px;font-size:12px;font-weight:650;background:#edf3ff;color:var(--blue);white-space:nowrap}.import-tools{display:grid;grid-template-columns:1fr 1fr;gap:30px;background:#f7f9fd;border:1px dashed #d6dfed;border-radius:12px;padding:20px}.upload-form{display:flex;align-items:center;gap:15px}.file-label{flex:1;margin:0}.csv-guide{display:flex;flex-direction:column;justify-content:center;gap:6px;font-size:12px;color:var(--muted)}.csv-guide strong{color:var(--ink);font-size:13px}.csv-guide small{font-size:12px}.csv-guide a{font-weight:600}.empty-state{display:flex;align-items:center;justify-content:center;gap:18px;min-height:140px}.empty-state>span{font-size:30px;background:#f0f4fc;color:#7694d3;padding:14px;border-radius:14px}.empty-state h3{margin-bottom:5px}.empty-state p{margin:0;max-width:470px}.compact{justify-content:flex-start;min-height:120px}.lower-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:24px;margin-bottom:24px}.paycheck-card{border:1px solid var(--line);border-radius:12px;padding:20px;margin-bottom:16px}.paycheck-heading{display:flex;justify-content:space-between;gap:10px;margin-bottom:14px}.paycheck-heading h3{margin:0}.paycheck-heading b{color:var(--blue);white-space:nowrap}details{border-top:1px solid var(--line);padding-top:14px}summary{font-size:14px;font-weight:600;cursor:pointer;color:var(--blue)}summary span{float:right;font-size:12px;color:var(--muted);font-weight:400}details form{margin-top:18px}.allocation-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 15px}.receive-form{display:flex;align-items:flex-end;gap:16px;margin-top:18px}.receive-form label{margin:0;flex:1}.receipt-row,.rule-row{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line);gap:12px;font-size:14px}.receipt-row small,.rule-row small{display:block;color:var(--muted);margin-top:5px;font-size:12px}.text-button{border:0;background:transparent;color:var(--blue);font-size:13px;font-weight:600;padding:6px 0;cursor:pointer}.subheading{margin:24px 0 4px}.review-list{margin-top:18px}.review-row{display:flex;align-items:center;gap:12px;padding:18px 0;border-bottom:1px solid var(--line);flex-wrap:wrap}.review-row label{margin:0;flex:1;min-width:150px}.review-row select{margin:0}.review-row [hidden]{display:none}.transaction-description{flex:2;min-width:180px;font-size:14px;overflow-wrap:anywhere}.transaction-description small{display:block;color:var(--muted);margin-top:6px;font-size:12px}.txn-money{font-size:14px;min-width:100px;text-align:right}.table-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{font-size:11px;text-transform:uppercase;letter-spacing:1px;color:var(--muted);font-weight:600;text-align:left;padding:14px 12px;background:#f7f9fd}td{padding:17px 12px;border-bottom:1px solid var(--line);line-height:1.5}td:first-child,th:first-child{padding-left:16px}.right{text-align:right;white-space:nowrap}.muted{color:var(--muted);font-size:12px}.notice{border-radius:10px;padding:15px 18px;margin-bottom:20px;font-size:14px;line-height:1.6}.notice.success{background:#e7f6ef;color:#245a45;border:1px solid #c8e8d8}.notice.error{background:#fff0f1;color:#963445;border:1px solid #f4d1d8}dialog{border:1px solid var(--line);border-radius:18px;box-shadow:0 30px 80px #11234435;padding:28px;width:min(450px,calc(100vw - 32px));color:var(--ink)}dialog::backdrop{background:#14233d66;backdrop-filter:blur(3px)}.dialog-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.dialog-heading h2{margin:0}.dialog-heading button{font-size:24px}footer{font-size:12px;color:#909aac;display:flex;justify-content:center;gap:9px;padding:30px 0 0}.sr-only{position:absolute;clip:rect(0,0,0,0);width:1px;height:1px;overflow:hidden}.auth-shell{padding:36px;min-height:100vh;display:flex;flex-direction:column;justify-content:center}.auth-layout{display:grid;grid-template-columns:1.1fr 1fr;max-width:1100px;width:100%;margin:auto;gap:90px;align-items:center}.auth-intro .brand{margin-bottom:55px}.auth-intro h1{font-size:48px;line-height:1.15;letter-spacing:-2px;margin-bottom:20px}.auth-intro>p{font-size:17px;max-width:360px}.auth-intro .eyebrow{color:var(--blue)}.auth-card{background:white;padding:40px;border:1px solid var(--line);border-radius:22px;box-shadow:0 16px 60px #15366f0b}.auth-card h2{font-size:28px}.auth-card p{margin-bottom:28px}.auth-card label{font-size:14px;margin-bottom:22px}.auth-switch{font-size:14px;text-align:center;color:var(--muted);margin-top:25px}.auth-switch a{font-weight:600}.auth-art{background:white;border:1px solid var(--line);border-radius:16px;padding:23px;max-width:450px;margin-top:30px;box-shadow:0 16px 40px #163b8e0a;transform:rotate(-2deg)}.art-top{display:flex;justify-content:space-between;font-size:10px;letter-spacing:1.2px;color:var(--muted);padding-bottom:12px}.art-row{display:flex;align-items:center;gap:13px;padding:16px 0;border-top:1px solid var(--line);font-size:14px}.art-row small{display:block;color:var(--muted);font-size:12px;margin-top:5px}.art-row b{margin-left:auto;font-variant-numeric:tabular-nums}.art-caption{text-align:right;font-size:10px;color:#97a1b2;padding-top:5px}@media(min-width:1600px){.envelope-card{padding:24px}.envelope-money{font-size:30px}}@media(max-width:1200px){.sidebar{width:210px;padding:26px 16px}.workspace{margin-left:210px;padding:32px 24px}.budget-grid{grid-template-columns:minmax(0,1fr) 280px}.envelope-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-card{padding:20px}.import-tools{grid-template-columns:1fr}.auth-layout{gap:40px}}@media(max-width:950px){.budget-grid{grid-template-columns:1fr}.reconcile form{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.reconcile .help,.reconcile .button{grid-column:1/-1}.reconcile label{margin:0}.lower-grid{grid-template-columns:1fr}.big-money{font-size:26px}.auth-intro h1{font-size:38px}.auth-art{display:none}.auth-layout{gap:25px}.auth-card{padding:28px}}@media(max-width:700px){.sidebar{position:relative;inset:auto;width:100%;padding:16px;border:0;border-bottom:1px solid var(--line)}.sidebar .brand small,.nav-label,.sidebar-bottom{display:none}nav{display:flex;overflow:auto;gap:5px;margin-top:15px}nav a{font-size:12px;white-space:nowrap;padding:9px}nav a span{font-size:17px;width:auto}nav a:nth-last-child(-n+2){display:none}.workspace{margin:0;padding:24px 16px}.page-heading{align-items:flex-start;flex-direction:column;margin-bottom:22px}h1{font-size:30px}.page-heading p{font-size:14px}.summary{gap:10px;grid-template-columns:1fr}.summary-card{padding:18px;display:grid;grid-template-columns:1fr 1fr;align-items:center}.summary-label{grid-column:1/-1}.big-money{margin:12px 0 0;font-size:29px}.summary-caption{text-align:right;font-size:12px;padding-top:10px}.panel{padding:20px}.envelope-grid{gap:10px}.envelope-card{padding:15px}.envelope-money{font-size:24px}.section-heading{gap:10px}.section-heading .button{padding:9px 12px;font-size:12px}h2{font-size:20px}.reconcile form{grid-template-columns:1fr}.upload-form{flex-direction:column;align-items:stretch}.review-row .transaction-description{flex-basis:65%}.review-row .txn-money{min-width:0}.review-row label{flex-basis:100%}.review-row button{width:100%}.receive-form{flex-direction:column;align-items:stretch}.auth-shell{padding:24px 16px}.auth-layout{display:block;max-width:440px}.auth-intro .brand{margin-bottom:24px}.auth-intro h1{font-size:33px}.auth-intro>p{font-size:15px;margin-bottom:25px}.auth-intro .eyebrow{display:none}.auth-card{padding:26px}.auth-card h2{font-size:24px}.allocation-grid{grid-template-columns:1fr}summary span{float:none;display:block;margin:6px 0 0}}
.paycheck-totals{display:flex;gap:20px;color:var(--muted);font-size:12px;margin:0 0 18px}.paycheck-totals b{display:block;color:var(--ink);margin-top:5px;font-size:14px}@media(max-width:700px){.sidebar-bottom{display:flex;margin-top:12px;padding-top:12px}.sidebar-bottom .account{font-size:12px}.sidebar-bottom .avatar{width:28px;height:28px}.sidebar-bottom .account small{display:none}}
.rule-filters{display:flex;align-items:flex-end;gap:16px;padding:18px;background:#f7f9fd;border-radius:12px;margin:20px 0}.rule-filters label{margin:0;flex:1}.mapping-row{display:grid;grid-template-columns:1.4fr 1fr;gap:35px;padding:24px 0;border-bottom:1px solid var(--line)}.mapping-description h3{margin-bottom:8px}.mapping-description p{font-size:13px;margin:8px 0 10px}.mapping-category{font-size:12px;color:var(--muted);line-height:1.6}.mapping-actions{display:flex;gap:10px}.mapping-row label{margin-bottom:12px}.pagination{display:flex;justify-content:space-between;align-items:center;gap:16px;font-size:13px;color:var(--muted);padding-top:24px}.pagination>div{display:flex;gap:10px}@media(max-width:700px){.mapping-row{grid-template-columns:1fr;gap:14px}.rule-filters{display:block}.rule-filters label{margin-bottom:14px}nav a:nth-last-child(2){display:flex}.pagination{flex-wrap:wrap}}
.activity{margin-top:24px}.danger-text{color:#b9364d;margin-left:16px}.danger{background:#ba354d;color:white}.danger:hover{background:#942a3d}

.statement-text{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;max-height:420px;overflow:auto;background:#f7f9fd;padding:18px}.review-confirm{display:flex;align-items:flex-start;gap:12px;margin-top:24px;line-height:1.6}.review-confirm input,#pdf-rows input[type=checkbox]{width:20px;min-height:20px;flex-shrink:0}.statement-date{margin:0;max-width:190px}.statement-date small{font-size:11px;color:var(--muted);font-weight:400}#pdf-rows input[name=row_description]{min-width:250px}#pdf-rows input[name=row_amount]{min-width:120px}#pdf-review>button{margin-top:18px}.upload-form{flex-wrap:wrap}.upload-form .file-label{min-width:180px}

.vendor-toolbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin:25px 0}.vendor-toolbar label{margin:0;width:min(420px,100%)}.vendor-row{display:grid;grid-template-columns:minmax(0,1fr) 280px;gap:30px;padding:24px 0;border-top:1px solid var(--line)}.vendor-row[hidden]{display:none}.vendor-row details{margin-top:12px}.vendor-row>label{align-self:start}.vendor-row h3{margin-bottom:6px}@media(max-width:700px){.vendor-toolbar{align-items:stretch;flex-direction:column}.vendor-row{grid-template-columns:1fr;gap:15px}}

.install-panel{max-width:750px;margin:auto}.install-panel ol{line-height:1.8;padding-left:24px}.install-panel li{margin:14px 0}footer{flex-wrap:wrap;align-items:center}#pwa-install[hidden],#pwa-install-page[hidden]{display:none}

.bank-edit{margin-top:16px;background:#fff;color:#1736a6;border:1px solid #fff}.bank-edit:hover{background:#e9eeff}

.bulk-toolbar{display:flex;align-items:center;gap:20px;flex-wrap:wrap;padding:18px 0}.bulk-toolbar label,.bulk-row-choice{display:flex;align-items:center;gap:12px;margin:0}.bulk-toolbar input[type=checkbox],.bulk-row-choice input[type=checkbox]{width:20px;height:20px;flex-shrink:0}.bulk-toolbar button{margin-left:auto}.bulk-toolbar button:disabled{opacity:.5;cursor:default}

.staging-banner{position:sticky;top:0;z-index:1000;text-align:center;padding:10px;background:#fff0bd;color:#603d00;font-weight:700}

.brand-logo{display:block}.brand-logo img{display:block;width:100%;height:auto;max-width:280px}.sidebar .brand-logo img{max-width:210px}.auth-intro .brand-logo{margin-bottom:28px}@media(max-width:700px){.sidebar .brand-logo img{max-width:190px}}

:root{color-scheme:light}.staging-banner{display:flex;align-items:center;justify-content:center;gap:18px;flex-wrap:wrap}.staging-banner button{background:transparent;border:1px solid currentColor;color:inherit;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:650}
:root[data-theme=dark]{color-scheme:dark;--ink:#e7edf7;--muted:#a9b6cd;--blue:#91b0ff;--line:#334159;--bg:#0d1422}
[data-theme=dark] .sidebar,[data-theme=dark] .panel,[data-theme=dark] .summary-card,[data-theme=dark] .auth-card,[data-theme=dark] .auth-art,[data-theme=dark] dialog{background:#182234}
[data-theme=dark] .envelope-card{background:linear-gradient(150deg,#1b293e,#172235)}
[data-theme=dark] .reconcile,[data-theme=dark] .import-tools,[data-theme=dark] th{background:#121d2e}
[data-theme=dark] .import-tools{border-color:var(--line)}
[data-theme=dark] nav a,[data-theme=dark] label,[data-theme=dark] .envelope-card h3{color:#bbc7db}
[data-theme=dark] nav a.active,[data-theme=dark] nav a:hover,[data-theme=dark] .subtle,[data-theme=dark] .badge,[data-theme=dark] .avatar,[data-theme=dark] .envelope-icon,[data-theme=dark] .icon-button:hover,[data-theme=dark] .empty-state>span{background:#243957;color:#a7c1ff;border-color:#3b5276}
[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{background:#0f1a2b;border-color:#42516a;color:var(--ink)}
[data-theme=dark] input::placeholder{color:#94a3ba}
[data-theme=dark] .primary{background:#3565ec;color:#fff}[data-theme=dark] .primary:hover{background:#4877ff}
[data-theme=dark] .negative{color:#ff9ba9!important}[data-theme=dark] .positive{color:#6ee0b4}
[data-theme=dark] .help,[data-theme=dark] .nav-label,[data-theme=dark] footer{color:#a3b1c8}
[data-theme=dark] .notice.success{background:#173d32;color:#a6ecd0;border-color:#316c57}[data-theme=dark] .notice.error{background:#472634;color:#ffbdc8;border-color:#784354}
[data-theme=dark] .staging-banner{background:#3c321d;color:#f7d990}
[data-theme=dark] .brand-logo img{border-radius:10px;background:#fff}
[data-theme=dark] dialog::backdrop{background:#0009}
@media(max-width:700px){.staging-banner{gap:8px;padding:8px;font-size:11px}.staging-banner button{padding:5px 9px}}
