:root{--bg:#f5f7f4;--surface:#fff;--text:#334155;--text-muted:#64748b;--text-strong:#18212f;--border:#dbe4df;--accent:#13795b;--accent-soft:#9ed8bf;--success:#13795b;--danger:#b42318;--shadow:0 18px 45px #18212f14;--font-sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;color:var(--text);background:var(--bg);font-family:var(--font-sans);font-synthesis:none;letter-spacing:0;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:16px;line-height:1.5}*{box-sizing:border-box}body{background:linear-gradient(180deg, #13795b14 0%, transparent 320px), var(--bg);min-width:320px;min-height:100vh;margin:0}button,input,textarea,select{font:inherit}#root{min-height:100vh}*,:before,:after{box-sizing:border-box}.dashboard-shell{width:min(1120px,100% - 32px);margin:0 auto;padding:48px 0}.dashboard-header{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:28px;display:flex}.app-navigation{border:1px solid var(--border);background:#ffffffb8;border-radius:8px;justify-content:space-between;align-items:center;gap:8px;margin-bottom:24px;padding:8px;display:flex}.app-navigation-items{flex-wrap:wrap;flex:1;gap:8px;min-width:0;display:flex}.app-navigation-actions{flex-shrink:0;justify-content:flex-end;align-items:center;margin-left:auto;display:flex}.app-navigation-items button{min-height:44px;color:var(--text-muted);overflow-wrap:anywhere;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:0 16px;font-weight:800}.app-navigation-items button:hover{color:var(--accent);background:#eef8f3}.app-navigation-items button.is-active{border-color:var(--accent-soft);color:var(--accent);background:#eef8f3}.auth-status{border-left:1px solid var(--border);min-width:0;color:var(--text-muted);justify-content:flex-end;align-items:center;gap:10px;margin:0;padding-left:12px;font-weight:800;display:flex}.auth-status span{min-width:0;color:var(--text-strong);overflow-wrap:anywhere}.period-label{color:var(--accent);margin:0 0 8px;font-size:.9rem;font-weight:700}.month-filter{gap:6px;min-width:200px;display:grid}.month-filter label{color:var(--text-muted);text-transform:uppercase;font-size:.78rem;font-weight:800}.month-filter select{border:1px solid var(--border);min-height:44px;color:var(--text-strong);background:var(--surface);cursor:pointer;border-radius:8px;padding:0 40px 0 14px;font-weight:700}.month-filter select:focus{border-color:var(--accent);outline:3px solid #13795b29}.month-filter select:disabled{color:var(--text-muted);cursor:not-allowed}.dashboard-header h1,.empty-state h1{color:var(--text-strong);margin:0;font-size:2.5rem;font-weight:760;line-height:1.08}.kpi-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:24px;display:grid}.kpi-card,.category-chart-section,.budget-chart-section,.category-management-section,.person-management-section,.real-estate-section,.category-section,.transaction-form-section,.recurring-section,.transaction-section,.empty-state{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:8px}.kpi-card{flex-direction:column;justify-content:space-between;min-height:142px;padding:22px;display:flex}.kpi-card p{color:var(--text-muted);margin:0;font-size:.95rem;font-weight:700}.kpi-card strong{color:var(--text-strong);margin:16px 0 10px;font-size:2rem;line-height:1.05;display:block}.kpi-card span{color:var(--text-muted);font-size:.9rem}.kpi-card.is-highlighted{border-color:var(--accent-soft);background:linear-gradient(135deg,#fff 0%,#eef8f3 100%)}.real-estate-kpi-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;padding:0 24px 24px;display:grid}.real-estate-content{gap:20px;padding-bottom:24px;display:grid}.real-estate-form{border-top:1px solid var(--border)}.compact-section-heading{padding-bottom:0}.compact-section-heading h3{color:var(--text-strong);margin:0;font-size:1rem}.real-estate-form-grid{padding:18px 24px 0}.real-estate-form-actions{grid-column:1/-1}.real-estate-name-cell{gap:4px;min-width:0;display:grid}.real-estate-name-cell span:first-child{color:var(--text-strong)}.real-estate-name-cell span:last-child{color:var(--text-muted);overflow-wrap:anywhere;font-size:.86rem;font-weight:700}.category-section,.category-chart-section,.budget-chart-section,.category-management-section,.person-management-section,.real-estate-section,.transaction-form-section,.recurring-section,.transaction-section{overflow:hidden}.category-chart-section,.budget-chart-section,.category-management-section,.person-management-section,.real-estate-section,.category-section,.transaction-form-section,.recurring-section{margin-bottom:24px}.category-chart{gap:18px;padding:22px 24px 24px;display:grid}.category-chart-row{gap:8px;display:grid}.category-chart-meta{color:var(--text-strong);justify-content:space-between;align-items:baseline;gap:16px;font-weight:700;display:flex}.category-chart-meta strong{font-variant-numeric:tabular-nums;white-space:nowrap}.category-chart-track{background:#edf2ef;border-radius:999px;height:12px;overflow:hidden}.category-chart-bar{border-radius:inherit;background:var(--accent);height:100%}.budget-chart{gap:20px;padding:22px 24px 24px;display:grid}.budget-chart-row{gap:10px;display:grid}.budget-chart-meta{justify-content:space-between;align-items:flex-start;gap:18px;display:flex}.budget-chart-category{min-width:0;color:var(--text-strong);flex-wrap:wrap;align-items:center;gap:10px;font-weight:800;display:flex}.budget-chart-category>span:first-child{overflow-wrap:anywhere}.budget-chart-values{min-width:168px;color:var(--text-muted);text-align:right;gap:4px;font-size:.9rem;display:grid}.budget-chart-values strong{color:var(--text-strong);font-variant-numeric:tabular-nums;white-space:nowrap}.budget-chart-values span{font-variant-numeric:tabular-nums}.budget-chart-track{background:#edf2ef;border-radius:999px;height:12px;overflow:hidden}.budget-chart-bar{border-radius:inherit;height:100%}.budget-chart-bar.is-on-track{background:var(--success)}.budget-chart-bar.is-warning{background:#c68400}.budget-chart-bar.is-exceeded{background:var(--danger)}.section-heading{border-bottom:1px solid var(--border);padding:22px 24px}.section-heading-with-actions{justify-content:space-between;align-items:center;gap:16px;display:flex}.section-heading-actions{justify-content:flex-end}.section-heading-with-actions .primary-button,.section-heading-with-actions .secondary-button{flex-shrink:0}.section-heading h2,.section-heading h3{color:var(--text-strong);margin:0;font-size:1.25rem;line-height:1.2}.inline-empty{border-bottom:1px solid var(--border);color:var(--text-muted);background:#fff8e8;margin:0;padding:16px 24px}.transaction-form{padding:22px 24px 24px}.transaction-filter-panel{border-bottom:1px solid var(--border);background:#fbfdfb;padding:22px 24px 24px}.transaction-filter-grid{align-items:end}.form-grid{grid-template-columns:repeat(4,minmax(0,1fr));align-items:start;gap:16px;display:grid}.form-field{gap:6px;min-width:0;display:grid}.form-field-wide{grid-column:span 2}.form-field-full,.form-actions{grid-column:1/-1}.form-field label{color:var(--text-muted);text-transform:uppercase;font-size:.78rem;font-weight:800}.form-field input,.form-field select,.form-field textarea{width:100%;min-width:0;max-width:100%;min-inline-size:0;max-inline-size:100%;border:1px solid var(--border);min-height:44px;color:var(--text-strong);background:var(--surface);border-radius:8px;padding:10px 12px;font-weight:650;display:block}.form-field input[type=date],.form-field input[type=month]{appearance:none;inline-size:100%}.form-field textarea{resize:vertical;min-height:92px}.form-field-checkbox{align-content:start}.checkbox-control{border:1px solid var(--border);background:var(--surface);min-height:44px;color:var(--text-strong);text-transform:none;border-radius:8px;align-items:center;gap:10px;padding:10px 12px;font-size:.95rem;font-weight:700;display:flex}.checkbox-control input{width:18px;min-width:18px;height:18px;min-height:18px;padding:0}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{border-color:var(--accent);outline:3px solid #13795b29}.form-field [aria-invalid=true]{border-color:var(--danger)}.form-error{color:var(--danger);margin:0;font-size:.82rem;font-weight:750}.form-hint{color:var(--text-muted);margin:0;font-size:.82rem;font-weight:700}.form-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.transaction-filter-actions{align-self:end}.category-management-content,.person-management-content{gap:20px;padding:22px 24px 24px;display:grid}.category-list-section .category-management-form{display:none}.category-management-form h3{color:var(--text-strong);margin:0 0 16px;font-size:1rem;line-height:1.2}.category-entry-form,.person-entry-form{gap:16px;display:grid}.category-message{background:#fff1f0;border:1px solid #f4b7b0;border-radius:8px;grid-column:1/-1;margin:0;padding:12px 14px}.primary-button{color:#fff;background:var(--accent);cursor:pointer;border:0;border-radius:8px;min-height:46px;padding:0 18px;font-weight:800}.primary-button:hover{background:#0f684e}.primary-button:focus-visible{outline-offset:2px;outline:3px solid #13795b3d}.secondary-button,.danger-button{border:1px solid var(--border);min-height:46px;color:var(--text-strong);background:var(--surface);cursor:pointer;border-radius:8px;padding:0 18px;font-weight:800}.secondary-button:hover{border-color:var(--accent-soft);color:var(--accent);background:#eef8f3}.danger-button{color:var(--danger);border-color:#f4b7b0}.danger-button:hover{background:#fff1f0}.secondary-button:focus-visible,.danger-button:focus-visible{outline-offset:2px;outline:3px solid #13795b2e}.primary-button:disabled,.secondary-button:disabled,.danger-button:disabled{color:var(--text-muted);cursor:not-allowed;background:#eef2ef}.compact-button{min-height:36px;padding:0 12px;font-size:.86rem}.button-row{flex-wrap:wrap;gap:8px;display:flex}.table-frame{overflow-x:auto}.data-table{border-collapse:collapse;width:100%}.category-table{min-width:920px}.category-management-table{min-width:1080px}.person-management-table{min-width:640px}.real-estate-table{min-width:1440px}.transaction-table{min-width:1620px}.recurring-table{min-width:1500px}.data-table th,.data-table td{border-bottom:1px solid var(--border);text-align:left;white-space:nowrap;padding:16px 24px}.category-table th:not(:first-child),.category-table td:not(:first-child),.amount-cell{text-align:right}.category-table th:last-child,.category-table td:last-child{text-align:left}.data-table thead th{color:var(--text-muted);text-transform:uppercase;font-size:.78rem;font-weight:800}.table-sort-button{color:inherit;font:inherit;text-transform:inherit;cursor:pointer;background:0 0;border:0;padding:0}.table-sort-button:hover{color:var(--accent)}.data-table th[aria-sort=ascending] .table-sort-button:after{content:" ↑"}.data-table th[aria-sort=descending] .table-sort-button:after{content:" ↓"}.data-table tbody th{color:var(--text-strong);font-weight:700}.data-table tbody td{color:var(--text);font-variant-numeric:tabular-nums}.category-management-table th,.category-management-table td{vertical-align:top}.category-management-table th:first-child{white-space:normal;min-width:240px}.category-management-table td:nth-child(2){min-width:160px}.category-management-table td:nth-child(3),.category-management-table td:nth-child(4){min-width:180px}.category-actions-cell,.person-actions-cell,.transaction-actions-cell{min-width:260px}.transaction-source-cell{min-width:160px}.transaction-source-stack{flex-wrap:wrap;align-items:center;gap:6px;display:inline-flex}.category-management-table input,.category-management-table select{border:1px solid var(--border);width:100%;min-height:40px;color:var(--text-strong);background:var(--surface);border-radius:8px;padding:8px 10px;font-weight:650}.category-management-table input:focus,.category-management-table select:focus{border-color:var(--accent);outline:3px solid #13795b29}.category-management-table [aria-invalid=true]{border-color:var(--danger)}.category-management-table .amount-cell input{text-align:right}.category-management-table .form-error{white-space:normal;margin-top:6px}.data-table tbody tr:last-child th,.data-table tbody tr:last-child td{border-bottom:0}.note-cell{color:var(--text-muted)!important}.transaction-card-list{display:none}.transaction-card{border-bottom:1px solid var(--border);background:var(--surface);gap:14px;padding:18px;display:grid}.transaction-card:last-child{border-bottom:0}.transaction-card-header{justify-content:space-between;align-items:flex-start;gap:14px;display:flex}.transaction-card h3{color:var(--text-strong);overflow-wrap:anywhere;margin:0;font-size:1rem;line-height:1.25}.transaction-card p{color:var(--text-muted);margin:4px 0 0;font-size:.9rem;font-weight:700}.transaction-card-amount{color:var(--danger);font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.transaction-card-amount.is-income{color:var(--success)}.transaction-card-tags{flex-wrap:wrap;gap:8px;display:flex}.transaction-card-tags span{border:1px solid var(--border);max-width:100%;min-height:28px;color:var(--text-muted);overflow-wrap:anywhere;background:#f8faf8;border-radius:999px;align-items:center;padding:4px 10px;font-size:.78rem;font-weight:800;display:inline-flex}.transaction-card-details{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 14px;margin:0;display:grid}.transaction-card-details div{min-width:0}.transaction-card-details dt{color:var(--text-muted);text-transform:uppercase;font-size:.75rem;font-weight:800}.transaction-card-details dd{color:var(--text-strong);overflow-wrap:anywhere;margin:2px 0 0;font-weight:700}.transaction-card-actions{justify-content:flex-end}.category-name-cell{white-space:normal;flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}.difference{font-weight:800;color:var(--success)!important}.difference.is-negative{color:var(--danger)!important}.status-badge{border-radius:999px;align-items:center;min-height:28px;padding:4px 10px;font-size:.78rem;font-weight:800;line-height:1;display:inline-flex}.status-badge.is-on-track{color:var(--success);background:#e8f6ef;border:1px solid #b7e1cc}.status-badge.is-warning{color:#8a5a00;background:#fff4cc;border:1px solid #f2d680}.status-badge.is-exceeded{color:var(--danger);background:#fff1f0;border:1px solid #f4b7b0}.status-badge.is-muted{border:1px solid var(--border);color:var(--text-muted);background:#f4f6f4}.status-badge.is-recurring{color:#235876;background:#edf7ff;border:1px solid #b7d3e6}.recurring-rules-panel{border-top:1px solid var(--border)}.empty-state{text-align:center;padding:44px}.empty-state p{color:var(--text-muted);margin:16px 0 0}.empty-state-actions{justify-content:center;margin-top:20px}@media (width<=900px){.kpi-grid,.real-estate-kpi-grid,.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=820px){.dashboard-shell{width:min(100% - 24px,1120px);padding:28px 0}.dashboard-header{flex-direction:column;align-items:stretch;gap:16px;margin-bottom:20px}.month-filter{min-width:0}.month-filter select{width:100%}.dashboard-header h1,.empty-state h1{font-size:2rem}.kpi-grid{grid-template-columns:1fr}.real-estate-kpi-grid{grid-template-columns:1fr;padding:0 18px 18px}.kpi-card{min-height:126px}.kpi-card strong{font-size:1.7rem}.section-heading,.inline-empty,.transaction-form,.real-estate-form-grid,.category-management-content,.person-management-content,.category-chart,.budget-chart,.transaction-filter-panel,.data-table th,.data-table td{padding-left:18px;padding-right:18px}.app-navigation{margin-bottom:20px}.app-navigation-actions{flex-shrink:1}.budget-chart-meta{gap:8px;display:grid}.budget-chart-values{text-align:left;min-width:0}.form-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=620px){.dashboard-shell{width:min(100% - 20px,1120px);padding:20px 0}.app-navigation{grid-template-columns:1fr;gap:10px;display:grid}.app-navigation-items{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.app-navigation-items button{padding:0 10px}.app-navigation-actions{margin-left:0}.auth-status{border-top:1px solid var(--border);border-left:0;grid-template-columns:minmax(0,1fr) auto;width:100%;padding:10px 0 0;display:grid}.section-heading-with-actions{flex-direction:column;align-items:stretch}.form-grid{grid-template-columns:1fr}.form-field-wide{grid-column:1/-1}.primary-button,.section-heading-actions .secondary-button,.form-actions .secondary-button,.form-actions .danger-button,.transaction-card-actions .secondary-button,.transaction-card-actions .danger-button{width:100%}.compact-button{min-height:44px}.transaction-table-frame{display:none}.transaction-card-list,.transaction-card-header{display:grid}.transaction-card-amount{text-align:left}.transaction-card-details{grid-template-columns:1fr}.table-frame:not(.transaction-table-frame){padding:0 18px 18px;overflow:visible}.table-frame:not(.transaction-table-frame) .data-table{width:100%;min-width:0;display:block}.table-frame:not(.transaction-table-frame) .data-table thead{display:none}.table-frame:not(.transaction-table-frame) .data-table tbody{gap:12px;display:grid}.table-frame:not(.transaction-table-frame) .data-table tr{border:1px solid var(--border);background:var(--surface);border-radius:8px;gap:0;padding:16px;display:grid}.table-frame:not(.transaction-table-frame) .data-table tbody th,.table-frame:not(.transaction-table-frame) .data-table tbody td{border-bottom:1px solid var(--border);text-align:right;white-space:normal;justify-content:space-between;align-items:flex-start;gap:14px;min-width:0;padding:10px 0;display:flex}.table-frame:not(.transaction-table-frame) .data-table tbody th{color:var(--text-strong);text-align:left;font-size:1rem;display:block}.table-frame:not(.transaction-table-frame) .data-table tbody td:before{max-width:48%;color:var(--text-muted);text-align:left;text-transform:uppercase;flex:none;font-size:.75rem;font-weight:800}.category-table td:nth-child(2):before{content:"Budget"}.category-table td:nth-child(3):before{content:"Ausgaben"}.category-table td:nth-child(4):before{content:"Differenz"}.category-table td:nth-child(5):before{content:"Verbrauch"}.category-table td:nth-child(6):before{content:"Status"}.category-management-table td:nth-child(2):before{content:"Typ"}.category-management-table td:nth-child(3):before{content:"Verwendbarkeit"}.category-management-table td:nth-child(4):before{content:"Monatsbudget"}.category-management-table td:nth-child(5):before,.person-management-table td:nth-child(2):before,.real-estate-table td:nth-child(13):before,.real-estate-loan-table td:nth-child(9):before,.recurring-table td:nth-child(12):before{content:"Aktionen"}.real-estate-table td:nth-child(2):before{content:"Typ"}.real-estate-table td:nth-child(3):before{content:"Nutzung"}.real-estate-table td:nth-child(4):before{content:"Kaufdatum"}.real-estate-table td:nth-child(5):before{content:"Gesamtkosten"}.real-estate-table td:nth-child(6):before{content:"Marktwert"}.real-estate-table td:nth-child(7):before{content:"Jahreskaltmiete"}.real-estate-table td:nth-child(8):before{content:"Einnahmen"}.real-estate-table td:nth-child(9):before{content:"Ausgaben"}.real-estate-table td:nth-child(10):before{content:"Cashflow"}.real-estate-table td:nth-child(11):before{content:"Bruttorendite"}.real-estate-table td:nth-child(12):before{content:"Flaeche"}.real-estate-loan-table td:nth-child(2):before{content:"Immobilie"}.real-estate-loan-table td:nth-child(3):before{content:"Restschuld"}.real-estate-loan-table td:nth-child(4):before{content:"Rate"}.real-estate-loan-table td:nth-child(5):before{content:"Sollzins"}.real-estate-loan-table td:nth-child(6):before{content:"Tilgung"}.real-estate-loan-table td:nth-child(7):before{content:"Zinsbindung"}.real-estate-loan-table td:nth-child(8):before{content:"Status"}.recurring-table td:first-child:before{content:"Typ"}.recurring-table td:nth-child(2):before{content:"Beschreibung"}.recurring-table td:nth-child(3):before{content:"Betrag"}.recurring-table td:nth-child(4):before{content:"Kategorie"}.recurring-table td:nth-child(5):before{content:"Person"}.recurring-table td:nth-child(6):before{content:"Angelegt von"}.recurring-table td:nth-child(7):before{content:"Zahlungsart"}.recurring-table td:nth-child(8):before{content:"Fix/Variabel"}.recurring-table td:nth-child(9):before{content:"Intervall"}.recurring-table td:nth-child(10):before{content:"Start"}.recurring-table td:nth-child(11):before{content:"Ende"}.table-frame:not(.transaction-table-frame) .data-table tbody tr>:last-child{border-bottom:0}.table-frame:not(.transaction-table-frame) .data-table .button-row{justify-content:flex-end}.table-frame:not(.transaction-table-frame) .data-table .compact-button{width:auto}}
