@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-ext-400-normal-BtiwyxMk.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-400-normal-BjWJ59Pq.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:DM Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/dm-sans-latin-400-normal-CW0RaeGs.woff2)format("woff2"),url(/assets/dm-sans-latin-400-normal-BwCSEQnW.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-ext-500-normal-BJfUCQsA.woff2)format("woff2"),url(/assets/dm-sans-latin-ext-500-normal-DR84L5F-.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:DM Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/dm-sans-latin-500-normal-B9HHJjqV.woff2)format("woff2"),url(/assets/dm-sans-latin-500-normal-Dr3UlScf.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-vietnamese-500-normal-BmEvtly_.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-500-normal-BTqKIpxg.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-ext-500-normal-DUe3BAxM.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-500-normal-3dgZTiw9.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:500;src:url(/assets/space-grotesk-latin-500-normal-lFbtlQH6.woff2)format("woff2"),url(/assets/space-grotesk-latin-500-normal-CNSSEhBt.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-vietnamese-600-normal-DUi7WF5p.woff2)format("woff2"),url(/assets/space-grotesk-vietnamese-600-normal-D6zpsUhD.woff)format("woff");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-ext-600-normal-DxxdqCpr.woff2)format("woff2"),url(/assets/space-grotesk-latin-ext-600-normal-VcznFIpX.woff)format("woff");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,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:Space Grotesk;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/space-grotesk-latin-600-normal-DjKNqYRj.woff2)format("woff2"),url(/assets/space-grotesk-latin-600-normal-BflQw4A9.woff)format("woff");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{color:#1c2924;font-synthesis:none;background:#f5f0e6;font-family:DM Sans,sans-serif}*{box-sizing:border-box}body{margin:0}button,input,select{font:inherit}button{cursor:pointer;border:0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline-offset:2px;outline:3px solid #d39a3d}.shell{grid-template-columns:220px 1fr;min-height:100vh;display:grid}.sidebar{color:#e9e3d6;background:#0d211c;flex-direction:column;padding:28px 20px;display:flex}.brand{align-items:center;gap:9px;font-family:Space Grotesk;font-size:20px;font-weight:600;display:flex}.brand-mark{color:#13231e;background:#d39a3d;border-radius:8px;place-items:center;width:29px;height:29px;font-size:23px;display:grid}.sidebar nav{gap:6px;margin:65px 0;display:grid}.sidebar a{color:#a8b4aa;border-left:2px solid #0000;padding:11px 12px;text-decoration:none}.sidebar a.active{color:#fff;background:#18342c;border-color:#d39a3d}.sidebar-note{border-top:1px solid #294139;gap:3px;margin-top:auto;padding:20px 4px;display:grid}.sidebar-note span,.eyebrow{letter-spacing:.13em;color:#718179;margin:0;font-size:10px;font-weight:700}.sidebar-note strong{font-size:13px}.content{width:100%;max-width:1450px;margin:auto;padding:46px clamp(22px,4vw,68px) 70px}header{justify-content:space-between;align-items:flex-start;gap:24px;margin-bottom:34px;display:flex}h1,h2{letter-spacing:-.04em;color:#14231d;margin:0;font-family:Space Grotesk}h1{margin-top:7px;font-size:clamp(31px,4vw,48px);line-height:1.05}.subtle{color:#6d756e;margin:10px 0 0}.header-actions{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.source{color:#536058;align-items:center;gap:6px;font-size:12px;display:flex}.month-select{background:#fffdf8;border:1px solid #d9d1c3;border-radius:6px;align-items:center;gap:7px;padding:10px;display:flex}.month-select select{appearance:none;color:#26372f;background:0 0;border:0;max-width:145px;font-weight:600}.month-select svg:last-child{pointer-events:none}.kpis{grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px;display:grid}.kpi{background:#fffdf8;border:1px solid #e3dccf;min-height:133px;padding:18px}.kpi>span{color:#1c6c58;background:#e4eee8;border-radius:50%;place-items:center;width:31px;height:31px;display:grid}.kpi.amber>span{color:#a56b18;background:#f5e7ca}.kpi.red>span{color:#a64835;background:#f2dbd5}.kpi p{color:#69746d;margin:17px 0 5px;font-size:12px}.kpi strong{letter-spacing:-.04em;font-family:Space Grotesk;font-size:23px}.grid{gap:18px;margin-bottom:18px;display:grid}.primary-grid{grid-template-columns:1.15fr .85fr}.secondary-grid{grid-template-columns:1.35fr .65fr}.panel,.insights{background:#fffdf8;border:1px solid #e3dccf;padding:25px}.panel-title h2{margin-top:5px;font-size:20px}.composition{grid-template-columns:150px 1fr;align-items:center;gap:30px;margin-top:30px;display:grid}.composition-number{letter-spacing:-.05em;color:#17362d;font-family:Space Grotesk;font-size:29px}.composition-number small{letter-spacing:0;color:#718179;margin-top:3px;font-family:DM Sans;font-size:12px;display:block}.bars{gap:15px;display:grid}.bar>div:first-child{justify-content:space-between;margin-bottom:6px;font-size:12px;display:flex}.bar strong{font-weight:500}.track{background:#ede9e0;height:8px}.track i{height:100%;display:block}.track .amber{background:#d39a3d}.track .mint{background:#62aa91}.chart-wrap{margin-top:15px}.empty-chart{text-align:center;color:#718179;place-items:center;height:200px;font-size:13px;display:grid}.recharts-legend-item-text{color:#526059!important;font-size:11px!important}.chart-summary{color:#66736b;margin:5px 0 0;font-size:12px}.insights{align-content:start;gap:10px;display:grid}.insight{background:#f6f3eb;border-left:3px solid #a6afa9;padding:11px 13px}.insight.positive{border-color:#2e8b73}.insight.attention{border-color:#b85c46}.insight strong{font-size:13px}.insight p{color:#526058;margin:4px 0 0;font-size:12px;line-height:1.45}.budget{margin-top:38px}.budget-heading{justify-content:space-between;align-items:end;gap:20px;display:flex}.budget-heading h2{margin-top:5px;font-size:26px}.primary{color:#fff;background:#173c31;border-radius:5px;align-items:center;gap:7px;padding:10px 14px;font-size:13px;font-weight:600;display:inline-flex}.primary:hover{background:#245746}.tabs{border-bottom:1px solid #d9d1c3;gap:5px;margin-top:24px;display:flex}.tabs button{color:#657168;background:0 0;border-bottom:2px solid #0000;padding:10px 12px;font-size:13px}.tabs button.selected{color:#173c31;border-color:#d39a3d;font-weight:700}.items{background:#fffdf8;border:1px solid #e3dccf;border-top:0}.item-row{border-bottom:1px solid #eee8dc;grid-template-columns:9px minmax(180px,1fr) 110px 110px 75px;align-items:center;gap:12px;padding:15px 18px;display:grid}.item-row:last-child{border-bottom:0}.flow-dot{background:#b85c46;border-radius:50%;width:8px;height:8px}.flow-dot.income{background:#2e8b73}.flow-dot.savings_transfer{background:#d39a3d}.item-main{gap:3px;display:grid}.item-main strong{font-size:14px}.item-main span,.item-flow{color:#718179;font-size:12px}.amount{text-align:right;font-family:Space Grotesk}.row-actions{justify-content:flex-end;gap:3px;display:flex}.row-actions button,.close{color:#637067;background:0 0;padding:7px}.row-actions button:last-child{color:#a14f3d}.empty-items{color:#718179;text-align:center;padding:28px}.inline-error,.form-error{color:#9d4232;font-size:13px}.inline-error{background:#f6dfd9;justify-content:space-between;margin:-18px 0 18px;padding:12px 15px;display:flex}.inline-error button{color:inherit;background:0 0;text-decoration:underline}.state{text-align:center;color:#405049;place-content:center;min-height:100vh;padding:24px;display:grid}.state h1{margin:10px 0}.state button{color:#fff;background:#173c31;border-radius:5px;align-items:center;gap:7px;margin:auto;padding:10px 14px;display:flex}.spin{margin:auto;animation:1s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.dialog-backdrop{z-index:5;background:#10231dbc;place-items:center;padding:18px;display:grid;position:fixed;inset:0}.dialog{background:#fffdf8;width:min(540px,100%);padding:30px;position:relative;box-shadow:0 18px 50px #09120e66}.dialog h2{margin:5px 0 24px;font-size:26px}.close{position:absolute;top:12px;right:12px}.dialog form{gap:15px;display:grid}.dialog label{color:#4d5c53;gap:6px;font-size:12px;font-weight:600;display:grid}.dialog input,.dialog select{color:#1c2924;background:#fff;border:1px solid #d9d1c3;border-radius:3px;padding:10px}.form-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.dialog-actions{justify-content:flex-end;gap:10px;margin-top:24px;display:flex}.dialog-actions>button:not(.primary):not(.danger){color:#526058;background:0 0;padding:10px 13px}.danger{color:#fff;background:#a64835;border-radius:4px;padding:10px 13px}.sr-only{clip:rect(0,0,0,0);width:1px;height:1px;position:absolute;overflow:hidden}@media (width<=980px){.shell{grid-template-columns:1fr}.sidebar{flex-direction:row;justify-content:space-between;align-items:center;min-height:auto;padding:14px 22px}.sidebar nav{margin:0;display:flex}.sidebar-note{display:none}.primary-grid,.secondary-grid{grid-template-columns:1fr}.content{padding-top:32px}}@media (width<=650px){.content{padding:25px 16px 50px}header{display:block}.header-actions{justify-content:flex-start;margin-top:20px}.source{width:100%}.kpis{grid-template-columns:1fr 1fr;gap:9px}.kpi{min-height:115px;padding:14px}.kpi p{margin-top:12px}.kpi strong{font-size:19px}.panel,.insights{padding:18px}.composition{grid-template-columns:1fr;gap:20px}.item-row{grid-template-columns:8px 1fr auto 55px;gap:9px;padding:14px 11px}.item-flow{display:none}.amount{font-size:14px}.row-actions{grid-column:4}.budget-heading{align-items:start}.budget-heading h2{font-size:22px}.primary{padding:10px}.form-grid{grid-template-columns:1fr}.dialog{padding:25px 20px}.dialog h2{font-size:23px}.sidebar{padding:13px 16px}.sidebar nav a{padding:7px 9px;font-size:12px}}:root{--color-ink:#1c2924;--color-paper:#f5f0e6;--color-surface:#fffdf8;--color-border:#d9d1c3;--color-accent:#d39a3d;--color-success:#2e8b73;--color-danger:#b85c46;--space-2:8px;--space-3:12px;--space-4:16px;--radius-sm:6px;--radius-md:8px;--motion-ease:ease}.refresh-status{margin:0 0 var(--space-3);color:#6d756e;font-size:13px}.trip-action-error{color:var(--color-danger);grid-column:1/-1;margin:4px 0 0;font-size:12px;font-weight:700}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.export-link{color:#193128;background:#fffdf8;border:1px solid #d9d1c3;border-radius:6px;align-items:center;gap:7px;padding:10px 12px;font-size:13px;font-weight:700;text-decoration:none;display:inline-flex}.export-link:hover{border-color:#2e8b73}.rollover-status{color:#718179;margin:0;font-size:12px}.incidental{margin-top:22px}.incidental-layout{grid-template-columns:minmax(0,1fr) minmax(180px,.8fr);align-items:start;gap:24px;display:grid}.incidentals-list{gap:10px;margin:0;padding:0;list-style:none;display:grid}.incidentals-list li{border-bottom:1px solid #eee7da;justify-content:space-between;align-items:baseline;gap:14px;padding-bottom:10px;display:flex}.incidentals-list span{color:#6d756e;margin-top:2px;font-size:13px;display:block}.incidentals-total{margin:16px 0 0;font-family:Space Grotesk;font-size:18px}.incidentals-total strong{margin-left:8px}.incidentals-chart{gap:12px;display:grid}.incidental-bar-label{justify-content:space-between;gap:10px;margin-bottom:5px;font-size:12px;display:flex}.incidental-track{background:#eee7da;border-radius:99px;height:8px;overflow:hidden}.incidental-track i{border-radius:inherit;background:#b85c46;height:100%;display:block}.empty-incidentals{color:#718179;margin:14px 0 0}.item-row.one-off-expense{background:#fff9ef;border-left:2px solid #d39a3d}.recurrence-tag{color:#2c6856;letter-spacing:.04em;text-transform:uppercase;background:#e8f0ea;border-radius:99px;width:max-content;margin-top:5px;padding:2px 6px;font-size:10px;font-weight:700;display:inline-flex}.one-off-tag{color:#8b5d17;letter-spacing:.04em;text-transform:uppercase;background:#fbebcf;border-radius:99px;width:max-content;margin-top:5px;padding:2px 6px;font-size:10px;font-weight:700;display:inline-flex}@media (width<=650px){.export-link{padding:9px 10px}.incidental-layout{grid-template-columns:1fr;gap:18px}}.category-bars{gap:14px;display:grid}.category-bar{grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px;display:grid}.category-bar-label{grid-column:1/-1;justify-content:space-between;align-items:baseline;gap:16px;min-width:0;display:flex}.category-bar-name{align-items:center;gap:7px;min-width:0;display:flex}.category-bar-amount{white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;margin-left:auto}.category-track{background:#e5ede7;border-radius:99px;grid-column:1;min-width:0;height:8px;overflow:hidden}.category-track i{border-radius:inherit;background:#2e8b73;height:100%;display:block}.category-bar-percentage{white-space:nowrap;text-align:right;font-variant-numeric:tabular-nums;grid-area:2/2;margin:0}@media (width<=650px){.category-bars{gap:16px}.category-bar{column-gap:10px}.category-bar-label{gap:12px;font-size:13px}.category-bar-name{overflow-wrap:anywhere}.category-bar-amount{font-size:13px}.category-track{height:9px}.category-bar-percentage{font-size:12px;line-height:1}}.items .item-row{border-bottom:1px solid #d9d1c3}.items .item-row:first-child{border-top:1px solid #d9d1c3}.item-amount{gap:5px;min-width:90px;display:grid}.item-amount .amount{font-variant-numeric:tabular-nums}.item-amount-track{background:#e5ddd0;border-radius:99px;height:5px;overflow:hidden}.item-amount-track i{border-radius:inherit;background:#b85c46;height:100%;display:block}.one-off-expense .item-amount-track i{background:#d39a3d}@media (width<=650px){.item-amount{min-width:55px}.item-amount-track{height:4px}}.bar-legend{color:#6d756e;margin:0;font-size:12px;line-height:1.4}.item-bar-legend{margin:14px 0 8px;padding:0}.payment-moments{background:#fffdf8;border:1px solid #d9d1c3;border-radius:6px;gap:10px;margin:4px 0 12px;padding:12px;display:grid}.payment-moments p{color:#6d756e;margin:0;font-size:13px}.payment-moment{align-items:end;gap:10px;display:flex}.payment-moment label{flex:1}.payment-moment button{margin-bottom:1px}@media (width<=650px){.payment-moment{flex-direction:column;align-items:stretch;gap:6px}.payment-moment button{align-self:start}.bar-legend{font-size:11px}}.chart-legend{flex-wrap:wrap;gap:10px 20px;margin-top:12px;display:flex}.chart-legend span{align-items:center;gap:7px;display:inline-flex}.chart-summary{line-height:1.5}.insight{position:relative}.insight-tone{letter-spacing:.06em;text-transform:uppercase;border-radius:3px;width:max-content;margin-bottom:6px;padding:2px 6px;font-size:10px;font-weight:700;display:block}.insight.positive .insight-tone{color:#28634e;background:#e4f1e9}.insight.attention .insight-tone{color:#805617;background:#fbebcf}.insight.neutral .insight-tone{color:#4d5e55;background:#e8ece9}@media (width<=650px){.chart-legend{gap:8px 14px}}.legend-line{border-radius:99px;flex:none;width:20px;height:3px;display:inline-block}.actual-line{background:#2e8b73}.chart-summary{color:#526058;background:#f6f3eb;border-left:3px solid #d39a3d;margin:12px 0 0;padding:10px 12px;line-height:1.5}.insights-title{gap:5px;margin-bottom:2px;display:grid}.insights-title h2{margin:0;font-size:20px}.dialog{max-height:85dvh;overflow:auto}.dialog input,.dialog select,.dialog textarea,input,select,textarea{font-size:16px}.month-navigation{align-items:center;gap:4px;display:flex}.month-navigation button{background:#fffdf8;border:1px solid #d9d1c3;border-radius:6px;padding:8px}.reconstructed{color:#8b5d17;background:#fbebcf;border-radius:999px;padding:3px 7px;font-size:11px;font-weight:700;display:inline-flex}.small-action{color:#195542;background:#e8f0ea;border-radius:6px;padding:8px 10px;font-weight:700}.trip-page-head,.trip-head{justify-content:space-between;align-items:start;gap:12px;display:flex}.trip-list{gap:16px;margin-top:22px;display:grid}.trip-card{background:#fffdf8;border:1px solid #e3dbce;border-radius:12px;padding:18px}.trip-head h2{font-size:22px}.trip-period{color:#6d756e;margin:4px 0 0}.trip-chips,.trip-legend{flex-wrap:wrap;gap:7px;margin:14px 0;display:flex}.trip-chip{color:#285847;background:#e8f0ea;border-radius:999px;padding:5px 8px;font-size:12px}.trip-legend{color:#718179;font-size:11px}.trip-legend span:before{content:"";border-radius:99px;width:7px;height:7px;margin-right:4px;display:inline-block}.trip-legend .yes:before{background:#2e8b73}.trip-legend .no:before{background:#b85c46}.trip-legend .unknown:before{background:#a39d92}.city-block,.trip-group{border-top:1px solid #eee7da;margin-top:12px;padding-top:12px}.city-block h3,.trip-group h3{margin:0 0 8px;font-size:13px}.city-block h3 small{color:#718179;font-weight:400}.city-grid{grid-template-columns:1fr 1fr;gap:8px;display:grid}.city-cell{background:#f6f1e8;border-radius:8px;min-height:76px;padding:10px;font-size:11px}.city-cell>strong{color:#718179;margin-bottom:7px;display:block}.city-entry{justify-content:space-between;align-items:center;gap:5px;margin-top:5px;display:flex}.city-entry.yes{background:#e8f0ea}.city-entry.no{background:#fff0e9}.city-entry.unknown{background:#f3f0ea}.status-chip{color:#47544d;background:#fffdf8;border:1px solid #cfc6b7;border-radius:999px;align-items:center;gap:4px;padding:5px 8px;font:600 11px DM Sans;display:inline-flex}.status-chip.yes{color:#fff;background:#2e8b73;border-color:#2e8b73}.status-chip.no{color:#8d4434;background:#fff5ef;border-color:#c97762}.status-chip.unknown{color:#718179;border-style:dashed}.other-entry{justify-content:space-between;gap:8px;padding:8px 0;display:flex}.trip-row{justify-content:space-between;gap:12px;padding:8px 0;font-size:13px;display:flex}.icon-delete{color:#8b5d54;background:0 0;padding:4px}.city-form{background:#f6f1e8;grid-template-columns:1fr 1fr;gap:8px;margin:10px 0;padding:10px;display:grid}.city-form label{font-size:12px}.city-form input,.city-form select{width:100%}@media (width<=650px){.month-navigation{width:100%}.month-select{flex:1}.month-select select{width:100%}.trip-page-head{align-items:center}.account-row{grid-template-columns:1fr}}@media (width<=319px){.city-grid{grid-template-columns:1fr}}.row-actions,.trip-actions{align-items:center;gap:4px;display:flex}.icon-action{color:#173c31;background:#fffdf8;border:1px solid #d9d1c3;border-radius:7px;place-items:center;width:36px;height:36px;padding:0;transition:background-color .16s,border-color .16s,color .16s;display:inline-grid}.icon-action:hover{background:#e8f0ea;border-color:#9eb8aa}.icon-action.destructive:hover{color:#a64835;background:#fff0e9;border-color:#d69b8f}.icon-action:focus-visible{outline-offset:2px;outline:3px solid #d39a3d}.trip-actions{background:#f6f1e8;border:1px solid #e3dbce;border-radius:9px;flex:none;padding:3px}.trip-chips>span{color:#285847;white-space:nowrap;background:#f6f1e8;border:1px solid #d9d1c3;border-radius:999px;align-items:baseline;gap:4px;padding:6px 8px;font-size:12px;font-weight:700;display:inline-flex}.city-entry>span,.budget-trip-row>span:first-child,.task-row>span{overflow-wrap:anywhere;min-width:0}@media (width<=650px){.trip-head{gap:8px}.trip-heading{min-width:0}.trip-head h2{overflow-wrap:anywhere;font-size:20px}.trip-period{overflow-wrap:anywhere}.trip-actions{gap:3px}.trip-chips{gap:6px;margin:12px 0}.trip-chips>span{padding:5px 7px;font-size:11px}.city-grid{grid-template-columns:1fr}.city-cell{min-width:0}.city-entry{flex-wrap:wrap;align-items:center;gap:6px;padding:4px 0}.city-entry>span{flex:130px}.city-entry small{margin-left:auto}.status-chip{min-height:32px}.budget-trip-row{align-items:flex-start}.budget-trip-row>span:last-child{white-space:nowrap;flex:none}.task-row{align-items:flex-start}}.row-actions .icon-action{color:#173c31;background:#fffdf8;border:1px solid #d9d1c3;border-radius:7px;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;display:inline-grid}.row-actions .icon-action.destructive{color:#173c31}.row-actions .icon-action:hover{color:#173c31;background:#e8f0ea;border-color:#9eb8aa}.row-actions .icon-action.destructive:hover{color:#a64835;background:#fff0e9;border-color:#d69b8f}.row-actions .icon-action:focus-visible{outline-offset:2px;outline:3px solid #d39a3d}.budget-row-actions{min-width:76px}.trip-chips{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0;display:grid}.trip-chips>.trip-metric{background:#f6f1e8;border:1px solid #d9d1c3;border-radius:8px;gap:3px;min-width:0;padding:8px 9px;display:grid}.trip-metric-label{color:#718179;letter-spacing:.04em;text-transform:uppercase;overflow-wrap:anywhere;font-size:10px;font-weight:700}.trip-metric-value{color:#173c31;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:14px}@media (width<=650px){.item-row{grid-template-columns:8px minmax(0,1fr) auto}.item-row .budget-row-actions{grid-column:2/-1;justify-self:end;margin-top:3px}.trip-chips{grid-template-columns:repeat(2,minmax(0,1fr));margin:12px 0}.trip-chips>.trip-metric:last-child{grid-column:1/-1}.trip-chips>.trip-metric{padding:7px 8px}.city-grid{grid-template-columns:1fr}.city-entry{grid-template-columns:minmax(0,1fr) auto;align-items:center;display:grid}.city-entry small{grid-column:2;justify-self:end;margin-left:0}.city-entry .status-chip{grid-area:1/2}.city-entry>span{min-width:0}}@media (width>=651px){.item-row{grid-template-columns:10px minmax(0,1fr) auto auto 76px}}.city-block h3{flex-wrap:wrap;align-items:baseline;gap:5px 10px;display:flex}.city-date-range{color:#718179;font-size:12px;font-weight:400}.city-date-pair{grid-template-columns:1fr 1fr;gap:8px;display:grid}.city-form-row>.city-date-pair{grid-column:1/-1}@media (width<=650px){.city-date-range{flex-basis:100%}}.trip-form-cities{gap:10px;margin:12px 0;display:grid}.form-section-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.city-form-row{background:#f6f1e8;border:1px solid #e3dbce;border-radius:8px;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:12px;display:grid}.city-form-row>label,.city-form-row>div:not(.city-date-pair){color:#47544d;gap:5px;min-width:0;font-size:12px;display:grid}.city-form-row>div:not(.city-date-pair)>span{font-weight:700}.city-form-row .status-chip{justify-self:start}.city-form-row>.city-date-pair{min-width:0}.city-form-row>.city-date-pair label{color:#47544d;gap:5px;min-width:0;font-size:12px;display:grid}.city-form-row>button{grid-column:2;place-self:start end}@media (width<=420px){.city-form-row{grid-template-columns:1fr}.city-form-row>button{grid-column:1}.city-date-pair{grid-template-columns:1fr 1fr}.city-block h3>span:first-child{overflow-wrap:anywhere;min-width:0}.city-date-range{flex-wrap:wrap;gap:3px 6px;line-height:1.35;display:flex}}.trip-item-amounts{color:#58645d;font-variant-numeric:tabular-nums;gap:2px;font-size:11px;display:grid}.trip-item-amounts strong{color:#173c31}.missing-actual{color:#a64835;font-weight:700}.city-entry .trip-item-amounts{grid-column:1/-1}.budget-trip-row{gap:10px}.budget-trip-row .trip-item-amounts{margin-left:auto}.budget-trip-row .icon-action{flex:none}@media (width<=650px){.city-entry .icon-action{grid-column:1;justify-self:start}.budget-trip-row{flex-wrap:wrap}.budget-trip-row .trip-item-amounts{flex:160px;margin-left:0}}.account-row>span{flex-wrap:wrap;align-items:baseline;gap:4px 12px;display:flex}.account-row>span small{margin:0}:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-ink:#202c3b;--color-muted:#596879;--color-paper:#f3f5f8;--color-surface:#fff;--color-soft:#eaf0f6;--color-border:#d4dde7;--color-accent:#496dcc;--color-success:#247b69;--color-danger:#b64c58;--color-positive-soft:#e7f3ee;--color-positive-ink:#246753;--color-warning-soft:#f8f0df;--color-warning-ink:#805c20;--color-danger-soft:#fae9ed;--color-sidebar:#172231;--color-sidebar-active:#283b55;color:var(--color-ink);background:var(--color-paper)}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-ink:#e4eaf2;--color-muted:#a7b5c8;--color-paper:#101620;--color-surface:#192230;--color-soft:#222f40;--color-border:#37465a;--color-accent:#96b3ff;--color-success:#7ad4bc;--color-danger:#f29baa;--color-positive-soft:#203c36;--color-positive-ink:#9de0c9;--color-warning-soft:#3b3324;--color-warning-ink:#edca85;--color-danger-soft:#412932;--color-sidebar:#131c28;--color-sidebar-active:#293b55}body{background:var(--color-paper);color:var(--color-ink)}h1,h2,h3,.amount,.composition-number,.trip-metric-value,.trip-item-amounts strong{color:var(--color-ink)}.sidebar{background:var(--color-sidebar);color:#e4eaf2}.sidebar a{color:#b6c4d6}.sidebar a.active{background:var(--color-sidebar-active);border-color:#96b3ff}.brand-mark{color:#172231;background:#96b3ff}.sidebar-note{border-color:#37465a}.sidebar-note span{color:#96b3ff}.sidebar-note small{color:#b6c4d6}.panel,.dialog,.trip-card,.month-select,.payment-moments,.export-link,.month-navigation button,.icon-action,.row-actions .icon-action,.row-actions .icon-action.destructive{background:var(--color-surface);color:var(--color-ink);border-color:var(--color-border)}.insights,.city-cell,.trip-actions,.city-form-row,.trip-chips>span,.trip-chips>.trip-metric,.chart-summary{background:var(--color-soft);color:var(--color-ink);border-color:var(--color-border)}.subtle,.source,.eyebrow,.refresh-status,.rollover-status,.bar-legend,.trip-period,.trip-legend,.trip-metric-label,.city-date-range,.city-block h3 small,.city-cell>strong,.trip-item-amounts,.incidentals-list span,.empty-incidentals,.payment-moments p,.form-grid label,.city-form-row>label,.city-form-row>div:not(.city-date-pair),.city-date-pair label,.account-row small,.item-flow,.item-label small,.item-main>span:not(.recurrence-tag):not(.one-off-tag),.composition-number small,.insight p,.empty-chart,.dialog label,.empty-items,.trip-completion{color:var(--color-muted)}.trip-completion.complete{color:var(--color-success)}.items .item-row,.items .item-row:first-child,.city-block,.trip-group,.incidentals-list li,.account-row,.budget-trip-row,.task-row{border-color:var(--color-border)}.items{background:var(--color-surface);border-color:var(--color-border)}.items .item-row{background:var(--color-surface);color:var(--color-ink)}.items .item-row:hover{background:var(--color-soft)}.items .item-row.one-off-expense{background:var(--color-warning-soft)}.item-main strong,.item-amount .amount{color:var(--color-ink)}.item-main .recurrence-tag{background:var(--color-positive-soft);color:var(--color-positive-ink)}.item-main .one-off-tag{background:var(--color-warning-soft);color:var(--color-warning-ink)}.item-flow.income{color:var(--color-success)}.item-flow.expense,.item-flow.one_off_expense{color:var(--color-danger)}.item-flow.savings_transfer{color:var(--color-accent)}.tabs{border-color:var(--color-border)}.tabs button.selected{border-color:var(--color-accent)}.insights .insight{background:var(--color-surface);color:var(--color-ink);border-color:var(--color-border)}.insights .insight.positive{border-left-color:var(--color-success)}.insights .insight.attention{border-left-color:var(--color-warning-ink)}.kpi,.kpi.mint,.kpi.forest,.kpi.amber,.kpi.red{background:var(--color-surface);color:var(--color-ink);border:1px solid var(--color-border);box-shadow:none;border-top:3px solid var(--color-accent)}.kpi.mint{border-top-color:var(--color-success)}.kpi.amber{border-top-color:var(--color-warning-ink)}.kpi.red{border-top-color:var(--color-danger)}.kpi p{color:var(--color-muted)}.kpi-icon{color:var(--color-muted);background:var(--color-soft)}.kpi strong{color:var(--color-ink)}input,select,textarea,.dialog input,.dialog select,.dialog textarea{background-color:var(--color-surface);color:var(--color-ink);border-color:var(--color-border)}.month-select select,.theme-control select{color:inherit;background:0 0}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.icon-action:focus-visible,.row-actions .icon-action:focus-visible{outline-color:var(--color-accent)}.primary{color:#fff;background:#496dcc}.small-action,.recurrence-tag,.city-entry.yes,.trip-chip,.insight.positive .insight-tone{background:var(--color-positive-soft);color:var(--color-positive-ink)}.reconstructed,.one-off-tag,.insight.attention .insight-tone{background:var(--color-warning-soft);color:var(--color-warning-ink)}.city-entry.no,.inline-error,.form-error{background:var(--color-danger-soft);color:var(--color-danger)}.city-entry.unknown,.insight.neutral .insight-tone{background:var(--color-soft);color:var(--color-muted)}.missing-actual{color:var(--color-danger)}.item-row.one-off-expense{background:var(--color-warning-soft);border-left-color:var(--color-warning-ink)}.icon-action:hover,.row-actions .icon-action:hover,.export-link:hover{background:var(--color-soft);border-color:var(--color-accent);color:var(--color-ink)}.icon-action.destructive:hover,.row-actions .icon-action.destructive:hover{background:var(--color-danger-soft);color:var(--color-danger);border-color:var(--color-danger)}.status-chip{background:var(--color-surface);color:var(--color-ink);border-color:var(--color-border)}.dialog-actions button:not(.primary):not(.danger),.close,.tabs button,.state button{background:var(--color-soft);color:var(--color-ink)}.tabs button.active,.tabs button.selected{background:var(--color-sidebar-active);color:#fff}.danger{color:#fff;background:#b64c58}.dialog-backdrop{background:#050a12a6}.category-track,.incidental-track,.item-amount-track,.track{background:var(--color-soft)}.category-track i,.actual-line,.track .mint{background:var(--color-success)}.incidental-track i,.item-amount-track i{background:var(--color-danger)}.one-off-expense .item-amount-track i,.track .amber{background:var(--color-warning-ink)}.track .forest{background:var(--color-accent)}.flow-dot.income,.trip-legend .yes:before{background:var(--color-success)}.flow-dot.expense,.trip-legend .no:before{background:var(--color-danger)}.flow-dot.savings_transfer,.flow-dot.one_off_expense{background:var(--color-warning-ink)}.status-chip.yes{background:var(--color-positive-soft);color:var(--color-positive-ink)}.status-chip.no{background:var(--color-danger-soft);color:var(--color-danger)}.status-chip.unknown{background:var(--color-soft);color:var(--color-muted)}.forecast-line{background:repeating-linear-gradient(90deg, var(--color-accent) 0 6px, transparent 6px 10px)}.chart-summary{border-left-color:var(--color-accent)}.appearance-bar{justify-content:flex-end;margin-bottom:18px;display:flex}.theme-control{border:1px solid var(--color-border);background:var(--color-surface);color:var(--color-muted);border-radius:8px;align-items:center;gap:8px;padding:8px 10px;display:inline-flex}.theme-control select{cursor:pointer;border:0;min-height:24px;font-size:13px}.invoice-profile,.invoice-editor,.invoice-list{margin-top:24px}.invoice-profile summary{cursor:pointer;font-weight:700}.invoice-profile form{margin-top:18px}.invoice-fields{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:16px 0;display:grid}.invoice-page label{color:var(--color-muted);gap:6px;font-size:13px;display:grid}.invoice-page input,.invoice-page select,.invoice-page textarea{border:1px solid var(--color-border);width:100%;min-width:0;font:inherit;color:var(--color-ink);background:var(--color-surface);border-radius:6px;padding:10px;font-size:16px}.invoice-editor fieldset{border:1px solid var(--color-border);border-radius:8px;min-width:0;margin:20px 0;padding:16px}.invoice-editor legend{padding:0 6px;font-weight:700}.invoice-line-editor{grid-template-columns:minmax(140px,3fr) minmax(70px,1fr) minmax(90px,1fr) 80px 36px;align-items:end;gap:10px;margin:14px 0;display:grid}.invoice-line-options{grid-column:1/-1;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;display:grid}.invoice-actions{flex-wrap:wrap;align-items:center;gap:10px;margin:20px 0;display:flex}.invoice-actions .small-action{align-items:center;gap:6px;display:inline-flex}.invoice-list-head{flex-wrap:wrap;justify-content:space-between;gap:12px;margin-bottom:16px;display:flex}.invoice-list-row{text-align:left;border-bottom:1px solid var(--color-border);width:100%;color:var(--color-ink);background:0 0;align-items:center;gap:12px;padding:16px 0;display:flex}.invoice-list-row>span{overflow-wrap:anywhere;flex:1;gap:5px;min-width:0;display:grid}.invoice-list-row small{color:var(--color-muted)}.invoice-list-row:hover{background:var(--color-soft)}.invoice-totals{width:min(100%,350px);margin:24px 0 24px auto}.invoice-totals p{justify-content:space-between;gap:16px;margin:8px 0;display:flex}.invoice-grand-total{border-top:1px solid;padding-top:12px;font-size:18px}.invoice-document{color:#182333;background:#fff;border:1px solid #d4dde7;border-radius:8px;max-width:900px;margin:24px auto;padding:clamp(20px,5vw,50px);font-size:14px;line-height:1.6}.invoice-document h2{color:#182333;font-size:30px}.invoice-document .eyebrow{color:#596879}.invoice-document address{overflow-wrap:anywhere;font-style:normal;display:grid}.invoice-document-head{justify-content:space-between;gap:24px;display:flex}.invoice-document-head p{margin:4px 0}.invoice-recipient{margin:40px 0 24px}.invoice-table-wrap{margin-top:30px;overflow-x:auto}.invoice-table{border-collapse:collapse;font-variant-numeric:tabular-nums;width:100%}.invoice-table th,.invoice-table td{text-align:right;border-bottom:1px solid #d4dde7;padding:10px 6px}.invoice-table th:first-child,.invoice-table td:first-child{text-align:left;overflow-wrap:anywhere;min-width:140px}.invoice-table th{font-size:12px}.invoice-payment,.invoice-notes{white-space:pre-wrap;overflow-wrap:anywhere}.invoice-document .invoice-grand-total{color:#182333}.invoice-document-compact{padding:24px}.invoice-document-compact .invoice-recipient{margin:18px 0}.invoice-document-compact .invoice-table td{padding:6px}.invoice-document-compact .invoice-document-head h2{font-size:24px}.invoice-description{text-align:left!important}.invoice-description small{color:#596879;display:block}.invoice-logo{object-fit:contain;max-width:220px;max-height:100px;margin-bottom:18px;display:block}.login-page{grid-template-columns:minmax(0,1fr) minmax(320px,440px);align-items:center;gap:clamp(32px,8vw,100px);max-width:1150px;min-height:100dvh;margin:auto;padding:clamp(24px,5vw,70px);display:grid}.login-intro h1{margin:18px 0;font-size:clamp(34px,5vw,56px);line-height:1.1}.login-intro>p:not(.eyebrow){color:var(--color-muted);max-width:460px;line-height:1.7}.login-brand{color:var(--color-accent);margin-bottom:48px;font-family:Space Grotesk,sans-serif;font-size:24px;font-weight:600;display:block}.login-features{flex-wrap:wrap;gap:8px;margin-top:24px;display:flex}.login-features span{border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;padding:6px 12px;font-size:12px}.login-card{width:100%}.login-card h2{margin-top:8px;font-size:30px}.login-card label{gap:8px;margin:20px 0;display:grid}.login-card input{border:1px solid var(--color-border);border-radius:6px;padding:12px;font-size:16px}.login-card .remember-device{color:var(--color-muted);align-items:center;gap:10px;font-size:13px;display:flex}.login-card .remember-device input{width:18px;height:18px;accent-color:var(--color-accent);margin:0}.login-card .primary{justify-content:center;width:100%}.login-hint{color:var(--color-muted);font-size:12px;line-height:1.6}.login-switch{color:var(--color-muted);margin-top:20px;font-size:13px;line-height:1.6}.login-switch a{color:var(--color-accent);font-weight:700}.account-back{width:100%;margin-top:12px}@media (width<=760px){.login-page{grid-template-columns:1fr;gap:24px;max-width:560px}.login-brand{margin-bottom:24px}.login-intro h1{font-size:34px}.login-features{display:none}}.account-bar{border-bottom:1px solid var(--color-border);color:var(--color-muted);justify-content:flex-end;align-items:center;gap:16px;padding:10px 24px;font-size:13px;display:flex}@media (width<=650px){.sidebar{flex-wrap:wrap;gap:10px}.sidebar nav{flex-wrap:wrap}.invoice-fields{grid-template-columns:1fr}.invoice-line-editor{grid-template-columns:repeat(2,minmax(0,1fr))}.invoice-line-editor>label:first-child{grid-column:1/-1}.invoice-line-options{grid-template-columns:1fr}.invoice-document-head{flex-direction:column}.invoice-list-row>strong{white-space:nowrap;font-size:13px}}@page{size:A4;margin:15mm}@media print{:root,body{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#182333!important;background:#fff!important}.sidebar,.appearance-bar,.invoice-screen,.dialog-backdrop{display:none!important}.shell,.content{max-width:none;margin:0;padding:0;display:block}.invoice-document{border:0;border-radius:0;max-width:none;margin:0;padding:0}.invoice-document-head{flex-direction:row}.invoice-table-wrap{overflow:visible}.invoice-table thead{display:table-header-group}.invoice-table tr,.invoice-document-head,.invoice-recipient,.invoice-totals{break-inside:avoid}.invoice-payment,.invoice-notes{break-inside:auto}}
