:root{--bg:#f4f5f7;--surface:#fff;--border:#e2e4e9;--text:#1f2430;--text-dim:#6b7280;--blue:#2e5db3;--blue-dark:#244a8f;--green-bg:#d5efdb;--green-fg:#14622c;--grey-bg:#e9eaee;--grey-fg:#5b6270;--yellow-bg:#fdeec8;--yellow-fg:#7a5a0f;--red-bg:#fadcdc;--red-fg:#9c1f1f;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font:15px/1.45 system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}body{margin:0}button{font:inherit;cursor:pointer}input,select{font:inherit}.app{background:var(--bg);flex-direction:column;max-width:960px;min-height:100svh;margin:0 auto;display:flex}.tabs{background:var(--surface);border-bottom:1px solid var(--border);z-index:10;gap:2px;padding:0 12px;display:flex;position:sticky;top:0}.tabs button{color:var(--text-dim);background:0 0;border:none;border-bottom:3px solid #0000;padding:14px 14px 11px;font-weight:500}.tabs button.active{color:var(--blue);border-bottom-color:var(--blue)}.tab-body{flex:1;padding:16px 12px 48px}.placeholder{color:var(--text-dim);text-align:center;padding:64px 0}.signin{place-items:center;min-height:100svh;display:grid}.signin form{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:10px;width:320px;padding:28px;display:flex}.signin h1{margin:0 0 6px;font-size:20px}.signin input{border:1px solid var(--border);border-radius:6px;padding:9px 10px}.signin button{background:var(--blue);color:#fff;border:none;border-radius:6px;margin-top:6px;padding:10px;font-weight:600}.signin .error{color:var(--red-fg);font-size:13px}.plan-header{justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.month-nav{align-items:center;gap:8px;display:flex}.month-nav button{border:1px solid var(--border);background:var(--surface);border-radius:6px;width:32px;height:32px}.month-nav h2{text-align:center;min-width:150px;margin:0;font-size:18px}.rta{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:10px;padding:8px 12px;display:flex}.rta .label{color:var(--text-dim);font-size:12px}.rta .value{font-size:18px;font-weight:700}.rta .value.positive{color:var(--green-fg)}.rta .value.negative{color:var(--red-fg)}.rta .assign-btn{background:var(--blue);color:#fff;border:none;border-radius:6px;padding:7px 14px;font-weight:600}.assign-popover{background:var(--surface);border:1px solid var(--border);border-radius:10px;align-items:center;gap:8px;margin-bottom:14px;padding:10px 12px;display:flex}.assign-popover select,.assign-popover input{border:1px solid var(--border);border-radius:6px;padding:7px 8px}.assign-popover input{width:110px}.assign-popover .confirm{background:var(--blue);color:#fff;border:none;border-radius:6px;padding:8px 14px;font-weight:600}.budget-grid{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.grid-cols{grid-template-columns:minmax(0,1fr) 110px 110px 120px;align-items:center;gap:8px;padding:8px 14px;display:grid}.grid-head{text-transform:uppercase;letter-spacing:.5px;color:var(--text-dim);border-bottom:1px solid var(--border);font-size:11px}.grid-head span:not(:first-child),.group-row .num,.cat-row .num{text-align:right}.group-row{border-top:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;background:#eef0f4;font-weight:600}.group-row .chevron{width:18px;color:var(--text-dim);transition:transform .12s;display:inline-block}.group-row.collapsed .chevron{transform:rotate(-90deg)}.cat-row{border-top:1px solid var(--border)}.cat-row .name{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.cat-row .underfunded-note{color:var(--yellow-fg);font-size:11px}.assigned-btn{text-align:right;background:0 0;border:none;border-radius:5px;width:100%;padding:4px 6px}.assigned-btn:hover{background:var(--grey-bg)}.assigned-input{text-align:right;border:1px solid var(--blue);border-radius:5px;width:100%;padding:3px 5px}.pill{text-align:right;border-radius:999px;min-width:84px;padding:3px 10px;font-size:13px;font-weight:600;display:inline-block}.pill.green{background:var(--green-bg);color:var(--green-fg)}.pill.grey{background:var(--grey-bg);color:var(--grey-fg)}.pill.yellow{background:var(--yellow-bg);color:var(--yellow-fg)}.pill.red{background:var(--red-bg);color:var(--red-fg)}.status-line{color:var(--text-dim);text-align:center;padding:32px 0}.mini-btn{color:var(--text-dim);opacity:.55;background:0 0;border:none;border-radius:4px;padding:0 6px;font-size:13px}.mini-btn:hover{opacity:1;background:var(--grey-bg);color:var(--text)}.plan-footer{margin-top:12px}.add-group-btn{border:1px dashed var(--border);color:var(--text-dim);background:0 0;border-radius:8px;padding:9px 14px}.inline-name-form{border-top:1px solid var(--border);background:var(--surface);gap:8px;padding:8px 14px;display:flex}.inline-name-form input{border:1px solid var(--border);border-radius:6px;flex:1;padding:6px 8px}.inline-name-form button{background:var(--blue);color:#fff;border:none;border-radius:6px;padding:6px 14px}.cat-editor{border-top:1px solid var(--border);background:#f6f8fc;align-items:center;gap:8px;padding:8px 14px;display:flex}.cat-editor input{border:1px solid var(--border);border-radius:6px;padding:6px 8px}.cat-editor input:first-child{flex:1}.cat-editor button{background:var(--blue);color:#fff;border:none;border-radius:6px;padding:6px 12px}.cat-editor button.secondary{background:var(--grey-bg);color:var(--text)}.cat-editor button.danger{background:var(--red-bg);color:var(--red-fg)}.filter-row{gap:8px;margin-bottom:12px;display:flex}.filter-row button{border:1px solid var(--border);background:var(--surface);color:var(--text-dim);border-radius:999px;padding:6px 14px}.filter-row button.active{background:var(--blue);border-color:var(--blue);color:#fff}.register{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.date-header{color:var(--text-dim);border-top:1px solid var(--border);background:#eef0f4;padding:6px 14px;font-size:12px;font-weight:600}.register>div:first-child .date-header{border-top:none}.register-line{border-top:1px solid var(--border);grid-template-columns:minmax(0,1fr) 200px 110px;align-items:center;gap:10px;padding:9px 14px;display:grid}.register-line.needs-category{background:#fffdf2}.line-title{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.line-sub{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.line-category{color:var(--text-dim);font-size:13px}.line-category select{border:1px solid var(--yellow-fg);background:var(--surface);border-radius:6px;width:100%;padding:5px 6px}.line-amount{text-align:right;font-weight:600}.line-amount.inflow{color:var(--green-fg)}.load-more{border:none;border-top:1px solid var(--border);background:var(--surface);width:100%;color:var(--blue);padding:10px;font-weight:600;display:block}.accounts-list{flex-direction:column;gap:14px;display:flex}.account-group{background:var(--surface);border:1px solid var(--border);border-radius:10px;overflow:hidden}.account-group-header{background:#eef0f4;justify-content:space-between;padding:9px 14px;font-size:13px;font-weight:600;display:flex}.account-group-header.clickable{cursor:pointer;-webkit-user-select:none;user-select:none}.account-row{border:none;border-top:1px solid var(--border);background:var(--surface);text-align:left;justify-content:space-between;width:100%;padding:11px 14px;display:flex}.account-row:hover{background:#f6f8fc}.account-row.closed{color:var(--text-dim)}.account-row .negative{color:var(--red-fg)}.account-detail-header{align-items:center;gap:12px;margin-bottom:12px;display:flex}.account-detail-header h2{flex:1;margin:0;font-size:18px}.account-balance{font-weight:700}.back-btn{border:1px solid var(--border);background:var(--surface);color:var(--blue);border-radius:6px;padding:6px 10px}.fab{background:var(--blue);color:#fff;z-index:20;border:none;border-radius:50%;width:52px;height:52px;font-size:26px;line-height:1;position:fixed;bottom:24px;right:max(24px,50vw - 456px);box-shadow:0 4px 14px #00000040}.fab:hover{background:var(--blue-dark)}.modal-backdrop{z-index:30;background:#0f141e73;place-items:center;display:grid;position:fixed;inset:0}.modal{background:var(--surface);border-radius:12px;flex-direction:column;gap:10px;width:min(420px,100vw - 32px);max-height:calc(100svh - 48px);padding:22px;display:flex;overflow-y:auto}.modal h2{margin:0 0 4px;font-size:18px}.modal label{color:var(--text-dim);flex-direction:column;gap:4px;font-size:13px;display:flex}.modal input,.modal select{border:1px solid var(--border);color:var(--text);border-radius:6px;padding:8px 9px}.modal .field-row{grid-template-columns:1fr 1fr;gap:10px;display:grid}.direction-toggle{grid-template-columns:1fr 1fr;gap:6px;display:grid}.direction-toggle button{border:1px solid var(--border);background:var(--surface);color:var(--text-dim);border-radius:6px;padding:8px;font-weight:600}.direction-toggle button.active.outflow{background:var(--red-bg);border-color:var(--red-fg);color:var(--red-fg)}.direction-toggle button.active.inflow{background:var(--green-bg);border-color:var(--green-fg);color:var(--green-fg)}.modal .error{color:var(--red-fg);font-size:13px}.modal-actions{justify-content:flex-end;gap:8px;margin-top:6px;display:flex}.modal-actions button{background:var(--blue);color:#fff;border:none;border-radius:6px;padding:9px 16px;font-weight:600}.modal-actions button.secondary{background:var(--grey-bg);color:var(--text)}.accounts-toolbar{justify-content:flex-end;margin-bottom:10px;display:flex}.bank-picker{position:relative}.link-bank-btn{background:var(--blue);color:#fff;border:none;border-radius:6px;padding:8px 14px;font-weight:600}.bank-picker-menu{background:var(--surface);border:1px solid var(--border);z-index:20;border-radius:8px;flex-direction:column;min-width:200px;display:flex;position:absolute;top:calc(100% + 6px);right:0;overflow:hidden;box-shadow:0 6px 20px #0000001f}.bank-picker-menu button{text-align:left;background:0 0;border:none;padding:10px 14px;font-size:14px}.bank-picker-menu button:hover{background:var(--bg)}.reconnect-badge{background:var(--yellow-bg);color:var(--yellow-fg);border-radius:10px;margin-left:8px;padding:2px 8px;font-size:11px;font-weight:600}.reconnect-badge.expired{background:var(--red-bg);color:var(--red-fg)}.connect-callback{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:14px;max-width:560px;margin:40px auto;padding:24px;display:flex}.connect-callback .error{color:var(--red-fg)}.connect-callback button{background:var(--blue);color:#fff;border:none;border-radius:6px;align-self:flex-start;padding:9px 16px;font-weight:600}.link-row{border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex}.link-row-bank{justify-content:space-between;align-items:baseline;gap:10px;display:flex}.link-row-bank .iban{color:var(--text-dim);font-size:12px}.link-row select,.link-row input{border:1px solid var(--border);border-radius:6px;padding:8px;font-size:14px}.link-row-new{gap:8px;display:flex}.link-row-new input{flex:1}.link-error{background:var(--red-bg);color:var(--red-fg);border-radius:8px;margin-bottom:10px;padding:10px 12px;font-size:13px}
