:root{--bg: #EEF3F8;--bg-alt: #DCE6EF;--surface: #F7FAFC;--surface-2: #FFFFFF;--ink: #0F2942;--ink-soft: #38556F;--ink-mute: #6E8499;--border: #C5D2DE;--border-soft: #DDE5ED;--accent: #1E5C8E;--accent-soft: #3D80B5;--accent-glacier: #8FBED9;--accent-warm: #B5945E;--positive: #4F7A5C;--negative: #B05544;--warn: #C99540;--shadow: 0 1px 2px rgba(15,41,66,.05), 0 4px 12px rgba(15,41,66,.06);--shadow-lg: 0 2px 4px rgba(15,41,66,.07), 0 12px 32px rgba(15,41,66,.12)}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:IBM Plex Sans,system-ui,sans-serif;font-weight:400;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow-x:hidden}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:inherit}.mono{font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums}.serif{font-family:Fraunces,Georgia,serif}.app{display:flex;min-height:100vh}.sidebar{width:240px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 240 96' preserveAspectRatio='xMidYMax slice'%3E%3Cpath d='M0,96 L0,68 L18,42 L34,58 L52,32 L78,52 L102,28 L128,48 L156,22 L184,46 L210,30 L240,52 L240,96 Z' fill='%231E5C8E' fill-opacity='0.08'/%3E%3Cpath d='M0,96 L0,80 L22,62 L48,76 L72,58 L98,72 L124,56 L150,70 L178,54 L206,68 L240,60 L240,96 Z' fill='%231E5C8E' fill-opacity='0.13'/%3E%3C/svg%3E"),linear-gradient(180deg,#e1ecf5,#dce6ef);background-position:bottom center,top center;background-repeat:no-repeat;background-size:100% 96px,cover;border-right:1px solid var(--border);padding:28px 20px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--border) transparent}.sidebar::-webkit-scrollbar{width:6px}.sidebar::-webkit-scrollbar-track{background:transparent}.sidebar::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}.sidebar::-webkit-scrollbar-thumb:hover{background:var(--ink-mute)}.brand{font-family:Fraunces,serif;font-weight:500;font-size:18px;line-height:1.2;letter-spacing:-.01em;margin-bottom:4px}.brand-sub{font-size:11px;color:var(--ink-mute);letter-spacing:.06em;text-transform:uppercase;margin-bottom:28px}.nav{display:flex;flex-direction:column;gap:1px;flex:1}.nav-section{font-size:10px;font-weight:600;color:var(--ink-mute);letter-spacing:.12em;text-transform:uppercase;padding:16px 12px 6px}.nav-section:first-child{padding-top:4px}.nav-item{position:relative;padding:9px 12px;border-radius:8px;font-size:13.5px;color:var(--ink-soft);display:flex;align-items:center;gap:10px;transition:background .15s,color .15s;text-align:left;width:100%}.nav-ico{flex:0 0 auto;width:20px;font-size:14px;line-height:1;text-align:center;opacity:.85;filter:grayscale(.15)}.nav-label{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nav-item:hover{background:#1e5c8e14;color:var(--ink)}.nav-item.active{background:var(--accent);color:#f7fafc;font-weight:500;box-shadow:0 2px 8px #1e5c8e47}.nav-item.active .nav-ico{opacity:1;filter:none}.nav-item.active:hover{background:#164b75;color:#f7fafc}.nav-item.active:before{content:"";position:absolute;left:-8px;top:50%;transform:translateY(-50%);width:3px;height:20px;border-radius:3px;background:var(--accent-glacier, #8FBED9)}.sidebar-head{display:flex;align-items:center;gap:10px;padding:4px 12px 24px;border-bottom:1px solid var(--border-soft);margin-bottom:12px}.sidebar-title{font-family:Fraunces,serif;font-weight:500;font-size:16px;line-height:1.2;letter-spacing:-.01em}.sidebar-sub{font-size:10px;color:var(--ink-mute);letter-spacing:.06em;text-transform:uppercase;margin-top:3px}.sidebar-section{margin-bottom:16px}.sidebar-section-title{font-size:10px;color:var(--ink-mute);letter-spacing:.1em;text-transform:uppercase;padding:4px 12px 6px}.sidebar-item{width:100%;padding:9px 12px;border:0;border-radius:4px;font-family:inherit;font-size:13px;color:var(--ink-soft);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:flex-start;gap:6px;transition:background .15s,color .15s;text-align:left;line-height:1.3;margin-bottom:1px}.sidebar-item:hover{background:#1e5c8e12;color:var(--ink)}.sidebar-item.active{background:var(--accent);color:#f7fafc;font-weight:500}.sidebar-item.active:hover{background:#164b75;color:#f7fafc}.nav-badge{font-size:10px;padding:1px 6px;border-radius:8px;font-family:IBM Plex Mono,monospace;background:#0000000f;color:var(--ink-mute)}.nav-item.active .nav-badge{background:#ffffff26;color:var(--bg-alt)}.sidebar-foot{padding-top:16px;border-top:1px solid var(--border);font-size:11px;color:var(--ink-mute);line-height:1.4}.main{flex:1;min-width:0;padding:40px 56px 80px;max-width:1400px}.page-head{margin-bottom:32px}.page-eyebrow{font-size:11px;color:var(--ink-mute);letter-spacing:.1em;text-transform:uppercase;margin-bottom:6px}.page-title{font-family:Fraunces,serif;font-size:36px;line-height:1.1;font-weight:500;letter-spacing:-.02em;margin-bottom:8px}.page-sub{color:var(--ink-soft);font-size:14px;max-width:560px}.card{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:8px;padding:20px 24px;box-shadow:var(--shadow)}.card-title{font-family:Fraunces,serif;font-size:18px;font-weight:500;letter-spacing:-.01em;margin-bottom:4px;color:var(--ink)}.card-sub{font-size:12px;color:var(--ink-mute);margin-bottom:18px}.kpi-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:32px}.kpi{background:var(--surface-2);border:1px solid var(--border-soft);border-radius:8px;padding:20px 22px;box-shadow:var(--shadow);position:relative;overflow:hidden}.kpi:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:linear-gradient(90deg,var(--accent) 0%,var(--accent-glacier) 100%)}.kpi-label{font-size:11px;color:var(--ink-mute);letter-spacing:.05em;text-transform:uppercase;margin-bottom:8px}.kpi-value{font-family:Fraunces,serif;font-size:28px;font-weight:500;letter-spacing:-.02em;line-height:1;color:var(--ink)}.kpi-sub{font-size:12px;color:var(--ink-mute);margin-top:6px;font-family:IBM Plex Mono,monospace}table{width:100%;border-collapse:collapse}th{text-align:left;font-weight:500;font-size:11px;color:var(--ink-mute);letter-spacing:.05em;text-transform:uppercase;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap}td{padding:10px 12px;border-bottom:1px solid var(--border-soft);vertical-align:middle;font-size:13px}tr:last-child td{border-bottom:none}tr:hover td{background:#1e5c8e06}.num{text-align:right;font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums;white-space:nowrap}.num-strong{font-weight:500}.tfoot td{border-top:2px solid var(--ink);border-bottom:none;font-weight:500;background:var(--bg-alt)}.row-clickable{cursor:pointer;transition:background .12s}.row-clickable:hover{background:#8b3a1f0a}.row-clickable:hover td:last-child{color:var(--ink)!important;font-weight:500}.input,.select{width:100%;max-width:100%;min-width:0;padding:7px 10px;border:1px solid var(--border);background:var(--surface-2);border-radius:4px;font-size:13px;transition:border .15s,background .15s;box-sizing:border-box}.input:focus,.select:focus{outline:none;border-color:var(--ink);background:#fff}.input.num{text-align:right;font-family:IBM Plex Mono,monospace}.input-inline{padding:4px 8px;font-size:13px;min-width:60px;max-width:100%}.input[type=date],.input[type=time]{cursor:pointer;padding-right:6px}.input[type=date]::-webkit-calendar-picker-indicator,.input[type=time]::-webkit-calendar-picker-indicator{cursor:pointer;opacity:.6;filter:invert(15%) sepia(20%) saturate(800%) hue-rotate(180deg);transition:opacity .15s}.input[type=date]:hover::-webkit-calendar-picker-indicator,.input[type=time]:hover::-webkit-calendar-picker-indicator{opacity:1}.field{display:flex;flex-direction:column;gap:4px;min-width:0}.field-label{font-size:11px;color:var(--ink-mute);letter-spacing:.04em;text-transform:uppercase}.field-row{display:grid;gap:12px}.btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:4px;font-size:13px;font-weight:500;transition:background .15s,border .15s,color .15s;border:1px solid transparent;white-space:nowrap}.btn-primary{background:var(--accent);color:#f7fafc}.btn-primary:hover{background:#164b75}.btn-secondary{background:var(--surface-2);color:var(--ink);border-color:var(--border)}.btn-secondary:hover{border-color:var(--accent);color:var(--accent)}.btn-ghost{color:var(--ink-soft);padding:6px 10px}.btn-ghost:hover{color:var(--accent);background:#1e5c8e12}.btn-danger{color:var(--negative);padding:6px 10px}.btn-danger:hover{background:#b0554414}.btn-sm{padding:5px 10px;font-size:12px}.tabs{display:flex;gap:0;border-bottom:1px solid var(--border);margin-bottom:28px;overflow-x:auto}.tab{padding:10px 18px;font-size:13px;color:var(--ink-mute);border-bottom:2px solid transparent;margin-bottom:-1px;white-space:nowrap;transition:color .15s,border .15s}.tab:hover{color:var(--ink)}.tab.active{color:var(--ink);border-bottom-color:var(--ink);font-weight:500}.badge{display:inline-block;font-size:10px;padding:2px 8px;border-radius:10px;letter-spacing:.04em;text-transform:uppercase;font-weight:500}.badge-active{background:#4a6b4a1f;color:var(--positive)}.badge-archived{background:#0000000f;color:var(--ink-mute)}.badge-guthaben{background:#4a6b4a1f;color:var(--positive)}.badge-nachzahlung{background:#8b3a1f1f;color:var(--negative)}.row{display:flex;align-items:center;gap:12px}.row-between{display:flex;align-items:center;justify-content:space-between;gap:12px}.gap-sm{gap:6px}.mb-md{margin-bottom:20px}.mb-lg{margin-bottom:32px}.mt-md{margin-top:20px}.muted{color:var(--ink-mute)}.small{font-size:12px}.divider{height:1px;background:var(--border-soft);margin:24px 0}.empty{text-align:center;padding:60px 20px;color:var(--ink-mute)}.empty-icon{font-size:32px;margin-bottom:12px;opacity:.5}.year-card{background:var(--surface);border:1px solid var(--border-soft);border-radius:6px;padding:24px;transition:border .15s,transform .15s;cursor:pointer}.year-card:hover{border-color:var(--ink);transform:translateY(-1px)}.year-card-num{font-family:Fraunces,serif;font-size:36px;font-weight:500;letter-spacing:-.02em}.modal-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#1a1a1a66;display:flex;align-items:center;justify-content:center;z-index:100;padding:20px}.modal{background:var(--surface);border-radius:8px;max-width:480px;width:100%;padding:28px;box-shadow:var(--shadow-lg)}.delta-pos{color:var(--positive)}.delta-neg{color:var(--negative)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);background:var(--ink);color:var(--bg);padding:10px 20px;border-radius:4px;font-size:13px;box-shadow:var(--shadow-lg);z-index:200;animation:toastIn .2s ease-out}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@keyframes spin{to{transform:rotate(360deg)}}.loading{padding:80px 20px;text-align:center;color:var(--ink-mute)}.perm-item{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;font-size:13px;color:var(--ink-soft);border:1px solid var(--border-soft);background:var(--surface);cursor:pointer;-webkit-user-select:none;user-select:none;min-height:40px}.perm-item:hover{background:#1e5c8e0d}.perm-item input{width:16px;height:16px;flex:0 0 auto;accent-color:var(--accent);cursor:pointer}.perm-item span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (max-width: 900px){.app{flex-direction:column}.mobile-hamburger{display:flex!important}.sidebar{position:fixed;top:0;left:0;bottom:0;width:280px;max-width:85vw;height:100vh;background:linear-gradient(180deg,#e4edf6,#d6e2ee);padding:16px 14px;z-index:200;transform:translate(-100%);transition:transform .28s ease;box-shadow:2px 0 22px #0f294247;overflow-y:auto;border-right:1px solid var(--border)}.sidebar.is-open{transform:translate(0)}.sidebar-backdrop{position:fixed;top:0;left:0;right:0;bottom:0;background:#0f29428c;z-index:199;opacity:0;pointer-events:none;transition:opacity .28s ease;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px)}.sidebar-backdrop.is-open{opacity:1;pointer-events:auto}.main{padding:64px 14px 48px;min-width:0;max-width:100%;overflow-x:hidden}.card{max-width:100%}.nav{flex-direction:column;gap:2px}.nav-item{padding:12px;font-size:15px;min-height:44px;border-radius:10px}.nav-ico{width:22px;font-size:16px}.nav-section{font-size:11px;padding:18px 12px 6px}.page-title{font-size:26px}.card{padding:16px 14px;border-radius:6px}.tabs{overflow-x:auto;flex-wrap:nowrap!important;-webkit-overflow-scrolling:touch}.tab{white-space:nowrap}.kpi-grid{grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.kpi{padding:14px}.kpi-value{font-size:24px}table{font-size:12px}th,td{padding:6px 4px}.card>table,.card>div>table:not(.bill-rates-table):not(.bill-meters-table):not(.bill-costs-table){display:block;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.input,.select{min-height:38px;font-size:14px}.input.num{min-width:80px}.btn{min-height:38px;min-width:38px}.brand{font-size:16px!important}.brand-sub{font-size:11px!important}.modal{max-width:96vw!important;max-height:92vh!important;padding:16px!important}.modal-bg{padding:8px}}.mobile-hamburger{display:none;position:fixed;top:12px;left:12px;width:44px;height:44px;background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:center;justify-content:center;cursor:pointer;z-index:198;box-shadow:0 2px 8px #0f29421a}.mobile-hamburger:hover{background:var(--bg-alt)}.mobile-hamburger svg{width:22px;height:22px;color:var(--ink)}@media (max-width: 520px){.main{padding:64px 10px 40px}.card{padding:12px 10px}.page-title{font-size:22px}.row-between{flex-wrap:wrap;gap:8px}.btn{font-size:13px;padding:8px 12px}.btn-sm{font-size:12px;padding:6px 10px;min-height:34px}.field-label{font-size:11px}.field-row{grid-template-columns:1fr!important}.nav-item{padding:10px 12px;font-size:13px}.nav-badge{display:inline-block}}@media print{body{background:#fff}.sidebar,.tabs,.page-head,.no-print{display:none!important}.main{padding:0;max-width:none}.app{display:block}.card{border:none;padding:0;background:transparent;box-shadow:none}.printable{display:block!important}.printable .card{page-break-inside:avoid}table{font-size:11pt}body{font-size:10pt}.print-letterhead{display:flex!important}}.print-only,.print-letterhead{display:none}.print-letterhead{align-items:center;gap:20px;padding:16px 0 18px;margin-bottom:24px;border-bottom:2px solid var(--ink)}.print-letterhead .lh-text{flex:1}.print-letterhead .lh-title{font-family:Fraunces,serif;font-size:22pt;font-weight:500;letter-spacing:-.01em;line-height:1.1}.print-letterhead .lh-sub{font-size:9pt;color:#4a4a4a;letter-spacing:.08em;text-transform:uppercase;margin-top:4px}.print-letterhead .lh-meta{text-align:right;font-size:9pt;color:#4a4a4a;font-family:IBM Plex Mono,monospace;line-height:1.6}.print-footer{display:none}@media print{.print-footer{display:block;margin-top:40px;padding-top:14px;border-top:1px solid #999;font-size:8.5pt;color:#4a4a4a;text-align:center;line-height:1.6;page-break-inside:avoid}.print-footer .pf-title{font-family:Fraunces,serif;font-size:10pt;color:#1a1a1a;margin-bottom:4px;letter-spacing:.02em}.print-footer .pf-addr{font-family:IBM Plex Mono,monospace;font-size:8pt;letter-spacing:.04em}}.bill-print{font-size:12px;color:var(--ink)}.bill-tenant-header{padding:14px 16px;background:var(--bg-alt);border-radius:6px;margin-bottom:16px}.bill-tenant-header .bth-name{font-family:Fraunces,serif;font-size:22px;font-weight:500;letter-spacing:-.01em;margin-bottom:6px}.bill-tenant-header .bth-meta{display:flex;flex-wrap:wrap;gap:18px;font-size:12px;color:var(--ink-soft)}.bill-rates-table,.bill-meters-table,.bill-costs-table{width:100%;margin-bottom:14px}.bill-rates-table th,.bill-rates-table td,.bill-meters-table th,.bill-meters-table td,.bill-costs-table th,.bill-costs-table td{padding:5px 8px;font-size:12px;border-bottom:1px solid var(--border-soft)}.bill-rates-table th,.bill-meters-table th,.bill-costs-table th{background:var(--bg-alt);font-size:10px;letter-spacing:.04em;text-transform:uppercase;font-weight:500;color:var(--ink-mute);border-bottom:1px solid var(--border)}.bill-rates-table .bill-row-total{background:#8b3a1f0a;border-top:1.5px solid var(--ink);border-bottom:1.5px solid var(--ink)}.bill-rates-table .bill-row-strom td{color:var(--ink-soft)}.bill-costs-table .bill-row-pv{background:#4a6b4a0f}.bill-costs-table .bill-row-pv td{font-style:italic}.bill-section-title{font-family:Fraunces,serif;font-size:16px;font-weight:500;letter-spacing:-.005em;margin-top:28px;margin-bottom:10px;padding-bottom:4px;border-bottom:1.5px solid var(--ink)}.bill-summary{margin-top:10px;margin-bottom:16px;padding:10px 12px;background:var(--bg-alt);border-radius:4px;max-width:380px;margin-left:auto}.bill-summary-row{display:flex;justify-content:space-between;padding:3px 0;font-size:12px}.bill-summary-row.bill-diff{padding-top:6px;margin-top:4px;border-top:1.5px solid var(--ink);font-size:13px}.bill-diff.diff-pos{color:var(--positive)}.bill-diff.diff-neg{color:var(--negative)}.bill-summary-row.diff-pos{color:var(--positive)}.bill-summary-row.diff-neg{color:var(--negative)}.bill-grand-total{display:flex;justify-content:space-between;align-items:center;margin-top:24px;padding:18px 24px;background:var(--bg-alt);border:2px solid var(--ink);border-radius:6px}.bill-grand-total .bgt-label{font-family:Fraunces,serif;font-size:20px;font-weight:500}.bill-grand-total .bgt-amount{font-family:IBM Plex Mono,monospace;font-size:28px;font-weight:500}.bill-signature{display:flex;gap:40px;margin-top:32px;padding-top:16px}.bill-sig-left{flex:1;font-size:11px;line-height:1.6}.bill-sig-right{flex:1}.bill-sig-right .sig-line{height:1.5px;background:var(--ink);margin-top:32px;margin-bottom:4px}@media print{@page{margin:14mm 12mm}body{background:#fff}.bill-print{font-size:10pt}.bill-tenant-header{background:transparent;padding:0 0 8px;border-bottom:1.5pt solid #1A1A1A;margin-bottom:12pt;page-break-after:avoid}.bill-rates-table,.bill-meters-table,.bill-costs-table{page-break-inside:avoid}.bill-section-title{page-break-after:avoid;page-break-before:auto;margin-top:14pt}.bill-section-h{page-break-after:avoid;margin-top:12pt}.bill-summary{background:transparent;border:1px solid #999;page-break-inside:avoid}.bill-grand-total{background:transparent;page-break-inside:avoid}table thead{display:table-header-group}table tfoot{display:table-footer-group}table tr{page-break-inside:avoid}p,div{orphans:3;widows:3}.no-print{display:none!important}}
