:root{--ink:#243f3c;--muted:#647572;--paper:#f7f6f1;--line:#d8ded7;--green:#225c4a;--pale:#e5ede4;--accent:#a37c43;--red:#963b2e}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 'Segoe UI',sans-serif}header{padding:24px 5%;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;background:#fffefa}.brand{font:30px Georgia,serif;color:var(--ink);text-decoration:none}.brand span{display:block;font:9px 'Segoe UI',sans-serif;letter-spacing:2.2px;margin-top:2px}.private{font-size:12px;color:var(--muted)}.private::before{content:'●';color:var(--green);margin-right:8px}main{max-width:1240px;margin:auto;padding:40px 28px}h1,h2,h3,p{margin-top:0}h1{font:42px/1.13 Georgia,serif;margin-bottom:14px;max-width:600px}h2{font:27px Georgia,serif;margin-bottom:12px}h3{font-size:16px;font-weight:600;margin-bottom:5px}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:650;color:var(--green);margin-bottom:12px}.intro,.hint{color:var(--muted)}.hint{font-size:12px}.page-head{display:flex;justify-content:space-between;gap:30px;align-items:flex-end;margin-bottom:28px}.month-label{width:180px}label{display:block;font-size:12px;font-weight:600}input,select,button{font:inherit;color:inherit}input,select{display:block;width:100%;min-height:43px;padding:10px 12px;background:white;border:1px solid #bfcac3;border-radius:6px;margin-top:6px}input:focus,select:focus,button:focus-visible,summary:focus-visible{outline:3px solid #b3cfc0;outline-offset:2px}button{cursor:pointer;background:transparent;border:1px solid #bac8bf;border-radius:6px;min-height:42px;padding:10px 16px;font-size:12px;font-weight:600}button:hover{background:#e9eee7}button:disabled{opacity:.5;cursor:default}.primary{background:var(--green);color:#fff;border-color:var(--green)}.primary:hover{background:#184737}nav{display:flex;gap:24px;border-bottom:1px solid var(--line)}nav button{border:0;border-bottom:3px solid transparent;border-radius:0;padding:15px 0;font-size:14px}nav button[aria-selected=true]{border-color:var(--green)}#status{font-size:13px;min-height:20px;margin:15px 0}.error{color:var(--red)!important}.headline{display:grid;grid-template-columns:repeat(3,1fr);background:#fffefa;border:1px solid var(--line);border-radius:10px;margin-bottom:16px}.headline>div{padding:24px;border-right:1px solid var(--line)}.headline>div:last-child{border:0;background:var(--pale);border-radius:0 10px 10px 0}.headline span{display:block;font-size:12px;color:var(--muted)}.headline strong{display:block;font:32px Georgia,serif;margin-top:8px;font-variant-numeric:tabular-nums}.basics{margin-bottom:38px;border-bottom:1px solid var(--line);padding:10px 0 18px}summary{cursor:pointer;font-size:13px;font-weight:600}summary span{font-weight:400;color:var(--muted);margin-left:12px}.basics .hint{margin-top:14px}.two-columns{display:grid;grid-template-columns:1fr 1fr;gap:22px}.basic-row{display:flex;gap:20px;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line);padding:10px 0}.basic-row label{max-width:70%}.basic-row small{display:block;font-size:10px;font-weight:400;color:var(--muted);margin-top:3px}.basic-row input{width:115px}.basics button{margin-top:16px}.workspace{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:38px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:12px}.section-head .eyebrow{margin-bottom:7px}.section-head h2{margin-bottom:4px}.annual-head{margin-top:34px}.budget-row{display:grid;grid-template-columns:minmax(0,1fr) 135px;gap:20px;padding:17px 0;border-bottom:1px solid var(--line);align-items:center}.budget-row label{font-size:15px;font-weight:500}.budget-row small{display:block;font-size:11px;color:var(--muted);margin-top:3px}.budget-row input{text-align:right;font-size:17px;font-variant-numeric:tabular-nums;margin:0}.budget-rows+.hint{margin-top:20px}.actions{display:flex;gap:10px;margin-top:23px}aside{min-width:0}.summary-panel{background:var(--pale);border-radius:10px;padding:27px;position:sticky;top:20px;border-top:3px solid var(--green)}.summary-panel h2{font-size:24px}.summary-line{display:flex;justify-content:space-between;gap:12px;font-size:12px;padding:11px 0;border-bottom:1px solid #c5d3c6}.summary-line b{white-space:nowrap;font-variant-numeric:tabular-nums}.result{padding-top:25px}.result>span{font-size:12px}.result strong{display:block;font:40px Georgia,serif;letter-spacing:-1px;margin:8px 0 14px}.result p,.source-note{font-size:12px;color:var(--muted)}.source-note{border-top:1px solid #c5d3c6;padding-top:16px;margin-bottom:0}.add-pot{margin-top:22px}.add-pot form{margin-top:14px}.add-pot label{margin-bottom:12px}.pot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.pot-card{padding:22px;border:1px solid var(--line);border-radius:9px;background:#fffefa}.pot-card .type{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.pot-card h3{margin-top:7px;min-height:48px}.pot-card strong{display:block;font:31px Georgia,serif;margin:10px 0 4px}.pot-card p{font-size:12px;color:var(--muted);margin:0}.pot-card button{margin-top:18px;width:100%}.funding{margin:28px 0;display:flex;justify-content:space-between;align-items:center;gap:20px;background:var(--pale);border-radius:9px;padding:24px}.funding p{margin-bottom:4px}#openingDetails{margin-bottom:35px}#openingDetails>.hint{margin-top:15px}.opening-row{display:flex;align-items:center;gap:14px;padding:8px 0}.opening-row label{flex:1}.opening-row input{width:130px}.spend-row{display:flex;align-items:center;gap:20px;padding:15px 0;border-bottom:1px solid var(--line)}.spend-row>div{flex:1}.spend-row small{display:block;color:var(--muted);font-size:11px}.spend-row strong{font-variant-numeric:tabular-nums}.spend-row button{font-size:11px;padding:6px 10px}.voided{opacity:.55}.empty{padding:28px;border:1px dashed var(--line);color:var(--muted);border-radius:8px;font-size:13px}dialog{width:min(540px,95vw);border:1px solid var(--line);border-radius:12px;padding:28px;background:var(--paper);color:var(--ink)}dialog::backdrop{background:#173f3a77}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:12px}.dialog-head button{font-size:24px;border:0}dialog label{margin:15px 0}dialog .primary{width:100%}#spendError{font-size:12px;color:var(--red)}footer{font-size:11px;color:var(--muted);border-top:1px solid var(--line);margin-top:50px;padding-top:20px}[hidden]{display:none!important}@media(max-width:900px){.workspace{grid-template-columns:1fr;gap:28px}.summary-panel{position:static}.workspace aside{grid-row:1}.summary-panel h2{display:none}.result strong{font-size:34px}.pot-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){header{padding:18px}.brand{font-size:25px}.private{font-size:10px}main{padding:26px 18px}.page-head{display:block}h1{font-size:34px}.month-label{margin-top:22px;width:100%}.headline{grid-template-columns:1fr}.headline>div{padding:16px 20px;border-right:0;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.headline strong{font-size:25px;margin:0}.headline>div:last-child{border-radius:0 0 10px 10px}.headline span{font-size:11px}.basics summary span{display:block;margin:5px 0 0 16px}.two-columns{grid-template-columns:1fr;gap:0}.section-head{align-items:flex-start;flex-wrap:wrap}.budget-row{grid-template-columns:minmax(0,1fr) 110px;gap:10px}.budget-row label{font-size:13px}.pot-grid{grid-template-columns:1fr}.pot-card h3{min-height:0}.funding{display:block;padding:20px}.funding button{margin-top:16px;width:100%}.opening-row{flex-wrap:wrap}.opening-row label{min-width:100%}.spend-row{gap:8px;flex-wrap:wrap}.spend-row>div{min-width:55%}.actions{flex-wrap:wrap}.summary-panel{padding:22px}}

.headline>.fixed-total{padding:24px;text-align:left;border:0;border-right:1px solid var(--line);border-radius:0;font-weight:400}.fixed-total small{float:right;font-size:10px;color:var(--green);margin-left:10px}.fixed-list{list-style:none;margin:18px 0;padding:0}.fixed-list li{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:12px 0;border-bottom:1px solid var(--line);font-size:13px}.fixed-list li>div{min-width:0;overflow-wrap:anywhere}.fixed-list small{display:block;font-size:11px;color:var(--muted);margin-top:3px}.fixed-list strong{white-space:nowrap;font-variant-numeric:tabular-nums}.fixed-footer{display:flex;justify-content:space-between;gap:20px;padding:18px 0 0;font-size:15px}#fixedDialog{max-height:85vh;overflow:auto}#fixedDialog .dialog-head{position:sticky;top:-28px;background:var(--paper);padding:12px 0}#fixedDialog .dialog-head h2{margin:0}@media(max-width:600px){.headline>.fixed-total{padding:16px 20px;border-right:0;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:12px}.fixed-total small{display:block;float:none;margin:3px 0 0}}

.events-section{margin-top:34px;padding-top:24px;border-top:1px solid var(--line)}.event-row{display:flex;align-items:center;gap:12px;padding:18px 0;border-bottom:1px solid var(--line)}.event-row>div{flex:1;min-width:0}.event-row p{font-size:12px;color:var(--muted);margin:5px 0}.event-row button{font-size:11px;padding:8px 10px}#eventError{color:var(--red);font-size:12px}@media(max-width:600px){.event-row{flex-wrap:wrap}.event-row>div{min-width:100%}}

/* Keep the summary from covering the add-budget form while scrolling. */
.summary-panel{position:static}


#incomeDialog{max-height:85vh;overflow:auto}.headline>#showIncome{border-radius:10px 0 0 10px}@media(max-width:600px){.headline>#showIncome{border-radius:10px 10px 0 0}}

.money-heading{display:grid;grid-template-columns:1.2fr 1fr;gap:36px;padding:18px 0 28px}.balance-number{font-size:42px;margin-bottom:12px}.balance-number span{display:block;font:16px 'Segoe UI',sans-serif;margin-top:6px;color:var(--ink)}.money-message{border-left:3px solid var(--green);padding:14px 22px;align-self:center}.money-message p{font-size:14px;margin:8px 0 0}.attention{padding:22px 26px;border:1px solid #dcc9a3;background:#faf4e7;border-radius:8px;margin-bottom:30px}.attention ul{padding-left:20px;margin:12px 0 20px}.attention li{margin:7px 0;font-size:14px}.forecast{border-top:1px solid var(--line);padding:24px 0;margin-bottom:24px}.provisional{font-size:11px;color:#785726}.forecast-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;padding:20px 0}.forecast-grid>div{border-left:2px solid var(--line);padding-left:18px}.forecast-grid span,.forecast-grid small{display:block;font-size:12px;color:var(--muted)}.forecast-grid strong{display:block;font:32px Georgia,serif;margin:9px 0}.forecast-low{padding:12px 16px;background:var(--pale);border-radius:6px;font-size:14px}.table-scroll{overflow-x:auto}.budget-progress{width:100%;border-collapse:collapse;font-size:14px}.budget-progress td,.budget-progress th{padding:13px 10px;border-bottom:1px solid var(--line);text-align:right;font-variant-numeric:tabular-nums}.budget-progress th:first-child{text-align:left;font-weight:500}.budget-progress thead{font-size:12px;color:var(--muted)}.position-details{border-top:1px solid var(--line);padding:18px 0}.position-details>summary{margin-bottom:12px}.three-columns{display:grid;grid-template-columns:1fr 1fr 1fr;gap:20px}.reconcile-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:18px}.reconcile-grid p{font-size:12px}.reconcile-grid strong{display:block;font-size:19px;margin-top:6px}.bank-row{display:flex;gap:18px;align-items:center;text-align:left;width:100%;border:0;border-bottom:1px solid var(--line);border-radius:0;padding:16px 8px}.bank-row>span:first-child{flex:1;min-width:0}.bank-row b{display:block;font-size:13px;font-weight:500;overflow-wrap:anywhere}.bank-row small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.bank-row strong{white-space:nowrap;font-variant-numeric:tabular-nums;font-size:14px}.bank-edit{font-size:11px;color:var(--green)}#bankTransactions{margin:16px 0 35px}.pots-details{margin:25px 0}.pots-details>summary{margin-bottom:20px}.date-settings{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:18px 0}#bankDescription{overflow-wrap:anywhere;font-size:14px}#bankError{font-size:12px}#positionForm{margin:18px 0}nav{gap:22px}.page-head{margin-bottom:20px}h1{font-size:38px}.intro{margin-bottom:0}
@media(max-width:650px){.money-heading,.forecast-grid,.three-columns,.date-settings{grid-template-columns:1fr;gap:16px}.money-heading{padding-top:4px}.money-message{padding:10px 16px}.balance-number{font-size:36px}.attention{padding:18px}.attention button{margin-top:8px}.forecast-grid{padding-top:8px}.forecast-grid>div{padding:8px 14px}.forecast-grid strong{font-size:28px}.reconcile-grid{grid-template-columns:1fr 1fr}.bank-row{gap:8px}.bank-edit{display:none}.budget-progress{font-size:12px}.budget-progress td,.budget-progress th{padding:12px 6px}.budget-progress th:first-child{min-width:135px}nav{gap:16px}nav button{font-size:12px}.section-head h2{font-size:24px}}
/* The bank update owns its progress; no duplicate toast or automatic sign-in. */
.bank-update{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px 0 24px;border-bottom:1px solid var(--line,#d8dfdb);margin-bottom:24px}
.bank-update p{margin:8px 0 0;max-width:520px}.bank-update>p{font-size:14px;line-height:1.5}
.pending-list{list-style:none;padding:0}.pending-list li{display:flex;justify-content:space-between;gap:20px;padding:10px 0;border-bottom:1px solid #e3e7e3}.pending-list small{display:block}
@media(max-width:650px){.bank-update{align-items:stretch;flex-direction:column;gap:4px}.bank-update button{width:100%}.pending-list li{gap:10px}}

#bankDialog{max-height:90vh;overflow:auto}#bankDescription{font-weight:600;margin:20px 0 4px}#bankPaymentAmount{color:var(--muted);font-size:13px;margin-bottom:24px}.bank-match{border-top:1px solid var(--line);padding-top:16px;margin-top:24px}.bank-match .hint{margin:12px 0}.bank-dialog-footer{display:flex;gap:12px;align-items:center;border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.bank-dialog-footer #bankError{flex:1;margin:0;color:var(--green)}.bank-dialog-footer .primary{width:auto;min-width:90px}@media(max-width:400px){.bank-dialog-footer{flex-wrap:wrap}.bank-dialog-footer #bankError{flex-basis:100%}}

#bankBillToggle{border:0;padding:6px 0;min-height:36px;color:var(--green);text-decoration:underline;text-underline-offset:3px;font-weight:400}#bankBillToggle:hover{background:transparent;text-decoration-thickness:2px}

#fixedDialog .fixed-list li{gap:12px}#fixedDialog .fixed-list li>div{flex:1}#fixedDialog .bill-remove{min-width:42px;padding:6px 10px;font-size:16px}#fixedStatus{font-size:13px;color:var(--green);margin-top:18px}#stoppedBills{margin-top:20px}#stoppedBillList{color:var(--muted)}

.access-page{max-width:490px;padding-top:55px}.access-page .brand{display:block;margin-bottom:38px}.access-page h1{font-size:32px}.access-page label{margin:20px 0 10px}.access-page button.primary{width:100%;margin-top:15px}.access-page #accessMessage{margin-top:20px}.access-controls{display:flex;gap:16px;align-items:center}.access-controls a{font-size:12px;color:var(--green)}#sharedStatus:empty{display:none}#phoneLinkBlock{border-top:1px solid var(--line);margin-top:25px;padding-top:10px}@media(max-width:600px){.access-controls{flex-direction:column;gap:5px;align-items:flex-end}.access-page{padding:28px 20px}.access-page h1{font-size:30px}}

.passkey-row{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.7rem 0;border-bottom:1px solid #dce3dd}.passkey-row span{overflow-wrap:anywhere;min-width:0}#passkeyLogin{width:100%;margin:0 0 1rem}#passkeyForm{display:grid;gap:1rem}

.pending-card{padding:1rem 0;border-bottom:1px solid #dce3dd}.pending-card small{display:block;margin-top:.3rem}.pending-card .actions{flex-wrap:wrap}.pending-card select{max-width:100%}.pending-list li{flex-wrap:wrap;gap:.6rem}.pending-list button{margin-left:auto}
