/* Theme contract: components consume semantic colors; palettes supply values. */
:root {
  color-scheme: light;
  --canvas: #f6f8f7;
  --surface: #ffffff;
  --surface-subtle: #fafcfb;
  --surface-raised: #f0f5f1;
  --surface-hover: #f1f7f4;
  --surface-selected: #e7f3ed;
  --text: #203b39;
  --text-secondary: #546f61;
  --muted: #586d66;
  --border: #e5ece8;
  --control-border: #7b9389;
  --accent: #087461;
  --accent-hover: #086a5a;
  --on-accent: #ffffff;
  --positive: #2d7253;
  --positive-surface: #e7f3eb;
  --positive-border: #dbece0;
  --negative: #b34f3d;
  --negative-surface: #fbefea;
  --negative-border: #f2ded4;
  --warning-text: #68592e;
  --warning-surface: #f6f2e8;
  --warning-border: #e9e2cb;
  --focus: #087461;
  --focus-halo: #45b5a026;
  --chart-track: #edf2ee;
  --chart-plan: #a9c5b9;
  --chart-goals: #7770be;
  --chart-positive: #67ad8d;
  --chart-negative: #cd8270;
  --chart-zero: #9eb7ac;
  --chart-area: #2b9b7914;
  --chart-mini-area: #e9f4ee;
  --today-marker: #b2aff4;
  --on-marker: #151619;
  --toast-background: #1c5543;
  --toast-error: #8e4333;
  --on-toast: #ffffff;
  --toast-muted: #d9ebe3;
  --backdrop: #173b3655;
  --shadow: #15372f22;
}
:root[data-theme="dark"] {
  color-scheme: dark;
  --canvas: #151619;
  --surface: #202226;
  --surface-subtle: #24262b;
  --surface-raised: #292b31;
  --surface-hover: #2d3037;
  --surface-selected: #33373f;
  --text: #ececef;
  --text-secondary: #d0d1d7;
  --muted: #a7a9b1;
  --border: #393c44;
  --control-border: #777b85;
  --accent: #6ed1b0;
  --accent-hover: #8edcbd;
  --on-accent: #14251f;
  --positive: #81cfa9;
  --positive-surface: #292e33;
  --positive-border: #39434a;
  --negative: #ef9b87;
  --negative-surface: #382a2b;
  --negative-border: #65464a;
  --warning-text: #dac38b;
  --warning-surface: #302e26;
  --warning-border: #514a37;
  --focus: #85cbb7;
  --focus-halo: #85cbb72b;
  --chart-track: #30333a;
  --chart-plan: #858d9b;
  --chart-goals: #b2aff4;
  --chart-positive: #72b79c;
  --chart-negative: #d99080;
  --chart-zero: #737986;
  --chart-area: #b8c2d010;
  --chart-mini-area: #b8c2d014;
  --today-marker: #b2aff4;
  --on-marker: #151619;
  --toast-background: #343b43;
  --toast-error: #603a35;
  --on-toast: #ffffff;
  --toast-muted: #d5d8df;
  --backdrop: #080a1099;
  --shadow: #00000044;
}

:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--canvas);font-synthesis:none;}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:disabled,input:disabled,select:disabled{cursor:default;opacity:.5}a{color:inherit}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid var(--focus);outline-offset:3px}button{border:0;background:none;color:inherit}input,select{color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:7px;padding:9px 11px}input[type=checkbox]{accent-color:var(--accent);width:16px;height:16px;vertical-align:middle}h1,h2,h3,p{margin:0}h1{font-size:36px;letter-spacing:-1.3px;line-height:1.25;font-weight:650}h2{font-size:18px;font-weight:650;letter-spacing:-.4px}small{display:block;color:var(--muted);font-size:11px;line-height:1.6}.muted{color:var(--muted);line-height:1.6}.eyebrow{font-size:10px;letter-spacing:1.6px;font-weight:700;color:var(--accent);margin-bottom:12px}.brand{display:flex;align-items:center;text-decoration:none;font-size:29px;font-weight:700;letter-spacing:-1.7px}.brand-mark{display:grid;place-items:center;background:var(--accent);color:var(--on-accent);font-size:24px;border-radius:12px;width:39px;height:39px;margin-right:10px;letter-spacing:-3px;padding-right:3px}.brand-dot{color:var(--accent)}.sidebar{width:230px;position:fixed;inset:0 auto 0 0;background:var(--surface);border-right:1px solid var(--border);padding:37px 23px;display:flex;flex-direction:column}.workspace-label{font-size:9px;letter-spacing:1.3px;font-weight:600;color:var(--muted);margin:62px 10px 18px}.nav-link{width:100%;text-align:left;display:flex;align-items:center;gap:13px;padding:13px 15px;border-radius:8px;margin-bottom:8px;font-size:14px;color:var(--muted)}.nav-link>span{font-size:22px;line-height:22px}.nav-link.active{background:var(--surface-selected);color:var(--accent);font-weight:650}.nav-link b{margin-left:auto;font-size:11px;background:var(--surface-raised);padding:2px 5px;border-radius:4px}.sidebar-bottom{margin-top:auto;font-size:11px;color:var(--muted);padding:20px 7px 0}.sidebar-bottom>a{display:block;text-decoration:none;margin-top:20px;font-size:12px}.connection-dot{display:inline-block;width:6px;height:6px;background:var(--positive);border-radius:50%;margin-right:6px}.text-button{padding:0;text-align:left;margin-top:12px;color:var(--muted);font-size:11px}.main{margin-left:230px;padding:0 42px;max-width:1800px}.topbar{height:86px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--border)}.breadcrumb{font-size:9px;letter-spacing:1.6px;color:var(--muted)}.breadcrumb strong{font-weight:500;color:var(--text-secondary)}.top-controls{display:flex;gap:12px;align-items:center}.top-controls select{font-size:11px;padding:6px 9px}.icon-button{font-size:23px;color:var(--muted)}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:38px 0 29px}.page-heading .muted{font-size:13px;margin-top:9px}.month-picker{display:flex;align-items:center;flex-shrink:0;background:var(--surface);border:1px solid var(--border);border-radius:9px;height:44px}.month-picker>button{font-size:25px;padding:0 14px;color:var(--muted)}.month-picker label{position:relative;cursor:pointer;min-width:138px;text-align:center;font-size:13px;font-weight:600}.month-picker input{position:absolute;inset:-12px 0;opacity:0;width:100%;cursor:pointer}.month-picker input::-webkit-calendar-picker-indicator{position:absolute;inset:0;width:100%;height:100%;cursor:pointer}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:28px}.stats article{background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:23px 25px}.stats article>span{font-size:9px;font-weight:600;letter-spacing:1.4px;color:var(--muted)}.stats strong{display:block;font-size:30px;font-weight:600;letter-spacing:-1.1px;margin:13px 0 9px;font-variant-numeric:tabular-nums}.stats small{font-size:11px}.stats .featured{background:var(--positive-surface);border-color:var(--positive-border)}.stats .featured strong{color:var(--accent)}.stats .over{background:var(--negative-surface);border-color:var(--negative-border)}.stats .over strong{color:var(--negative)}.attention{display:flex;align-items:center;text-align:left;width:100%;padding:16px 20px;background:var(--warning-surface);border:1px solid var(--warning-border);border-radius:9px;margin-bottom:27px;gap:13px}.attention-icon{display:grid;place-items:center;background:var(--warning-surface);border-radius:50%;width:30px;height:30px;color:var(--warning-text)}.attention strong{font-size:12px;color:var(--warning-text)}.attention small{font-size:11px;color:var(--warning-text);margin-top:3px}.attention>b{margin-left:auto;font-size:11px;color:var(--warning-text);white-space:nowrap}.panel{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}.panel-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:25px 26px}.panel-heading p{font-size:11px;color:var(--muted);margin-top:7px}.count{display:inline-block;font-size:10px;vertical-align:middle;background:var(--surface-raised);border:1px solid var(--border);border-radius:5px;padding:3px 6px;margin-left:6px}.scope{display:flex;flex-direction:column;gap:6px;font-size:8px;letter-spacing:1.1px;color:var(--muted)}.scope select{font-size:11px;letter-spacing:0;min-width:180px;padding:7px 9px}.budget-labels,.budget-row{display:grid;grid-template-columns:minmax(190px,1.5fr) minmax(130px,1.05fr) 176px minmax(90px,.7fr);gap:25px;padding:0 26px}.budget-labels{background:var(--surface-subtle);border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-size:8px;letter-spacing:1.4px;color:var(--muted);padding-top:12px;padding-bottom:12px}.budget-labels span:last-child{text-align:right}.budget-row{align-items:center;min-height:89px;border-bottom:1px solid var(--border);padding-top:17px;padding-bottom:17px}.budget-row:last-child{border:0}.budget-name{display:flex;gap:13px;align-items:center;text-align:left;padding:0;min-width:0}.budget-name strong{font-size:12px;display:block;font-weight:600;line-height:1.5}.budget-name small{font-size:10px;margin-top:3px}.budget-icon{background:var(--surface-raised);color:var(--muted);display:grid;place-items:center;width:34px;height:34px;border-radius:9px;font-size:21px;flex-shrink:0}.spending>span{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.spending strong{font-size:12px;font-weight:600;font-variant-numeric:tabular-nums}.spending small{font-size:9px}progress{appearance:none;width:100%;height:6px;border:0;border-radius:0;display:block;overflow:hidden;background:var(--chart-track)}progress::-webkit-progress-bar{background:var(--chart-track)}progress::-webkit-progress-value{background:var(--chart-positive);border-radius:0}progress::-moz-progress-bar{background:var(--chart-positive);border-radius:0}.over progress::-webkit-progress-value{background:var(--chart-negative)}.over progress::-moz-progress-bar{background:var(--chart-negative)}.amount-editor{display:flex;border:1px solid transparent;border-radius:7px;align-items:center;height:34px;overflow:hidden}.amount-editor input{border:0;padding:0;width:100%;min-width:0;text-align:center;font-size:12px;font-weight:600;background:transparent;font-variant-numeric:tabular-nums}.amount-cell>small{font-size:9px;text-align:center;margin-top:4px}.remaining{text-align:right;font-variant-numeric:tabular-nums}.remaining strong{font-size:13px;font-weight:600;color:var(--positive)}.remaining small{font-size:9px;margin-top:4px}.over .remaining strong{color:var(--negative)}.subscriptions{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;margin-top:-12px;padding-left:47px}.subscriptions span{font-size:10px;color:var(--muted);background:var(--surface-subtle);padding:5px 8px;border-radius:5px}.subscriptions b{font-weight:500;color:var(--text-secondary)}.subscription-note{margin:20px 0;background:var(--surface-raised);border-radius:8px;padding:16px 20px;font-size:12px}.subscription-note p{margin-top:7px;color:var(--muted);font-size:11px;line-height:1.7}.footnote{font-size:11px;color:var(--muted);line-height:1.8;margin:16px 3px 0}footer{font-size:10px;color:var(--muted);padding:29px 0 25px}footer span{margin:0 9px}.primary,.secondary{padding:10px 16px;border-radius:7px;font-size:12px;font-weight:600}.primary{background:var(--accent);color:var(--on-accent)}.primary:hover{background:var(--accent-hover)}.secondary{border:1px solid var(--border);background:var(--surface)}.transaction-tools{display:flex;align-items:center;gap:14px;padding:23px}.search{display:flex;align-items:center;border:1px solid var(--border);border-radius:7px;flex:1;max-width:470px}.search span{padding-left:12px;font-size:24px;color:var(--muted)}.search input{border:0;width:100%;background:transparent;font-size:12px}.transaction-tools select,.bulk-bar select{font-size:11px}.result-count{font-size:11px;color:var(--muted);margin-left:auto;white-space:nowrap}.bulk-bar{display:flex;align-items:center;gap:16px;padding:12px 23px;background:var(--surface-subtle);border-top:1px solid var(--border);border-bottom:1px solid var(--border);font-size:11px;color:var(--muted)}.bulk-bar select{margin-left:auto;max-width:260px}.bulk-bar input{margin-right:7px}.bulk-bar .primary{padding:9px 14px}table{border-collapse:collapse;width:100%;font-size:12px}th{text-align:left;font-size:8px;letter-spacing:1px;color:var(--muted);font-weight:500;padding:14px 10px;border-bottom:1px solid var(--border)}td{padding:17px 10px;border-bottom:1px solid var(--border)}th:first-child,td:first-child{padding-left:23px;width:40px}th:last-child,td:last-child{padding-right:23px}tr:last-child td{border:0}.merchant{font-weight:600;text-decoration:none;display:block;max-width:290px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.merchant:hover{text-decoration:underline}td small{font-size:10px;margin-top:5px}.description{display:block;font-size:10px;max-width:250px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--muted);margin-top:4px}.account{font-size:11px;color:var(--muted);max-width:140px}td select{font-size:11px;max-width:210px;width:100%}.right{text-align:right}.transaction-amount{font-weight:600;white-space:nowrap}.rule-button{font-size:10px;color:var(--accent);white-space:nowrap}.empty{text-align:center;padding:70px 20px;color:var(--muted);font-size:13px}.empty>span{display:block;color:var(--accent);font-size:30px;margin-bottom:15px}.empty h3{color:var(--text);font-weight:500;margin-bottom:9px}.welcome{min-height:100vh;max-width:1200px;margin:auto;padding:50px 60px}.welcome-card{margin:90px auto;max-width:600px}.welcome h1{font-size:68px;line-height:1.1;letter-spacing:-3px}.welcome h1 span{color:var(--accent)}.welcome p{font-size:17px;line-height:1.8;color:var(--muted);margin:25px 0;max-width:460px}.welcome .eyebrow{margin-bottom:22px}.connect{display:inline-flex;gap:48px;align-items:center;text-decoration:none;padding:16px 21px;font-size:14px}.welcome small{margin-top:18px}.loading{padding:80px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);background:var(--toast-background);color:var(--on-toast);border-radius:9px;padding:15px 23px;box-shadow:0 8px 30px var(--shadow);font-size:13px;max-width:650px;width:max-content;max-width:min(650px,90vw);z-index:20;line-height:1.6}#toast.error{background:var(--toast-error)}dialog{border:1px solid var(--border);border-radius:15px;padding:32px;max-width:490px;box-shadow:0 15px 70px var(--shadow);color:inherit}dialog::backdrop{background:var(--backdrop);backdrop-filter:blur(3px)}dialog .close{position:absolute;right:15px;top:10px;font-size:25px;color:var(--muted)}dialog h2{margin-bottom:17px;font-size:24px}dialog p{font-size:13px;line-height:1.8;margin-top:12px}.dialog-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:25px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
@media(min-width:1600px){.main{padding-left:60px;padding-right:60px}.budget-row,.budget-labels{gap:45px}}
@media(max-width:1200px){.sidebar{width:190px;padding:30px 17px}.main{margin-left:190px;padding:0 25px}.stats article{padding:20px 17px}.stats strong{font-size:25px}.budget-labels,.budget-row{grid-template-columns:minmax(165px,1.4fr) minmax(105px,1fr) 140px 90px;gap:17px;padding-left:19px;padding-right:19px}.budget-name{gap:8px}.budget-name strong{font-size:11px}.panel-heading{padding:23px 19px}.transaction-scroll{overflow-x:auto}.transaction-scroll table{min-width:790px}.page-heading{align-items:flex-start}h1{font-size:30px}.page-heading .muted{max-width:340px}.month-picker label{min-width:115px;font-size:12px}}
@media(max-width:950px){.sidebar{width:160px;padding:28px 12px}.brand{font-size:25px}.brand-mark{width:32px;height:32px;font-size:21px}.workspace-label{font-size:8px;margin:45px 4px 15px}.nav-link{font-size:12px;padding:12px 10px;gap:8px}.main{margin-left:160px;padding:0 20px}.stats{grid-template-columns:repeat(2,1fr)}.budget-labels,.budget-row{grid-template-columns:minmax(155px,1.4fr) 135px 90px;gap:15px}.budget-labels>span:nth-child(2){display:none}.spending{grid-column:1;grid-row:auto;padding-left:42px;margin-top:-10px}.budget-name{grid-column:1}.amount-cell{grid-column:2;grid-row:1 / 3}.remaining{grid-column:3;grid-row:1 / 3}.budget-row{position:relative}.subscriptions{padding-left:42px;grid-row:3}.panel-heading{align-items:flex-start}.panel-heading p{max-width:250px;line-height:1.7}.scope select{min-width:150px;max-width:190px}.page-heading{flex-direction:column;gap:20px}.page-heading .muted{max-width:none}.topbar{height:72px}.attention>b{font-size:0}.attention>b:after{content:'→';font-size:18px}.transaction-tools{flex-wrap:wrap}.search{flex-basis:100%;max-width:none}.bulk-bar{flex-wrap:wrap}.bulk-bar select{margin-left:0}}
@media(max-width:680px){.sidebar{position:relative;width:100%;height:auto;border-right:0;border-bottom:1px solid var(--border);padding:15px 20px;display:flex;flex-direction:row;align-items:center;gap:20px}.sidebar nav{display:flex;margin-left:auto;gap:3px}.workspace-label,.sidebar-bottom,.nav-link>span,.nav-link>b{display:none}.nav-link{padding:10px;font-size:11px;margin:0}.brand{font-size:23px}.brand-mark{width:30px;height:30px;border-radius:9px}.main{margin-left:0;padding:0 17px}.topbar{height:53px}.breadcrumb{font-size:8px;letter-spacing:1px}.page-heading{margin:26px 0 23px}h1{font-size:31px}.page-heading .muted{font-size:12px}.eyebrow{font-size:9px}.month-picker{width:100%;justify-content:space-between}.month-picker label{flex:1}.stats{gap:10px;margin-bottom:21px}.stats article{padding:16px}.stats strong{font-size:25px;margin:10px 0 6px}.stats article>span{font-size:8px;letter-spacing:.9px}.stats small{font-size:9px}.attention{padding:13px;gap:10px;margin-bottom:21px}.attention strong{font-size:11px}.attention small{font-size:10px;max-width:250px}.panel-heading{flex-direction:column;gap:19px;padding:19px 15px}.panel-heading p{max-width:none}.scope{width:100%;flex-direction:row;align-items:center;justify-content:space-between;gap:10px;font-size:7px}.scope select{min-width:0;max-width:190px}.budget-labels,.budget-row{padding-left:15px;padding-right:15px;gap:12px;grid-template-columns:minmax(120px,1fr) 124px}.budget-labels{grid-template-columns:1fr 124px}.budget-labels span:last-child{display:none}.budget-labels span:nth-child(3){text-align:center}.budget-name{grid-column:1}.budget-name strong{font-size:11px}.budget-name small{font-size:9px}.budget-icon{display:none}.spending{grid-column:1;padding-left:0;grid-row:2;margin-top:0}.spending strong{font-size:11px}.spending small{font-size:8px}.amount-cell{grid-row:1;grid-column:2}.remaining{grid-row:2;grid-column:2}.remaining small{display:inline;margin-left:5px;font-size:8px}.remaining strong{font-size:11px}.subscriptions{grid-row:3;padding-left:0;margin-top:0}.budget-row{padding-top:17px;padding-bottom:17px}.amount-cell>small{font-size:8px}.transaction-tools,.bulk-bar{padding:15px}.transaction-tools select{max-width:230px}.bulk-bar{gap:10px}.bulk-bar select{flex:1;max-width:100%}footer{font-size:9px;line-height:1.8}.welcome{padding:30px 25px}.welcome-card{margin:65px auto}.welcome h1{font-size:54px}.welcome p{font-size:15px}.connect{font-size:13px}.footnote{font-size:10px}}

.rule-choice{display:flex;align-items:flex-start;gap:11px;margin-top:19px;font-size:12px;line-height:1.7;padding:13px;background:var(--surface-raised);border-radius:8px}.rule-choice input{flex-shrink:0;margin-top:4px}.rule-choice strong{font-weight:600}.rule-choice #account-names{display:block;overflow-wrap:anywhere;color:var(--accent);margin-top:5px;max-height:120px;overflow:auto}.rule-choice small{margin-top:4px}.rule-choice:has(input:disabled){opacity:.55}

/* Adjustment buttons flank the bar; reserve space so hover never shifts it. */
.progress-adjust{display:grid;grid-template-columns:28px minmax(0,1fr) 28px;align-items:center;gap:5px;min-height:28px}
.progress-adjust button{display:grid;place-items:center;width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:7px;background:var(--surface-raised);color:var(--accent);font-size:19px;line-height:1;transition:opacity .12s ease,background .12s ease}
.progress-adjust button:hover:not(:disabled){background:var(--surface-hover)}
.progress-adjust button:disabled{opacity:.4}
@media(hover:hover) and (pointer:fine){
 .progress-adjust button{opacity:0;pointer-events:none}
 .spending:hover .progress-adjust button,.progress-adjust:focus-within button{opacity:1;pointer-events:auto}
 .spending:hover .progress-adjust button:disabled,.progress-adjust:focus-within button:disabled{opacity:.4}
}
@media(hover:none),(pointer:coarse){
 .progress-adjust{grid-template-columns:32px minmax(0,1fr) 32px;min-height:32px}
 .progress-adjust button{width:32px;height:32px}
}
@media(prefers-reduced-motion:reduce){.progress-adjust button{transition:none}}

.amount-editor:focus-within{border-color:var(--focus);background:var(--surface);box-shadow:0 0 0 2px var(--focus-halo)}.amount-editor input:focus-visible{outline:none}

.spending>span>small{color:var(--positive)}.over .spending>span>small{color:var(--negative)}
.positive{color:var(--positive)}.negative{color:var(--negative)}.worth-date{display:flex;flex-direction:column;gap:8px;font-size:9px;letter-spacing:1px;color:var(--muted)}.worth-date input{font-size:12px;letter-spacing:0;min-width:165px}.worth-chart-panel{margin-bottom:24px}.range-switch{display:flex;gap:3px;background:var(--surface-raised);border-radius:8px;padding:4px}.range-switch button{font-size:11px;padding:7px 13px;border-radius:5px;color:var(--muted)}.range-switch .selected{background:var(--surface);color:var(--accent);box-shadow:0 1px 4px var(--shadow)}.worth-chart{padding:0 20px}.worth-chart svg{display:block;width:100%;height:auto;overflow:visible}.chart-grid{stroke:var(--border);stroke-width:1}.chart-zero{stroke:var(--chart-zero);stroke-width:1;stroke-dasharray:4 5}.chart-axis{font-size:11px;fill:var(--muted)}.chart-line{stroke:var(--accent);stroke-width:3;fill:none;stroke-linecap:round;stroke-linejoin:round}.chart-area{fill:var(--chart-area)}.chart-point{fill:var(--surface);stroke:var(--accent);stroke-width:2;cursor:pointer}.chart-point:hover,.chart-point:focus,.chart-point.selected{fill:var(--accent);stroke-width:4;outline:none}.chart-inspector{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:19px;font-size:11px;padding:18px 20px 4px;min-height:40px;color:var(--muted)}.chart-inspector strong,.chart-inspector b{color:var(--text);font-weight:600}.chart-slider{display:block;margin:8px 40px 18px}.chart-slider input{padding:0;width:100%;accent-color:var(--accent);cursor:pointer;display:block}.history-details{border-top:1px solid var(--border)}.history-details summary{padding:16px 25px;font-size:11px;color:var(--muted);cursor:pointer}.worth-tables{display:grid;grid-template-columns:1fr 1fr;gap:22px;margin-bottom:24px}.worth-account-panel .panel-heading{padding:22px}.worth-account-panel .panel-heading>strong{font-size:17px;font-weight:600}.worth-account-panel table{min-width:420px}.worth-account-panel .merchant{max-width:240px;font-size:12px}.worth-context{padding:26px}.worth-context p{font-size:12px;line-height:1.9;color:var(--muted);margin-top:13px;max-width:1050px}.worth-context details{font-size:12px;margin:19px 0;color:var(--muted)}.worth-context summary{cursor:pointer;font-weight:600}.worth-context ul{padding-left:20px;max-width:620px}.worth-context li{padding:7px 0}.worth-context li span{float:right}.text-link{display:inline-block;font-size:12px;color:var(--accent);text-decoration:none;margin-top:17px}.load-error{padding:25px;background:var(--negative-surface);border:1px solid var(--negative-border);border-radius:10px;margin-bottom:22px}.load-error p{margin:12px 0;font-size:13px}
@media(max-width:1200px){.worth-tables{grid-template-columns:1fr}.worth-account-panel .merchant{max-width:350px}}
@media(max-width:680px){.sidebar{gap:9px;padding-left:14px;padding-right:14px}.sidebar nav{gap:0}.nav-link{padding:9px 6px;font-size:10px}.sidebar .brand{font-size:20px}.sidebar .brand-mark{margin-right:7px}.worth-date{width:100%;flex-direction:row;align-items:center;justify-content:space-between}.worth-date input{min-width:150px}.worth-chart{padding:0 7px}.worth-chart svg{min-height:170px}.chart-axis{font-size:11px}.chart-inspector{gap:8px 16px;font-size:10px;justify-content:flex-start}.chart-slider{margin-left:20px;margin-right:20px}.worth-context{padding:20px}.worth-account-panel .panel-heading{flex-direction:row;align-items:center}.worth-account-panel table{min-width:350px}.worth-account-panel .merchant{max-width:150px;font-size:11px}.worth-account-panel td{padding:14px 8px}.worth-account-panel th:first-child,.worth-account-panel td:first-child{padding-left:15px;width:auto}.worth-account-panel th:last-child,.worth-account-panel td:last-child{padding-right:15px}.worth-stats strong{font-size:22px}}

.transaction-panel tbody tr.unassigned>td{background:var(--warning-surface)}
.transaction-panel tbody tr.unassigned>td:first-child{box-shadow:inset 3px 0 var(--warning-border)}
.transaction-panel:not(.has-editing) tbody tr:hover>td,.transaction-panel tbody tr:focus-within>td{background:var(--surface-hover)}
.transaction-panel tbody tr.editing>td{background:var(--surface-selected)}
.transaction-panel tbody tr.editing>td:first-child{box-shadow:inset 3px 0 var(--accent)}
#rule-dialog{width:560px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto}
#assignment-transactions{background:var(--surface-raised);border:1px solid var(--border);border-radius:9px;padding:16px;margin:18px 0}
.assignment-label{font-size:9px;font-weight:700;letter-spacing:1px;color:var(--accent);margin-bottom:12px}
#assignment-transactions ul{list-style:none;margin:0;padding:0;max-height:230px;overflow:auto}
#assignment-transactions li+li{border-top:1px solid var(--border);margin-top:14px;padding-top:14px}
.assignment-identity{display:flex;align-items:baseline;justify-content:space-between;gap:15px;font-size:15px}
.assignment-identity strong{overflow-wrap:anywhere}.assignment-identity b{font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}
#assignment-transactions .assignment-description{font-size:12px;line-height:1.5;margin:6px 0;overflow-wrap:anywhere}
.assignment-meta{font-size:11px;color:var(--muted);margin:7px 0}
.assignment-account,.assignment-budget{font-size:12px;line-height:1.8;overflow-wrap:anywhere}
.assignment-account span,.assignment-budget span{color:var(--muted);margin-right:6px}
@media(max-width:680px){#rule-dialog{padding:24px 18px}#assignment-transactions{padding:12px}.assignment-identity{font-size:14px}}

#toast{display:flex;align-items:center;gap:16px}#toast[hidden]{display:none}#toast>span{min-width:0}
.toast-undo{color:var(--on-toast);text-decoration:underline;text-underline-offset:3px;font-weight:700;padding:8px 4px;flex-shrink:0}
.toast-close{color:var(--toast-muted);font-size:23px;padding:4px;flex-shrink:0}.toast-undo:disabled{opacity:.6}
@media(max-width:680px){#toast{gap:10px;padding:12px 15px;font-size:12px}}

.budget-icon svg{width:21px;height:21px;display:block}
.budget-sort{display:inline-flex;align-items:center;gap:7px;padding:4px 0;font-size:8px;letter-spacing:1px;text-transform:uppercase;text-align:left;white-space:nowrap}
.budget-sort>span{font-size:13px;letter-spacing:0;color:var(--muted)}.budget-sort:hover,.budget-sort.active,.budget-sort.active>span{color:var(--accent)}
.budget-labels>span:nth-child(3){text-align:center}
@media(max-width:950px){.budget-labels{display:flex;justify-content:space-between;gap:10px}.budget-labels>span:nth-child(2){display:block}}
@media(max-width:680px){.budget-labels{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px}.budget-labels>span:last-child{display:block}.budget-labels>span,.budget-labels>span:nth-child(3),.budget-labels>span:last-child{text-align:left}.budget-sort{font-size:9px;letter-spacing:.4px;padding:6px 8px;width:100%;justify-content:space-between;border-radius:5px;background:var(--surface-raised)}.budget-sort.active{background:var(--surface-selected)}.budget-icon{display:grid;width:27px;height:27px;border-radius:7px}.budget-icon svg{width:18px;height:18px}.budget-name{gap:8px}.budget-name>span:last-child{min-width:0}}

.budget-labels .budget-sort>span{display:inline}

.category-scope{display:flex;align-items:center;gap:11px;margin:0 0 16px}.category-scope strong{font-size:15px;font-weight:650}.category-scope small{font-size:11px;margin-top:3px}
.category-stats article{min-width:0}.category-stats .category-trend{display:flex;flex-direction:column;justify-content:space-between}
.category-sparkline{display:block;width:100%;height:68px;margin:10px 0 3px;overflow:visible}.trend-baseline{stroke:var(--border);stroke-width:1;vector-effect:non-scaling-stroke}.trend-area{fill:var(--chart-area)}.trend-line{stroke:var(--accent);stroke-width:2;fill:none;vector-effect:non-scaling-stroke}.trend-point{fill:var(--surface);stroke:var(--accent);stroke-width:1.5;vector-effect:non-scaling-stroke;cursor:pointer}.trend-point:hover,.trend-point:focus{fill:var(--accent);outline:none;stroke-width:3}
.trend-labels{display:flex;justify-content:space-between;gap:8px;font-size:10px;color:var(--muted);margin-bottom:5px}.trend-labels #trend-value{color:var(--text);text-align:right}.trend-empty{font-size:13px;color:var(--muted);padding:24px 0}
@media(max-width:680px){.category-scope .budget-icon{width:34px;height:34px}.category-stats strong{font-size:22px}.category-stats .category-trend>span{letter-spacing:.3px}.category-sparkline{height:64px}.trend-labels{font-size:9px;gap:4px}}
/* Contain off-screen table labels as well as horizontal table scrolling. */
.transaction-scroll{position:relative;min-width:0}

.category-navigation{margin:-8px 0 18px}.back-to-list{display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:8px 10px;margin-left:-10px;border-radius:7px;font-size:13px;font-weight:600;color:var(--accent)}.back-to-list svg{width:18px;height:18px;flex-shrink:0}.back-to-list:hover{background:var(--surface-selected)}.category-scope h2{font-size:15px;font-weight:650;letter-spacing:0}.category-scope h2:focus{outline:none}
@media(max-width:680px){.category-navigation{margin:-6px 0 13px}.back-to-list{min-height:44px}}

.bank-sync{display:flex;align-items:center;gap:10px}.sync-button{display:inline-flex;align-items:center;gap:7px;min-height:38px;padding:7px 12px;border:1px solid var(--border);border-radius:0;color:var(--accent);background:var(--surface-raised);font-size:13px;font-weight:650;white-space:nowrap}.sync-button svg{width:19px;height:19px}.sync-button:hover{background:var(--surface-selected)}.sync-button:disabled{opacity:.65;cursor:default}.bank-sync small{max-width:185px;font-size:11px;color:var(--muted);line-height:1.4}.bank-sync .sync-error{color:var(--negative)}.syncing svg{animation:sync-pulse 1.2s ease-in-out infinite}@keyframes sync-pulse{50%{opacity:.3}}@media(prefers-reduced-motion:reduce){.syncing svg{animation:none}}@media(max-width:900px){.bank-sync{align-items:flex-end;flex-direction:column;gap:4px}.bank-sync small{max-width:150px;text-align:right}}@media(max-width:680px){.topbar{flex-wrap:wrap;gap:12px}.top-controls{flex-wrap:wrap}.bank-sync{align-items:flex-start}.bank-sync small{text-align:left;max-width:180px}.sync-button{min-height:42px}}
@media(max-width:900px){.topbar{height:auto;min-height:86px;padding:14px 0}}@media(max-width:680px){.topbar{min-height:0;padding:12px 0 16px}.topbar .top-controls{width:100%;justify-content:flex-end}.topbar .bank-sync{margin-right:auto}}

/* Shared slots keep budget drill-downs and overview cards stationary. */
.main{overflow-anchor:none}.category-navigation{height:40px;margin:0 0 12px}.category-navigation.is-placeholder{visibility:hidden;pointer-events:none}.category-scope{height:44px;margin:0 0 16px;min-width:0}.category-scope>div{min-width:0}.category-scope h2{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.stats article{min-height:200px;min-width:0}.overview-budget{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:3px}.page-heading{min-height:100px}.top-controls{min-height:40px}@media(max-width:1100px){.page-heading{min-height:155px}}@media(max-width:680px){.category-navigation{height:44px;margin:0 0 12px}.category-scope{height:44px}.stats article{min-height:180px}.page-heading{min-height:157px}}
html{scrollbar-gutter:stable}

/* Quiet edit affordance; the icon occupies reserved space and never shifts text. */
.amount-editor{position:relative;font-size:12px}.amount-editor input{padding:0}.amount-edit-hint{position:absolute;left:calc(50% + var(--amount-width)/2 + 6px);top:50%;width:14px;height:14px;color:var(--accent);opacity:0;transform:translateY(-50%) translateX(-3px);transition:opacity 180ms ease,transform 180ms ease;pointer-events:none}.amount-editor:hover .amount-edit-hint,.amount-editor:focus-within .amount-edit-hint{opacity:.7;transform:translateY(-50%) translateX(0)}
.sidebar{overflow-y:auto}.sidebar-charts{margin-top:auto;padding:25px 0 4px;display:grid;gap:18px;flex-shrink:0}.sidebar-bottom{margin-top:0;flex-shrink:0}.sidebar-chart{display:block;width:100%;padding:10px 7px;text-align:left;border-radius:8px;min-width:0;color:var(--text)}.sidebar-chart:hover{background:var(--surface-raised)}.mini-heading{display:flex;justify-content:space-between;gap:5px;font-size:11px;font-weight:650;margin-bottom:8px}.sidebar-chart>strong{display:block;font-size:20px;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.sidebar-chart svg{display:block;width:100%;height:auto;max-height:58px;margin:9px 0 5px;overflow:visible}.mini-caption{display:block;font-size:9px;color:var(--muted);line-height:1.4}.mini-area{fill:var(--chart-mini-area)}.mini-line{fill:none;stroke:var(--accent);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.mini-end{fill:var(--accent);stroke:var(--surface);stroke-width:1.5}.mini-track{fill:var(--chart-track)}.mini-plan{fill:var(--chart-plan)}.mini-spent{fill:var(--accent)}.mini-spent.over{fill:var(--negative)}.mini-legend{display:flex;justify-content:space-between;gap:5px;font-size:9px;color:var(--muted)}.mini-legend strong{display:block;font-size:11px;font-weight:650;margin-top:3px;color:var(--text);font-variant-numeric:tabular-nums}.mini-legend strong.negative{color:var(--negative)}.mini-empty{display:flex;align-items:center;min-height:101px;font-size:11px;color:var(--muted)}@media(max-width:900px){.sidebar-chart{padding:8px 3px}.mini-heading{font-size:10px}.sidebar-chart>strong{font-size:18px}}@media(max-width:680px){.sidebar-charts{display:none}.sidebar{overflow:visible}}@media(hover:none){.amount-edit-hint{opacity:.4;transform:translateY(-50%)}}@media(prefers-reduced-motion:reduce){.amount-edit-hint{transition:none}}

/* Preferences stay accessible in the top bar at every screen size. */
.preferences-button{display:grid;place-items:center;width:36px;height:36px;border-radius:8px;color:var(--muted);flex-shrink:0}.preferences-button:hover{background:var(--surface-selected);color:var(--accent)}.preferences-button svg{width:21px;height:21px}.preferences-button circle{fill:var(--surface)}
dialog{background:var(--surface)}#preferences-dialog{width:450px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto}.preference-field{display:flex;flex-direction:column;gap:10px;margin-top:27px;font-size:13px}.preference-field strong{font-weight:600}.preference-field small{font-size:11px;line-height:1.7}.history-preference{display:flex;gap:10px}.history-preference input{width:85px}.history-preference select{flex:1;min-width:0}.history-preference input[hidden]{display:none}.range-switch{flex-wrap:wrap}.range-switch button{white-space:nowrap}




@media(max-width:680px){#preferences-dialog{padding:26px 20px}.top-controls{gap:8px}.preferences-button{width:32px}}

.preferences-button{display:flex;gap:7px;width:auto;padding:8px;font-size:11px}.preferences-button span{white-space:nowrap}@media(max-width:950px){.preferences-button span{display:none}}

/* Unassigned spending is a permanent first row, outside the sortable budgets. */
.unknown-budget{width:100%;text-align:left;color:inherit;background:var(--surface-subtle)}.unknown-budget:hover,.unknown-budget:focus-visible{background:var(--surface-selected)}.unknown-name{display:flex;align-items:center;gap:7px}.unknown-name .count{margin-left:0}.unknown-budget .spending>span{margin-bottom:0}.unknown-budget .amount-cell{text-align:center;font-size:13px}.unknown-action{font-size:12px;font-weight:600;color:var(--accent);white-space:nowrap}.unknown-budget:focus-visible{outline-offset:-3px}@media(max-width:680px){.unknown-action{font-size:11px}.unknown-budget .budget-name small{font-size:9px}}

/* Calendar tracks elapsed dates independently of the spending/goals amounts. */
.mini-budget-heading{align-items:center;justify-content:flex-start;gap:8px}.mini-month{font-size:10px;font-weight:750;padding:4px 5px;border-radius:5px;background:var(--surface-selected);color:var(--accent)}.mini-budget-heading>span:last-child{font-size:10px;line-height:1.4}.sidebar-chart .mini-budget-chart{max-height:none;margin:8px 0 4px}.mini-month-axis path{stroke:var(--chart-zero);stroke-width:1;fill:none}.mini-month-axis text{fill:var(--muted);font-size:9px}.mini-bookmark{fill:var(--today-marker)}.mini-bookmark-date{fill:var(--on-marker);font-size:10px;font-weight:750}.mini-today-label{fill:var(--today-marker);font-size:8px;font-weight:650}

/* BudgetClip wordmark and neutral dark surfaces. Green remains a semantic accent. */
.brand{font-size:25px;letter-spacing:-1px;white-space:nowrap;flex-shrink:0}.brand-mark{width:33px;height:36px;margin-right:9px;padding:0;letter-spacing:0;flex-shrink:0;border-radius:10px}.brand-mark svg{width:23px;height:23px}.workspace-label{line-height:1.7;letter-spacing:.9px;margin-top:34px}






@media(max-width:1200px) and (min-width:951px){.sidebar .brand{font-size:21px}.sidebar .brand-mark{width:29px;height:32px;margin-right:7px}}
@media(max-width:950px) and (min-width:681px){.sidebar .brand{font-size:18px;letter-spacing:-.7px}.sidebar .brand-mark{width:25px;height:29px;margin-right:6px}.sidebar .brand-mark svg{width:20px;height:20px}}
@media(max-width:680px){.sidebar .brand{font-size:20px}.sidebar .brand-mark{width:27px;height:30px}.sidebar .brand-mark svg{width:21px;height:21px}}
@media(max-width:380px){.sidebar{flex-wrap:wrap}.sidebar nav{width:100%;justify-content:space-between}.sidebar .nav-link{justify-content:center}}
/* The account menu stays in the top layer while page regions update in place. */
#user-menu{position:static;width:100%;max-width:none;padding:0;border:0;border-radius:0;box-shadow:none;background:none;color:var(--text)}
.user-menu-heading{padding:12px 12px 9px;font-size:9px;letter-spacing:1.5px;color:var(--muted)}
#user-menu button{display:flex;flex-direction:column;gap:4px;width:100%;text-align:left;padding:12px;border-radius:8px;color:var(--text)}
#user-menu button span{font-size:13px;font-weight:600}#user-menu button small{font-size:11px;color:var(--muted)}
#user-menu button:hover,#user-menu button:focus-visible{background:var(--surface-selected);outline:2px solid var(--focus);outline-offset:-2px}
.user-menu-button[aria-expanded="true"]{background:var(--surface-selected);color:var(--accent)}.user-menu-button .menu-chevron{display:block;font-size:14px}
[data-settings-section][hidden]{display:none}
#profile-dialog{width:450px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto}
.profile-identity{display:flex;align-items:center;gap:14px;margin:28px 0;padding:18px;background:var(--surface-subtle);border-radius:12px}.profile-identity>div{min-width:0}.profile-identity small,.localization-preview small{display:block;color:var(--muted);font-size:9px;letter-spacing:1.2px;margin-bottom:7px}.profile-identity strong{font-size:14px;overflow-wrap:anywhere}.profile-avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--surface-selected);color:var(--accent);flex-shrink:0;font-size:24px}.profile-actions{display:flex;flex-direction:column;gap:12px}.profile-actions a{display:block;text-align:center;text-decoration:none}.profile-help{font-size:12px;line-height:1.7;margin-top:20px}.localization-preview{margin-top:24px;padding:16px;background:var(--surface-subtle);border-radius:10px}.localization-preview strong{font-size:14px;font-weight:500}
@media(max-width:680px){#profile-dialog{padding:26px 20px}.user-menu-button{width:auto}}

.profile-avatar svg{width:22px;height:22px}

#profile-dialog .preference-field{margin-top:18px}#profile-dialog h3{font-size:16px;margin-bottom:0}#profile-dialog .profile-help{margin-top:8px}.show-passwords{display:flex;align-items:center;gap:8px;font-size:12px;margin:16px 0}.show-passwords input{width:auto}.mfa-field{margin-top:16px;font-size:12px}.mfa-field summary{cursor:pointer;color:var(--muted)}#password-status{font-size:13px;line-height:1.6;margin-top:20px}#profile-dialog .profile-identity{margin:20px 0}.detail-button{text-align:left;padding:0;font:inherit;color:var(--text);cursor:pointer}.detail-button:hover{text-decoration:underline;color:var(--accent)}.detail-button:focus-visible{outline:2px solid var(--focus);outline-offset:3px}#details-dialog{width:470px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto}.record-details{margin-top:26px}.record-details>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:16px;padding:14px 0;border-bottom:1px solid var(--border)}.record-details dt{font-size:12px;color:var(--muted)}.record-details dd{font-size:13px;margin:0;overflow-wrap:anywhere}#details-title{overflow-wrap:anywhere}

:root{--flow-0:#458dbe;--flow-1:#9674bf;--flow-2:#c89349;--flow-3:#4c9f99;--flow-4:#bd728f;--flow-5:#879a4b;--flow-6:#89939d;--flow-7:var(--positive)}
:root[data-theme="dark"]{--flow-0:#7cb3df;--flow-1:#b59ad9;--flow-2:#d9b172;--flow-3:#80c4bf;--flow-4:#dca0b4;--flow-5:#b0c27c;--flow-6:#a5aeb8}
.cashflow-range{display:flex;gap:18px;align-items:end;padding:22px;margin-bottom:24px;flex-wrap:wrap}.cashflow-range label{display:flex;flex-direction:column;gap:8px;font-size:11px;color:var(--muted);flex:1;min-width:140px}.cashflow-range input,.cashflow-range select{width:100%}.flow-panel{margin:24px 0}.flow-chart{padding:20px 26px 0}.flow-chart svg{width:100%;max-height:650px}.flow-tone-0{--flow-color:var(--flow-0)}.flow-tone-1{--flow-color:var(--flow-1)}.flow-tone-2{--flow-color:var(--flow-2)}.flow-tone-3{--flow-color:var(--flow-3)}.flow-tone-4{--flow-color:var(--flow-4)}.flow-tone-5{--flow-color:var(--flow-5)}.flow-tone-6{--flow-color:var(--flow-6)}.flow-tone-7{--flow-color:var(--flow-7)}.flow-ribbon{fill:var(--flow-color);opacity:.25;transition:opacity .15s}.flow-target{fill:var(--flow-color)}.flow-node{cursor:pointer;outline:none}.flow-node:hover .flow-ribbon,.flow-node:focus .flow-ribbon{opacity:.65}.flow-node:focus .flow-target{stroke:var(--focus);stroke-width:3}.flow-name{font-size:13px;fill:var(--text);font-weight:600}.flow-value{font-size:12px;fill:var(--muted)}.flow-source-value{fill:var(--text);font-size:19px;font-weight:600}.flow-income{fill:var(--chart-positive)}.flow-gap,.flow-spent{fill:var(--chart-negative)}.flow-value.negative{fill:var(--negative)}.flow-note{padding:12px 28px;color:var(--muted);font-size:12px;line-height:1.6}.flow-trend-panel{margin-bottom:24px}.flow-trend-scroll{overflow-x:auto;padding:15px 22px}.flow-trend-scroll svg{width:100%;max-height:220px}.flow-trend-scroll text{fill:var(--muted);font-size:10px}.flow-trend-scroll g:focus{outline:2px solid var(--focus)}.flow-legend{display:flex;gap:15px;font-size:11px;color:var(--muted)}.flow-legend span:before{content:'';display:inline-block;width:8px;height:8px;background:var(--chart-positive);margin-right:6px;border-radius:2px}.flow-legend span+span:before{background:var(--chart-negative)}.flow-tables{display:grid;grid-template-columns:1fr 1.2fr;gap:24px;align-items:start}.flow-budget-name{display:flex;align-items:center;gap:10px}.flow-budget-name .budget-icon{width:27px;height:27px}.flow-tables tfoot th{border-top:1px solid var(--border);color:var(--text);padding:18px;font-size:12px}.flow-mobile{display:none}
@media(max-width:950px){.flow-tables{grid-template-columns:1fr}}
@media(max-width:680px){.sidebar nav{flex-wrap:wrap}.flow-chart{display:none}.flow-mobile{display:block;padding:20px}.flow-mobile>div{display:grid;grid-template-columns:1fr auto;gap:8px;margin-bottom:20px;font-size:12px}.flow-mobile progress{grid-column:1/-1;width:100%;height:8px;accent-color:var(--flow-color)}.flow-mobile progress::-webkit-progress-value{background:var(--flow-color)}.flow-mobile progress::-moz-progress-bar{background:var(--flow-color)}.cashflow-range{gap:12px;padding:18px}.cashflow-range label:first-child{flex-basis:100%}.cashflow-range button{width:100%}.flow-legend{flex-wrap:wrap}.flow-tables td{white-space:normal}}

.flow-tables table{min-width:0;table-layout:auto}.flow-tables th:first-child,.flow-tables td:first-child{width:auto}.flow-tables td:not(:first-child),.flow-tables th:not(:first-child){white-space:nowrap}.flow-tables .panel{min-width:0}.sidebar-bottom .text-button{display:block}.main:has(#cashflow-range) .page-heading{min-height:100px}
@media(max-width:680px){.sidebar{flex-wrap:wrap;gap:12px}.sidebar nav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;margin:0}.sidebar .nav-link{justify-content:center;width:auto}.flow-tables th,.flow-tables td{padding:14px 10px}.flow-tables th:first-child,.flow-tables td:first-child{padding-left:14px}.flow-tables th:last-child,.flow-tables td:last-child{padding-right:14px}.flow-tables td{font-size:11px}.flow-budget-name{gap:6px}.main:has(#cashflow-range) .page-heading{min-height:100px}}

.flow-trend-scroll svg{min-width:0;height:auto;max-height:none;display:block}.flow-trend-long svg{min-width:900px}

.accounts-page .page-heading{min-height:100px}.account-asof{color:var(--muted);font-size:11px}.account-tools{display:flex;align-items:end;gap:16px;flex-wrap:wrap;padding:24px;border-bottom:1px solid var(--border)}.account-tools>.search{flex:1;min-width:180px}.account-tools>label:not(.search){display:flex;flex-direction:column;gap:7px;font-size:10px;color:var(--muted)}.account-tools select{font-size:12px}.account-table-scroll{overflow:auto}.account-table{min-width:680px}.account-table th:first-child,.account-table td:first-child{width:auto}.account-table th button{font-size:inherit;letter-spacing:inherit;padding:6px 0;text-align:left}.account-table th[aria-sort=ascending],.account-table th[aria-sort=descending]{color:var(--accent)}.account-name{display:flex;align-items:center;gap:12px;padding:0;text-align:left}.account-name strong{font-size:13px}.account-name:hover strong{color:var(--accent);text-decoration:underline}.account-name .budget-icon{flex-shrink:0}.account-balance{font-variant-numeric:tabular-nums;white-space:nowrap}.account-inclusion{display:inline-block;border-radius:5px;background:var(--surface-subtle);padding:5px 8px;color:var(--muted);font-size:10px}.account-inclusion.included{background:var(--positive-surface);color:var(--positive)}#account-dialog{width:680px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto}#account-title{overflow-wrap:anywhere}.account-detail-balance{font-size:30px;font-weight:600;margin:24px 0 10px}.account-detail-balance small{font-weight:400;font-size:12px;margin-top:6px}.account-activity-title{margin-top:30px;font-size:16px}.account-activity-help{font-size:12px;margin:10px 0 20px;line-height:1.7}.account-activity-list article{display:flex;justify-content:space-between;gap:22px;padding:17px 0;border-bottom:1px solid var(--border)}.account-activity-list article>div{min-width:0;overflow-wrap:anywhere}.account-activity-list strong{font-size:13px}.account-activity-list article>strong{text-align:right;white-space:nowrap}.account-activity-list p{font-size:11px;color:var(--muted);margin-top:6px}.account-activity-error{font-size:13px;color:var(--negative);padding:16px 0}.account-activity-error button,#more-account-activity{margin-top:15px}
@media(max-width:680px){.sidebar nav{grid-template-columns:repeat(5,minmax(0,1fr))}.sidebar .nav-link{padding:9px 2px;font-size:9px}.accounts-page .page-heading{align-items:start;flex-direction:column;gap:12px}.account-tools{padding:16px;gap:12px}.account-tools>.search{flex-basis:100%}.account-tools>label:not(.search){flex:1}.account-tools select{width:100%;min-width:0}.account-table{min-width:0;table-layout:fixed}.account-table th:nth-child(2),.account-table td:nth-child(2),.account-table th:nth-child(4),.account-table td:nth-child(4),.account-table th:nth-child(5),.account-table td:nth-child(5){display:none}.account-table th:first-child,.account-table td:first-child{width:56%;padding-left:16px;padding-right:4px}.account-table th:nth-child(3),.account-table td:nth-child(3){text-align:right;padding-right:16px;padding-left:4px}.account-name{gap:7px}.account-name strong{font-size:12px;overflow-wrap:anywhere}.account-name .budget-icon{width:25px;height:25px}.account-balance strong{font-size:12px}.account-balance small{white-space:normal;font-size:9px}#account-dialog{padding:24px 18px}.account-activity-list article{gap:12px}}

.account-table th{font-size:11px;letter-spacing:.3px}.account-table tbody tr:hover,.account-table tbody tr:focus-within{background:var(--surface-subtle)}

.account-labels{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}.account-labels>span{display:inline-block;font-size:10px;font-weight:400;padding:3px 6px;border-radius:4px;background:var(--surface-selected);color:var(--accent);overflow-wrap:anywhere}.account-edit{margin:22px 0;border:1px solid var(--border);border-radius:8px;padding:14px}.account-edit summary{cursor:pointer;font-size:13px;font-weight:600}.account-edit-fields{padding-top:18px}.account-edit-fields>label{display:flex;flex-direction:column;gap:8px;font-size:12px;margin-bottom:14px}.account-edit-fields input{width:100%;min-width:0}.account-icon-picker{border:0;padding:0;margin:20px 0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.account-icon-picker legend{font-size:12px;margin-bottom:10px}.account-icon-picker button{display:flex;align-items:center;flex-direction:column;gap:6px;border:1px solid var(--border);border-radius:8px;padding:10px 4px;font-size:10px}.account-icon-picker button[aria-pressed=true]{background:var(--surface-selected);color:var(--accent);border-color:var(--accent)}.account-icon-picker svg{width:24px;height:24px}.account-edit-actions{display:flex;justify-content:end;gap:12px;margin-top:16px}#account-edit-status{font-size:12px;margin-top:12px;line-height:1.6}@media(max-width:680px){.account-icon-picker{grid-template-columns:repeat(3,minmax(0,1fr))}.account-labels>span{font-size:9px}.account-edit{padding:12px}}

.nav-icon svg{width:22px;height:22px;display:block}.subscriptions-page .page-heading{min-height:100px}.subscription-table{min-width:600px;table-layout:auto}.subscription-table th:first-child,.subscription-table td:first-child{width:auto}.subscription-table th{font-size:11px;letter-spacing:.3px}.subscription-table th button{font:inherit;padding:0}.subscription-table td:not(:first-child){white-space:nowrap}.subscription-table .account-name{max-width:100%}.subscription-table .account-name strong{overflow-wrap:anywhere}.subscription-table tbody tr:hover,.subscription-table tbody tr:focus-within{background:var(--surface-subtle)}#subscription-dialog{width:680px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);overflow:auto}#subscription-title{overflow-wrap:anywhere}.subscription-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}.subscription-form-grid label,#subscription-linker label{display:flex;flex-direction:column;gap:8px;font-size:12px;min-width:0}.subscription-form-grid input,.subscription-form-grid select{width:100%;min-width:0}.subscription-form-grid .full{grid-column:1/-1}.subscription-form-grid .subscription-active{flex-direction:row;align-items:center}.subscription-active input{width:16px}#subscription-save-status,#subscription-link-status{font-size:12px;line-height:1.6;margin-top:18px}#subscription-history{margin-top:28px;padding-top:24px;border-top:1px solid var(--border);font-size:12px}#subscription-history:empty{display:none}#subscription-history h3{font-size:15px;margin-bottom:14px}.subscription-rules{margin:24px 0}.subscription-rules p{line-height:1.8;color:var(--muted)}#subscription-linker select{width:100%;min-width:0}#subscription-linker>button{margin:12px 0}.subscription-history-error{color:var(--negative);line-height:1.8}.subscription-history-error button{display:block;margin-top:12px}
@media(max-width:680px){.sidebar nav{grid-template-columns:repeat(3,minmax(0,1fr))}.sidebar .nav-link{font-size:11px;padding:10px 4px}.subscriptions-page .page-heading{align-items:start;flex-direction:column;gap:14px}.subscription-table{min-width:0;table-layout:fixed}.subscription-table th:nth-child(2),.subscription-table td:nth-child(2){display:none}.subscription-table th:first-child,.subscription-table td:first-child{width:50%;padding:14px 8px 14px 12px}.subscription-table th,.subscription-table td{padding:14px 6px;font-size:10px;white-space:normal!important}.subscription-table th:last-child,.subscription-table td:last-child{width:22%}.subscription-table .account-name{gap:6px}.subscription-table .account-name strong{font-size:12px}.subscription-table .account-name small{font-size:10px}.subscription-table .budget-icon{display:flex;width:28px;height:28px;min-width:28px}#subscription-dialog{padding:24px 18px}.subscription-form-grid{gap:14px 10px}.subscription-form-grid input,.subscription-form-grid select{font-size:12px}}

.subscription-brand-icon{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;color:var(--text)}.subscription-brand-icon svg,.subscription-brand-icon img{display:block;width:24px;height:24px;object-fit:contain}.subscription-icon-editor{border:1px solid var(--border);border-radius:8px;padding:10px 12px}.subscription-icon-editor summary{display:flex;gap:10px;align-items:center;cursor:pointer;font-size:12px}.subscription-icon-editor summary>.muted{margin-left:auto}.subscription-icon-editor .account-icon-picker{margin-bottom:10px}.subscription-icon-editor .budget-icon{width:32px;height:32px;min-width:32px}.subscription-icon-editor .account-icon-picker button{min-width:0}.subscription-icon-editor .account-icon-picker button>span:last-child{overflow-wrap:anywhere}

/* Reserve the sync track so status updates do not shift the top bar. */
.sync-progress-slot{height:4px;width:100%}
.sync-progress{height:4px;overflow:hidden;border-radius:0;background:var(--border)}
.sync-progress>span{display:block;width:35%;height:100%;border-radius:inherit;background:var(--accent);animation:sync-track 1.5s ease-in-out infinite}
.sync-progress.complete>span{width:100%;animation:none;background:var(--positive)}
@keyframes sync-track{from{transform:translateX(-105%)}to{transform:translateX(290%)}}
@media(prefers-reduced-motion:reduce){.sync-progress>span{animation:none;transform:none;width:100%;opacity:.45}.sync-progress.complete>span{opacity:1}}

.budget-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.budget-edit-button{font-size:11px;margin-top:5px}.budget-active,.budget-delete label{display:flex;align-items:center;gap:8px}.budget-delete{margin-top:24px;border-top:1px solid var(--border);padding-top:18px}.budget-delete summary,.danger{color:var(--negative)}.budget-delete p,.budget-delete label{font-size:13px;line-height:1.6}.budget-delete .preference-field{display:flex;align-items:stretch}#budget-editor-dialog{width:510px;max-width:calc(100vw - 32px)}#budget-editor-fields select,#budget-editor-fields input:not([type=checkbox]){width:100%;min-width:0}.budget-toolbar .scope{margin:0}@media(max-width:680px){.budget-toolbar{justify-content:flex-start}.budget-toolbar .scope{width:100%}}

#split-dialog{width:660px;max-width:calc(100vw - 32px);max-height:calc(100dvh - 32px);overflow:auto}.split-identity{padding:16px;background:var(--surface-selected);border-radius:10px;margin:16px 0}.split-identity strong,.split-identity span,.split-identity small{display:block;overflow-wrap:anywhere}.split-identity p{font-size:12px;overflow-wrap:anywhere}.split-identity span,.split-identity small{font-size:12px;color:var(--muted);margin-top:6px}.split-part{display:grid;grid-template-columns:44px minmax(0,1fr) 105px 32px;align-items:center;gap:10px;margin:12px 0}.split-part input,.split-part select{width:100%;min-width:0}.split-part-label{font-size:11px;color:var(--muted)}.split-link{display:block;font-size:12px;margin-top:8px}#split-total{font-weight:650;font-size:13px}#split-status{font-size:13px}@media(max-width:680px){.split-part{grid-template-columns:minmax(0,1fr) 90px 28px;gap:8px}.split-part-label{grid-column:1 / -1}.split-part select{font-size:12px}#split-dialog{padding:24px 18px}}

/* Rollover sits beside the amount; the pencil keeps its own space on the right. */
.amount-cell{position:relative;font-size:12px}.rollover-indicator{position:absolute;z-index:1;right:calc(50% + var(--amount-width)/2 + 3px);top:5px;display:grid;place-items:center;width:24px;height:24px;padding:4px;border-radius:6px;color:var(--accent)}.rollover-indicator svg{width:16px;height:16px}.rollover-indicator:hover,.rollover-indicator:focus-visible{background:var(--surface-selected)}

/* Monthly plan: three totals share a card; keep the overview footprint stable. */
.plan-stats{grid-template-columns:repeat(3,minmax(0,1fr))}.plan-stats .plan-summary{display:flex;flex-direction:column;justify-content:space-between}.plan-title{text-align:center;font-size:clamp(22px,2vw,28px);line-height:1.15;letter-spacing:-.7px;font-weight:600}.plan-chart{margin:0;min-width:0}.plan-bar-labels{display:flex;justify-content:space-between;gap:16px}.plan-bar-labels>div{min-width:0}.plan-bar-labels>div:last-child{text-align:right}.plan-bar-labels span{display:block;line-height:1.2;font-size:12px;color:var(--text-secondary)}.plan-bar-labels strong{font-size:13px;line-height:1.2;letter-spacing:0;margin:2px 0 0;white-space:nowrap}.plan-bar{display:block;width:100%;height:16px;margin-top:8px;border-radius:0;overflow:hidden}.plan-bar-remaining{fill:var(--chart-track)}.plan-bar-spent{fill:var(--accent)}.plan-bar.is-over .plan-bar-spent{fill:var(--negative)}.plan-bar-total{text-align:center;margin:0 0 8px}.plan-bar-total strong{font-size:clamp(22px,2vw,28px);line-height:1.15;letter-spacing:-.7px;margin:0;color:var(--text);font-weight:600}.plan-overspent{display:flex;flex-direction:column;align-items:flex-start}.plan-adjust{font-size:11px;font-weight:600;color:var(--text);text-align:left;line-height:1.5;margin-top:auto;padding:12px 0 0}.plan-adjust:hover{text-decoration:underline}.plan-adjust span{margin-left:4px}.budget-adjust-target{background:var(--surface-selected)}#spending-budgets:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(max-width:950px){.plan-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.plan-title,.plan-bar-total strong{font-size:25px}}
@media(max-width:680px){.plan-stats article{padding:12px}.plan-title,.plan-bar-total strong{font-size:20px}.plan-bar-labels{gap:6px}.plan-bar-labels strong{font-size:11px}.plan-bar-labels span{font-size:10px}.plan-bar{height:14px}.plan-adjust{font-size:10px}}
/* Savings goals */
.piggy-panel{padding-bottom:24px}.piggy-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,310px),1fr));gap:20px;padding:18px 24px 0}.piggy-card{border:1px solid var(--border);border-radius:16px;padding:22px;background:var(--surface-subtle);min-width:0;display:flex;flex-direction:column;gap:14px}.piggy-card-heading{display:flex;align-items:center;gap:12px}.piggy-card-heading>div{flex:1;min-width:0}.piggy-card h2{font-size:18px;margin:0 0 5px;overflow-wrap:anywhere}.piggy-card small,.piggy-amount span,.piggy-progress-label{color:var(--muted);font-size:12px}.piggy-amount{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}.piggy-amount strong{font-size:28px}.piggy-card progress{width:100%;height:9px;accent-color:var(--accent)}.piggy-progress-label,.piggy-accounts li{display:flex;justify-content:space-between;gap:10px}.piggy-progress-label{margin-top:-8px}.piggy-accounts{padding:12px 0 0;margin:0;list-style:none;border-top:1px solid var(--border);font-size:13px}.piggy-accounts li{margin:6px 0}.piggy-accounts span{overflow-wrap:anywhere}.piggy-accounts strong{white-space:nowrap}.piggy-actions{display:flex;gap:10px;margin-top:auto}.piggy-actions button{flex:1}.piggy-card .footnote{margin:0}.piggy-page .page-heading{gap:16px}#piggy-fields .subscription-form-grid input{min-width:0;width:100%}#piggy-save-status{color:var(--text-secondary)}
@media(max-width:650px){.piggy-grid{padding:12px 12px 0;gap:12px}.piggy-card{padding:18px}.piggy-page .page-heading{align-items:flex-start;flex-wrap:wrap}.piggy-amount strong{font-size:25px}}

.account-reporting{border:1px solid var(--border);border-radius:8px;padding:14px;margin:18px 0}.account-reporting legend{font-size:12px;font-weight:600;padding:0 6px}.account-reporting label{display:flex;align-items:center;gap:9px;font-size:13px;margin:8px 0}.account-reporting input[type=checkbox]{width:17px;height:17px;flex:0 0 17px;accent-color:var(--accent)}.account-reporting small{display:block;color:var(--muted);line-height:1.6;margin:0 0 15px 26px}.account-reporting small:last-child{margin-bottom:0}.account-budget-excluded{color:var(--muted)!important;font-style:italic}.report-scope-note{line-height:1.7}.report-scope-note button{font-size:inherit}

/* Recorded income and deposit classifications. */
.income-budget-card{display:flex;flex-direction:column;align-items:flex-start}.income-budget-card small{line-height:1.5}.income-room{font-size:12px;font-weight:600;margin-top:10px}.income-stats small{line-height:1.6}.income-deposits .panel-heading p{line-height:1.6}.income-deposits th:first-child,.income-deposits td:first-child{width:auto;white-space:nowrap}.income-deposits td:nth-child(2){min-width:180px}.income-deposits td:last-child{min-width:190px}.income-deposits select{max-width:230px}.income-deposits .transaction-scroll{overflow-x:auto}.income-deposits th button{font-size:inherit;letter-spacing:inherit;color:inherit;padding:4px 0}.income-deposits th button:hover{color:var(--accent)}.income-deposits .merchant{text-align:left;padding:0;border:0;color:var(--text)}.income-deposits th:nth-child(4){text-align:right}.income-deposits .text-button{margin-top:0;white-space:nowrap}.income-existing-category{overflow-wrap:anywhere;max-width:230px}.income-assignment{border:1px solid var(--border);border-radius:10px;padding:18px;background:var(--surface-selected);overflow-wrap:anywhere}.income-assignment>strong{display:block;font-size:17px}.income-assignment>b{display:block;font-size:24px;margin-top:8px}.income-assignment p{font-size:12px}.income-assignment p:last-child{padding-top:12px;border-top:1px solid var(--border)}
@media(max-width:680px){.income-room{font-size:10px}.income-deposits table{min-width:790px}.income-deposits .transaction-tools .search{min-width:0}.income-deposits .transaction-tools select{max-width:220px}}
@media(max-width:680px){.income-deposits table{display:block;min-width:0}.income-deposits thead,.income-deposits tbody{display:block}.income-deposits thead{padding:0 16px;background:var(--surface-subtle)}.income-deposits thead tr{display:flex;gap:18px;overflow-x:auto}.income-deposits thead th{flex-shrink:0;padding:12px 0!important;white-space:nowrap;border:0}.income-deposits tbody tr{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:18px 16px;border-bottom:1px solid var(--border)}.income-deposits tbody tr:last-child{border-bottom:0}.income-deposits tbody td{padding:0!important;border:0;min-width:0;max-width:none}.income-deposits td:first-child{grid-row:2;grid-column:1/-1;font-size:11px;color:var(--muted)}.income-deposits td:nth-child(2){grid-row:1;grid-column:1;min-width:0}.income-deposits td:nth-child(3){grid-row:3;grid-column:1/-1}.income-deposits td:nth-child(3)::before{content:'Into ';color:var(--muted)}.income-deposits td:nth-child(4){grid-row:1;grid-column:2}.income-deposits td:last-child{grid-row:4;grid-column:1/-1;min-width:0;margin-top:3px}.income-deposits select{max-width:none;width:100%;padding:10px}.income-deposits .merchant,.income-deposits .description{max-width:100%}.income-deposits .merchant{white-space:normal;overflow-wrap:anywhere}.income-deposits .description{margin-top:5px}}

/* Recurring income is derived from deposits, with independently chosen matching. */
.income-plan-panel{margin-bottom:24px}.income-plan-panel .footnote{padding:0 24px 16px}.income-source-list{padding:0 24px}.income-source{display:flex;justify-content:space-between;gap:20px;padding:18px 0;border-top:1px solid var(--border)}.income-source h3{font-size:15px}.income-source p{font-size:12px;color:var(--text-secondary);margin:8px 0}.income-source>div:last-child{text-align:right}.income-source strong{font-size:22px;white-space:nowrap}.income-source .text-button{display:block}.income-schedule-link{display:block;margin-top:8px!important;font-size:11px}.income-options{margin-top:20px}.income-options>label{display:flex;flex-direction:column;gap:8px}.income-options p,.income-options small{font-size:12px;line-height:1.6}.income-options fieldset{border:1px solid var(--border);border-radius:8px;padding:16px;margin:20px 0 0;min-width:0}.income-options legend{font-weight:600;font-size:14px}.income-check{display:flex;align-items:flex-start;gap:8px;margin:14px 0;font-size:13px;line-height:1.5}.income-check input{flex-shrink:0}.income-options details{margin-top:16px;font-size:12px}.income-match-list{list-style:none;padding:0;max-height:220px;overflow:auto}.income-match-list li{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid var(--border)}.income-match-list span{min-width:0;overflow-wrap:anywhere}.income-match-list strong{white-space:nowrap}@media(max-width:680px){.income-source{flex-direction:column;gap:8px}.income-source>div:last-child{text-align:left}.income-source-list{padding:0 16px}.income-plan-panel .footnote{padding:0 16px 16px}}

/* Received income fills against the deposit-derived monthly projection. */
.income-progress-card{display:flex;flex-direction:column;align-items:stretch}.income-progress{width:100%;min-width:0}.income-progress-caption{display:flex;justify-content:space-between;align-items:baseline;gap:8px;font-size:11px;color:var(--text-secondary);margin-bottom:8px}.income-projected{font-weight:600;white-space:nowrap;color:var(--text)}.income-progress progress{height:9px}.income-progress small{font-size:10px;line-height:1.3;margin-top:7px}.income-progress-card .plan-adjust{padding-top:10px}@media(max-width:680px){.income-progress-caption{font-size:10px;gap:5px}.income-progress small{font-size:9px}.income-progress-card>strong{font-size:23px}}

/* One stable overview card leads to evidence and actions for financial alerts. */
.attention-card{display:flex;flex-direction:column;gap:10px}.stats .attention-card.warning{background:var(--warning-surface);border-color:var(--warning-border)}.stats .attention-card.urgent{background:var(--negative-surface);border-color:var(--negative-border)}.attention-card-heading{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:9px;letter-spacing:1.2px;font-weight:600;color:var(--text-secondary)}.attention-card-heading>b{font-size:11px;letter-spacing:0;padding:2px 6px;border-radius:5px;background:var(--surface);color:var(--text)}.attention-preview{display:flex;flex-direction:column;gap:4px}.attention-preview button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;text-align:left;padding:5px 0;font-size:12px}.attention-preview button>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.attention-preview button>strong{font-size:12px;letter-spacing:0;margin:0;white-space:nowrap}.attention-preview button:hover>span{text-decoration:underline}.attention-card .plan-adjust{padding-top:0}.attention-empty>strong{font-size:21px;margin:10px 0}.attention-empty small{line-height:1.4}#attention-dialog{width:640px;max-width:calc(100vw - 24px)}#attention-content>.muted{font-size:12px;line-height:1.6}.attention-detail{margin:14px 0;border:1px solid var(--border);border-radius:9px;padding:14px}.attention-detail>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:600;cursor:pointer;font-size:14px}.attention-detail>summary::before{content:'▸';color:var(--muted)}.attention-detail[open]>summary::before{content:'▾'}.attention-detail>summary>span{flex:1}.attention-detail.urgent>summary{color:var(--negative)}.attention-detail p,.attention-detail>small{font-size:12px;line-height:1.6}.attention-details-list{list-style:none;padding:0;margin:10px 0 0}.attention-details-list li{border-top:1px solid var(--border)}.attention-details-list button{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 0;width:100%;text-align:left;font-size:13px}.attention-details-list button:hover>span{text-decoration:underline}.attention-details-list button>span{min-width:0;overflow-wrap:anywhere}.attention-details-list button>b{white-space:nowrap}.attention-details-list small{font-size:11px;margin-top:5px}.attention-check-error{font-size:12px;color:var(--warning-text);background:var(--warning-surface);padding:12px;border-radius:6px}@media(max-width:680px){.attention-card{gap:7px}.attention-card-heading{font-size:8px;letter-spacing:.6px}.attention-preview button,.attention-preview button>strong{font-size:10px;gap:5px}.attention-empty>strong{font-size:17px}.attention-detail{padding:12px}.attention-details-list button{gap:10px;font-size:12px}.attention-detail>summary{font-size:13px}}

/* Shared titles stay scoped to the three monthly budget overview cards. */
.plan-stats article{padding:16px 20px}
.plan-stats .attention-card{gap:6px}
.plan-stats .attention-preview{gap:2px}
.plan-stats .attention-preview button{padding:4px 0}
.overview-card-title{display:flex;align-items:center;justify-content:center;gap:9px;min-width:0;font-size:clamp(22px,2vw,28px);line-height:1.15;letter-spacing:-.7px;font-weight:600;text-align:center;color:var(--text)}
.overview-icon{width:32px;height:32px;flex:0 0 32px;color:var(--text-secondary)}
.attention-card-heading{justify-content:center;letter-spacing:0}
.attention-card-heading>b{flex-shrink:0}
.income-budget-card>strong{margin:7px 0}
@media(max-width:1100px) and (min-width:951px){.plan-stats article{padding:16px}.overview-icon{width:26px;height:26px;flex-basis:26px}.overview-card-title{gap:6px}.attention-card{gap:6px}}
@media(max-width:950px){.overview-card-title{font-size:25px}}
@media(max-width:680px){.plan-stats article{padding:12px}.overview-card-title{font-size:20px;gap:6px;min-height:46px}.overview-icon{width:24px;height:24px;flex-basis:24px}.income-budget-card>strong{margin:4px 0 6px}.income-budget-card .plan-adjust{padding-top:6px}.attention-card-heading{gap:4px}.attention-card-heading>b{font-size:10px;padding:2px 4px}}

.plan-bar-goals{fill:var(--chart-goals)}
.plan-goal-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:2px 8px}
.plan-goal-footer .text-button{margin:0;color:var(--accent);font-size:11px}
.income-goal-link{display:block;color:var(--accent);line-height:1.5;margin-top:8px}
.goal-source-totals{display:flex;justify-content:space-between;gap:16px;margin:20px 0;font-size:12px;color:var(--muted)}
.goal-source-totals strong{display:block;font-size:19px;color:var(--text);margin-top:4px}
.goal-funding-note{color:var(--muted)}
#goal-funding-fields select,#goal-funding-fields input{width:100%;min-width:0}
#goal-funding-status{color:var(--text-secondary)}
.goal-contributions{font-size:12px;border-top:1px solid var(--border);padding-top:14px}
.goal-contributions summary{cursor:pointer;color:var(--text-secondary)}
.goal-contributions ul{list-style:none;padding:0;margin:10px 0 0}
.goal-contributions li{display:flex;align-items:center;flex-wrap:wrap;gap:8px;border-top:1px solid var(--border);padding:10px 0}
.goal-contributions li>span{flex:1;min-width:120px}
.goal-contributions li>b{white-space:nowrap}
.goal-contributions .text-button{margin:0;color:var(--accent)}
@media(max-width:680px){.plan-goal-footer{gap:0}.plan-goal-footer .text-button{font-size:9px}.goal-source-totals{gap:8px}.goal-source-totals strong{font-size:17px}.income-goal-link{font-size:10px}}

/* The sidebar shares the main Monthly Budget calculation and stacked bar. */
.mini-monthly-budget .mini-budget-heading{justify-content:center;gap:6px}
.mini-budget-heading .overview-icon{width:17px;height:17px;flex-basis:17px;margin:0}
.sidebar-chart .mini-budget-total{text-align:center;font-size:19px;margin:0 0 12px;overflow-wrap:anywhere}
.mini-budget-labels{display:flex;justify-content:space-between;gap:8px;font-size:9px;color:var(--text-secondary)}
.mini-budget-labels>span{min-width:0}.mini-budget-labels>span:last-child{text-align:right}
.mini-budget-labels strong{display:block;font-size:11px;font-weight:600;margin-top:2px;font-variant-numeric:tabular-nums;color:var(--text);overflow-wrap:anywhere}
.mini-budget-labels strong.positive{color:var(--positive)}.mini-budget-labels strong.negative{color:var(--negative)}
.sidebar-chart .mini-plan-bar{height:12px;max-height:none;margin:7px 0 0;overflow:hidden}
.mini-budget-summary{font-size:9px}
.mini-budget-period{display:flex;align-items:center;gap:7px;margin-top:12px}
.sidebar-chart .mini-calendar{max-height:none;margin:0 0 5px}
.mini-date-progress{fill:none;stroke:var(--today-marker);stroke-width:1.5}

/* Calendar colours are palette tokens, independent from spending progress. */
:root{--calendar-today-ink:#b2aff4;--calendar-today-border:#b2aff4;--calendar-income-ink:var(--accent);--calendar-income-soft:color-mix(in srgb,var(--accent) 10%,var(--surface));--calendar-income-strong:color-mix(in srgb,var(--accent) 24%,var(--surface));--calendar-payment-ink:#536b86;--calendar-payment-soft:color-mix(in srgb,var(--calendar-payment-ink) 10%,var(--surface));--calendar-payment-strong:color-mix(in srgb,var(--calendar-payment-ink) 24%,var(--surface))}
[data-theme="dark"]{--calendar-today-ink:#d2cffb;--calendar-today-border:#d2cffb;--calendar-payment-ink:#aebfd5;--calendar-income-soft:color-mix(in srgb,var(--accent) 12%,var(--surface));--calendar-income-strong:color-mix(in srgb,var(--accent) 28%,var(--surface));--calendar-payment-soft:color-mix(in srgb,var(--calendar-payment-ink) 12%,var(--surface));--calendar-payment-strong:color-mix(in srgb,var(--calendar-payment-ink) 28%,var(--surface))}
.budget-date-line{--date-badge:clamp(25px,var(--date-position),calc(100% - 25px));height:44px;position:relative;font-size:9px;color:var(--muted);width:100%}
.budget-date-axis{position:absolute;inset:0 0 auto;height:5px;border-top:1px solid var(--chart-zero);border-left:1px solid var(--chart-zero);border-right:1px solid var(--chart-zero)}
.budget-date-first,.budget-date-last{position:absolute;top:12px;line-height:12px}.budget-date-first{left:0}.budget-date-last{right:0}
.budget-date-elapsed{position:absolute;top:0;left:0;width:var(--date-position);height:1.5px;background:var(--today-marker)}
.budget-date-flag{position:absolute;inset:0;background:var(--today-marker);clip-path:polygon(var(--date-position) 3px,calc(var(--date-badge) + 11px) 11px,calc(var(--date-badge) + 11px) 28px,calc(var(--date-badge) - 11px) 28px,calc(var(--date-badge) - 11px) 11px)}
.budget-date-number,.budget-date-today{position:absolute;left:var(--date-badge);transform:translateX(-50%);line-height:12px;white-space:nowrap}
.budget-date-number{top:13px;color:var(--on-marker);font-size:10px;font-weight:750}.budget-date-today{top:30px;color:var(--today-marker);font-size:8px;font-weight:650}
.planning-page .stats article{min-height:260px}.planning-page .page-heading{min-height:100px}.planning-page .page-heading>div{min-width:0}
.overview-with-calendar{display:grid;grid-template-columns:minmax(0,1fr) 260px;gap:16px;align-items:start;margin-bottom:28px}.overview-with-calendar>.stats{margin-bottom:0}.payment-calendar{width:260px;align-self:start;border:1px solid var(--border);border-radius:11px;background:var(--surface);padding:10px 12px}
.payment-calendar .month-picker{height:32px;border:0;background:transparent;justify-content:space-between;width:100%;margin-bottom:6px}.payment-calendar .month-picker>button{padding:0 8px}.payment-calendar .month-picker label{min-width:0;flex:1;font-size:12px}.payment-calendar .month-picker input{inset:-6px 0}
.payment-weekdays,.payment-days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px}.payment-weekdays{font-size:9px;color:var(--muted);text-align:center;margin:4px 0 6px}
.payment-day,.payment-day-empty{height:25px;min-width:0}.payment-day{position:relative;border:1px solid transparent;border-radius:6px;padding:1px 0 6px;font-size:11px;font-variant-numeric:tabular-nums;line-height:17px;color:var(--text-secondary);background:transparent}
.payment-day.has-income{background:var(--calendar-income-soft);color:var(--calendar-income-ink)}.payment-day.has-payment{background:var(--calendar-payment-soft);color:var(--calendar-payment-ink)}
.payment-day.has-income.is-past{background:var(--calendar-income-strong)}.payment-day.has-payment.is-past{background:var(--calendar-payment-strong)}
.payment-day.has-income.has-payment{background:linear-gradient(135deg,var(--calendar-income-soft) 50%,var(--calendar-payment-soft) 50%);color:var(--text)}.payment-day.has-income.has-payment.is-past{background:linear-gradient(135deg,var(--calendar-income-strong) 50%,var(--calendar-payment-strong) 50%)}
.payment-day.is-today{border:2px solid var(--calendar-today-border);padding-top:0;padding-bottom:5px;font-weight:750}.payment-day.is-today>span:first-child{color:var(--calendar-today-ink)}.payment-day:hover{box-shadow:inset 0 0 0 1px var(--muted)}.payment-day:focus-visible{outline:2px solid var(--today-marker);outline-offset:1px}
.payment-day-dots{position:absolute;bottom:3px;left:0;right:0;display:flex;justify-content:center;gap:2px}.income-dot,.payment-dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--calendar-income-ink)}.payment-dot{background:var(--calendar-payment-ink)}
.calendar-warning{display:block;color:var(--negative);font-size:10px;margin-top:7px;text-align:center}
#calendar-dialog{width:550px;max-width:calc(100vw - 24px)}#calendar-events{margin-top:22px}.calendar-event{display:flex;align-items:center;gap:10px;padding:14px 0;border-bottom:1px solid var(--border)}.calendar-event>div{min-width:0;flex:1;overflow-wrap:anywhere}.calendar-event strong{font-size:14px}.calendar-event p,#calendar-help,.calendar-empty{font-size:12px;line-height:1.7;color:var(--muted)}.calendar-event>b{font-size:13px;text-align:right;max-width:40%;overflow-wrap:anywhere}.calendar-event-direction{display:grid;place-items:center;width:26px;height:26px;flex-shrink:0;border-radius:8px;background:var(--calendar-income-soft);color:var(--calendar-income-ink)}.calendar-event.payment .calendar-event-direction{background:var(--calendar-payment-soft);color:var(--calendar-payment-ink)}#calendar-help{margin-top:18px}
@media(max-width:1250px){.overview-with-calendar>.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:1100px){.planning-page .page-heading{min-height:155px}.overview-with-calendar{grid-template-columns:minmax(0,1fr) 244px}.payment-calendar{width:244px}}
@media(max-width:950px){.overview-with-calendar{grid-template-columns:minmax(0,1fr)}.payment-calendar{justify-self:end}}
@media(max-width:680px){.planning-page .page-heading{min-height:157px}.overview-with-calendar{gap:10px;margin-bottom:21px}.payment-calendar{width:260px;max-width:100%}.payment-day,.payment-day-empty{height:28px}.planning-page .stats article{min-height:230px}#calendar-dialog{padding:24px 18px}}

/* Monthly Budget has its own slot immediately below the sidebar branding. */
.sidebar-budget-summary{padding-top:20px;flex-shrink:0}
@media(max-width:680px){.sidebar-budget-summary{display:none}}

/* Compact bank sync: status to the left, progress below without moving controls. */
.top-controls>.bank-sync{display:grid;grid-template-columns:minmax(0,185px) auto;gap:10px;width:auto;min-width:0;flex-shrink:1;align-items:center;position:relative;margin-right:6px}
.top-controls>.bank-sync .sync-button{grid-column:2;grid-row:1;justify-content:center;width:auto;min-height:32px;padding:5px 10px}
.top-controls>.bank-sync small{grid-column:1;grid-row:1;max-width:185px;min-height:0;font-size:10px;line-height:1.4;text-align:right;overflow-wrap:anywhere}
.top-controls>.bank-sync .sync-progress-slot{position:absolute;grid-column:2;grid-row:1;bottom:-7px;left:0;right:0;height:4px}
.sidebar-budget-summary+nav{margin-top:24px}
@media(max-width:680px){.top-controls>.bank-sync{flex:1 1 140px;grid-template-columns:minmax(0,1fr) auto;gap:7px;margin-right:0}.top-controls>.bank-sync .sync-button{min-height:32px;padding:5px 8px}.top-controls>.bank-sync small{font-size:9px}.sidebar-budget-summary+nav{margin-top:0}}

/* Cashflow review keeps the graph and its transaction context together. */
.stats.flow-stats{grid-template-columns:repeat(2,minmax(0,1fr));margin-bottom:0}
.flow-stats article{display:flex;flex-direction:column;justify-content:center;gap:20px;min-width:0}
.flow-stats h2{display:flex;align-items:center;gap:12px;font-size:20px;margin:0;color:var(--text)}
.flow-stats h2 span{font-size:inherit;letter-spacing:0;color:inherit}
.flow-stats .overview-icon{width:28px;height:28px;flex:none;color:var(--accent)}
.flow-card-values{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.flow-card-values>div{min-width:0}.flow-card-values strong{font-size:clamp(19px,1.9vw,30px);white-space:nowrap;display:block;margin:10px 0}
.flow-card-values span{font-size:10px;letter-spacing:.7px;color:var(--muted)}
.income-balance-body{display:flex;align-items:center;gap:18px;min-width:0;flex-wrap:wrap}
.income-balance-pie{display:block;flex:1 1 100px;min-width:90px;max-width:150px;aspect-ratio:1;overflow:visible}
.income-pie-base{fill:none;stroke:var(--chart-positive);stroke-width:24}
.income-balance-pie.is-empty .income-pie-base{stroke:var(--chart-track)}
.income-pie-spent{fill:none;stroke:var(--chart-goals);stroke-width:24;stroke-linecap:butt}
.income-balance-pie.is-over .income-pie-spent{stroke:var(--chart-negative)}
.income-balance-legend{margin:0;flex:1 1 130px;min-width:0;display:grid;gap:12px}
.income-balance-legend dt{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:11px;line-height:1.4}
.income-balance-legend dd{margin:3px 0 0;font-size:18px;font-weight:700;overflow-wrap:anywhere}
.income-balance-legend dt [data-flow-total]{font-size:inherit;letter-spacing:0;color:inherit;margin-left:auto}
.income-balance-legend i{display:inline-block;width:9px;height:9px;flex:none}
.income-key-spent{background:var(--chart-goals)}
.income-key-unspent{background:var(--chart-positive)}
.income-key-gap,.income-key-spent.is-over{background:var(--chart-negative)}
.flow-stats small{font-size:11px;line-height:1.5;color:var(--muted)}
.flow-explorer{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(290px,1fr);align-items:start}
.flow-visual{min-width:0}.flow-explorer .flow-chart{padding:12px 12px 0}
.flow-transactions{border-left:1px solid var(--border);padding:20px;min-width:0;align-self:stretch}
.flow-review-heading{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:32px}
.flow-review-heading h3{font-size:17px;margin:0;overflow-wrap:anywhere}
.flow-review-empty{color:var(--muted);font-size:13px;line-height:1.7;padding:20px 0}
.flow-review-empty>strong{color:var(--text);font-size:26px}
.flow-review-empty .secondary{margin-top:8px}
.flow-review-summary{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px;padding:14px 0;color:var(--muted);font-size:11px}
.flow-review-summary>strong{font-size:22px;color:var(--text)}.flow-review-summary small{flex-basis:100%;line-height:1.5}
.flow-review-list{max-height:490px;overflow-y:auto;overscroll-behavior:contain}
.flow-transaction{display:flex;align-items:start;justify-content:space-between;gap:12px;padding:14px 8px;width:100%;text-align:left;border-top:1px solid var(--border);border-radius:0}
.flow-transaction:hover,.flow-transaction:focus-visible{background:var(--surface-selected)}
.flow-transaction>span{min-width:0;overflow-wrap:anywhere}.flow-transaction b{font-size:13px}.flow-transaction small{display:block;font-size:11px;line-height:1.6;color:var(--muted);margin-top:3px}.flow-transaction>strong{font-size:13px;white-space:nowrap}
#more-flow-transactions{margin-top:12px;width:100%}
.flow-node[aria-pressed=true] .flow-ribbon{opacity:.7}
.flow-node[aria-pressed=true] .flow-target,.flow-node:focus-visible rect{stroke:var(--focus);stroke-width:3}
.flow-node[aria-pressed=true] .flow-name{fill:var(--accent)}
@media(max-width:1200px){.flow-explorer{grid-template-columns:minmax(0,1fr) minmax(270px,.85fr)}.flow-card-values{grid-template-columns:1fr;gap:12px}.flow-stats article{gap:12px}}
@media(max-width:1000px){.flow-explorer{grid-template-columns:1fr}.flow-transactions{border-left:0;border-top:1px solid var(--border)}.flow-card-values{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:680px){.stats.flow-stats{grid-template-columns:1fr}.flow-stats article{padding:20px}.flow-stats h2{font-size:19px}.flow-card-values strong{font-size:24px}.flow-mobile>button{display:grid;grid-template-columns:1fr auto;gap:8px;padding:12px;width:100%;text-align:left;border:1px solid transparent;margin-bottom:8px}.flow-mobile>button[aria-pressed=true]{border-color:var(--accent);background:var(--surface-selected)}.flow-transactions{padding:18px}.flow-review-list{max-height:400px}}
.cashflow-page .overview-with-calendar{align-items:stretch}.flow-stats article{min-height:260px}
.flow-explorer .flow-name{font-size:16px}.flow-explorer .flow-value{font-size:14px}
@media(max-width:680px){.flow-stats article{min-height:200px}.flow-transactions{scroll-margin-top:18px}}

.flow-percentage{display:block;margin-top:4px;font-size:11px;font-weight:400;color:var(--muted);text-align:right}

.bank-connection-alert{display:flex;align-items:center;gap:16px;margin:20px 0;padding:18px 20px;border:1px solid var(--warning-border);background:var(--warning-surface);border-radius:10px;color:var(--text)}
.bank-connection-alert>div{flex:1;min-width:0}.bank-connection-alert strong{font-size:15px}.bank-connection-alert p{font-size:13px;line-height:1.6;margin:6px 0}.bank-connection-alert small{font-size:11px;line-height:1.5;color:var(--text-secondary)}
.bank-warning-icon{display:grid;place-items:center;flex:0 0 26px;height:26px;border:2px solid currentColor;border-radius:50%;color:var(--warning-text);font-weight:700}.bank-connection-alert a{flex-shrink:0;font-size:12px;text-decoration:none}
@media(max-width:680px){.bank-connection-alert{align-items:flex-start;flex-wrap:wrap;padding:16px;gap:12px}.bank-connection-alert>div{flex-basis:calc(100% - 40px)}.bank-connection-alert a{margin-left:38px}}

/* Mascot placement trial: decorative only, above the existing attention card. */
.has-mascot-trial{position:relative}
.attention-mascot-trial{position:absolute;left:50%;bottom:calc(100% - 4px);transform:translateX(-50%);width:min(80%,196px);height:auto;overflow:hidden;pointer-events:none;user-select:none}
@media(max-width:680px){.attention-mascot-trial{width:min(85%,150px)}}

/* Sidebar widgets use the full rail as their hit area, keeping content aligned. */
.sidebar{--sidebar-inset:23px;--widget-inset:7px}
.sidebar-chart{width:calc(100% + 2 * var(--sidebar-inset));margin-inline:calc(-1 * var(--sidebar-inset));padding-inline:calc(var(--sidebar-inset) + var(--widget-inset));border-radius:0;transition:background-color .15s ease}
.sidebar-chart:hover,.sidebar-chart:focus-visible{background:var(--surface-hover)}
.sidebar-chart:focus-visible{outline-offset:-3px}
.nav-link{transition:background-color .15s ease,color .15s ease}
.nav-link:not(.active):hover,.nav-link:not(.active):focus-visible{background:var(--surface-hover);color:var(--text)}
@media(max-width:1200px){.sidebar{--sidebar-inset:17px}}
@media(max-width:950px){.sidebar{--sidebar-inset:12px}}
@media(max-width:900px){.sidebar{--widget-inset:3px}}
@media(max-width:680px){.sidebar{--sidebar-inset:14px}}
@media(prefers-reduced-motion:reduce){.sidebar-chart,.nav-link{transition:none}}

.budget-preview-note{margin:0;padding:14px 26px;border-bottom:1px solid var(--border);line-height:1.6}

/* BudgetClip sign-in uses the same theme tokens as the signed-in workspace. */
.login-layout{display:grid;grid-template-columns:1.1fr 1fr;gap:72px;align-items:center;margin:90px auto 40px}
.login-page .login-intro{margin:0;max-width:520px}
.login-page h1{font-size:54px;letter-spacing:-2px}
.login-card{background:var(--surface);border:1px solid var(--border);border-radius:18px;padding:32px}
.login-card h2{font-size:28px;letter-spacing:-.7px}
.login-page .login-card p{font-size:14px;margin:8px 0 24px;line-height:1.6}
.login-card .preference-field{margin:0 0 20px}
.login-card input{width:100%;min-width:0;font-size:16px}
.login-password{display:flex;align-items:center;gap:8px}
.login-password input{flex:1}
.login-password button{font-size:12px;min-width:46px;padding:12px 0;color:var(--accent)}
.login-card details{font-size:12px;color:var(--muted)}
.login-card summary{cursor:pointer;padding:4px 0 12px}
.login-card details .preference-field{margin-bottom:0}
.login-page .login-status{min-height:23px;color:var(--negative);margin:12px 0}
.login-card #sign-in{width:100%;min-height:46px;font-size:15px}
.login-card small{line-height:1.65;font-size:11px}
@media(max-width:950px){.login-layout{gap:32px}.login-page h1{font-size:44px}.login-card{padding:26px}}
@media(max-width:680px){.login-page{padding:28px 20px}.login-layout{grid-template-columns:1fr;gap:24px;margin:36px auto}.login-page .login-intro{max-width:420px}.login-page h1{font-size:34px;letter-spacing:-1px}.login-page .login-intro p{display:none}.login-page .eyebrow{margin-bottom:12px}.login-card{padding:24px}.login-card h2{font-size:25px}}

/* Recurring payments share a calendar; sections organize existing native bills. */
.bill-sections{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 20px}
.bill-sections button{display:flex;align-items:center;gap:8px;padding:10px 14px;border:1px solid var(--border);color:var(--muted);background:var(--surface);font-size:13px}
.bill-sections button:hover{background:var(--surface-hover);color:var(--text)}
.bill-sections button[aria-pressed=true]{background:var(--surface-selected);border-color:var(--accent);color:var(--accent)}
.bill-sections button span{font-size:11px;font-variant-numeric:tabular-nums}
.bill-sections button:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.bill-section-label{color:var(--accent)}
@media(max-width:680px){.bill-sections{gap:6px}.bill-sections button{font-size:12px;padding:9px 10px}}

.bill-section-chart{padding:22px 26px;margin-bottom:20px}
.bill-chart-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:14px}
.bill-chart-heading h2{font-size:17px;margin:0}.bill-chart-heading p{font-size:12px;color:var(--muted);margin:0}
.bill-chart-bars{display:grid;gap:4px}
.bill-chart-row{display:grid;grid-template-columns:minmax(120px,210px) minmax(40px,1fr) minmax(160px,200px);align-items:center;gap:18px;width:100%;padding:10px 8px;text-align:left;border-radius:0;color:var(--text)}
.bill-chart-label{font-size:13px}.bill-chart-row strong{text-align:right;font-size:13px;font-variant-numeric:tabular-nums}
.bill-chart-bar{display:block;width:100%;height:16px}.bill-chart-track{fill:var(--border)}.bill-chart-fill{fill:var(--accent)}
.bill-chart-row:hover{background:var(--surface-hover)}.bill-chart-row[aria-pressed=true]{background:var(--surface-selected);color:var(--accent)}
.bill-chart-row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(max-width:680px){.bill-section-chart{padding:18px 14px}.bill-chart-heading{display:block}.bill-chart-heading p{margin-top:6px}.bill-chart-row{grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:10px 4px}.bill-chart-bar{grid-column:1/-1;grid-row:2}.bill-chart-label,.bill-chart-row strong{font-size:12px}}

.login-remember{display:flex;align-items:flex-start;gap:10px;margin:20px 0;cursor:pointer;font-size:14px}.login-remember[hidden]{display:none}.login-remember input{width:18px;height:18px;flex:none;margin:2px 0;accent-color:var(--accent)}.login-remember small{display:block;color:var(--muted);margin-top:4px}

.bill-chart-amount{text-align:right}.bill-chart-amount strong{display:block}.bill-chart-amount strong span{font-weight:400;color:var(--muted)}.bill-chart-amount small{display:block;font-size:11px;color:var(--muted);margin-top:4px}
.bill-chart-excess{fill:var(--negative)}.bill-chart-row.is-over .bill-chart-amount strong,.bill-chart-row.is-over .bill-chart-amount small{color:var(--negative)}
.bill-chart-help{font-size:12px;color:var(--muted);line-height:1.6;margin:14px 8px 0}
@media(max-width:680px){.bill-chart-amount strong{white-space:nowrap}.bill-chart-amount small{font-size:10px}.bill-chart-help{font-size:11px;margin-inline:4px}}

/* Annual estimates stay separate from actual monthly payments. */
.bill-chart-row{grid-template-columns:minmax(120px,180px) minmax(40px,1fr) minmax(160px,200px) 120px;gap:16px}
.bill-chart-annual{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.bill-chart-annual small{font-size:10px;color:var(--muted)}.bill-chart-annual strong{font-size:13px;font-variant-numeric:tabular-nums;white-space:nowrap}.bill-chart-annual-bar{width:72px;height:4px;display:block;margin-top:2px}
.bill-section-chart{--bill-total-background:color-mix(in srgb,var(--accent) 10%,var(--surface));--bill-total-divider:var(--accent)}
.bill-chart-total{border-top:3px solid var(--bill-total-divider);margin-top:24px;padding-top:18px;padding-bottom:18px;background:var(--bill-total-background)}.bill-chart-total .bill-chart-label{font-weight:700;color:var(--accent)}.bill-chart-total:hover{background:var(--bill-total-background)}
@media(max-width:1100px){.bill-chart-row{grid-template-columns:minmax(40px,1fr) minmax(150px,190px) 110px;gap:10px}.bill-chart-label{grid-column:1/-1}.bill-chart-bar{grid-column:1;grid-row:2}.bill-chart-amount{grid-column:2;grid-row:2}.bill-chart-annual{grid-column:3;grid-row:2}}
@media(max-width:680px){.bill-chart-row{grid-template-columns:minmax(0,1fr) 94px;gap:10px}.bill-chart-bar{grid-column:1/-1;grid-row:3}.bill-chart-amount{grid-column:1;grid-row:2;text-align:left}.bill-chart-amount strong{text-align:left}.bill-chart-annual{grid-column:2;grid-row:2}.bill-chart-annual strong{font-size:12px}.bill-chart-annual-bar{width:60px;height:3px}.bill-chart-total{padding-top:16px}}

/* Account overview: balances, bank costs and the shared net-worth history. */
.stats.account-overview{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}
.account-overview article{padding:22px;min-height:260px;display:flex;flex-direction:column;gap:10px}
.account-overview h2{font-size:21px;line-height:1.2;letter-spacing:-.5px;margin:0 0 6px;color:var(--text)}
.account-overview small{font-size:11px;line-height:1.5;color:var(--muted)}
.account-totals{margin:0;display:grid;gap:12px;font-variant-numeric:tabular-nums}
.account-totals>div{display:flex;justify-content:space-between;gap:12px;align-items:baseline}
.account-totals dt{font-size:13px;color:var(--text-secondary)}.account-totals dd{margin:0;font-size:22px;font-weight:600;letter-spacing:-.5px}
.account-net-total{border-top:1px solid var(--border);padding-top:12px}.account-net-total dt{font-weight:600;color:var(--text)}
.account-totals-card>small{margin-top:auto}.account-overview .account-card-period{font-size:12px;color:var(--muted);letter-spacing:0;text-transform:none}
.account-overview .account-fees-card>strong{font-size:30px;margin:0;letter-spacing:-.7px}.account-card-action{margin-top:auto;text-align:left;align-self:flex-start}
.account-worth-link{display:flex;flex-direction:column;width:100%;height:100%;text-align:left;color:var(--text);padding:0;gap:8px;border-radius:0}
.account-worth-link h2{display:flex;justify-content:space-between;gap:12px;width:100%}.account-worth-link:hover h2{color:var(--accent)}.account-worth-link:focus-visible{outline:2px solid var(--accent);outline-offset:8px}
#account-worth-graph{width:100%;flex:1;min-width:0}#account-worth-graph>strong{font-size:28px;margin:0;letter-spacing:-.7px}#account-worth-graph>svg{display:block;width:100%;height:75px;margin:6px 0}#account-worth-graph .mini-caption{font-size:11px}
@media(max-width:1100px){.stats.account-overview{grid-template-columns:repeat(2,minmax(0,1fr))}.account-overview article{padding:20px}.account-overview .account-worth-card{grid-column:1/-1}#account-worth-graph>svg{max-width:360px}}
@media(max-width:680px){.stats.account-overview{grid-template-columns:minmax(0,1fr)}.account-overview article{min-height:230px}.account-overview h2{font-size:21px}.account-totals dd{font-size:23px}.account-overview .account-worth-card{grid-column:auto}}

/* Monthly spending distribution uses theme colors and the same overview slots. */
:root{--spending-color-0:var(--accent);--spending-color-1:var(--chart-goals);--spending-color-2:var(--calendar-payment-ink);--spending-color-3:var(--chart-positive);--spending-color-4:var(--chart-negative);--spending-color-5:var(--today-marker);--spending-color-6:var(--chart-zero);--spending-color-7:var(--text-secondary);--spending-color-unknown:var(--muted)}
.spending-tone-0{--spending-color:var(--spending-color-0)}.spending-tone-1{--spending-color:var(--spending-color-1)}.spending-tone-2{--spending-color:var(--spending-color-2)}.spending-tone-3{--spending-color:var(--spending-color-3)}.spending-tone-4{--spending-color:var(--spending-color-4)}.spending-tone-5{--spending-color:var(--spending-color-5)}.spending-tone-6{--spending-color:var(--spending-color-6)}.spending-tone-7{--spending-color:var(--spending-color-7)}.spending-tone-unknown{--spending-color:var(--spending-color-unknown)}
.transaction-stats .budget-radial-card{display:flex;flex-direction:column;align-items:stretch;gap:3px;min-width:0}
.budget-radial-card h2,.category-year-card h2{font-size:20px;line-height:1.2;letter-spacing:-.4px;text-align:center;color:var(--text);margin:0;min-height:24px}
.budget-radial-visual{display:flex;justify-content:center;flex:1;min-height:100px;align-items:center}.budget-radial-visual svg{width:100px;height:100px;overflow:visible}
.spending-ring-track,.spending-segment{fill:none;stroke-width:17}.spending-ring-track{stroke:var(--chart-track)}.spending-segment{stroke:var(--spending-color);cursor:pointer;pointer-events:visiblePainted;transition:stroke-width .12s ease}
.spending-segment:hover,.spending-segment:focus-visible,.spending-segment[aria-pressed=true]{stroke-width:23;outline:none}
.spending-ring-value{fill:var(--text);font-size:14px;font-weight:650;font-variant-numeric:tabular-nums;pointer-events:none}.spending-ring-caption{fill:var(--muted);font-size:8px;pointer-events:none}
.spending-radial-legend{max-height:52px;min-height:36px;overflow-y:auto;scrollbar-width:thin;overscroll-behavior:contain}
.spending-radial-legend button{display:grid;grid-template-columns:7px minmax(0,1fr) auto auto;align-items:center;gap:5px;width:100%;padding:4px 2px;color:var(--text);text-align:left;font-size:10px;border-radius:0}
.spending-radial-legend button>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spending-radial-legend button>b{font-size:10px;font-variant-numeric:tabular-nums}.spending-radial-legend button>small{font-size:9px;color:var(--muted)}.spending-swatch{width:7px;height:7px;background:var(--spending-color)}
.spending-radial-legend button:hover,.spending-radial-legend button[aria-pressed=true]{background:var(--surface-selected)}.spending-radial-legend button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.stats .spending-radial-scope{font-size:9px;text-align:center;color:var(--muted);margin-top:3px}.spending-radial-empty{font-size:11px;color:var(--muted);text-align:center;margin:8px 0}
.category-year-card>strong{font-size:28px;text-align:center;margin:4px 0}.category-year-card>small{text-align:center;font-size:10px}.category-year-card .category-sparkline{height:58px;margin-top:5px}
@media(max-width:680px){.budget-radial-card h2,.category-year-card h2{font-size:17px;min-height:40px}.budget-radial-visual svg{width:94px;height:94px}.budget-radial-visual{min-height:94px}.spending-radial-legend button{grid-template-columns:6px minmax(0,1fr) auto;gap:4px;font-size:9px}.spending-radial-legend button>b{font-size:9px}.spending-radial-legend button>small{display:none}.spending-radial-legend{max-height:44px;min-height:36px}.category-year-card>strong{font-size:22px}.stats .spending-radial-scope{font-size:8px}}
@media(prefers-reduced-motion:reduce){.spending-segment{transition:none}}

/* Bills calendar accompanies the category chart; creation belongs to the table. */
.subscriptions-page .page-heading>div{min-width:0}
.bills-overview>.bill-section-chart{min-width:0;margin-bottom:0}
.bills-overview>.payment-calendar{align-self:start}
.bills-table-heading{flex-direction:row;align-items:center;gap:16px}.bills-table-heading h2{margin:0;display:flex;align-items:center;gap:8px}.bills-table-heading #add-subscription{flex-shrink:0;white-space:nowrap}

@media(max-width:680px){.bills-table-heading{flex-direction:row;gap:10px}.bills-table-heading h2{font-size:17px;gap:6px}.bills-table-heading #add-subscription{font-size:12px;padding:10px 12px}}

/* Net-worth widgets draw across the full card, behind their heading and balance. */
.stats .account-worth-card{padding:0;position:relative;overflow:hidden}
.account-worth-link{position:relative;isolation:isolate;flex:1;padding:22px;gap:8px;min-height:258px}
.account-worth-link h2,#account-worth-graph>strong,#sidebar-net-worth>.mini-heading,#sidebar-net-worth>strong{position:relative;z-index:2}
#account-worth-graph{position:static;flex:initial;width:auto}
#account-worth-graph>svg.worth-widget-background,#sidebar-net-worth>svg.worth-widget-background{position:absolute;inset:0;display:block;width:100%;height:100%;max-width:none;max-height:none;margin:0;overflow:hidden;z-index:0}
.worth-widget-background .mini-area{fill:color-mix(in srgb,var(--accent) 14%,transparent)}.worth-widget-background .mini-line{stroke:var(--accent);stroke-width:2;vector-effect:non-scaling-stroke;stroke-linecap:butt}
.account-worth-link::before,#sidebar-net-worth::before{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(180deg,var(--surface) 0%,color-mix(in srgb,var(--surface) 85%,transparent) 28%,transparent 68%)}
.account-worth-link:focus-visible{outline-offset:-4px}
#sidebar-net-worth{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:stretch;height:168px;min-height:168px;padding-top:14px;padding-bottom:14px;overflow:hidden}
#sidebar-net-worth:hover::before,#sidebar-net-worth:focus-visible::before{background:linear-gradient(180deg,var(--surface-hover) 0%,color-mix(in srgb,var(--surface-hover) 85%,transparent) 28%,transparent 68%)}
#sidebar-net-worth .mini-empty,#account-worth-graph .mini-empty{position:relative;z-index:2}#sidebar-net-worth .mini-empty{min-height:0;flex:1}
.worth-widget-months{position:absolute;inset:auto 0 10px;z-index:2;height:14px;pointer-events:none;--worth-label-edge:20px}
.worth-widget-months.has-years{--worth-label-edge:29px}.worth-widget-months>span{position:absolute;left:clamp(var(--worth-label-edge),var(--worth-label-position),calc(100% - var(--worth-label-edge)));transform:translateX(-50%);white-space:nowrap;font-size:11px;line-height:14px;color:var(--text-secondary);font-weight:500;letter-spacing:0}
#sidebar-net-worth .worth-widget-months{bottom:9px}#sidebar-net-worth .worth-widget-months>span{font-size:9px}
@media(max-width:1100px){.account-worth-link{padding:20px}}
@media(max-width:680px){.account-worth-link{min-height:228px}.worth-widget-months>span{font-size:10px}}

/* Compact bill rows share month/year headers; remaining sits inside the track. */
.bill-section-chart{--bill-chart-columns:minmax(120px,180px) minmax(40px,1fr) minmax(160px,200px) 120px;--bill-bar-label-background:color-mix(in srgb,var(--surface) 92%,transparent)}
.bill-chart-row,.bill-chart-heading.bill-chart-columns{grid-template-columns:var(--bill-chart-columns);column-gap:16px}
.bill-chart-heading.bill-chart-columns{display:grid;align-items:end;padding:0 8px;margin-bottom:8px;row-gap:8px}.bill-chart-columns h2{grid-column:1/3;font-size:15px}.bill-chart-month-heading{grid-column:3}.bill-chart-year-heading{grid-column:4}.bill-chart-month-heading,.bill-chart-year-heading{text-align:right;font-size:12px;font-weight:600;color:var(--muted)}
.bill-chart-bars{gap:1px}.bill-chart-row{padding-top:6px;padding-bottom:6px}
.bill-chart-bar-wrap{position:relative;display:block;min-width:0;height:24px}.bill-chart-bar-wrap .bill-chart-bar{height:100%;width:100%}
.bill-chart-remaining{position:absolute;right:5px;top:50%;transform:translateY(-50%);max-width:calc(100% - 10px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:1px 3px;background:var(--bill-bar-label-background);color:var(--text);font-size:10px;line-height:15px;font-variant-numeric:tabular-nums;pointer-events:none}
.bill-chart-total{margin-top:18px;padding-top:12px;padding-bottom:12px}.bill-chart-annual{gap:3px}.bill-chart-annual-bar{margin-top:0}
@media(max-width:1100px){.bill-section-chart{--bill-chart-columns:minmax(40px,1fr) minmax(150px,190px) 110px}.bill-chart-row,.bill-chart-heading.bill-chart-columns{column-gap:10px;row-gap:5px}.bill-chart-columns h2{grid-column:1/-1}.bill-chart-month-heading{grid-column:2}.bill-chart-year-heading{grid-column:3}.bill-chart-bar-wrap{grid-column:1;grid-row:2}}
@media(max-width:680px){.bill-section-chart{--bill-chart-columns:minmax(0,1fr) 94px}.bill-chart-heading.bill-chart-columns{padding-inline:4px}.bill-chart-month-heading{grid-column:1;text-align:left}.bill-chart-year-heading{grid-column:2}.bill-chart-bar-wrap{grid-column:1/-1;grid-row:3;height:22px}.bill-chart-row{padding-top:7px;padding-bottom:7px}.bill-chart-total{padding-top:12px;padding-bottom:12px}.bill-chart-month-heading,.bill-chart-year-heading{font-size:11px}}

/* Keep the net-worth footer at the viewport edge while navigation scrolls. */
@media(min-width:681px){
 .sidebar{padding-block:0;overflow:hidden;--sidebar-top:37px}
 .sidebar-scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;margin-inline:calc(-1 * var(--sidebar-inset));padding:var(--sidebar-top) var(--sidebar-inset) 12px;scrollbar-width:thin}
 .sidebar-charts{margin-top:0;padding:0;gap:0}
 .sidebar .brand{flex-shrink:0}
 #sidebar-net-worth [data-worth-position="0"]{left:0;transform:none}
 .account-worth-link [data-worth-position="0"]{left:0;transform:none}
}
@media(min-width:951px) and (max-width:1200px){.sidebar{--sidebar-top:30px}}
@media(min-width:681px) and (max-width:950px){.sidebar{--sidebar-top:28px}}
@media(max-width:680px){.sidebar-scroll{display:contents}}

/* Shared tabs meet the content panel with a continuous surface and no gap. */
.panel-tabs{display:flex;flex-wrap:nowrap;align-items:stretch;gap:6px;padding:0;margin:0;overflow-x:auto;scrollbar-width:thin;border-radius:0;background:linear-gradient(var(--border),var(--border)) bottom/100% 1px no-repeat}
.panel-tabs button{flex:0 0 auto;display:flex;align-items:center;gap:8px;white-space:nowrap;padding:11px 14px;margin:0;border:1px solid var(--border);border-radius:0;background:var(--surface-subtle);color:var(--muted);font-size:12px;box-shadow:none}
.panel-tabs button+button{margin-left:0}
.panel-tabs button:hover{background:var(--surface-hover);color:var(--text)}
.panel-tabs button[aria-pressed=true]{position:relative;background:var(--surface);border-color:var(--border);border-bottom-color:var(--surface);color:var(--accent);font-weight:650;box-shadow:inset 0 2px var(--accent)}
.panel-tabs button:focus-visible{outline:2px solid var(--focus);outline-offset:-4px}
.panel-tabs+.panel{margin-top:0;border-top:0;border-top-left-radius:0;border-top-right-radius:0}
.bill-chart-remaining.is-over{color:var(--negative)}
@media(max-width:680px){.panel-tabs button{font-size:11px;padding:10px 12px}}

.transaction-account-tabs .tab-count{font-size:10px;color:var(--muted);font-variant-numeric:tabular-nums}
.transaction-account-note{padding:0 23px 14px;font-size:11px;color:var(--muted);line-height:1.5}

/* Income keeps projections in Income received, beside recorded net worth and the calendar. */
.income-overview .income-stats{grid-template-columns:repeat(auto-fit,minmax(min(100%,185px),1fr));align-items:stretch}
.income-overview .income-stats article{min-width:0;min-height:260px}
.income-overview .income-stats article>strong{font-size:clamp(22px,2vw,30px);overflow-wrap:anywhere}
.income-overview .account-worth-link h2{font-size:21px}
@media(max-width:680px){.income-overview .income-stats{grid-template-columns:minmax(0,1fr)}.income-overview .income-stats article{min-height:230px}}

.income-ring-percent{font-size:23px;font-weight:650;fill:var(--text);letter-spacing:-.5px}
.income-ring-caption{font-size:11px;fill:var(--muted)}
.income-balance-pie.is-over .income-ring-percent{fill:var(--negative)}
.worth-chart-legend{display:flex;justify-content:center;flex-wrap:wrap;gap:22px;margin:0 20px 12px;font-size:12px;color:var(--muted)}
.worth-chart-legend>span{display:flex;align-items:center;gap:7px}
.worth-chart-legend i{display:inline-block;width:11px;height:11px}
.worth-assets-key{background:var(--chart-positive)}.worth-debts-key{background:var(--chart-negative)}
.worth-chart-legend .worth-net-key{width:20px;height:3px;background:var(--chart-goals)}
.worth-assets-bar{fill:var(--chart-positive)}.worth-debts-bar{fill:var(--chart-negative)}
.worth-snapshot{cursor:pointer;outline:none}.worth-snapshot rect{opacity:.65}
.worth-snapshot:hover rect,.worth-snapshot:focus rect,.worth-snapshot.selected rect{opacity:1}
.worth-snapshot:focus-visible rect{stroke:var(--text);stroke-width:1.5}
.worth-snapshot .chart-point{stroke:var(--chart-goals);fill:var(--surface)}
.worth-snapshot:hover .chart-point,.worth-snapshot:focus .chart-point,.worth-snapshot.selected .chart-point{stroke-width:3;fill:var(--chart-goals)}
.worth-chart .worth-net-line{stroke:var(--chart-goals);stroke-width:2.5;pointer-events:none}

/* Both cashflow directions grow from the same zero below their radial breakdowns. */
.stats.flow-stats{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr)}
.flow-stats .flow-in-out-card{justify-content:flex-start;gap:16px}
.flow-radial-pair{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;text-align:center}
.flow-radial-pair>div{min-width:0}.flow-radial-pair h3{font-size:13px;font-weight:600}
.flow-radial{display:block;width:100%;max-width:140px;aspect-ratio:1;margin:8px auto}
.flow-radial-track,.flow-radial-segment{fill:none;stroke-width:17;stroke-linecap:butt}
.flow-radial-track{stroke:var(--chart-track)}.flow-radial-segment{stroke:var(--spending-color)}
.flow-radial-segment:hover{stroke-width:20}
.flow-radial-total{fill:var(--text);font-size:18px;font-weight:650;letter-spacing:-.4px}
.flow-radial-caption{fill:var(--muted);font-size:8px}
.flow-radial-pair strong{font-size:clamp(16px,1.6vw,24px);margin:8px 0 4px;overflow-wrap:anywhere;letter-spacing:-.5px}
.flow-radial-pair small{font-size:10px;line-height:1.4}
.flow-comparison{width:100%;margin-top:auto}
.flow-comparison svg{display:block;width:100%;height:38px}
.flow-comparison-track{fill:var(--chart-track)}.flow-comparison-income{fill:var(--chart-positive)}.flow-comparison-spent{fill:var(--chart-goals)}
.flow-comparison-origin{stroke:var(--text);stroke-width:1.5;vector-effect:non-scaling-stroke}
.flow-comparison-labels{display:grid;grid-template-columns:1fr auto 1fr;gap:6px;font-size:10px;color:var(--muted)}
.flow-comparison-labels span:last-child{text-align:right}
.flow-radial-breakdowns{font-size:11px;color:var(--muted)}.flow-radial-breakdowns summary{cursor:pointer}
.flow-radial-breakdowns>div{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:16px}
.flow-radial-breakdowns h3{font-size:12px;color:var(--text)}.flow-radial-breakdowns ul{list-style:none;margin:10px 0 0;padding:0}
.flow-radial-breakdowns li{display:grid;grid-template-columns:7px minmax(0,1fr) auto;gap:5px;align-items:baseline;padding:5px 0}
.flow-radial-breakdowns li span{font-size:11px;letter-spacing:0;overflow-wrap:anywhere}
.flow-radial-breakdowns li b{font-size:11px;color:var(--text)}.flow-radial-breakdowns li small{grid-column:3;font-size:10px}
@media(max-width:1200px){.stats.flow-stats{grid-template-columns:minmax(0,1fr)}.income-balance-body{flex-wrap:nowrap}}
@media(max-width:680px){.flow-radial-pair{gap:12px}.flow-radial-breakdowns>div{grid-template-columns:1fr}.income-balance-body{flex-wrap:wrap}}

/* A shared financial calendar opens above the current page, with independent dates. */
.page-overview{margin-bottom:28px}.page-overview>.stats{margin-bottom:0}
.calendar-launch{display:flex;align-items:center;gap:6px;padding:7px 9px;border:1px solid var(--border);border-radius:7px;font-size:11px;color:var(--muted)}
.calendar-launch svg{width:18px;height:18px}.calendar-launch:hover{background:var(--surface-hover);color:var(--text)}
#utility-panel{inset:0 0 0 auto;margin:0;width:460px;max-width:100%;height:100dvh;max-height:100dvh;border-radius:0;border-width:0 0 0 1px;padding:0;overflow:hidden}
#utility-panel[open]{display:flex;flex-direction:column}
#utility-panel::backdrop{background:color-mix(in srgb,var(--canvas) 30%,transparent)}
#utility-panel.is-expanded{inset:0;margin:auto;width:min(1100px,94vw);height:92dvh;max-height:92dvh;border:1px solid var(--border);border-radius:12px}
.calendar-panel-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:24px 22px 16px;flex-shrink:0}
.calendar-panel-header h2{font-size:22px;margin:0}.calendar-panel-header .eyebrow{font-size:9px;margin-bottom:8px}
.calendar-panel-header>div:last-child{display:flex;align-items:center;gap:8px}.calendar-panel-header .secondary{font-size:11px;padding:8px}
#close-calendar-panel{width:32px;height:36px}
.calendar-panel-controls{display:flex;align-items:center;gap:12px;padding:0 22px 18px;flex-wrap:wrap}
.calendar-panel-controls select{font-size:11px;margin-left:auto}
.calendar-view-switch{display:flex;gap:6px}.calendar-view-switch button{font-size:12px;padding:8px 12px;border:1px solid var(--border)}
.calendar-view-switch button[aria-pressed=true]{color:var(--accent);background:var(--surface-selected);border-color:var(--accent)}
.calendar-panel-month{display:flex;align-items:center;justify-content:space-between;gap:12px;border-block:1px solid var(--border);padding:10px 22px;flex-shrink:0}
.calendar-panel-month>button{font-size:26px;padding:0 8px}.calendar-panel-month #calendar-today{font-size:12px;padding:6px;margin:0}.calendar-panel-month label{flex:1;position:relative;text-align:center;font-size:14px;font-weight:600}
.calendar-panel-month input{position:absolute;inset:0;width:100%;opacity:0;cursor:pointer}.calendar-panel-month input:focus-visible{opacity:1}
#calendar-panel-body{overflow:auto;overscroll-behavior:contain;padding:20px 22px;min-height:0;flex:1}
.calendar-window{font-size:12px;color:var(--muted);margin-bottom:22px}
.calendar-agenda-day{margin-bottom:24px}.calendar-agenda-day h3,.calendar-selected-day h3{font-size:13px;margin:0 0 12px}
#utility-panel .calendar-event{padding:13px 0;gap:10px;border-bottom:1px solid var(--border);align-items:flex-start}
#utility-panel .calendar-event strong{font-size:13px;overflow-wrap:anywhere}#utility-panel .calendar-event b{font-size:13px;white-space:nowrap}
#utility-panel .calendar-event>div{flex:1;min-width:0}#utility-panel .calendar-event p{font-size:11px;margin-top:5px;line-height:1.6}
.calendar-status{font-weight:600}.calendar-event.scheduled .calendar-status{color:var(--muted)}.calendar-event.recorded .calendar-status{color:var(--text)}
.calendar-panel-help,.calendar-panel-warning{font-size:12px;line-height:1.6;color:var(--muted);margin:24px 0 0}.calendar-panel-warning{margin:0 0 20px;padding:12px;background:var(--warning-surface);color:var(--warning-text)}
#utility-panel .payment-calendar{width:100%;max-width:none;padding:0;border:0;background:none;min-height:0}
#utility-panel .payment-day,#utility-panel .payment-day-empty{height:40px}
#utility-panel .payment-day[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:-2px}
.calendar-selected-day{margin-top:24px}.calendar-empty{font-size:13px;line-height:1.7;color:var(--muted)}
#utility-panel.is-expanded .calendar-month-layout{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:32px}
#utility-panel.is-expanded .calendar-selected-day{margin-top:0}#utility-panel.is-expanded .payment-day,#utility-panel.is-expanded .payment-day-empty{height:62px}
@media(max-width:680px){.calendar-launch{padding:6px}.calendar-launch>span{display:none}.page-overview{margin-bottom:21px}.calendar-panel-header{padding:20px 16px 14px}.calendar-panel-header h2{font-size:20px}.calendar-panel-controls{padding:0 16px 14px;gap:8px}.calendar-panel-month{padding:10px 16px}#calendar-panel-body{padding:18px 16px}#utility-panel.is-expanded{width:100%;height:100dvh;max-height:100dvh;border-radius:0}#utility-panel.is-expanded .calendar-month-layout{display:block}#utility-panel.is-expanded .calendar-selected-day{margin-top:24px}#utility-panel.is-expanded .payment-day,#utility-panel.is-expanded .payment-day-empty{height:40px}}

/* Scheduled bills open the existing merchant-filtered Transactions view. */
.calendar-event-copy{flex:1;min-width:0}.calendar-event-meta{display:block;font-size:11px;margin-top:5px;line-height:1.6;color:var(--muted)}
#utility-panel .calendar-event:has(.calendar-event-link){padding:0}
.calendar-event-link{display:flex;align-items:flex-start;gap:10px;width:100%;min-width:0;padding:13px 0;text-align:left;color:var(--text);border-radius:0}
.calendar-event-link:hover{background:var(--surface-hover)}.calendar-event-link:focus-visible{outline:2px solid var(--focus);outline-offset:2px}
.calendar-event-action{display:block;margin-top:6px;font-size:11px;color:var(--accent)}.calendar-event-link[aria-busy=true]{opacity:.65;cursor:progress}

/* One Cashflow overview: balance | money in / money out | budget. */
.stats.flow-stats{grid-template-columns:minmax(0,1fr)}
.flow-stats .cashflow-summary-card{justify-content:flex-start;gap:24px}
.flow-summary-radials{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr) minmax(0,1fr);align-items:stretch}
.flow-summary-radials>section{min-width:0;padding:0 20px}
.flow-summary-radials>section:first-child{padding-left:0;border-right:1px solid var(--border)}
.flow-summary-radials>section:last-child{padding-right:0;border-left:1px solid var(--border)}
.flow-summary-radials h3{font-size:14px;font-weight:600;margin:0 0 12px;color:var(--text)}
.flow-summary-radials .income-balance-card,.flow-budget-radial{display:flex;align-items:center;flex-direction:column;text-align:center}
.flow-summary-radials .income-balance-pie,.flow-summary-radials .flow-radial,.flow-budget-ring{width:100%;max-width:140px;height:auto;aspect-ratio:1;flex:none;min-width:0;margin:0 auto 12px;display:block}
.flow-summary-radials strong{display:block;font-size:clamp(16px,1.6vw,24px);margin:0 0 4px;letter-spacing:-.5px;overflow-wrap:anywhere}
.flow-summary-radials small{display:block;font-size:10px;line-height:1.5}
.flow-summary-radials .flow-radial-note{margin-top:14px;max-width:190px}
.flow-summary-radials .flow-radial-pair{gap:18px}
.flow-summary-radials .flow-comparison{margin-top:14px}
.flow-summary-radials .flow-radial-breakdowns{margin-top:14px}
.flow-summary-radials .flow-radial-breakdowns>div{grid-template-columns:1fr}
@media(max-width:1100px) and (min-width:951px){.flow-summary-radials>section{padding-inline:12px}.flow-summary-radials h3{font-size:12px}}
@media(max-width:950px){.flow-summary-radials{grid-template-columns:minmax(0,1fr);gap:22px}.flow-summary-radials>section{padding:0}.flow-summary-radials>section:first-child{border-right:0;border-bottom:1px solid var(--border);padding-bottom:22px}.flow-summary-radials>section:last-child{border-left:0;border-top:1px solid var(--border);padding-top:22px}.flow-summary-radials .flow-radial-breakdowns>div{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.flow-summary-radials .flow-radial-breakdowns>div{grid-template-columns:1fr}}

.budget-ring-track,.budget-ring-spent,.budget-ring-goals{fill:none;stroke-width:24;stroke-linecap:butt}
.budget-ring-track{stroke:var(--chart-track)}.budget-ring-spent{stroke:var(--chart-positive)}.budget-ring-goals{stroke:var(--chart-goals)}
.flow-budget-ring.is-over .budget-ring-spent{stroke:var(--chart-negative)}.flow-budget-ring.is-over .income-ring-percent{fill:var(--negative)}
.flow-budget-values{width:100%;max-width:190px;margin:14px 0 0;font-size:11px;display:grid;gap:6px}.flow-budget-values>div{display:flex;justify-content:space-between;gap:8px}.flow-budget-values dt{color:var(--muted)}.flow-budget-values dd{margin:0;font-weight:600}

/* Local Spent / Planned display switch; it never changes budget records. */
.flow-summary-radials h3{line-height:24px}
.flow-budget-header{display:flex;align-items:center;justify-content:center;gap:7px;margin-bottom:12px;min-height:24px;max-width:100%}
.flow-budget-header h3{margin:0;flex:none}
.flow-budget-toggle{display:flex;border:1px solid var(--border);flex:none}
.flow-budget-toggle button{font-size:9px;line-height:16px;padding:3px 5px;color:var(--muted);border-radius:0}
.flow-budget-toggle button[aria-pressed=true]{background:var(--surface-selected);color:var(--accent);font-weight:650}
.flow-budget-toggle button:hover{background:var(--surface-hover);color:var(--text)}
.budget-plan-segment{fill:none;stroke:var(--spending-color);stroke-width:24;stroke-linecap:butt}.budget-plan-segment:hover{stroke-width:27}

/* Transactions shares page-heading spacing; budget return lives by its period. */
.planning-heading-actions{display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.planning-heading-actions .category-navigation{margin:0;height:40px;text-align:right}
.planning-heading-actions .back-to-list{margin:0;font-size:12px;padding:6px 0}
.transactions-page h1:focus{outline:none}
@media(max-width:950px){.planning-heading-actions{width:100%;align-items:stretch}.planning-heading-actions .category-navigation{text-align:left}}

.account-settings-link{font-size:11px;margin-top:7px;color:var(--muted)}

/* Shared title and controls replace the separate breadcrumb bar. */
.main .page-header{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;gap:24px;min-height:188px;height:auto;padding:28px 0 18px;margin:0 0 24px;border-bottom:1px solid var(--border)}
.page-header>div:first-child{min-width:0;padding-top:4px}
.page-header h1{overflow-wrap:anywhere}
.page-header .muted{max-width:480px}
.page-header-actions{display:flex;flex-direction:column;align-items:flex-end;gap:14px;min-width:0}
.page-header .top-controls{width:auto;flex-wrap:nowrap;min-height:40px;justify-content:flex-end}
.page-header-context{display:flex;justify-content:flex-end;max-width:100%}
.page-header .planning-heading-actions{width:auto;align-items:flex-end}
.page-header .planning-heading-actions .category-navigation{text-align:right}
@media(max-width:1100px){
 .main .page-header{grid-template-columns:minmax(0,1fr);gap:18px;min-height:0;padding:24px 0 20px}
 .page-header .muted{max-width:none}
 .page-header-actions{align-items:stretch;gap:12px}
 .page-header .top-controls{justify-content:flex-end;width:100%}
 .page-header-context{justify-content:flex-start}
 .page-header .planning-heading-actions{width:100%;flex-direction:row;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}
 .page-header .planning-heading-actions .category-navigation{flex-shrink:0}
}
@media(max-width:680px){
 .main .page-header{gap:16px;margin-bottom:20px;padding-top:20px}
 .page-header .top-controls{gap:8px}
 .page-header .planning-heading-actions{gap:8px}
}

.account-order-help{font-size:11px;color:var(--muted);padding:12px 24px;border-bottom:1px solid var(--border);line-height:1.6}
.account-reorder-name{display:flex;align-items:center;gap:8px}
.account-drag-handle{flex:none;cursor:grab;touch-action:none;padding:8px 5px;color:var(--muted);font-size:23px;line-height:1;user-select:none}
.account-drag-handle:active{cursor:grabbing}
.account-dragging{opacity:.6}
.account-drop-before td{box-shadow:inset 0 3px var(--accent)}
.account-drop-after td{box-shadow:inset 0 -3px var(--accent)}
#account-custom-order[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}
.transaction-account-tabs .account-tab-muted{background:var(--canvas);color:var(--muted);border-color:color-mix(in srgb,var(--border) 65%,transparent)}
.transaction-account-tabs .account-tab-muted:not([aria-pressed=true]){opacity:.72}
.transaction-account-tabs .account-tab-muted:hover,.transaction-account-tabs .account-tab-muted:focus-visible{opacity:1}
.transaction-account-tabs .account-tab-muted[aria-pressed=true]{background:var(--surface);color:var(--accent);border-bottom-color:var(--surface)}
@media(max-width:680px){.account-reorder-name{gap:3px}.account-drag-handle{padding:10px 2px;font-size:20px}.account-order-help{padding:10px 16px}}

.transaction-account-tabs button{position:relative}

.cashflow-range[hidden]{display:none}
.cashflow-date-controls{display:flex;align-items:center;gap:10px;max-width:100%}
.timeframe-toggle{display:grid;place-items:center;width:42px;height:44px;padding:9px;flex-shrink:0}
.timeframe-toggle svg{width:20px;height:20px}
.timeframe-toggle.is-active{color:var(--accent);border-color:var(--accent)}

/* Shared utility drawer: the edge is a visible affordance even while closed. */
.utility-peek{position:fixed;z-index:30;inset:0 0 0 auto;width:6px;background:var(--surface);border-left:1px solid var(--border);box-shadow:-3px 0 10px var(--shadow);pointer-events:none}
.utility-pull-tab{position:fixed;z-index:31;right:5px;top:var(--utility-pull-top,clamp(160px,32vh,320px));width:36px;min-height:108px;padding:12px 8px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;border:1px solid var(--border);border-right:0;border-radius:14px 0 0 14px;background:linear-gradient(90deg,var(--surface-raised),var(--surface));box-shadow:-4px 3px 12px var(--shadow);color:var(--muted);transition:width .18s ease,color .18s ease}
.utility-pull-tab:hover{width:42px;color:var(--accent)}
.utility-pull-tab:focus-visible{outline-offset:-3px;color:var(--accent)}
.pull-label{writing-mode:vertical-rl;transform:rotate(180deg);font-size:11px;letter-spacing:1px;font-weight:650}
.pull-grip{height:12px;width:8px;border-inline:2px solid var(--border)}.pull-arrow{font-size:22px;line-height:12px}
#utility-panel[open]{display:grid;grid-template-columns:56px minmax(0,1fr);animation:utility-enter .2s ease-out}
#utility-panel:not(.is-expanded){box-shadow:-12px 0 40px var(--shadow)}
.utility-rail{display:flex;flex-direction:column;gap:10px;padding:20px 5px;background:var(--surface-raised);border-right:1px solid var(--border)}
.utility-rail button{display:grid;place-items:center;flex-shrink:0;width:44px;height:46px;border-radius:8px;color:var(--muted);position:relative}
.utility-rail svg{width:22px;height:22px}
.utility-rail button:hover{background:var(--surface-hover);color:var(--text)}
.utility-rail button[aria-selected=true]{background:var(--surface-selected);color:var(--accent)}
.utility-rail button[aria-selected=true]::before{content:"";position:absolute;left:-5px;top:12px;bottom:12px;width:3px;background:var(--accent)}
.utility-content{display:flex;flex-direction:column;min-width:0;min-height:0}
.utility-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:22px 18px 18px;flex-shrink:0;border-bottom:1px solid var(--border)}
.utility-header h2{font-size:22px;margin:0}.utility-header .icon-button{width:36px;height:36px;flex-shrink:0}
#user-content{min-height:0;overflow:auto;padding:12px 18px 20px;flex:1}
#calendar-content{display:flex;flex-direction:column;flex:1;min-height:0}
#utility-panel [hidden]{display:none!important}
#utility-panel .utility-settings{padding:0;max-width:100%;width:100%;max-height:none;overflow:visible;position:relative}
.utility-settings .close,.utility-settings .eyebrow{display:none}
.utility-settings h2{font-size:22px;margin:18px 0 14px}
.utility-settings .dialog-actions{flex-wrap:wrap;gap:10px}.utility-settings input,.utility-settings select{min-width:0;max-width:100%}
#back-utility-user{margin:6px 0 0;padding:8px 0;font-size:13px}
.utility-copy{padding:24px 18px;overflow:auto;flex:1}.utility-copy h3{font-size:17px;margin-bottom:12px}.utility-copy p{font-size:14px}.utility-copy>.primary{margin-top:22px;font-size:13px}
.utility-sync{padding:18px 18px 24px;border-top:1px solid var(--border);flex-shrink:0}.utility-sync h3{font-size:12px;margin:0 0 12px;color:var(--muted)}
.utility-sync .bank-sync{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;position:relative;align-items:center}
.utility-sync .sync-button{grid-column:2;grid-row:1}.utility-sync small{grid-column:1;grid-row:1;text-align:left;max-width:none;overflow-wrap:anywhere}
.utility-sync .sync-progress-slot{position:absolute;grid-column:2;grid-row:1;left:0;right:0;bottom:-7px;height:4px}
.calendar-expand-row{display:flex;justify-content:flex-end;padding:0 18px 14px}.calendar-expand-row .text-button{padding:8px 0 0}
#utility-panel .calendar-panel-controls{padding-inline:18px}.calendar-panel-month{gap:5px;padding-inline:12px}#calendar-panel-body{padding-inline:18px}
#utility-panel .payment-weekdays{font-size:10px}#utility-panel .payment-days{gap:3px}#utility-panel .payment-day{min-width:0;padding-inline:0}
.main .page-header{min-height:145px;grid-template-columns:minmax(0,1fr) auto;align-items:start}.page-header-actions{padding-top:5px}
@keyframes utility-enter{from{opacity:.6;transform:translateX(24px)}to{opacity:1;transform:none}}
@media(max-width:680px){#utility-panel[open]{grid-template-columns:50px minmax(0,1fr)}.utility-rail{padding-inline:3px}.utility-rail button{width:42px}.utility-header{padding:16px 12px}.utility-header h2{font-size:19px}.utility-pull-tab{top:var(--utility-pull-top,16px);width:44px;min-height:44px;height:44px;right:5px;flex-direction:row;gap:8px;padding:8px;border-radius:12px 0 0 12px}.utility-pull-tab:hover{width:48px}.utility-pull-tab .pull-label{display:none}#user-content,.utility-copy{padding-inline:12px}.utility-sync{padding-inline:12px}#calendar-panel-body{padding-inline:12px}#utility-panel .calendar-panel-controls{padding-inline:12px}.calendar-panel-month{padding-inline:7px;gap:2px}.calendar-panel-month label{font-size:12px}.calendar-panel-month>button{padding-inline:5px}.calendar-event-link{gap:6px}.main .page-header{grid-template-columns:minmax(0,1fr);min-height:0}.utility-rail button[aria-selected=true]::before{left:-3px}}
@media(prefers-reduced-motion:reduce){#utility-panel[open]{animation:none}.utility-pull-tab{transition:none}}

.nav-link,.budget-name,.account-name{text-decoration:none}

/* Continuous sidebar rows with shared icon and label columns. */
.sidebar .nav-link{border-radius:0;display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:12px;align-items:center;justify-content:start}
.sidebar .nav-link>.nav-icon{display:grid;place-items:center;width:22px;height:22px;font-size:22px}
.sidebar .nav-link>.nav-label{display:block;font-size:inherit;line-height:1.4;min-width:0}
.sidebar .nav-link:focus-visible{outline-offset:-3px}
@media(min-width:681px){.sidebar nav{margin-inline:calc(-1 * var(--sidebar-inset))}.sidebar .nav-link{padding-inline:calc(var(--sidebar-inset) + 7px);width:100%;margin-bottom:4px}}
@media(min-width:681px) and (max-width:950px){.sidebar .nav-link{gap:9px;padding-inline:var(--sidebar-inset)}}
@media(max-width:680px){.sidebar .nav-link{display:flex;justify-content:center;gap:0}.sidebar .nav-link>.nav-icon{display:none}}
.utility-pull-tab{touch-action:none;user-select:none;cursor:grab}
.utility-pull-tab.is-dragging{cursor:grabbing;transition:none;color:var(--accent)}
.utility-rail{overflow-y:auto;min-height:0}
.utility-preferences{padding:12px 18px 20px;overflow:auto;min-height:0;flex:1}
.utility-preferences #preferences-title{display:none}
@media(max-width:680px){.utility-preferences{padding-inline:12px}}

/* Forecasts share the existing Cashflow page and theme palette. */
.cashflow-tabs{margin-bottom:0}.cashflow-tabs+form,.cashflow-tabs+.forecast-panel{border-top-left-radius:0}
.forecast-panel{margin-bottom:22px}.forecast-controls{display:flex;align-items:end;flex-wrap:wrap;gap:18px;padding:22px;border-bottom:1px solid var(--border)}
.forecast-controls label{display:grid;gap:7px;font-size:12px}.forecast-controls select{max-width:100%;min-width:210px}.forecast-controls>.muted{font-size:12px;margin-left:auto}
.forecast-horizons{display:flex;border:1px solid var(--border)}.forecast-horizons button{padding:10px 14px;font-size:12px}.forecast-horizons button[aria-pressed=true]{color:var(--accent);background:var(--surface-selected)}
.forecast-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px;padding:24px}.forecast-stats>div{display:grid;align-content:start;gap:8px}.forecast-stats span{font-size:12px;color:var(--muted)}.forecast-stats strong{font-size:27px;font-variant-numeric:tabular-nums}.forecast-stats small{font-size:11px}
.forecast-chart-heading{padding:14px 24px;display:flex;align-items:center;flex-wrap:wrap;gap:12px}.forecast-legend{display:flex;gap:16px;flex-wrap:wrap;font-size:10px;color:var(--muted);margin-left:auto}.forecast-legend span:before{content:'';display:inline-block;vertical-align:middle;width:15px;border-top:2px solid var(--muted);margin-right:6px}.forecast-legend span:nth-child(2):before{border-color:var(--accent)}.forecast-legend span:last-child:before{width:6px;height:6px;border:0;border-radius:50%;background:var(--accent)}
.forecast-chart{width:100%;display:block;min-height:240px}.forecast-chart text{fill:var(--muted);font-size:10px}.forecast-grid{stroke:var(--border);stroke-width:1}.forecast-zero{stroke:var(--negative);stroke-dasharray:4 5;opacity:.65}.forecast-cash,.forecast-available{fill:none;stroke:var(--muted);stroke-width:2;vector-effect:non-scaling-stroke}.forecast-cash{stroke-dasharray:5 4}.forecast-available{stroke:var(--accent);stroke-width:2.5}.forecast-marker{stroke:var(--surface);stroke-width:2;fill:var(--accent);cursor:pointer}.forecast-marker.payment{fill:var(--text-secondary)}.forecast-chart [role=button]:focus-visible{outline:2px solid var(--focus)}
.forecast-caption{padding:10px 24px 20px;color:var(--muted);font-size:12px;line-height:1.7}.forecast-evidence{padding:18px 24px;background:var(--surface-subtle);border-block:1px solid var(--border);display:flex;gap:24px;justify-content:space-between;flex-wrap:wrap}.forecast-evidence dl{margin:0;display:grid;gap:8px;font-size:12px;min-width:260px}.forecast-evidence dl div{display:flex;gap:20px;justify-content:space-between}.forecast-evidence dd{margin:0;font-variant-numeric:tabular-nums}.forecast-evidence p{font-size:11px;line-height:1.7;color:var(--muted);max-width:480px}
.forecast-assumptions{padding:18px 24px;border-bottom:1px solid var(--border);font-size:12px;line-height:1.7}.forecast-assumptions summary{font-weight:600;cursor:pointer}.forecast-assumptions p{margin-top:12px;color:var(--muted)}.forecast-assumptions ul{padding-left:18px}.forecast-events table{min-width:580px}.forecast-events .text-button{margin:0;color:var(--accent)}
.forecast-summary{display:flex;align-items:center;justify-content:space-between;gap:20px;text-align:left;width:100%;min-height:83px;margin:-6px 0 26px;padding:18px 24px}.forecast-summary:hover{background:var(--surface-hover)}.forecast-summary>span:last-child{text-align:right}.forecast-summary strong{font-size:14px}.forecast-summary small{margin-top:5px}.forecast-concern{display:grid;grid-template-columns:1fr auto;gap:7px;text-align:left;width:100%;padding:10px 0;color:var(--negative);font-size:12px}.forecast-concern small{grid-column:1/-1;color:var(--muted)}
@media(max-width:680px){.forecast-controls{padding:16px;gap:14px}.forecast-controls label{width:100%}.forecast-controls>.muted{margin:0}.forecast-stats{grid-template-columns:1fr;padding:18px;gap:18px}.forecast-stats>div+div{border-top:1px solid var(--border);padding-top:16px}.forecast-stats strong{font-size:24px}.forecast-chart-heading{padding-inline:16px}.forecast-legend{margin:0}.forecast-chart{min-width:650px}.forecast-panel{overflow-x:auto}.forecast-caption,.forecast-evidence,.forecast-assumptions{padding-inline:16px}.forecast-summary{padding:16px;align-items:start;gap:12px}.forecast-summary strong{font-size:12px}}

.forecast-chart-scroll{overflow-x:auto}.forecast-low{fill:var(--negative);stroke:var(--surface);stroke-width:1}.forecast-setup{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}
@media(max-width:680px){.forecast-panel{overflow:hidden}}

.forecast-events th:first-child,.forecast-events td:first-child{width:120px;min-width:120px;white-space:nowrap}.forecast-events td:first-child button{white-space:nowrap}.forecast-events th:nth-child(2){width:25%}

/* Income/spending comparison candles use recorded endpoints, not OHLC prices. */
.flow-trend-scroll{position:relative}.flow-candle{--candle-color:var(--muted);outline:none}.flow-candle-surplus{--candle-color:var(--chart-positive)}.flow-candle-shortfall{--candle-color:var(--chart-negative)}.flow-candle-grid{stroke:var(--border);stroke-width:.6}.flow-candle-hit{fill:transparent}.flow-candle-stem{stroke:var(--candle-color);stroke-width:1;opacity:.4}.flow-candle-body{fill:var(--candle-color)}.flow-candle-ticks{stroke:var(--candle-color);stroke-width:1.5;fill:none}.flow-candle:hover .flow-candle-body,.flow-candle:focus .flow-candle-body{stroke:var(--text);stroke-width:1}.flow-trend-scroll .flow-candle:focus{outline:none}.flow-candle:focus .flow-candle-hit{stroke:var(--focus);stroke-width:1;fill:var(--surface-subtle);fill-opacity:.35}.flow-candle-tooltip{position:absolute;z-index:1;top:8px;left:70px;right:20px;width:fit-content;max-width:calc(100% - 90px);padding:8px 12px;border:1px solid var(--border);border-radius:6px;background:var(--surface);color:var(--text);font-size:12px;line-height:1.5;box-shadow:0 4px 14px var(--shadow);pointer-events:none}

/* The setup coach is separate from report rendering and financial editors. */
#setup-coach{position:fixed;z-index:45;display:flex;align-items:flex-end;gap:16px;width:340px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);color:var(--text);pointer-events:none}
#setup-coach.has-mascot{width:480px}
.guide-bubble{position:relative;flex:1;min-width:0;max-height:var(--guide-height,calc(100dvh - 24px));background:var(--surface);border:1px solid var(--accent);border-radius:24px;box-shadow:0 8px 32px var(--shadow);pointer-events:auto}
.guide-bubble-content{padding:20px;max-height:inherit;overflow:auto;border-radius:inherit}
.has-mascot .guide-bubble:after{content:"";position:absolute;right:-11px;bottom:68px;width:20px;height:20px;background:var(--surface);border-top:1px solid var(--accent);border-right:1px solid var(--accent);transform:skewY(-20deg) rotate(45deg);pointer-events:none}
#setup-coach[hidden]{display:none}#setup-coach h2{font-size:20px;line-height:1.25;margin:14px 0 10px}#setup-coach p{font-size:13px;line-height:1.6;margin:10px 0}.guide-top{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:10px;letter-spacing:.08em;color:var(--muted)}.guide-top button{min-width:36px;min-height:36px;font-size:20px}.guide-mascot{flex:none;width:124px;height:124px;object-fit:contain;pointer-events:none}.guide-evidence{background:var(--surface-subtle);padding:10px;border-radius:6px;color:var(--text-secondary);clear:both}.guide-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.guide-actions button{font-size:12px;padding:10px 14px}.guide-footer{display:flex;justify-content:space-between;border-top:1px solid var(--border);margin-top:14px;padding-top:10px}.guide-footer button,.guide-links button{font-size:12px}.guide-target{outline:2px solid var(--accent)!important;outline-offset:5px;scroll-margin:100px 20px}.guide-active .attention-mascot-trial{visibility:hidden}.guide-mascot-choice{display:flex;align-items:center;gap:10px;margin:24px 0;font-size:13px}.guide-checklist{list-style:none;padding:0;counter-reset:guide-step}.guide-checklist li{counter-increment:guide-step;border-top:1px solid var(--border)}.guide-checklist button{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;border-radius:0;padding:16px 2px;background:none;color:var(--text)}.guide-checklist button:before{content:counter(guide-step);color:var(--accent);font-size:16px}.guide-checklist button:hover{background:var(--surface-subtle)}.guide-checklist strong{font-size:13px;flex:1}.guide-checklist span{font-size:11px;color:var(--muted)}#onboarding-checklist>p{font-size:13px;line-height:1.6}.guide-starters{margin-top:20px;border-top:1px solid var(--border);padding-top:16px}.guide-starters p{font-size:13px;line-height:1.6}.starter-row{display:grid;grid-template-columns:22px minmax(0,1fr);gap:6px 8px;margin:14px 0;align-items:center}.starter-row input:not([type=checkbox]){min-width:0;width:100%;font-size:13px;padding:10px}.starter-row small{grid-column:2;color:var(--muted);font-size:11px}.guide-links{display:flex;gap:10px;flex-wrap:wrap}
@media(max-width:680px){#setup-coach,#setup-coach.has-mascot{width:calc(100vw - 24px);max-height:min(65dvh,570px)}#setup-coach.has-mascot{padding-top:88px}.guide-bubble-content{padding:14px}.has-mascot .guide-bubble{max-height:calc(var(--guide-height,65dvh) - 88px)}.has-mascot .guide-bubble:after{right:56px;bottom:auto;top:-11px;transform:skewX(-20deg) rotate(-45deg)}#setup-coach h2{font-size:18px}.guide-visible #app{padding-bottom:var(--guide-space,360px)}.guide-target{scroll-margin-bottom:var(--guide-space,360px)}.guide-mascot{position:absolute;right:4px;top:0;width:100px;height:80px}.guide-footer{margin-top:10px}.guide-checklist button{padding:14px 0}}

/* Language selection stays separate from regional financial formatting. */
.login-language{display:flex;align-items:center;gap:10px;margin:18px 0 0 auto;width:max-content;max-width:100%;font-size:13px;color:var(--text-secondary)}.login-language select{max-width:220px;padding:8px 12px}.sidebar nav a{min-width:0}.sidebar nav a span{overflow-wrap:anywhere}
/* File import and statement review share a compact, scrollable editor. */
.import-dialog { width:min(1100px,94vw); max-width:min(1100px,94vw); max-height:90dvh; overflow:auto; padding:24px; }
.import-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; }
.import-heading button {min-width:36px;min-height:36px;font-size:20px;}
.import-heading h2 { margin:0 0 18px; }
.import-dialog .panel-tabs { margin-bottom:20px; }
.import-fields { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:16px; margin:20px 0; }
.import-fields label { display:flex; flex-direction:column; gap:8px; }
.import-fields input,.import-fields select { min-width:0; width:100%; }
.import-fields [hidden] { display:none; }
.import-table-scroll { overflow:auto; max-height:45dvh; margin:16px 0; }
.import-table-scroll table { width:100%; }
.import-table-scroll td { vertical-align:top; min-width:100px; }
.import-table-scroll td:nth-child(2) { min-width:180px; overflow-wrap:anywhere; }
.import-table-scroll small { display:block; margin-top:6px; }
.import-table-scroll select { max-width:200px; }
.import-table-scroll input,.import-confirm input { width:auto; }
.import-comparison { display:flex; flex-wrap:wrap; gap:24px; }
.import-comparison dd { margin:6px 0; font-size:1.3rem; font-weight:700; }
.import-confirm { display:block; margin:18px 0; }
.import-dialog .dialog-actions { display:flex; flex-wrap:wrap; gap:12px; justify-content:flex-end; margin-top:18px; }
#import-status { white-space:pre-wrap; }
.opening-correction {margin:20px 0;}
.opening-correction>label {display:block; margin:14px 0;}
.opening-correction input:not([type=checkbox]) {display:block; width:100%; margin-top:8px;}
.opening-correction input[type=checkbox] {width:auto;}
@media(max-width:600px){
 .import-dialog {padding:16px;} .import-fields {grid-template-columns:1fr;}
 .import-preview-table thead {display:none;}
 .import-preview-table tbody {display:block;}
 .import-preview-table tr {display:grid;grid-template-columns:32px minmax(0,1fr);padding:12px 0;border-bottom:1px solid var(--border);}
 .import-dialog .import-preview-table td {display:block;min-width:0;padding:6px;border:0;}
 .import-preview-table td:nth-child(n+3) {grid-column:2;}
 .import-preview-table select {width:100%;max-width:100%;}
}

#security-panel section{margin-bottom:24px} .security-device{display:grid;gap:8px;padding:16px 0;border-bottom:1px solid var(--border)} .security-device small{line-height:1.6;color:var(--muted)} .security-device button{justify-self:start} .security-buttons{display:flex;flex-wrap:wrap;gap:8px} #security-panel textarea{width:100%;font-family:monospace} #security-secret{font-family:monospace;min-width:0;width:100%}

#privacy-panel section{margin:24px 0} #privacy-panel h3{font-size:18px;margin:0 0 12px} #privacy-panel p{line-height:1.65} #privacy-scope{padding:16px 0} #privacy-scope ul{padding-left:20px} #privacy-panel .danger-button{color:var(--negative)}

/* Native manual entry and explicit import matching. */
.manual-part{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:12px;align-items:end;margin:16px 0}
.manual-part label{display:grid;gap:6px;min-width:0}.manual-part input,.manual-part select{width:100%;min-width:0}
.manual-match{padding:16px 0;border-bottom:1px solid var(--border)}
.manual-match-pair{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.manual-match-pair>div{min-width:0;overflow-wrap:anywhere;display:grid;gap:6px}
.manual-match small{display:block;line-height:1.7}.manual-dialog .import-confirm{margin:16px 0}
.transaction-origin{color:var(--muted);font-size:.72rem}
@media(max-width:600px){.manual-part{grid-template-columns:1fr auto}.manual-part label{grid-column:1}.manual-part [data-remove-part]{grid-column:2;grid-row:1}.manual-match-pair{grid-template-columns:1fr}.transaction-tools{flex-wrap:wrap}}

.manual-dialog [hidden]{display:none!important}

.manual-dialog [data-remove-part],.manual-dialog #manual-close{min-width:44px;min-height:44px;margin:0;text-align:center}

/* Rule review keeps transaction identity beside the proposed change. */
#rule-dialog {max-height:90vh;overflow:auto;width:min(740px,calc(100% - 32px));}
.rule-preview-rows {max-height:38vh;overflow:auto;overscroll-behavior:contain;}
.rule-preview-row {padding:14px 0;border-top:1px solid var(--border);}
.rule-preview-row>small {display:block;color:var(--muted);}
.rule-preview-row p,.rule-group p {overflow-wrap:anywhere;}
.rule-preview-row ol {padding-left:22px;}
.rule-preview-row ol>li {margin:12px 0;}
.rule-warning {color:var(--warning-text);font-weight:600;}
.rule-group {padding:12px 0;border-top:1px solid var(--border);}
.rule-group>details {padding:12px 0;}
.rule-group summary {cursor:pointer;overflow-wrap:anywhere;}
.rules-dialog .rule-choice {margin:14px 0;}
.rules-dialog {max-height:90vh;overflow:auto;}

#rule-preview {margin-top:20px;}
#rule-preview>p {margin:12px 0;}
#rule-preview .rule-preview-row p {margin:10px 0;}
.rules-dialog .dialog-actions {gap:12px;flex-wrap:wrap;}
:root .reminder-choice{display:flex;gap:10px;align-items:center;margin:12px 0;line-height:1.5}
.reminder-choice input{flex:none;width:18px;height:18px;accent-color:var(--accent)}
.reminder-times{display:grid;grid-template-columns:1fr 1fr;gap:12px}
#reminder-form fieldset{border:1px solid var(--border);padding:12px 16px;margin:16px 0}
#reminder-form legend{font-weight:700;padding:0 5px}
#reminder-status{margin:12px 0;color:var(--muted)}
.reminder-inbox{margin-top:24px}
.reminder-inbox-heading{display:flex;align-items:center;justify-content:space-between;gap:12px}
.reminder-item{border-left:3px solid var(--border);padding:8px 12px;margin:12px 0;background:var(--surface)}
.reminder-item.is-unread{border-left-color:var(--accent)}
.reminder-item p{margin:0 0 8px;line-height:1.6}
.reminder-item small{color:var(--muted)}
.reminder-item>div{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:12px}
.reminder-item a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}
.utility-pull-tab.has-reminders .pull-label::after{content:'•';margin-left:4px;color:var(--accent)}

/* The demo notice follows the page flow in every viewport and uses theme tokens. */
.demo-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:24px;padding:14px 16px;border-left:3px solid var(--accent);background:var(--surface);color:var(--text)}
.demo-banner strong{font-size:1rem}.demo-banner p{margin:4px 0 0;color:var(--muted);font-size:.85rem;max-width:620px}.demo-actions{display:flex;flex-wrap:wrap;gap:8px;flex-shrink:0}.demo-actions button{font-size:.85rem;white-space:nowrap}.demo-entry{display:block;margin-top:24px;text-align:center;padding:12px;text-decoration:none}.demo-entry-help{font-size:.85rem;text-align:center}
@media(max-width:900px){.demo-banner{align-items:flex-start;flex-direction:column}.demo-actions{flex-shrink:1}}

.demo-mode #manage-rules,.demo-mode [data-rule],.demo-mode [data-split],.demo-mode #add-manual-transaction,.demo-mode #review-manual-matches,.demo-mode #add-cash-account,.demo-mode #rule-dialog .rule-choice,.demo-mode #rule-help,.demo-mode #income-fields .income-options,.demo-mode #split-expense{display:none!important}
.import-dialog .panel-tabs [hidden]{display:none!important}
.demo-mode #utility-sync,.demo-mode #user-menu [data-settings="profile"],.demo-mode #user-menu [data-settings="security"],.demo-mode #user-menu [data-settings="data-privacy"],.demo-mode #user-menu [data-settings="reminders"]{display:none!important}

.demo-mode #assign-budget-goal,.demo-mode [data-income-source],.demo-mode .income-source-edit{display:none!important}

/* Keyboard entry, minimum targets and motion preferences across all journeys. */
.skip-link{position:fixed;left:12px;top:8px;z-index:1000;transform:translateY(-160%);padding:12px 16px;background:var(--surface);color:var(--text);border:2px solid var(--focus)}
.skip-link:focus{transform:none}
button{min-width:24px;min-height:24px}
input:not([type=checkbox]):not([type=range]),select,textarea{border-color:var(--control-border)}
input[type=checkbox]{outline:1px solid var(--control-border);outline-offset:1px}
input[type=checkbox]:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
.month-picker:focus-within{outline:3px solid var(--focus);outline-offset:3px}
summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--focus);outline-offset:3px}
#main-content:focus{outline:none}
.empty h2{font-size:18px;margin-bottom:9px}
@media(pointer:coarse){.primary,.secondary,.icon-button,dialog .close,.account-drag-handle,[data-rule],[data-split],.income-schedule-link,.income-goal-link{min-height:44px;min-width:44px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

.login-home{display:inline-block;margin-top:20px;font-size:13px;color:var(--muted);text-underline-offset:4px}
