@font-face{font-family:Figtree;src:url(/fonts/figtree-v9-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Figtree;src:url(/fonts/figtree-v9-latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Figtree;src:url(/fonts/figtree-v9-latin-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Figtree;src:url(/fonts/figtree-v9-latin-700.woff2) format("woff2");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Newsreader;src:url(/fonts/newsreader-v26-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Newsreader;src:url(/fonts/newsreader-v26-latin-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Newsreader;src:url(/fonts/newsreader-v26-latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Newsreader;src:url(/fonts/newsreader-v26-latin-500italic.woff2) format("woff2");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Instrument Sans;src:url(/fonts/instrument-sans-v4-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Instrument Sans;src:url(/fonts/instrument-sans-v4-latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Instrument Sans;src:url(/fonts/instrument-sans-v4-latin-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Manrope;src:url(/fonts/manrope-v20-latin-regular.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Manrope;src:url(/fonts/manrope-v20-latin-500.woff2) format("woff2");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Manrope;src:url(/fonts/manrope-v20-latin-600.woff2) format("woff2");font-weight:600;font-style:normal;font-display:swap}:root{--bg:#F5F1E9;--surface:#FFFFFF;--surface-2:#FBF8F2;--border:#E8E1D5;--border-soft:#F0EBE1;--text:#322E29;--muted:#7C736A;--muted-2:#A79E93;--accent:#8A5C3A;--accent-hover:#754b2e;--accent-soft:#EFE3D6;--focus:#B0714A;--brand:#3D5F6B;--brand-hover:#325060;--c-income:#7E9B6E;--c-fix:#C08A5E;--c-var:#B8926A;--c-debt:#B07C8A;--c-rate:#A87486;--c-goal:#C6A15B;--c-goalinfo:#9B8FB0;--c-free:#8FA3B0;--c-rest:#BDB2A4;--radius:16px;--radius-sm:10px;--shadow:0 1px 2px rgba(50,46,41,.04),0 8px 28px rgba(50,46,41,.06);--shadow-sm:0 1px 2px rgba(50,46,41,.05);--font:"Figtree",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:var(--font);background:var(--bg);color:var(--text);line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:var(--accent)}a:hover{color:var(--accent-hover)}.wordmark{font-weight:700;letter-spacing:-.01em;font-size:20px;color:var(--text)}.wordmark .dot{color:var(--accent)}#authGate{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:400px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:36px 32px}.auth-card .wordmark{display:block;margin-bottom:22px}.auth-card h1{font-size:21px;font-weight:600;margin:0 0 6px;letter-spacing:-.01em}.auth-card .sub{color:var(--muted);font-size:14.5px;margin:0 0 26px}.badge-private{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);background:var(--surface-2);border:1px solid var(--border);border-radius:999px;padding:4px 11px;margin-bottom:20px}.badge-private:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--c-goal)}.field{margin-bottom:16px}.field label{display:block;font-size:13.5px;font-weight:500;margin-bottom:6px;color:var(--text)}.field input{width:100%;font-family:var(--font);font-size:15px;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:12px 14px;transition:border-color .15s,box-shadow .15s}.field input::placeholder{color:var(--muted-2)}button:focus-visible,input:focus-visible{outline:none;border-color:var(--focus);box-shadow:0 0 0 3px rgba(176,113,74,.18)}.btn{font-family:var(--font);font-size:15px;font-weight:600;cursor:pointer;border-radius:var(--radius-sm);border:1px solid transparent;transition:background .15s,color .15s,border-color .15s}.btn-primary{background:var(--accent);color:#fff;padding:12px 18px}.btn-primary:hover{background:var(--accent-hover)}.btn-block{width:100%}a.btn{display:inline-block;text-align:center;text-decoration:none;box-sizing:border-box}.btn-ghost{background:transparent;color:var(--accent);border-color:var(--border);padding:8px 14px;font-size:14px;font-weight:500}.btn-ghost:hover{background:var(--accent-soft);border-color:var(--accent-soft)}.btn:disabled{opacity:.45;cursor:default;pointer-events:none}#app{display:none}.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}.content-wrapper{max-width:960px;margin:0 auto;padding:48px 24px}.content-wrapper:has(#app){max-width:1200px}.lede{max-width:620px;margin:4px 0 30px}.lede h1{font-size:26px;font-weight:600;letter-spacing:-.015em;margin:0 0 8px}.lede p{color:var(--muted);font-size:15.5px;margin:0;text-wrap:pretty}.cards-grid{display:flex;gap:22px;align-items:flex-start}.cards-grid .cards-col{flex:1 1;min-width:0}.cards-grid .cards-col>.cat{margin-bottom:22px}.cards-grid .cards-col>.cat:last-child{margin-bottom:0}@media (max-width:900px){.cards-grid{display:block}.cards-grid>.cat{margin-bottom:22px}}.cat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);overflow:hidden}.cat+.cat{margin-top:18px}.cat-head{display:flex;align-items:center;gap:12px;padding:18px 20px 16px;border-bottom:1px solid var(--border-soft)}.cat-swatch{width:12px;height:12px;border-radius:4px;flex:none}.cat-title{font-size:16.5px;font-weight:600;letter-spacing:-.01em}.cat-title .hint{display:block;font-size:12.5px;font-weight:400;color:var(--muted-2);margin-top:1px}.cat-total{margin-left:auto;text-align:right}.cat-total .amt{font-size:19px;font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.cat-total .lbl{font-size:11.5px;color:var(--muted-2)}.cat-body{padding:8px 20px 18px}.quick-row{display:flex;align-items:center;gap:12px;padding:12px 0 6px}.quick-row label{font-size:13.5px;color:var(--muted);flex:none}.amount-input{position:relative;display:inline-flex;align-items:center}.amount-input input{font-family:var(--font);font-size:15px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text);background:var(--surface-2);border:1px solid var(--border);border-radius:var(--radius-sm);padding:10px 30px 10px 12px;width:150px;text-align:right;transition:border-color .15s,box-shadow .15s}.amount-input .eur{position:absolute;right:12px;color:var(--muted-2);font-size:14px;pointer-events:none}.children{margin-top:6px}.node{padding:10px 0 10px 14px;margin-left:2px;border-left:2px solid var(--border-soft)}.node.level-3{margin-left:18px}.node-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.node-row .label-input{flex:1 1 160px;min-width:120px;font-family:var(--font);font-size:14.5px;color:var(--text);background:transparent;border:1px solid transparent;border-radius:8px;padding:7px 9px;transition:border-color .15s,background .15s,box-shadow .15s}.node-row .label-input:hover{background:var(--surface-2)}.node-row .label-input:focus-visible{background:var(--surface-2);border-color:var(--focus);box-shadow:0 0 0 3px rgba(176,113,74,.16)}.node-row .amount-input input{width:120px;padding:8px 28px 8px 10px}.icon-btn{flex:none;width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;font-size:15px;line-height:1;transition:background .15s,color .15s,border-color .15s}.icon-btn:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent-soft)}.add-link{display:inline-flex;align-items:center;gap:6px;margin-top:8px;font-family:var(--font);font-size:13px;font-weight:500;color:var(--muted);background:transparent;border:none;cursor:pointer;padding:6px 4px;border-radius:8px;transition:color .15s,opacity .15s}.add-link:focus-visible,.add-link:hover{color:var(--accent);text-decoration:none}.add-link:disabled{color:var(--muted-2);cursor:not-allowed;text-decoration:none}.add-link .plus{display:inline-flex;align-items:center;justify-content:center;width:17px;height:17px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--muted);font-size:13px;line-height:1;transition:background .15s,color .15s,border-color .15s}.add-link:focus-visible .plus,.add-link:hover .plus{background:var(--accent-soft);border-color:transparent;color:var(--accent)}.add-link:disabled .plus{border-color:var(--border-soft);color:var(--muted-2);background:transparent}.alloc-line{margin:2px 0 0 26px;font-size:12.5px;color:var(--muted)}.alloc-line label{display:inline-flex;align-items:center;gap:6px}.alloc-select{font-family:var(--font);font-size:12.5px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:3px 8px;max-width:320px;cursor:pointer;transition:border-color .15s}.alloc-select:focus-visible,.alloc-select:hover{border-color:var(--focus);outline:none}.alloc-select:disabled{color:var(--muted-2);cursor:not-allowed;background:var(--surface-2)}.rate-split{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.rate-split .amount-input--sm input{width:72px;font-size:12.5px;padding:3px 6px}.rate-split .tilgung{color:var(--muted)}.rate-split .tilgung-amt{color:var(--text);font-weight:500;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.sonstiges{gap:10px;margin-top:8px;padding:9px 12px;background:var(--surface-2);border:1px dashed var(--border);border-radius:var(--radius-sm);font-size:13.5px;color:var(--muted)}.sonstiges,.sonstiges .s-label{display:flex;align-items:center}.sonstiges .s-label{gap:7px}.sonstiges .s-label .tag{font-size:10.5px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted-2);border:1px solid var(--border);border-radius:999px;padding:1px 7px}.sonstiges .s-amt{margin-left:auto;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--text);font-weight:500}.cat-foot{display:flex;align-items:center;gap:12px;padding:14px 20px;border-top:1px solid var(--border-soft);background:var(--surface-2)}.save-note{font-size:13px;color:var(--c-income);opacity:0;transition:opacity .2s;display:inline-flex;align-items:center;gap:6px}.save-note.show{opacity:1}.save-note:before{content:"✓"}.viz{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px;margin-bottom:22px}.viz h2{font-size:15px;font-weight:600;margin:0 0 2px;letter-spacing:-.01em}.viz .viz-sub{font-size:13px;color:var(--muted);margin:0 0 16px}.viz-body{display:grid;grid-template-columns:minmax(0,1fr);grid-gap:0 28px;gap:0 28px;align-items:start}@media (min-width:1100px){.viz-body{grid-template-columns:minmax(0,2fr) minmax(0,1fr)}.viz-body table.summary{margin-top:16px}}.sankey-wrap{width:100%;overflow-x:auto;padding:16px 0}svg.sankey{display:block;width:100%;min-width:640px;height:auto}.flow-label{font-size:13px;font-weight:500;fill:var(--text)}.flow-amt,.flow-label{font-family:var(--font);paint-order:stroke;stroke:var(--surface);stroke-width:3px;stroke-linejoin:round}.flow-amt{font-size:12px;font-weight:400;fill:var(--muted)}.flow-amt--strong{font-weight:600;fill:var(--text)}svg.sankey .flow{transition:fill-opacity .15s ease}svg.sankey .flow:hover{fill-opacity:.65}table.summary{width:100%;border-collapse:collapse;margin-top:20px;font-size:13.5px}table.summary th{text-align:left;font-weight:500;color:var(--muted-2);font-size:11.5px;text-transform:uppercase;letter-spacing:.05em;padding:0 8px 8px}table.summary td:not(:first-child),table.summary th:not(:first-child){text-align:right}table.summary td{padding:9px 8px;border-top:1px solid var(--border-soft);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}table.summary .name{display:flex;align-items:center;gap:8px;font-weight:500;color:var(--text)}table.summary .dot{width:9px;height:9px;border-radius:3px;flex:none}table.summary tr.total td{border-top:1px solid var(--border);font-weight:600;color:var(--text)}.bar{height:5px;background:var(--border-soft);margin-top:4px;overflow:hidden}.bar,.bar>i{border-radius:3px}.bar>i{display:block;height:100%}.global-save{display:flex;align-items:center;gap:14px;margin-top:28px}.global-save p{margin:0;flex:1 1}.footnote,.global-save p{font-size:12.5px;color:var(--muted-2)}.footnote{margin-top:26px;max-width:640px;text-wrap:pretty}.footnote code{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:5px;padding:1px 5px;font-size:12px}.settings-link{margin-top:20px;text-align:right}.settings-link a{font-family:var(--font);font-size:13.5px;color:var(--muted);text-decoration:none}.settings-link a:hover{color:var(--accent);text-decoration:underline}.settings-back{margin:0 0 20px}.settings-back a{font-family:var(--font);font-size:13.5px;color:var(--muted);text-decoration:none}.settings-back a:hover{color:var(--accent);text-decoration:underline}.error-inline{display:none;font-size:13px;color:#A04545;background:#F7ECEA;border:1px solid #e7d2ce;border-radius:var(--radius-sm);padding:8px 12px;margin:0;flex:1 1;text-wrap:pretty}.error-inline.show{display:block}.auth-card .error-inline.show{margin-top:14px}.save-note.stick{opacity:1}.auth-notice{display:none;font-size:13px;color:var(--text);background:var(--accent-soft);border:1px solid var(--border);border-radius:var(--radius-sm);padding:9px 12px;margin:14px 0 0;text-wrap:pretty}.auth-notice.show{display:block}.auth-switch{font-size:13.5px;margin:18px 0 0}.auth-switch,.auth-trust{color:var(--muted);text-align:center}.auth-trust{font-size:12px;opacity:.85;margin:14px 0 0}.linklike{font-family:var(--font);font-size:13.5px;font-weight:600;color:var(--accent);background:none;border:none;padding:0;cursor:pointer}.linklike:hover{color:var(--accent-hover);text-decoration:underline}.input-with-toggle{position:relative}.input-with-toggle input{padding-right:44px}.toggle-visibility{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:none;padding:6px;cursor:pointer;line-height:0;color:var(--muted);border-radius:8px}.toggle-visibility:hover{color:var(--text)}.strength-meter{display:flex;align-items:center;gap:8px;margin-top:8px}.strength-bar{flex:1 1;height:4px;border-radius:999px;background:var(--border-soft);overflow:hidden}.strength-fill{display:block;height:100%;border-radius:999px;transition:width .15s,background-color .15s}.strength-fill.strength-schwach{width:33%;background:#C0645A}.strength-fill.strength-mittel{width:66%;background:var(--c-goal)}.strength-fill.strength-stark{width:100%;background:var(--c-income)}.strength-label{font-size:12px;font-weight:600;color:var(--muted);min-width:42px;text-align:right}.password-rules{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:3px}.password-rules li{font-size:12.5px;padding-left:18px;position:relative;color:var(--muted-2)}.password-rules li:before{content:"✕";position:absolute;left:0;top:0;font-size:10px}.password-rules li.rule-ok{color:var(--text)}.password-rules li.rule-ok:before{content:"✓";color:var(--c-income)}.drag-handle{flex:none;cursor:-webkit-grab;cursor:grab;color:var(--muted-2);font-size:15px;line-height:1;padding:2px;-webkit-user-select:none;-moz-user-select:none;user-select:none;letter-spacing:-2px;opacity:0;transition:opacity .12s}.node-row:hover>.drag-handle{opacity:1}.drag-handle:active{cursor:-webkit-grabbing;cursor:grabbing}@media (hover:none){.drag-handle{opacity:.45}}.node[draggable=true]{border-radius:8px}.node.dragging{opacity:.35}.node[draggable=true] .node-row:hover .drag-handle{color:var(--accent)}.node{position:relative}.node.drop-before:before{content:"";position:absolute;top:-2px;left:10px;right:6px;height:3px;border-radius:2px;background:var(--focus)}.node.drop-into>.node-row{box-shadow:inset 0 0 0 2px var(--focus);background:var(--accent-soft);border-radius:8px}#tree.drag-active .add-link{opacity:.25}.section-head{font-size:17px;font-weight:600;letter-spacing:-.01em;margin:38px 0 4px}.section-sub{color:var(--muted);font-size:14px;margin:0 0 18px;max-width:640px;text-wrap:pretty}.info-grid{display:grid;grid-template-columns:1fr 1fr;grid-gap:18px;gap:18px;align-items:flex-start}.info-grid>.cat{align-self:flex-start}.info-grid>.cat+.cat{margin-top:0}@media (max-width:720px){.info-grid{grid-template-columns:1fr}}.cat.info .cat-total .lbl{display:block;color:var(--muted-2);font-size:11.5px}.info-note{font-size:13px;color:var(--muted);background:var(--surface-2);border:1px solid var(--border-soft);border-radius:var(--radius-sm);padding:9px 12px;margin:10px 0 4px;text-wrap:pretty}.info-note strong{color:var(--text);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.viz-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.viz-head h2{margin:0}.viz-expand{font-size:16px;line-height:1}.sankey-modal{display:none;position:fixed;inset:0;z-index:100;background:rgba(50,46,41,.42);-webkit-backdrop-filter:saturate(1.1) blur(2px);backdrop-filter:saturate(1.1) blur(2px);align-items:center;justify-content:center;padding:2vh 2vw}.sankey-modal.open{display:flex}.sankey-dialog{width:92vw;height:90vh;display:flex;flex-direction:column;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}.sankey-dialog-head{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;border-bottom:1px solid var(--border-soft);background:var(--surface-2);flex:none}.sankey-dialog-head h2{font-size:15px;font-weight:600;margin:0;letter-spacing:-.01em}.sankey-stage{flex:1 1 auto;min-height:0;padding:12px 16px}.sankey-stage>svg{width:100%;height:100%;display:block}.drag-hint{font-size:13px;color:var(--muted);margin:0 0 12px}.dirty-badge{display:none;font-size:12px;font-weight:500;color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:3px 10px}.cat.is-dirty .dirty-badge{display:inline-flex}.fluxbar{position:fixed;top:64px;left:50%;transform:translateX(-50%);z-index:90;display:flex;align-items:center;gap:18px;background:var(--surface);border:1px solid var(--border);border-radius:999px;box-shadow:var(--shadow);padding:8px 20px;font-family:var(--font);font-size:13px;color:var(--muted);cursor:pointer;white-space:nowrap}.fluxbar[hidden]{display:none}.fluxbar strong{color:var(--text);font-weight:600;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.fluxbar .free-neg{color:var(--c-debt)}.sankey-tip{position:fixed;z-index:110;max-width:280px;background:var(--text);color:var(--surface);font-size:12.5px;line-height:1.45;padding:7px 11px;border-radius:8px;box-shadow:var(--shadow);pointer-events:none}.sankey-tip[hidden]{display:none}.chat-status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;color:var(--muted)}.chat-status-dot{width:7px;height:7px;border-radius:50%;background:var(--muted);flex-shrink:0}.chat-status--active{color:#2D7A3A}.chat-status--active .chat-status-dot{background:#2D7A3A}.chat-status--inactive{color:#C0392B}.chat-status--inactive .chat-status-dot{background:#C0392B}@media (max-width:640px){.content-wrapper{padding:32px 16px}}