:root{--text:#233832;--canvas:#f5f7f4;--surface:#fff;--subsurface:#fafbf8;--brand:#203a31;--strong:#354b40;--green:#176a50;--on-primary:#fff;--primary-hover:#115640;--line:#dfe6df;--muted:#68786f;--form-text:#345244;--control-line:#d2ded4;--active:#e9f3ed;--hover:#f0f5ef;--soft-green:#42664d;--accent-bg:#e8f0e5;--accent-line:#d6e2d2;--warning-badge:#fff1d8;--warning-bg:#fffaf0;--warning-text:#74603b;--warning-line:#e7d8b3;--danger-bg:#fff4f2;--danger-text:#953e3a;--danger-line:#ecc9c5;--success-bg:#eaf5ec;--success-line:#c8e2ce;--success-text:#2c6b3b;--negative:#b54b3e;--focus:#86c9b5;--footer-text:#849086;--emphasis-line:#aac7b4;--status-good:#389b6b;--status-waiting:#cba75c;--shadow:#23383208}
:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--canvas);font-size:15px;line-height:1.5;font-synthesis:none}*{box-sizing:border-box}body{margin:0}a{color:var(--green)}button,input,select{font:inherit}button,a.button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--focus);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1{font-size:clamp(1.9rem,3.2vw,2.7rem);letter-spacing:-.055em;line-height:1.12;margin-bottom:12px;font-weight:650}h2{font-size:1.25rem;letter-spacing:-.025em;margin-bottom:12px}p{margin-bottom:12px}.shell{display:grid;grid-template-columns:235px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:32px 24px;display:flex;flex-direction:column;gap:24px;position:sticky;top:0;height:100vh}.brand{color:var(--brand);font-weight:750;letter-spacing:-.04em;font-size:1.5rem;display:flex;align-items:center;gap:10px;text-decoration:none}.brand-icon{display:grid;place-items:center;background:var(--green);border-radius:9px;width:35px;height:35px;color:var(--on-primary);font-size:26px}.side-label,.eyebrow{font-size:.7rem;font-weight:700;letter-spacing:.12em;color:var(--muted);margin-bottom:10px}.side-label{margin-top:22px;margin-bottom:-12px}nav{display:flex;flex-direction:column;gap:7px}nav a{color:var(--muted);text-decoration:none;padding:11px 12px;border-radius:8px;font-weight:550}nav a.active{background:var(--active);color:var(--green)}nav a:hover{background:var(--hover)}.side-note{margin-top:auto;border-top:1px solid var(--line);padding-top:20px;font-size:.8rem;color:var(--muted)}.side-note strong{color:var(--strong)}.side-note p{margin:7px 0 14px}.link-button{background:none;border:0;padding:0;color:var(--muted)}main{width:100%;max-width:1320px;padding:44px 48px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:25px}.page-header p:last-child{margin:0}.muted,small{color:var(--muted)}small{font-size:.78rem;display:block}.secondary,.primary{padding:10px 16px;border:1px solid var(--control-line);border-radius:8px;text-decoration:none;display:inline-block;white-space:nowrap;background:var(--surface);color:var(--form-text);font-weight:600}.primary{background:var(--green);border-color:var(--green);color:var(--on-primary)}.primary:hover{background:var(--primary-hover)}.secondary:hover{background:var(--hover)}.connection{display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-size:.8rem;color:var(--muted);padding-bottom:22px;border-bottom:1px solid var(--line);margin-bottom:28px}.connection strong{color:var(--strong)}.connection span:nth-child(3){margin-left:auto}.status-dot{width:7px;height:7px;background:var(--status-waiting);border-radius:50%}.status-dot.good{background:var(--status-good)}.badge{display:inline-block;padding:4px 9px;border-radius:5px;background:var(--active);color:var(--soft-green);font-size:.7rem;font-weight:650}.badge.warning{background:var(--warning-badge);color:var(--warning-text)}.alert{border:1px solid var(--warning-line);background:var(--warning-bg);border-radius:10px;padding:16px 20px;margin:20px 0;color:var(--warning-text);font-size:.9rem}.alert p{margin:6px 0 0}.alert ul{padding-left:20px;margin:8px 0 12px}.alert.danger{color:var(--danger-text);border-color:var(--danger-line);background:var(--danger-bg)}.alert.success{background:var(--success-bg);border-color:var(--success-line);color:var(--success-text)}.payday-select{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:25px}.payday-select h2{font-size:1.6rem;margin-bottom:8px}.payday-select label{font-size:.75rem;color:var(--muted)}.inline{display:flex;gap:8px}.stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:22px 0}.stat{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px}.stat>span{color:var(--muted);font-size:.8rem}.stat strong{font-size:clamp(1.3rem,2.2vw,2rem);display:block;letter-spacing:-.035em;margin:10px 0 8px}.stat.accent{background:var(--accent-bg);border-color:var(--accent-line)}.panel{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:24px 0;padding:26px}.section-heading{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:18px}.section-heading h2{margin:0}.section-heading .eyebrow{margin-bottom:6px}.subtle{text-decoration:none;font-size:.8rem;color:var(--muted)}details.transfer{border-top:1px solid var(--line)}details.transfer:last-of-type{border-bottom:1px solid var(--line)}.transfer>summary{display:flex;gap:16px;align-items:center;list-style:none;cursor:pointer;padding:20px 2px}.transfer summary::-webkit-details-marker{display:none}.account-icon{width:42px;height:42px;border:1px solid var(--control-line);background:var(--subsurface);border-radius:10px;display:grid;place-items:center;font-size:1rem;font-weight:650;color:var(--soft-green)}.transfer summary small{margin-top:3px}.transfer summary .amount{margin-left:auto;font-size:1.2rem;white-space:nowrap}.chevron{color:var(--muted)}.breakdown{padding:0 0 18px 60px}.plan-footer{display:flex;justify-content:space-between;gap:25px;margin-top:26px;align-items:center}.plan-footer p{font-size:.8rem;margin:4px 0 0}.plan-footer form{display:flex;flex-direction:column;gap:8px;max-width:300px}.confirm{font-size:.8rem;color:var(--muted);display:flex;align-items:flex-start;gap:8px}.confirm input{margin-top:4px}.explanation{font-size:.9rem;color:var(--muted);padding:20px 26px}.explanation>summary{font-weight:650;cursor:pointer;color:var(--soft-green)}.explanation[open]>summary{margin-bottom:15px}table{border-collapse:collapse;width:100%;font-size:.84rem}th{color:var(--muted);font-size:.73rem;font-weight:550;text-align:left}th,td{border-bottom:1px solid var(--line);padding:12px 8px}td:last-child,th:last-child{text-align:right}td:first-child,th:first-child{padding-left:0}td:last-child{white-space:nowrap}tr:last-child td{border-bottom:0}.fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:18px;margin:18px 0}.fields label{font-size:.8rem;font-weight:600;color:var(--form-text)}input:not([type=checkbox]),select{display:block;width:100%;padding:9px 11px;border:1px solid var(--control-line);border-radius:7px;color:var(--form-text);background:var(--surface);min-width:0}.fields input,.fields select{margin-top:6px}.settings-table input{min-width:95px;max-width:145px}.settings-table select{min-width:145px}.settings-table td:last-child{text-align:left}.settings-table small{margin-top:4px}.save-bar{display:flex;align-items:center;justify-content:space-between;gap:20px}.save-bar p{color:var(--muted);font-size:.85rem;margin:0}.scroll{overflow:auto;max-height:600px}.forecast-stats .stat{background:var(--subsurface);padding:16px}.forecast-stats .stat strong{font-size:1.5rem}.forecast-detail>summary{cursor:pointer;color:var(--green);font-size:.85rem}.forecast-detail[open]>summary{margin-bottom:14px}.negative{color:var(--negative)}.history-record{border-top:1px solid var(--line);padding:18px 0}.history-record summary{display:flex;gap:18px;align-items:center;cursor:pointer}.history-record summary strong:last-child{margin-left:auto;font-size:.9rem}.history-record[open]>summary{margin-bottom:15px}.empty{color:var(--muted);padding:20px 0}.page-footer{display:flex;justify-content:space-between;gap:20px;border-top:1px solid var(--line);padding-top:20px;margin-top:35px;font-size:.75rem;color:var(--footer-text)}@media(max-width:1000px){main{padding:32px 24px}.shell{grid-template-columns:200px minmax(0,1fr)}.sidebar{padding:24px 16px}.stats{gap:10px}.stat{padding:16px}}@media(max-width:720px){.shell{display:block}.sidebar{height:auto;position:static;padding:18px 18px 0;border-right:0;border-bottom:1px solid var(--line);gap:12px}.sidebar nav{flex-direction:row;gap:3px;overflow:auto;margin:0 -6px}.sidebar nav a{font-size:.8rem;white-space:nowrap;padding:10px 8px;border-radius:6px 6px 0 0}.side-label,.side-note{display:none}.sidebar>form{position:absolute;right:20px;top:26px;font-size:.8rem}main{padding:24px 16px}.page-header{align-items:flex-start;gap:12px}.page-header .secondary{padding:8px 10px;font-size:.8rem}.page-header h1{font-size:1.9rem}.page-header .muted{font-size:.85rem}.connection span:nth-child(3){margin-left:0;width:100%;font-size:.75rem}.stats{grid-template-columns:1fr}.stat{padding:15px 18px}.stat strong{font-size:1.8rem;margin:5px 0}.panel{padding:20px 16px}.payday-select{align-items:flex-start;flex-direction:column}.payday-select form{width:100%}.payday-select .inline select{flex:1}.plan-footer{flex-direction:column;align-items:stretch}.plan-footer form{max-width:none}.breakdown{padding-left:0;overflow:auto}.section-heading{align-items:flex-start}.transfer>summary{gap:10px}.transfer summary .amount{font-size:1rem}.account-icon{width:34px;height:34px}.fields{grid-template-columns:1fr}.save-bar{flex-direction:column;align-items:stretch}.history-record summary{gap:8px;flex-wrap:wrap}.page-footer{font-size:.7rem}}

/* The current planner and sign-in share the Payday visual language. */
:root{color-scheme:light}
main{min-width:0}
.auth-page{min-height:100vh;display:grid;place-items:center;padding:32px 20px;background:radial-gradient(ellipse at top,var(--accent-bg) 0,transparent 65%),var(--canvas)}
.auth-page .auth-card{width:min(100%,430px);margin:0;padding:38px;background:var(--surface);border:1px solid var(--line);border-radius:16px;box-shadow:0 18px 55px var(--shadow)}
.auth-brand{margin-bottom:35px}
.auth-card h1{font-size:2rem}
.auth-card>p.muted{margin-bottom:25px}
.auth-card label{display:block;margin:18px 0 7px;font-size:.85rem;font-weight:600;color:var(--form-text)}
.auth-card .primary{width:100%;margin-top:24px;padding:12px}
.auth-card .auth-note{border-top:1px solid var(--line);padding-top:20px;margin:26px 0 0;font-size:.78rem;color:var(--muted);text-align:center}
.header-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.current-planner .page-header .muted{max-width:640px}
.current-planner .summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin:26px 0}
.current-planner .card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:20px}
.current-planner .card .muted{font-size:.8rem}
.current-planner .card strong{display:block;font-size:1.7rem;letter-spacing:-.035em;margin-top:10px}
.current-planner .week,.current-planner .rules{background:var(--surface);border:1px solid var(--line);border-radius:12px;margin:22px 0;overflow:hidden}
.current-planner .week.dual{border-color:var(--emphasis-line)}
.current-planner .week>summary,.current-planner .rules>summary{padding:20px 24px;cursor:pointer;list-style:none;display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:650}
.current-planner .week>summary::-webkit-details-marker,.current-planner .rules>summary::-webkit-details-marker{display:none}
.current-planner .week>summary::after,.current-planner .rules>summary::after{content:'+';color:var(--green);font-size:1.3rem;font-weight:400;flex-shrink:0}
.current-planner .week[open]>summary::after,.current-planner .rules[open]>summary::after{content:'−'}
.current-planner .week[open]>summary,.current-planner .rules[open]>summary{border-bottom:1px solid var(--line)}
.current-planner .week h2{margin:0;font-size:1.1rem;font-weight:600}
.current-planner .week__content{padding:20px 24px;overflow-x:auto}
.current-planner .week table{min-width:580px}
.current-planner .rules__content{padding:20px 24px;color:var(--muted);font-size:.9rem}
.current-planner .rules__content h3{color:var(--strong);font-size:1rem;margin:22px 0 8px}
.current-planner .rules__content p{margin:8px 0 14px}
.current-planner .rules__content p:last-child{margin-bottom:0}
.current-planner .prefunded td:nth-child(4){font-weight:650}
.current-planner .item-check{width:28px;text-align:center}
.current-planner .item-check input{width:16px;height:16px;margin:0;accent-color:var(--green);cursor:pointer}
.current-planner tr.item-complete td{opacity:.55}
.current-planner tr.item-complete td:nth-child(4){text-decoration:line-through}
.current-planner .totals{display:grid;grid-template-columns:1fr auto;gap:8px 20px;margin:20px 0 0 auto;max-width:430px;font-size:.88rem}
.current-planner .totals strong{text-align:right}
.current-planner .totals .left{font-size:1.05rem;font-weight:700;border-top:1px solid var(--line);padding-top:12px;margin-top:5px;color:var(--green)}
.current-planner .totals .negative{color:var(--negative)}
.current-planner .fund-edit{position:relative;margin-top:5px}
.current-planner .fund-edit-toggle{position:absolute;opacity:0;width:0;height:0}
.current-planner .fund-edit-btn{display:inline-block;padding:2px 9px;border:1px solid var(--control-line);border-radius:5px;font-size:.72rem;font-weight:550;color:var(--green);background:var(--hover);cursor:pointer}
.current-planner .fund-edit-toggle:focus-visible+.fund-edit-btn{outline:3px solid var(--focus);outline-offset:2px}
.current-planner .fund-form{display:none;gap:5px;align-items:center;margin-top:6px}
.current-planner .fund-edit-toggle:checked~.fund-form{display:flex}
.current-planner .fund-edit-toggle:checked~.fund-edit-btn{background:var(--active);border-color:var(--emphasis-line)}
.current-planner .fund-form select{max-width:135px;font-size:.75rem;padding:5px 7px}
.current-planner .fund-form button{background:var(--green);color:var(--on-primary);border:1px solid var(--green);border-radius:5px;padding:5px 9px;font-size:.75rem}
.transition-notice p{margin:8px 0}
.transition-notice .transition-source{font-size:.8rem;opacity:.85}
.transition-notice form{margin-top:15px}
@media(max-width:1000px){.current-planner .summary{grid-template-columns:repeat(2,minmax(0,1fr))}.current-planner .page-header{flex-wrap:wrap}}
@media(max-width:720px){.auth-page{padding:20px 16px}.auth-page .auth-card{padding:28px 24px}.current-planner .summary{gap:10px}.current-planner .card{padding:16px}.current-planner .card strong{font-size:1.4rem}.current-planner .week>summary,.current-planner .rules>summary{padding:16px}.current-planner .week h2{font-size:1rem}.current-planner .week__content,.current-planner .rules__content{padding:16px}.current-planner .totals{min-width:270px}.current-planner .page-header .header-actions{width:100%}}

/* Shared light/dark palette, including native inputs and select menus. */
:root[data-theme="dark"]{color-scheme:dark;--text:#e5eee9;--canvas:#101b16;--surface:#192820;--subsurface:#1c2d24;--brand:#edf6f0;--strong:#d1e3d7;--green:#82d0b2;--on-primary:#102c20;--primary-hover:#a2e0c7;--line:#30463a;--muted:#a3b7aa;--form-text:#d2e3d7;--control-line:#40594a;--active:#233e30;--hover:#263a2d;--soft-green:#b4dcc3;--accent-bg:#223c2c;--accent-line:#3b5c45;--warning-badge:#4b3b1d;--warning-bg:#332b1d;--warning-text:#e9ce97;--warning-line:#655031;--danger-bg:#382322;--danger-text:#f1b2a9;--danger-line:#70433e;--success-bg:#22392b;--success-line:#3a5e43;--success-text:#b1dfbd;--negative:#f2998d;--focus:#9fe2c7;--footer-text:#95aa9b;--emphasis-line:#527d61;--status-good:#82d0b2;--status-waiting:#dfbe7a;--shadow:#00000035}
@media(prefers-color-scheme:dark){:root:not([data-theme]){color-scheme:dark;--text:#e5eee9;--canvas:#101b16;--surface:#192820;--subsurface:#1c2d24;--brand:#edf6f0;--strong:#d1e3d7;--green:#82d0b2;--on-primary:#102c20;--primary-hover:#a2e0c7;--line:#30463a;--muted:#a3b7aa;--form-text:#d2e3d7;--control-line:#40594a;--active:#233e30;--hover:#263a2d;--soft-green:#b4dcc3;--accent-bg:#223c2c;--accent-line:#3b5c45;--warning-badge:#4b3b1d;--warning-bg:#332b1d;--warning-text:#e9ce97;--warning-line:#655031;--danger-bg:#382322;--danger-text:#f1b2a9;--danger-line:#70433e;--success-bg:#22392b;--success-line:#3a5e43;--success-text:#b1dfbd;--negative:#f2998d;--focus:#9fe2c7;--footer-text:#95aa9b;--emphasis-line:#527d61;--status-good:#82d0b2;--status-waiting:#dfbe7a;--shadow:#00000035}}

.theme-control{display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:.8rem}
.theme-control[hidden]{display:none}
.theme-control select{width:100px;padding:7px 9px;font-size:.8rem;background:var(--surface)}
.auth-theme{position:absolute;right:24px;top:24px}
.auth-theme .theme-control{padding:8px 12px;background:var(--surface);border:1px solid var(--line);border-radius:10px}
*{scrollbar-color:var(--control-line) var(--surface)}
@media(max-width:720px){.sidebar .theme-control{margin:0 0 12px}.sidebar .theme-control select{width:130px}.auth-theme{right:16px;top:16px}.auth-theme .theme-control>span{display:none}.auth-page{padding-top:78px;padding-bottom:28px}}

/* Keep funding guidance clear of the bounded, scrollable expense table. */
.settings-scroll{border-bottom:1px solid var(--line)}
.settings-help{margin:20px 0 0;line-height:1.6}

/* Bills and funding share the same week, but have separate totals. */
.due-week-select{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;flex-wrap:wrap;margin:24px 0}
.due-week-select h2{font-size:1.6rem;margin-bottom:5px}
.due-week-select p:last-child{margin:0;font-size:.85rem}
.due-week-select label{display:block;font-size:.75rem;color:var(--muted);margin-bottom:6px}
.due-week-select input{min-width:160px}
.week-links{display:flex;gap:8px;flex-wrap:wrap;width:100%}
.week-links .secondary{font-size:.8rem;padding:8px 12px}
.due-caption{font-size:.85rem;max-width:850px}
.due-item{display:grid;grid-template-columns:70px minmax(120px,1fr) 100px minmax(200px,1.4fr);gap:18px;padding:22px 0;border-top:1px solid var(--line);align-items:start}
.due-date{color:var(--muted);font-size:.78rem}
.due-date time strong{display:block;font-size:1rem;color:var(--strong)}
.due-date .badge{margin-top:7px}
.due-name h3{font-size:1rem;line-height:1.4;margin:0 0 5px}
.due-name p{margin:0;color:var(--muted);font-size:.8rem}
.due-amount{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.due-amount>strong{font-size:1.05rem}
.due-coverage{padding-left:8px}
.due-coverage small{margin-top:7px;line-height:1.5}
.due-coverage>.negative{display:block;font-size:.85rem;margin-top:6px}
.due-coverage small strong{color:var(--strong);font-weight:600}
.due-status{white-space:normal}
.due-status-shortfall,.due-status-overdue{background:var(--danger-bg);color:var(--danger-text)}
.due-status-timing,.due-status-credit,.due-status-unknown{background:var(--warning-badge);color:var(--warning-text)}
.due-paid .due-name,.due-paid .due-amount{color:var(--muted)}
.due-transfer{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:16px 0;border-top:1px solid var(--line);font-size:.9rem}
.due-transfer small{margin-top:4px}
.due-transfer>strong{white-space:nowrap;font-variant-numeric:tabular-nums}
@media(max-width:1100px){.due-item{grid-template-columns:65px minmax(120px,1fr) 100px}.due-coverage{grid-column:2 / -1;padding-left:0}}
@media(max-width:720px){.due-week-select form{width:100%}.due-week-select .inline input{flex:1}.due-item{grid-template-columns:55px minmax(0,1fr) auto;gap:12px}.due-week-select h2{font-size:1.35rem}.due-name h3,.due-amount>strong{font-size:.92rem}.due-coverage{grid-column:2 / -1}.due-transfer{gap:12px}}
