@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-vietnamese-wght-normal-CnvboYUG.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-latin-ext-wght-normal-Ca2vKHc0.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Fraunces Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./fraunces-latin-wght-normal-ukD16Tqj.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-ext-wght-normal-BOeWTOD4.woff2) format("woff2-variations");unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-cyrillic-wght-normal-DqGufNeO.woff2) format("woff2-variations");unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-ext-wght-normal-DlzME5K_.woff2) format("woff2-variations");unicode-range:U+1F00-1FFF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-greek-wght-normal-CkhJZR-_.woff2) format("woff2-variations");unicode-range:U+0370-0377,U+037A-037F,U+0384-038A,U+038C,U+038E-03A1,U+03A3-03FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-vietnamese-wght-normal-CBcvBZtf.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-ext-wght-normal-DO1Apj_S.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(./inter-latin-wght-normal-Dx4kXJAl.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(./ibm-plex-mono-latin-400-normal-DMJ8VG8y.woff2) format("woff2"),url(./ibm-plex-mono-latin-400-normal-CvHOgSBP.woff) format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2) format("woff2"),url(./ibm-plex-mono-latin-500-normal-CB9ihrfo.woff) format("woff")}/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-ease:initial}}}@layer theme{:root,:host{--font-sans:"Inter Variable",Inter,sans-serif;--font-mono:"IBM Plex Mono",monospace;--ease-in:cubic-bezier(.4,0,1,1);--ease-out:cubic-bezier(0,0,.2,1);--ease-in-out:cubic-bezier(.4,0,.2,1);--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--color-canvas:#f3f0e7;--color-panel:#fffdf8;--color-forest:#183b32;--color-forest-soft:#dce8df;--color-ink:#202722;--color-muted:#626d65;--color-rule:#d8ddd3;--color-chartreuse:#dce9a8;--color-housing:#2e5b4c;--color-groceries:#7b9870;--color-transport:#769a9d;--color-dining:#c97455;--color-utilities:#d0a24d;--color-health:#a66558;--color-leisure:#8d7892;--color-flexible:#6e8293;--color-danger:#a34f39;--font-display:"Fraunces Variable",Georgia,serif;--radius-panel:14px;--radius-control:9px;--radius-swatch:6px;--shadow-panel:0 1px 2px #183b3209;--shadow-dialog:0 24px 70px #183b3233;--motion-fast:.14s;--motion-dialog:.18s;--motion-goal:.3s}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;-moz-tab-size:4;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){-webkit-appearance:button;-moz-appearance:button;appearance:button}::file-selector-button{-webkit-appearance:button;-moz-appearance:button;appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.block{display:block}.contents{display:contents}.flex{display:flex}.hidden{display:none}.inline{display:inline}.inline-block{display:inline-block}.table{display:table}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.fill-rule{fill:var(--color-rule)}.blur{--tw-blur:blur(8px);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.drop-shadow{--tw-drop-shadow-size:drop-shadow(0 1px 2px var(--tw-drop-shadow-color,#0000001a))drop-shadow(0 1px 1px var(--tw-drop-shadow-color,#0000000f));--tw-drop-shadow:drop-shadow(0 1px 2px #0000001a)drop-shadow(0 1px 1px #0000000f);filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.filter\!{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)!important}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.ease-in{--tw-ease:var(--ease-in);transition-timing-function:var(--ease-in)}.ease-in-out{--tw-ease:var(--ease-in-out);transition-timing-function:var(--ease-in-out)}.ease-out{--tw-ease:var(--ease-out);transition-timing-function:var(--ease-out)}}:root{--canvas:var(--color-canvas);--panel:var(--color-panel);--forest:var(--color-forest);--forest-soft:var(--color-forest-soft);--ink:var(--color-ink);--muted:var(--color-muted);--rule:var(--color-rule);--chartreuse:var(--color-chartreuse);--housing:var(--color-housing);--groceries:var(--color-groceries);--transport:var(--color-transport);--dining:var(--color-dining);--utilities:var(--color-utilities);--health:var(--color-health);--leisure:var(--color-leisure);--flexible:var(--color-flexible);--danger:var(--color-danger);color-scheme:light;font-family:var(--font-sans);color:var(--ink);background:var(--canvas);font-synthesis:none;text-rendering:optimizeLegibility}*{box-sizing:border-box}html{background:var(--canvas);min-width:320px}body{background:var(--canvas);min-width:320px;min-height:100vh;margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed}a{color:inherit}button,a,input,select,textarea{transition:color var(--motion-fast)ease-out,background-color var(--motion-fast)ease-out,border-color var(--motion-fast)ease-out,opacity var(--motion-fast)ease-out,box-shadow var(--motion-fast)ease-out}:focus-visible{outline-offset:2px;outline:3px solid #2e5b4c57}::selection{color:var(--forest);background:var(--chartreuse)}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.app-frame{min-height:100vh}.sidebar{z-index:40;width:232px;color:var(--forest-soft);background:var(--forest);flex-direction:column;padding:24px 16px 20px;display:flex;position:fixed;inset:0 auto 0 0}.brand-link{color:var(--panel);align-items:center;gap:12px;margin:0 4px 40px;text-decoration:none;display:flex}.brand-mark{color:var(--forest);background:var(--panel);border-radius:6px;flex:none}.brand-copy{flex-direction:column;gap:1px;display:flex}.brand-copy strong{font-family:var(--font-display);letter-spacing:-.02em;font-size:20px;font-weight:600}.brand-copy>span{color:#dce8dfb3;font-size:11px;font-weight:500}.rail-nav{flex-direction:column;gap:6px;display:flex}.nav-link{color:#dce8dfbd;border-radius:var(--radius-control);align-items:center;gap:12px;min-height:44px;padding:0 12px;font-size:13px;font-weight:500;text-decoration:none;display:flex;position:relative}.nav-link:hover{color:var(--panel);background:#fffdf812}.nav-link-active,.nav-link-active:hover{color:var(--forest);background:var(--forest-soft)}.nav-link-active:before{content:"";background:var(--chartreuse);border-radius:0 3px 3px 0;width:3px;position:absolute;top:10px;bottom:10px;left:0}.rail-owner{border-top:1px solid #dce8df29;align-items:flex-start;gap:10px;margin-top:auto;padding:20px 6px 0;display:flex}.owner-monogram{width:34px;height:34px;color:var(--forest);background:var(--chartreuse);font-family:var(--font-mono);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:11px;font-weight:500;display:inline-flex}.rail-owner strong{color:var(--panel);margin-bottom:4px;font-size:12px;font-weight:500;display:block}.rail-owner div>span{color:#dce8df9e;max-width:145px;font-size:10px;line-height:1.45;display:block}.app-body{flex-direction:column;min-height:100vh;margin-left:232px;display:flex}.utility-bar{z-index:30;background:var(--panel);border-bottom:1px solid var(--rule);flex:0 0 64px;justify-content:space-between;align-items:center;gap:16px;height:64px;padding:0 32px;display:flex;position:sticky;top:0}.utility-owner{display:none}.month-switcher{flex:none;align-items:center;gap:4px;display:flex}.month-label{min-width:102px;color:var(--ink);font-family:var(--font-mono);text-align:center;white-space:nowrap;font-size:12px;font-weight:500}.icon-button{width:40px;height:40px;color:var(--muted);border-radius:var(--radius-control);background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0;display:inline-flex}.icon-button:hover:not(:disabled){color:var(--forest);background:var(--forest-soft)}.icon-button:disabled{opacity:.28}.utility-actions{align-items:center;gap:10px;display:flex}.sample-chip,.plan-status{min-height:26px;color:var(--muted);background:var(--canvas);border:1px solid var(--rule);white-space:nowrap;border-radius:999px;align-items:center;padding:4px 9px;font-size:11px;font-weight:500;display:inline-flex}.button{border-radius:var(--radius-control);white-space:nowrap;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;min-height:40px;padding:0 14px;font-size:12px;font-weight:600;line-height:1.2;text-decoration:none;display:inline-flex}.button-primary{color:var(--panel);background:var(--forest);border-color:var(--forest)}.button-primary:hover{background:var(--housing);border-color:var(--housing)}.button-secondary{color:var(--forest);background:var(--panel);border-color:var(--rule)}.button-secondary:hover{background:var(--forest-soft);border-color:var(--forest-soft)}.button-quiet{color:var(--muted);background:0 0}.button-quiet:hover{color:var(--forest);background:var(--forest-soft)}.button-danger{color:var(--panel);background:var(--danger);border-color:var(--danger)}.button-danger:hover{background:#873d2c;border-color:#873d2c}.add-label-short{display:none}.app-main{flex:1;width:100%;max-width:1480px;margin:0 auto;padding:32px}.route-view,.view-content{width:100%}.view-content{flex-direction:column;gap:24px;display:flex}.view-heading{justify-content:space-between;align-items:center;gap:20px;min-height:82px;display:flex}.eyebrow{color:var(--muted);letter-spacing:.12em;font-size:11px;font-weight:700;line-height:1.3;display:block}.view-heading h1{font-family:var(--font-display);letter-spacing:-.025em;margin:4px 0 5px;font-size:34px;font-weight:600;line-height:1.1}.view-heading p{color:var(--muted);margin:0;font-size:13px;line-height:1.5}.plan-status{color:var(--forest);background:var(--forest-soft);border-color:var(--forest-soft);font-family:var(--font-mono);font-size:11px}.panel,.summary-band{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius-panel);box-shadow:var(--shadow-panel)}.summary-band{grid-template-columns:repeat(4,minmax(0,1fr));display:grid;overflow:hidden}.summary-cell{border-left:1px solid var(--rule);flex-direction:column;justify-content:center;min-width:0;min-height:96px;padding:18px 24px;display:flex}.summary-cell:first-child{border-left:0}.summary-highlight{background:var(--chartreuse)}.summary-label{color:var(--muted);margin-bottom:5px;font-size:12px;font-weight:600}.summary-value{font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.025em;text-overflow:ellipsis;white-space:nowrap;font-size:30px;font-weight:600;line-height:1.15;overflow:hidden}.chart-grid{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:24px;display:grid}.chart-panel{flex-direction:column;min-width:0;height:350px;padding:24px;display:flex;overflow:hidden}.panel-header{flex:none;justify-content:space-between;align-items:center;gap:12px;margin-bottom:18px;display:flex}.panel-header h2,.goal-card-header h2{font-family:var(--font-display);letter-spacing:-.015em;margin:0;font-size:20px;font-weight:600;line-height:1.2}.donut-layout{flex:1;align-items:center;gap:16px;min-height:0;display:flex}.donut-visual{flex:0 0 210px;width:210px;height:210px;position:relative}.donut-visual svg{width:100%;height:100%;display:block}.donut-center{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;top:0;right:0;bottom:0;left:0}.donut-center strong{max-width:132px;font-family:var(--font-display);font-variant-numeric:tabular-nums;letter-spacing:-.03em;text-align:center;font-size:22px;font-weight:600;line-height:1.1}.donut-center span{color:var(--muted);margin-top:5px;font-size:10px}.donut-legend{flex-direction:column;flex:1;justify-content:center;min-width:0;display:flex}.legend-row{width:100%;min-height:28px;color:var(--ink);text-align:left;background:0 0;border:0;border-radius:6px;grid-template-columns:9px minmax(42px,1fr) auto 28px;align-items:center;gap:6px;padding:3px 4px;display:grid}.legend-row:hover,.legend-row:focus-visible{background:var(--forest-soft)}.category-swatch{border-radius:var(--radius-swatch);flex:none;width:9px;height:9px;display:inline-block}.legend-label{text-overflow:ellipsis;white-space:nowrap;font-size:11px;font-weight:500;overflow:hidden}.legend-amount,.legend-percent{font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:9.5px}.legend-percent{color:var(--muted);text-align:right}.daily-header{align-items:flex-start;margin-bottom:8px}.daily-average{flex-direction:column;align-items:flex-end;gap:2px;display:flex}.daily-average span{color:var(--muted);font-size:10px}.daily-average strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:12px;font-weight:500}.daily-chart-wrap{flex:1;align-items:center;min-height:0;display:flex;position:relative}.daily-chart{width:100%;height:auto;max-height:220px;display:block;overflow:visible}.chart-tick,.chart-guide-label{fill:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:8px}.chart-guide-label{fill:var(--forest);font-size:8.5px;font-weight:500}.daily-bar-group{cursor:pointer;outline:none}.daily-bar-group:focus-visible rect:not([fill=transparent]){stroke:var(--forest);stroke-width:2px}.daily-tooltip{z-index:2;color:var(--panel);background:var(--forest);font-family:var(--font-mono);pointer-events:none;border-radius:6px;padding:6px 9px;font-size:10px;position:absolute;top:-4px;right:0}.chart-footer{color:var(--muted);border-top:1px solid var(--rule);flex:none;justify-content:space-between;align-items:center;gap:12px;padding-top:8px;font-size:10px;display:flex}.chart-footer strong{color:var(--ink);font-family:var(--font-mono);font-weight:500}.overview-lower-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;display:grid}.budget-watch-panel,.recent-panel{min-width:0;padding:24px}.text-link,.text-button{color:var(--forest);text-underline-offset:3px;font-size:11px;font-weight:600;-webkit-text-decoration:underline #183b324d;text-decoration:underline #183b324d}.text-link:hover,.text-button:hover{-webkit-text-decoration-color:var(--forest);text-decoration-color:var(--forest)}.text-button{background:0 0;border:0;padding:0}.watch-list,.recent-list{margin:0;padding:0;list-style:none}.watch-row{border-top:1px solid var(--rule);padding:12px 0}.watch-row:first-child{padding-top:4px}.watch-heading{justify-content:space-between;align-items:center;gap:12px;display:flex}.watch-category{align-items:center;gap:9px;min-width:0;display:inline-flex}.watch-category strong{font-size:12px;font-weight:600}.category-glyph{flex:none;display:inline-flex}.watch-amount{color:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;font-size:10px}.goal-progress-wrap{grid-template-columns:minmax(60px,1fr) auto;align-items:center;gap:12px;margin-top:9px;display:grid}.goal-progress{background:var(--forest-soft);border-radius:999px;height:10px;overflow:hidden}.goal-progress-fill{width:var(--goal-fill);background:var(--goal-color);border-radius:inherit;height:100%;transition:width var(--motion-goal)ease-out;display:block}.goal-status{min-width:76px;color:var(--muted);text-align:right;white-space:nowrap;font-size:10.5px;font-weight:500}.goal-status-over{color:var(--danger)}.goal-status-reached{color:var(--forest)}.recent-row{border-top:1px solid var(--rule);justify-content:space-between;align-items:center;gap:16px;min-height:44px;padding:7px 0;display:flex}.recent-row:first-child{padding-top:4px}.recent-merchant{flex-direction:column;min-width:0;display:flex}.recent-merchant strong{text-overflow:ellipsis;white-space:nowrap;font-size:12px;font-weight:500;overflow:hidden}.recent-merchant>span{color:var(--muted);margin-top:2px;font-size:10px}.transaction-amount{color:var(--ink);font-family:var(--font-mono);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap;flex:none;font-size:11.5px;font-weight:500}.income-amount{color:var(--forest)}.muted-empty{color:var(--muted);text-align:center;margin:0;padding:24px 0;font-size:13px}.app-footer{width:100%;max-width:1480px;color:var(--muted);text-align:right;margin:0 auto;padding:0 32px 24px;font-size:10px}.app-footer a{text-decoration:none}.app-footer a:hover{color:var(--forest);text-decoration:underline}.mobile-nav{display:none}.transactions-view{gap:20px}.ledger-toolbar{grid-template-columns:minmax(180px,2fr) minmax(130px,1fr) minmax(190px,1.35fr) minmax(155px,1.2fr);gap:14px;padding:18px;display:grid}.field{min-width:0}.field label,.field-label{color:var(--ink);margin-bottom:6px;font-size:12px;font-weight:600;line-height:1.35;display:block}input,select,textarea{width:100%;min-width:0;min-height:40px;color:var(--ink);background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius-control);padding:9px 11px;font-size:13px;line-height:1.4}input::placeholder,textarea::placeholder{color:#626d65b8}input:hover,select:hover,textarea:hover{border-color:#b6c0b5}input:focus,select:focus,textarea:focus{border-color:var(--forest);outline-offset:0;outline:3px solid #2e5b4c21}input[aria-invalid=true]{border-color:var(--danger)}select{padding-right:30px}textarea{resize:vertical;min-height:76px}.input-with-icon{position:relative}.input-with-icon>svg{z-index:1;color:var(--muted);pointer-events:none;position:absolute;top:50%;left:11px;transform:translateY(-50%)}.input-with-icon input{padding-left:36px}.segmented-control{background:var(--canvas);border:1px solid var(--rule);border-radius:var(--radius-control);align-items:stretch;min-height:40px;padding:3px;display:flex}.segment{min-width:0;min-height:32px;color:var(--muted);white-space:nowrap;background:0 0;border:0;border-radius:6px;flex:1;padding:0 9px;font-size:11px;font-weight:500}.segment:hover{color:var(--forest)}.segment-active,.segment-active:hover{color:var(--panel);background:var(--forest)}.ledger-result-row{justify-content:space-between;align-items:center;gap:12px;margin:-2px 2px -8px;display:flex}.result-summary{color:var(--muted);margin:0;font-size:12px;font-weight:500}.result-summary:focus{outline:none}.result-summary:focus-visible{color:var(--forest);text-underline-offset:4px;text-decoration:underline}.ledger-panel{min-width:0;overflow:hidden}.ledger-table-wrap{width:100%}.ledger-table{table-layout:fixed;border-collapse:collapse;width:100%}.ledger-table th,.ledger-table td{text-align:left;vertical-align:middle;padding:0 14px}.ledger-table th{height:44px;color:var(--muted);background:#f3f0e7a6;font-size:11px;font-weight:600}.ledger-table td{border-top:1px solid var(--rule);height:58px;font-size:12px}.ledger-table tbody tr:hover{background:#dce8df3d}.ledger-table th:first-child{width:86px}.ledger-table th:nth-child(3){width:126px}.ledger-table .amount-column{text-align:right;width:132px}.ledger-table .delete-column{text-align:right;width:54px;padding-left:4px;padding-right:10px}.date-cell{color:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:11px!important}.merchant-cell{text-overflow:ellipsis;white-space:nowrap;font-weight:500;overflow:hidden}.note-cell{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.table-category{white-space:nowrap;align-items:center;gap:7px;min-width:0;font-size:11px;display:inline-flex}.delete-button{width:36px;height:36px}.delete-button:hover:not(:disabled){color:var(--danger);background:#a34f3917}.delete-label{display:none}.ledger-mobile-list{margin:0;padding:0;list-style:none;display:none}.empty-state{text-align:center;flex-direction:column;align-items:center;padding:64px 20px;display:flex}.empty-ledger-mark{width:44px;color:var(--forest);background:var(--forest-soft);border-radius:10px;flex-direction:column;gap:5px;margin-bottom:18px;padding:10px;display:flex}.empty-ledger-mark i{background:currentColor;border-radius:2px;width:100%;height:2px;display:block}.empty-ledger-mark i:nth-child(2){width:70%}.empty-state h2{font-family:var(--font-display);margin:0 0 8px;font-size:22px;font-weight:600}.empty-state p{max-width:360px;color:var(--muted);margin:0 0 20px;font-size:13px;line-height:1.5}.goal-summary-line{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding:15px 2px;font-size:13px;font-weight:500}.goals-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:20px;display:grid}.goal-card{min-width:0;padding:22px}.goal-card-header,.goal-card-title{align-items:center;display:flex}.goal-card-header{justify-content:space-between;gap:16px}.goal-card-title{gap:11px}.goal-percentage{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:14px;font-weight:500}.goal-spent-line{color:var(--muted);font-family:var(--font-mono);font-variant-numeric:tabular-nums;justify-content:space-between;align-items:center;gap:12px;margin:20px 0 11px;font-size:11px;display:flex}.over-budget-label{color:var(--danger);font-family:var(--font-sans);font-weight:600}.goal-card .goal-progress-wrap{margin-top:0}.goal-card .goal-status{font-size:11px}.adjust-button{margin-top:20px}.modal-dialog{width:min(480px,100vw - 32px);max-width:480px;max-height:92vh;color:var(--ink);background:0 0;border:0;margin:auto;padding:0;overflow:visible}.modal-small{width:min(420px,100vw - 32px);max-width:420px}.modal-dialog::backdrop{animation:scrim-in var(--motion-dialog)ease-out both;background:#183b326b}.dialog-panel{background:var(--panel);border:1px solid var(--rule);border-radius:var(--radius-panel);max-height:92vh;box-shadow:var(--shadow-dialog);animation:dialog-in var(--motion-dialog)ease-out both;padding:24px;position:relative;overflow-y:auto}.dialog-close{z-index:1;position:absolute;top:14px;right:14px}.dialog-header{margin-bottom:20px;padding-right:34px}.dialog-header h2{font-family:var(--font-display);letter-spacing:-.02em;margin:0;font-size:26px;font-weight:600;line-height:1.15}.dialog-header p{color:var(--muted);margin:8px 0 0;font-size:12px;line-height:1.5}.dialog-form{flex-direction:column;gap:15px;display:flex}.form-two-columns{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}.entry-type-control .segment{min-height:34px}.currency-input{position:relative}.currency-input input{font-family:var(--font-mono);font-variant-numeric:tabular-nums;padding-right:50px}.currency-input>span{color:var(--muted);font-family:var(--font-mono);pointer-events:none;font-size:10px;position:absolute;top:50%;right:11px;transform:translateY(-50%)}.field-error{color:var(--danger);align-items:flex-start;gap:5px;margin-top:6px;font-size:11px;line-height:1.4;display:flex}.field-error svg{flex:none;margin-top:1px}.field-helper{color:var(--muted);margin-top:7px;font-size:11px;line-height:1.5;display:block}.dialog-actions{background:var(--panel);border-top:1px solid var(--rule);justify-content:flex-end;align-items:center;gap:10px;margin-top:4px;padding-top:16px;display:flex}.confirmation-copy{color:var(--muted);margin:0 0 20px;font-size:13px;line-height:1.65}.target-spent-summary{background:var(--canvas);border-radius:var(--radius-control);justify-content:space-between;align-items:center;gap:16px;padding:13px 14px;font-size:12px;display:flex}.target-spent-summary span{color:var(--muted)}.target-spent-summary strong{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:500}.toast-region{z-index:80;pointer-events:none;flex-direction:column;gap:8px;width:min(380px,100vw - 32px);display:flex;position:fixed;bottom:24px;right:24px}.toast{min-height:50px;color:var(--panel);background:var(--forest);border:1px solid var(--forest);pointer-events:auto;border-radius:10px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 10px 10px 14px;font-size:12px;line-height:1.45;display:grid;box-shadow:0 10px 30px #183b322e}.toast-warning{color:var(--ink);background:var(--panel);border-color:var(--danger)}.toast-warning>svg{color:var(--danger)}.toast-dismiss{width:32px;height:32px;color:inherit;background:0 0;border:0;border-radius:6px;justify-content:center;align-items:center;padding:0;display:inline-flex}.toast-dismiss:hover{background:#ffffff1a}.toast-warning .toast-dismiss:hover{background:var(--forest-soft)}@keyframes scrim-in{0%{opacity:0}to{opacity:1}}@keyframes dialog-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(max-width:1350px)and (min-width:1101px){.donut-visual{flex-basis:172px;width:172px;height:172px}.donut-layout{gap:10px}.donut-center strong{max-width:112px;font-size:19px}.legend-row{grid-template-columns:8px minmax(35px,1fr) auto 24px;gap:4px;padding-left:2px;padding-right:2px}.legend-label,.legend-amount,.legend-percent{font-size:9px}}@media(max-width:1100px){.chart-grid{grid-template-columns:minmax(0,1fr)}.category-panel,.daily-panel{height:350px}.donut-layout{justify-content:center;gap:32px}.donut-legend{flex:0 330px}.legend-row{min-height:29px}.daily-chart{max-height:225px}}@media(max-width:1000px){.overview-lower-grid{grid-template-columns:minmax(0,1fr)}.ledger-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:900px){.sidebar{width:68px;padding:20px 10px}.brand-link{justify-content:center;margin:0 0 34px}.brand-copy,.rail-nav .nav-label,.rail-owner>div{display:none}.rail-nav .nav-link{justify-content:center;padding:0}.rail-nav .nav-link:after{z-index:50;color:var(--panel);content:attr(data-label);background:var(--forest);opacity:0;pointer-events:none;transition:opacity var(--motion-fast)ease-out,transform var(--motion-fast)ease-out;white-space:nowrap;border:1px solid #ffffff1f;border-radius:6px;padding:6px 9px;font-size:11px;position:absolute;top:50%;left:54px;transform:translate(4px,-50%);box-shadow:0 4px 14px #183b322e}.rail-nav .nav-link:hover:after,.rail-nav .nav-link:focus-visible:after{opacity:1;transform:translateY(-50%)}.rail-owner{justify-content:center;padding:18px 0 0}.app-body{margin-left:68px}.utility-bar{padding:0 20px}.app-main{padding:20px}.app-footer{padding-left:20px;padding-right:20px}.sample-chip{display:none}}@media(max-width:760px){.ledger-table-wrap{display:none}.ledger-mobile-list{display:block}.ledger-mobile-row{border-top:1px solid var(--rule);padding:16px}.ledger-mobile-row:first-child{border-top:0}.mobile-transaction-top{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.mobile-transaction-top>strong{text-overflow:ellipsis;white-space:nowrap;font-size:13px;font-weight:500;overflow:hidden}.mobile-transaction-meta{min-height:40px;color:var(--muted);font-family:var(--font-mono);align-items:center;gap:12px;margin-top:4px;font-size:10px;display:flex}.mobile-transaction-meta .delete-button{width:auto;min-width:44px;height:40px;font-family:var(--font-sans);gap:6px;margin-left:auto;padding:0 8px;font-size:11px}.mobile-transaction-meta .delete-label{display:inline}.ledger-mobile-row>p{color:var(--muted);margin:2px 0 0;font-size:12px;line-height:1.45}.goals-grid{grid-template-columns:minmax(0,1fr)}}@media(max-width:640px){.sidebar{display:none}.app-body{margin-left:0}.mobile-nav{z-index:40;height:calc(68px + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);background:var(--panel);border-top:1px solid var(--rule);display:flex;position:fixed;inset:auto 0 0}.mobile-nav .nav-link{min-height:68px;color:var(--muted);border-radius:0;flex-direction:column;flex:1;justify-content:center;gap:4px;padding:0;font-size:10px}.mobile-nav .nav-link:hover,.mobile-nav .nav-link-active,.mobile-nav .nav-link-active:hover{color:var(--forest);background:var(--forest-soft)}.mobile-nav .nav-link-active:before{border-radius:0 0 3px 3px;width:auto;height:3px;inset:0 25% auto}.mobile-nav .nav-label{display:inline}.utility-bar{gap:12px;padding:0 16px}.utility-owner{display:inline-flex}.app-main{padding:20px 20px calc(88px + env(safe-area-inset-bottom))}.view-content{gap:20px}.view-heading h1{font-size:32px}.heading-add{gap:0;width:44px;padding:0;font-size:0}.summary-band{grid-template-columns:repeat(2,minmax(0,1fr))}.summary-cell{min-height:86px;padding:16px 20px}.summary-cell:nth-child(odd){border-left:0}.summary-cell:nth-child(2n){border-left:1px solid var(--rule)}.summary-cell:nth-child(-n+2){border-bottom:1px solid var(--rule)}.summary-value{font-size:27px}.chart-panel{height:auto;min-height:350px}.donut-layout{flex-direction:column;gap:20px}.category-panel{min-height:0}.donut-legend{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 12px;width:100%;display:grid}.legend-row{grid-template-columns:9px minmax(36px,1fr) auto;min-height:38px}.legend-percent{display:none}.daily-panel{min-height:350px}.chart-footer{flex-direction:column;align-items:flex-start;gap:4px}.budget-watch-panel,.recent-panel{padding:20px}.app-footer{padding:0 20px calc(88px + env(safe-area-inset-bottom))}.toast-region{right:16px;bottom:calc(82px + env(safe-area-inset-bottom))}.modal-dialog,.modal-small{width:100%;max-width:none;max-height:92vh;margin:auto 0 0;overflow:hidden}.dialog-panel{max-height:92vh;padding:20px;padding-bottom:calc(20px + env(safe-area-inset-bottom));border-bottom:0;border-left:0;border-right:0;border-radius:14px 14px 0 0}.dialog-actions{bottom:calc(-20px - env(safe-area-inset-bottom));z-index:2;padding-bottom:4px;position:sticky}input,select,textarea,.button,.segmented-control,.segment,.icon-button{min-height:44px}}@media(max-width:480px){.utility-bar{gap:6px;padding:0 12px}.utility-owner{width:30px;height:30px;font-size:10px}.month-switcher{gap:0}.month-label{min-width:62px;font-size:10.5px}.utility-actions{gap:6px}.reset-button{width:44px;padding:0}.reset-label{display:none}.utility-add{min-width:62px;padding:0 11px}.add-label-full{display:none}.add-label-short{display:inline}.app-main{padding:20px 16px calc(88px + env(safe-area-inset-bottom))}.view-heading{gap:12px}.view-heading h1{font-size:30px}.view-heading p{font-size:12px}.plan-status{padding:5px 7px;font-size:9px}.summary-cell{padding:16px}.summary-value{font-size:24px}.summary-label{font-size:11px}.chart-grid,.overview-lower-grid,.goals-grid{gap:16px}.chart-panel,.budget-watch-panel,.recent-panel,.goal-card{padding:16px}.donut-visual{flex-basis:176px;width:176px;height:176px}.donut-center strong{font-size:20px}.donut-legend{width:100%;display:flex}.legend-row{grid-template-columns:9px minmax(60px,1fr) auto 30px;min-height:40px;padding:4px}.legend-label,.legend-amount,.legend-percent{font-size:10px}.legend-percent{display:inline}.daily-tooltip{font-size:9px;top:0}.chart-tick{font-size:9px}.watch-heading{flex-direction:column;align-items:flex-start;gap:6px}.watch-amount{text-align:left;padding-left:37px}.goal-progress-wrap{grid-template-columns:minmax(50px,1fr) auto;gap:9px}.recent-row{gap:10px}.transaction-amount{font-size:10.5px}.ledger-toolbar{grid-template-columns:minmax(0,1fr);gap:12px;padding:16px}.type-filter .segment{min-height:38px}.ledger-result-row{align-items:flex-start}.goal-summary-line{font-size:10.5px;line-height:1.7}.goal-spent-line{flex-direction:column;align-items:flex-start;gap:5px}.adjust-button{width:100%}.form-two-columns{grid-template-columns:minmax(0,1fr);gap:15px}.dialog-actions .button{flex:1}.app-footer{padding-left:16px;padding-right:16px}}@media(max-width:370px){.utility-owner{display:none}.summary-value{font-size:21px}.month-label{min-width:60px}}@media(prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:0s!important;animation-duration:.01ms!important;animation-iteration-count:1!important}.goal-progress-fill{transition:none}}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-ease{syntax:"*";inherits:false}
