/* my IMMO V2 — app.css
   Design-System uebernommen aus dem V1-Dashboard (style.css + immo.css,
   HomeManager redesign). V1 bleibt read-only Referenz; diese Datei ist eine
   eigene Implementierung fuer V2. Shared screen tokens and common controls
   are finalized in design-system.css, loaded after this compatibility layer. */

/* ---------- Design-Tokens ---------- */
:root{
  --bg:#FFFFFF; --card:#FFFFFF; --card-sunk:#F3F4F6;
  --ink:#111827; --ink-soft:#4B5563; --ink-faint:#6B7280;
  --line:#E5E7EB; --line-soft:#F3F4F6;
  --blue-bg:#DBEAFE; --blue:#3B82F6;
  --green-bg:#DCFCE7; --green:#22C55E;
  --orange-bg:#FEF3C7; --orange:#F59E0B;
  --purple-bg:#F3E8FF; --purple:#A855F7;
  --teal-bg:#CCFBF1; --teal:#14B8A6;
  --red-bg:#FEE2E2; --red:#EF4444;
  --shadow:0 2px 10px rgba(15,23,42,.06);
  --shadow-lg:0 8px 24px rgba(15,23,42,.10);

  /* ChatBubble / glass surfaces */
  --cb-primary:#22C55E; --cb-secondary:#3B82F6; --cb-tertiary:#A855F7;
  --cb-surface:#F3F4F6; --cb-radius:20px; --cb-touch:44px;
  --cb-glass:rgba(255,255,255,.72); --cb-glass-strong:rgba(255,255,255,.90);
  --cb-glass-line:rgba(255,255,255,.82); --cb-blur:18px;

  /* Legacy aliases keep the existing dashboard components on the new system. */
  --hm-bg:var(--bg); --hm-panel:var(--cb-glass); --hm-panel-strong:var(--cb-glass-strong);
  --hm-line:rgba(15,23,42,.12); --hm-ink:var(--ink); --hm-soft:var(--ink-soft);
  --hm-muted:var(--ink-faint); --hm-green:var(--green); --hm-green-bg:var(--green-bg);
  --hm-red:var(--red); --hm-red-bg:var(--red-bg); --hm-orange:var(--orange);
  --hm-radius:var(--cb-radius); --hm-shadow:0 8px 24px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.76);

  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --money-font:"Menlo",ui-monospace,"SF Mono",Consolas,monospace;

  /* Модульная шкала шрифтов: 8 ступеней, весь сайт на них.
     2xs — названия колонок · xs — подписи/лейблы · sm — мелкий текст/кнопки ·
     md — базовый текст · lg — акценты/подзаголовки · xl — заголовки секций ·
     2xl — крупные заголовки/цифры · hero — титулы страниц. */
  --fs-2xs:10px; --fs-xs:12px; --fs-sm:14px; --fs-md:16px; --fs-lg:20px;
  --fs-xl:24px; --fs-2xl:30px; --fs-hero:38px;
}
@media (prefers-color-scheme: dark){
  :root{
    --bg:#111827; --card:#1F2937; --card-sunk:#1E293B;
    --ink:#F9FAFB; --ink-soft:#D1D5DB; --ink-faint:#9CA3AF;
    --line:#374151; --line-soft:#273449;
    --blue-bg:#1E3A8A; --blue:#60A5FA; --green-bg:#14532D; --green:#4ADE80;
    --orange-bg:#78350F; --orange:#FBBF24; --purple-bg:#581C87; --purple:#C084FC;
    --teal-bg:#134E4A; --teal:#2DD4BF; --red-bg:#7F1D1D; --red:#F87171;
    --shadow:0 2px 10px rgba(0,0,0,.24); --shadow-lg:0 8px 24px rgba(0,0,0,.32);
    --cb-glass:rgba(31,41,55,.76); --cb-glass-strong:rgba(31,41,55,.92);
    --cb-glass-line:rgba(255,255,255,.12);
    --hm-bg:var(--bg); --hm-panel:var(--cb-glass); --hm-panel-strong:var(--cb-glass-strong);
    --hm-line:rgba(255,255,255,.12); --hm-ink:var(--ink); --hm-soft:var(--ink-soft);
    --hm-muted:var(--ink-faint); --hm-green:var(--green); --hm-green-bg:var(--green-bg);
    --hm-red:var(--red); --hm-red-bg:var(--red-bg); --hm-orange:var(--orange);
    --hm-shadow:0 8px 24px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.08);
  }
}
:root[data-theme="dark"]{
  --bg:#111827; --card:#1F2937; --card-sunk:#1E293B;
  --ink:#F9FAFB; --ink-soft:#D1D5DB; --ink-faint:#9CA3AF;
  --line:#374151; --line-soft:#273449;
  --blue-bg:#1E3A8A; --blue:#60A5FA; --green-bg:#14532D; --green:#4ADE80;
  --orange-bg:#78350F; --orange:#FBBF24; --purple-bg:#581C87; --purple:#C084FC;
  --teal-bg:#134E4A; --teal:#2DD4BF; --red-bg:#7F1D1D; --red:#F87171;
  --shadow:0 2px 10px rgba(0,0,0,.24); --shadow-lg:0 8px 24px rgba(0,0,0,.32);
  --cb-glass:rgba(31,41,55,.76); --cb-glass-strong:rgba(31,41,55,.92); --cb-glass-line:rgba(255,255,255,.12);
  --hm-bg:var(--bg); --hm-panel:var(--cb-glass); --hm-panel-strong:var(--cb-glass-strong);
  --hm-line:rgba(255,255,255,.12); --hm-ink:var(--ink); --hm-soft:var(--ink-soft); --hm-muted:var(--ink-faint);
  --hm-green:var(--green); --hm-green-bg:var(--green-bg); --hm-red:var(--red); --hm-red-bg:var(--red-bg);
  --hm-orange:var(--orange); --hm-shadow:0 8px 24px rgba(0,0,0,.24), inset 0 1px 0 rgba(255,255,255,.08);
}
:root[data-theme="light"]{
  --bg:#FFFFFF; --card:#FFFFFF; --card-sunk:#F3F4F6;
  --ink:#111827; --ink-soft:#4B5563; --ink-faint:#6B7280;
  --line:#E5E7EB; --line-soft:#F3F4F6; --blue-bg:#DBEAFE; --blue:#3B82F6;
  --green-bg:#DCFCE7; --green:#22C55E; --orange-bg:#FEF3C7; --orange:#F59E0B;
  --purple-bg:#F3E8FF; --purple:#A855F7; --teal-bg:#CCFBF1; --teal:#14B8A6;
  --red-bg:#FEE2E2; --red:#EF4444; --shadow:0 2px 10px rgba(15,23,42,.06); --shadow-lg:0 8px 24px rgba(15,23,42,.10);
  --cb-glass:rgba(255,255,255,.72); --cb-glass-strong:rgba(255,255,255,.90); --cb-glass-line:rgba(255,255,255,.82);
  --hm-bg:var(--bg); --hm-panel:var(--cb-glass); --hm-panel-strong:var(--cb-glass-strong);
  --hm-line:rgba(15,23,42,.12); --hm-ink:var(--ink); --hm-soft:var(--ink-soft); --hm-muted:var(--ink-faint);
  --hm-green:var(--green); --hm-green-bg:var(--green-bg); --hm-red:var(--red); --hm-red-bg:var(--red-bg);
  --hm-orange:var(--orange); --hm-shadow:0 8px 24px rgba(15,23,42,.08), inset 0 1px 0 rgba(255,255,255,.76);
}

/* ---------- Basis ---------- */
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:var(--bg); color:var(--ink); font-family:var(--sans); font-size:var(--fs-md); line-height:1.5; -webkit-font-smoothing:antialiased;}
h1,h2,h3{font-weight:700; margin:0; text-wrap:balance;}
.num{font-family:var(--mono); font-variant-numeric:tabular-nums;}
a{color:inherit;}
button{font-family:inherit; cursor:pointer;}
input,select,textarea{font-family:inherit;}
svg{display:block;}

/* ---------- Layout ---------- */
.app{display:grid; grid-template-columns:92px 1fr; gap:18px; padding:18px; min-height:100vh; transition:grid-template-columns .22s ease;}
.app:has(.sidebar:hover){grid-template-columns:264px 1fr;}
main{min-width:0;}

/* ---------- Sidebar (HomeManager-Shell) ---------- */
.sidebar{min-width:0; overflow:hidden; background:var(--hm-panel); color:var(--hm-ink);
  border:1px solid var(--cb-glass-line); border-radius:var(--cb-radius); box-shadow:var(--hm-shadow);
  padding:18px 12px; backdrop-filter:blur(var(--cb-blur)); -webkit-backdrop-filter:blur(var(--cb-blur));
  transition:padding .22s ease; height:calc(100vh - 36px); position:sticky; top:18px;
  display:flex; flex-direction:column;}
.sidebar:hover{padding-left:16px; padding-right:16px;}
.brand{display:flex; align-items:center; gap:13px; padding:4px 6px 20px; min-width:220px;}
.brand .mark{width:38px; height:38px; border-radius:10px; background:transparent; color:var(--hm-green);
  display:flex; align-items:center; justify-content:center; flex:none;}
.hm-mark svg{width:34px; height:34px; fill:none; stroke:currentColor; stroke-width:2.1; stroke-linecap:round; stroke-linejoin:round;}
.brand .txt{font-weight:800; font-size:var(--fs-md); line-height:1.28; color:var(--hm-ink); white-space:nowrap; opacity:0; transition:opacity .15s ease;}
.sidebar:hover .brand .txt{opacity:1;}
.side-label{display:none;}
.side-nav{display:flex; flex-direction:column; gap:8px; min-width:220px;}
.side-link{display:flex; align-items:center; gap:18px; min-height:50px; height:50px; padding:0 15px; border-radius:var(--cb-radius); border:none;
  background:transparent; color:var(--hm-soft); font-size:0; font-weight:600; text-align:left;
  transition:background .16s ease, color .16s ease, font-size .16s ease; width:100%;}
.sidebar:hover .side-link{font-size:var(--fs-md);}
.side-link:hover{background:rgba(231,239,226,.7); color:var(--hm-green);}
.side-nav .side-link.active{background:var(--hm-green-bg); color:var(--hm-green);}
:root[data-theme="dark"] .side-link:hover{background:rgba(255,255,255,.07);}
:root[data-theme="dark"] .side-nav .side-link.active{background:var(--hm-green-bg);}
.side-link .ic{width:22px; opacity:1; flex:0 0 22px; display:flex;}
.side-link .ic svg{width:22px; height:22px;}
.side-spacer{flex:1; min-height:24px;}
.side-foot{border-top:0; display:flex; flex-direction:column; gap:8px; min-width:220px; padding-top:8px;}
.side-foot .side-link{text-decoration:none;}

/* ---------- Topheader ---------- */
.topheader{display:flex; align-items:center; justify-content:space-between; gap:20px; flex-wrap:wrap;
  padding:14px 8px 8px; background:transparent;}
.th-left h1{font-size:var(--fs-hero); letter-spacing:0; margin:0; line-height:1.1; display:inline-block;}
.page-sub{margin:8px 0 0; color:var(--hm-soft); font-size:var(--fs-md);}
.page-sub:empty{display:none;}
.header-actions{display:flex; gap:12px;}
.round-action{width:56px; height:56px; border:0; border-radius:50%; background:rgba(255,255,255,.88);
  box-shadow:0 7px 20px rgba(40,45,38,.09); color:var(--hm-ink); display:inline-flex; align-items:center;
  justify-content:center; text-decoration:none;}
.round-action:hover{background:#fff;}
.round-action .btn-svg{width:24px; height:24px;}
.round-action .btn-svg svg{width:24px; height:24px;}

/* ---------- Mobile-Navigation ---------- */
.mobile-nav{display:none; gap:6px; padding:10px 16px; overflow-x:auto; background:transparent;
  border-bottom:1px solid var(--hm-line); -webkit-overflow-scrolling:touch;}
.mobile-nav .chip{flex:none;}
.chip{min-height:var(--cb-touch); font-size:var(--fs-sm); font-weight:700; padding:6px 13px; border-radius:var(--cb-radius); border:1px solid var(--line);
  background:var(--card); color:var(--ink-soft);}
.chip:hover{border-color:var(--ink-faint);}
.chip.active{background:var(--hm-green); border-color:var(--hm-green); color:#fff;}
@media (max-width:760px){ .mobile-nav{display:flex;} }

/* ---------- Viewport ---------- */
.viewport{padding:0 0 28px; max-width:none;}
.view{display:none;}
.view.active{display:block;}

/* ---------- Dashboard-Toolbar ---------- */
.dashboard-toolbar{display:flex; justify-content:flex-start; align-items:flex-start; gap:18px; margin-bottom:22px;}
.dash-title-wrap{min-width:0;}
.dash-title{font-size:var(--fs-hero); font-weight:800; line-height:1.04; letter-spacing:0;}
.dash-title strong{font:inherit; color:var(--hm-ink); white-space:nowrap;}
.dash-actions{display:flex; gap:8px; flex-wrap:wrap; justify-content:flex-start; margin-top:12px;}

/* ---------- Buttons ---------- */
.btn{display:inline-flex; align-items:center; gap:7px; min-height:var(--cb-touch); padding:9px 15px; border-radius:var(--cb-radius); font-size:var(--fs-sm);
  font-weight:700; border:1px solid transparent; text-decoration:none;}
.btn-primary{background:var(--hm-green); color:#fff;}
.btn-primary:hover{opacity:.88;}
.btn-primary:disabled{background:var(--line); color:var(--ink-faint); cursor:not-allowed;}
.btn-ghost{background:rgba(255,255,255,.68); border-color:var(--hm-line); color:var(--hm-ink);}
.btn-ghost:hover{border-color:var(--ink-faint);}
.btn-dark{background:#3A3F47; border-color:#3A3F47; color:#fff;}
.btn-dark:hover{background:#2C3037; border-color:#2C3037;}
.btn:disabled{opacity:.45; cursor:not-allowed;}
.btn-sm{min-height:var(--cb-touch); padding:6px 12px; font-size:var(--fs-sm);}
.full-w{width:100%; justify-content:center;}
.btn-with-icon{display:inline-flex; align-items:center; gap:7px;}
.btn-icon{width:var(--cb-touch); min-width:var(--cb-touch); padding:0; display:inline-flex; align-items:center; justify-content:center;}
.btn-svg{display:inline-flex; align-items:center; justify-content:center; width:18px; height:18px; flex:none;}
.btn-svg svg{width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2.25; stroke-linecap:round; stroke-linejoin:round;}
:root[data-theme="dark"] .btn-ghost{background:rgba(255,255,255,.08); color:var(--hm-ink); border-color:var(--hm-line);}

/* ---------- Warnungen ---------- */
.warn-card{position:fixed; right:28px; bottom:28px; z-index:30; width:min(420px,25vw); min-width:340px;
  max-height:42vh; overflow:auto; border-radius:var(--cb-radius); background:#FFFBEB; color:#78350F;
  border:1px solid rgba(245,158,11,.35); box-shadow:var(--shadow); padding:18px 18px 16px;}
.warn-card b{font-size:var(--fs-lg); margin-bottom:4px; padding-right:34px; display:block;}
.warn-card p{margin:0 0 8px; color:#92400E; font-size:var(--fs-sm);}
.warn-card ul{margin:0; padding-left:18px;}
.warn-card li{margin:5px 0;}
.warn-close{position:absolute; top:12px; right:12px; width:var(--cb-touch); height:var(--cb-touch); border:0; border-radius:50%;
  background:rgba(245,158,11,.14); color:#92400E; font-size:var(--fs-xl); line-height:1;}

/* ---------- Übersicht: Eigentümer-Sektionen ---------- */
.owner-section{background:var(--hm-panel-strong); border:1px solid var(--hm-line); border-radius:var(--cb-radius);
  box-shadow:var(--hm-shadow); overflow:hidden; margin-bottom:18px;}
.owner-head{display:grid; grid-template-columns:minmax(260px,1fr) minmax(460px,1.45fr); gap:24px;
  align-items:center; padding:26px 32px; border-bottom:1px solid var(--hm-line);}
.owner-title{display:flex; align-items:center; gap:24px;}
.owner-icon{width:66px; height:66px; border-radius:50%; background:var(--hm-green-bg); color:var(--hm-green);
  display:flex; align-items:center; justify-content:center; font-size:var(--fs-hero); font-weight:800; flex:none;}
.owner-title h2{font-size:var(--fs-2xl); line-height:1.1;}
.owner-title h2 span{vertical-align:middle; margin-left:10px; font-size:var(--fs-sm); font-weight:700; color:var(--hm-soft);
  background:var(--hm-green-bg); border-radius:10px; padding:5px 12px; white-space:nowrap;}
.owner-title p{margin:10px 0 0; color:var(--hm-soft); font-size:var(--fs-md);}
:root[data-theme="dark"] .owner-title h2 span{background:var(--hm-green-bg);}
:root[data-theme="dark"] .owner-title p{color:var(--hm-soft);}
.owner-stats{display:grid; grid-template-columns:repeat(3,1fr); gap:0;}
.owner-stat{display:flex; align-items:center; gap:16px; padding:0 22px; min-height:78px; border-left:1px solid var(--hm-line);}
.owner-stat:first-child{border-left:0;}
.owner-stat .stat-ico{width:34px; height:34px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  border:2px solid currentColor; flex:none;}
.owner-stat.st-ok{color:var(--hm-green);}
.owner-stat.st-cash{color:var(--hm-orange);}
.owner-stat.st-due{color:var(--hm-red);}
.owner-stat.st-ok .stat-ico:before{content:"✓"; font-weight:800;}
.owner-stat.st-cash .stat-ico{border-radius:8px;}
.owner-stat.st-cash .stat-ico:before{content:"€"; font-weight:800;}
.owner-stat.st-due .stat-ico:before{content:"!"; font-weight:800;}
.owner-stat small{display:block; color:var(--hm-soft); font-size:var(--fs-sm);}
.owner-stat b{display:block; color:var(--hm-ink); font-size:var(--fs-2xl); line-height:1.05; margin-top:2px; font-family:var(--mono);}
.owner-stat em{display:block; color:var(--hm-soft); font-size:var(--fs-sm); font-style:normal; margin-top:6px;}

/* ---------- Übersicht: Haus-Karten ---------- */
.house-grid{display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:22px; padding:24px;}
.owner-private .house-grid,.owner-LR .house-grid{grid-template-columns:repeat(3,minmax(0,1fr));}
.house-pay-card{position:relative; min-height:210px; background:var(--cb-glass);
  border:1px solid rgba(34,197,94,.25); border-radius:var(--cb-radius); padding:16px; display:flex; flex-direction:column;
  box-shadow:var(--shadow); backdrop-filter:blur(var(--cb-blur)); -webkit-backdrop-filter:blur(var(--cb-blur));}
.house-progress{position:absolute; left:16px; right:16px; top:0; height:2px; border-radius:0 0 999px 999px;
  background:linear-gradient(90deg,var(--hm-green) 0 var(--paid-pct), var(--hm-red) var(--paid-pct) 100%);}
.house-progress span{position:absolute; top:-4px; left:var(--paid-pct);
  width:10px; height:10px; border-radius:50%; background:var(--hm-panel-strong); border:2px solid #fff;
  box-shadow:0 0 0 2px rgba(17,19,15,.12), 0 4px 10px rgba(17,19,15,.18); transform:translateX(-50%);}
.house-pay-card.pay-full{border-color:rgba(47,125,45,.28);}
.house-pay-card.pay-none{border-color:rgba(235,43,18,.22);}
.house-pay-card.pay-partial{border-color:rgba(47,125,45,.24);}
.house-pay-card.pay-empty .house-progress{background:#CFD4CC;}
:root[data-theme="dark"] .house-pay-card{background:rgba(255,255,255,.045);}
.house-pay-head{display:flex; align-items:center; justify-content:space-between; gap:10px;}
.house-pay-head h3{font-size:var(--fs-lg);}
.house-code-link{appearance:none; border:0; padding:0; background:transparent; color:var(--hm-ink);
  font:inherit; font-weight:800; text-align:left; cursor:pointer; text-decoration:none;}
.house-code-link:hover{color:var(--hm-green); text-decoration:underline;}
.house-badge{font-size:var(--fs-sm); font-weight:800; border-radius:9px; padding:6px 12px; white-space:nowrap;}
.house-badge.good{background:var(--hm-green-bg); border:1px solid rgba(47,125,45,.25); color:var(--hm-green);}
.house-badge.bad{background:var(--hm-red-bg); border:1px solid rgba(235,43,18,.20); color:var(--hm-red);}
.house-badge.empty{background:var(--line-soft); border:1px solid var(--hm-line); color:var(--hm-soft);}
.house-meta{display:flex; gap:24px; color:var(--hm-soft); font-size:var(--fs-sm); margin:22px 0 18px;}
:root[data-theme="dark"] .house-badge.empty{background:rgba(255,255,255,.08);}
:root[data-theme="dark"] .house-meta{color:var(--hm-soft);}
.tenant-pay-list{border:1px solid var(--hm-line); border-radius:14px; overflow:hidden; margin-top:auto;}
.tenant-pay-row{width:100%; min-height:58px; display:grid; grid-template-columns:34px minmax(0,1fr) auto 16px;
  gap:12px; align-items:center; padding:10px 12px; border:0; border-bottom:1px solid var(--hm-line);
  background:rgba(255,255,255,.6); text-align:left; color:var(--hm-ink);}
.tenant-pay-row:last-child{border-bottom:0;}
.tenant-pay-row:hover{background:rgba(255,255,255,.82);}
:root[data-theme="dark"] .tenant-pay-row{background:rgba(255,255,255,.045);}
:root[data-theme="dark"] .tenant-pay-row:hover{background:rgba(255,255,255,.08);}
.tenant-pay-row.empty{cursor:default;}
.pay-dot{width:25px; height:25px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  color:#fff; font-weight:800; font-size:var(--fs-md);}
.pay-dot.paid{background:var(--hm-green);}
.pay-dot.open{background:var(--hm-red);}
.pay-dot.empty{background:var(--hm-muted); font-size:var(--fs-md);}
.tenant-name{font-size:var(--fs-sm); font-weight:700; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;}
.tenant-amount{font-family:var(--mono); font-size:var(--fs-md); text-align:right; white-space:nowrap;}
.tenant-amount small{display:block; color:var(--hm-soft); font-size:var(--fs-xs); font-family:var(--sans); margin-top:2px;}
.not-paid{font-family:var(--sans); color:var(--hm-red); font-size:var(--fs-sm); font-weight:700;}
.chev{font-size:var(--fs-xl); color:var(--hm-ink); line-height:1;}
:root[data-theme="dark"] .chev{color:var(--hm-soft);}

/* ---------- Zahlungen: Haus -> Mieter -> Verlauf ---------- */
.pay-workspace-head{display:flex; justify-content:flex-start; margin-bottom:18px;}
.pay-workspace{display:flex; flex-direction:column; gap:18px;}
.pay-tabs{display:flex; gap:10px; flex-wrap:wrap;}
.pay-tab{border:1px solid var(--hm-line); background:var(--hm-panel-strong); color:var(--hm-ink);
  border-radius:var(--cb-radius); padding:10px 14px; min-width:112px; text-align:left; box-shadow:var(--shadow);}
.pay-tab b{display:block; font-size:var(--fs-lg); line-height:1.05;}
.pay-tab span{display:block; margin-top:4px; color:var(--hm-soft); font-size:var(--fs-xs);}
.pay-tab.active{border-color:rgba(47,125,45,.35); background:var(--hm-green-bg); color:var(--hm-green);}
.pay-tab.active span{color:var(--hm-green);}
.pay-layout{display:grid; grid-template-columns:280px minmax(0,1fr); gap:18px; align-items:start;}
.tenant-tabs{display:flex; flex-direction:column; gap:10px; position:sticky; top:18px;}
.tenant-tab{display:grid; grid-template-columns:28px minmax(0,1fr); gap:10px; align-items:center;
  min-height:62px; border:1px solid var(--hm-line); border-radius:var(--cb-radius); padding:10px 12px;
  background:var(--hm-panel-strong); color:var(--hm-ink); text-align:left; width:100%;}
.tenant-tab.active{border-color:rgba(47,125,45,.72); box-shadow:0 10px 26px rgba(28,38,26,.10);}
.tenant-tab b{display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:var(--fs-sm);}
.tenant-tab em{display:block; margin-top:2px; color:var(--hm-soft); font-style:normal; font-size:var(--fs-xs);}
.former-toggle{width:100%; margin:0 0 10px; padding:9px 10px; border:1px solid var(--hm-line); border-radius:12px; background:transparent; color:var(--hm-soft); font-size:var(--fs-xs); font-weight:700; cursor:pointer;}
.former-tenants{display:flex; flex-direction:column; gap:10px; margin-top:2px; padding-top:12px; border-top:1px solid var(--hm-line);}
.former-tenants-title{color:var(--hm-soft); font-size:var(--fs-xs); font-weight:800; text-transform:uppercase; letter-spacing:.06em;}
.tenant-tab.active b{color:var(--hm-green);}
.tenant-tab.empty{display:block; color:var(--hm-soft); padding:14px;}
.tenant-payment-detail{min-width:0;}
.pay-detail-head{display:flex; justify-content:space-between; align-items:flex-start; gap:18px;
  background:var(--hm-panel-strong); border:1px solid var(--hm-line); border-radius:var(--cb-radius); padding:22px 24px;
  box-shadow:var(--hm-shadow); margin:0 24px 16px;}
.pay-house{display:inline-flex; margin-bottom:8px; border-radius:999px; padding:4px 10px; background:var(--hm-green-bg);
  color:var(--hm-green); font-weight:800; font-size:var(--fs-sm);}
.pay-detail-head h2{font-size:var(--fs-2xl); line-height:1.1;}
.pay-detail-head p{margin:6px 0 0; color:var(--hm-soft);}
.tenant-info-btn{display:inline-flex; align-items:center; justify-content:center; width:var(--cb-touch); height:var(--cb-touch);
  margin-left:12px; vertical-align:middle; border:1px solid rgba(34,197,94,.34); border-radius:50%;
  background:var(--hm-green); color:#fff; font-size:var(--fs-sm); font-weight:800;}
.tenant-info-btn:hover{transform:translateY(-1px);}

.payment-years{display:flex; flex-direction:column; gap:18px;}
.payment-year-block{display:flex; flex-direction:column; gap:0; margin:0 24px;}
.payment-year-head{display:flex; align-items:center; gap:24px; background:var(--hm-panel-strong); border:1px solid var(--hm-line);
  border-bottom:0; border-radius:var(--cb-radius) var(--cb-radius) 0 0; padding:18px 22px; box-shadow:var(--shadow);}
.payment-year-title{font-size:var(--fs-2xl); font-weight:800; line-height:1; min-width:116px;}
.payment-year-divider{align-self:stretch; width:1px; background:var(--hm-line);}
.year-stats{display:flex; justify-content:flex-end; gap:0; flex:1;}
.year-stat{display:flex; align-items:center; gap:14px; min-height:54px; padding:0 24px; border-right:1px solid var(--hm-line);}
.year-stat:last-child{border-right:0;}
.year-stat b{font-family:var(--mono); font-size:var(--fs-2xl); line-height:1.05;}
.year-stat span{color:var(--hm-soft); font-size:var(--fs-sm); font-weight:800; white-space:nowrap;}
.year-stat.ok b{color:var(--hm-green);}
.year-stat.warn b{color:var(--hm-red);}
.payment-sheet-wrap{background:var(--hm-panel-strong); border:1px solid var(--hm-line); border-radius:20px;
  box-shadow:var(--hm-shadow); overflow:auto;}
.payment-year-block .payment-sheet-wrap{border-top:0; border-radius:0 0 20px 20px;}
.payment-sheet{width:calc(100% - 48px); min-width:812px; margin:0 24px 24px; border-collapse:separate; border-spacing:0; font-size:var(--fs-sm);}
.payment-sheet th{position:sticky; top:0; z-index:1; background:rgba(25,34,25,.06); color:#39423B; padding:11px 9px;
  font-weight:800; text-align:left; white-space:nowrap; border-right:1px solid rgba(25,34,25,.10); font-size:var(--fs-2xs);
  letter-spacing:.05em; text-transform:uppercase;}
.payment-sheet th:first-child{border-top-left-radius:18px;}
.payment-sheet th:last-child{border-top-right-radius:18px; border-right:0;}
.payment-sheet td{padding:6px 9px; border-right:1px solid var(--hm-line); border-bottom:1px solid var(--hm-line);
  background:rgba(255,255,255,.50); white-space:nowrap; font-variant-numeric:tabular-nums;}
.payment-sheet td:nth-child(2),.payment-sheet td:nth-child(4){font-family:var(--money-font); font-size:13px;}
.payment-sheet td:nth-child(3),.payment-sheet td:nth-child(5){font-family:var(--money-font); color:#10130f;}
.payment-sheet .s-none td:nth-child(3),.payment-sheet .s-none td:nth-child(5){color:#10130f;}
.payment-sheet td:last-child{border-right:0;}
.payment-sheet .muted{color:var(--hm-muted);}
.payment-sheet .s-paid td{background:rgba(235,247,232,.82);}
.payment-sheet .s-covered td{background:rgba(232,242,211,.9);}
.payment-sheet .s-overdue td{background:rgba(255,240,236,.76);}
.payment-sheet .s-future td{background:rgba(255,255,255,.56);}
.payment-sheet .s-none td{color:var(--hm-muted);}
:root[data-theme="dark"] .payment-sheet th{background:rgba(255,255,255,.07); color:var(--hm-soft);}
:root[data-theme="dark"] .payment-sheet td{background:rgba(255,255,255,.045);}
:root[data-theme="dark"] .payment-sheet .s-paid td{background:rgba(47,125,45,.16);}
:root[data-theme="dark"] .payment-sheet .s-covered td{background:rgba(126,151,67,.18);}
:root[data-theme="dark"] .payment-sheet .s-overdue td{background:rgba(255,107,87,.10);}
:root[data-theme="dark"] .payment-sheet .s-future td{background:rgba(255,255,255,.035);}
.pay-status{display:inline-flex; align-items:center; width:max-content; min-height:26px; padding:4px 11px;
  border-radius:999px; font-family:var(--sans); font-size:var(--fs-sm); font-weight:800;}
.pay-status.paid{background:var(--hm-green-bg); color:var(--hm-green);}
.pay-status.partial{background:var(--orange-bg); color:var(--hm-orange);}
.pay-status.open{background:var(--hm-red-bg); color:var(--hm-red);}
.pay-status.none{background:var(--line-soft); color:var(--hm-soft);}
.sheet-edit{width:var(--cb-touch); height:var(--cb-touch); border:0; border-radius:50%; background:rgba(34,197,94,.10);
  color:var(--hm-green); font-size:var(--fs-md); font-weight:800;}
.sheet-edit:hover{background:var(--hm-green-bg);}
.sheet-edit:disabled{opacity:.35; cursor:not-allowed;}
.sheet-edit-cell{text-align:center; width:44px;}
/* Ganze Zeile klickbar (bearbeiten), Status nur über die Zeilenfarbe (wie V1). */
.payment-sheet tr.sheet-row[data-z-row-edit]{cursor:pointer;}
.payment-sheet tr.sheet-row[data-z-row-edit]:hover td{box-shadow:inset 0 0 0 1px rgba(47,125,45,.14);}
.payment-sheet .comment{white-space:normal; min-width:220px;}
.payment-sheet td.comment{font-family:system-ui,sans-serif; font-size:10px; font-weight:600; color:#818980;}
.payment-sheet td.comment.has-comment{color:#818980; font-size:10px; font-weight:600; line-height:1.25;}
.payment-coverage-box{margin-top:12px;padding:12px;border:1px solid #d7e1bf;border-radius:10px;background:#f6faed;}
.payment-coverage-box>b{display:block;margin-bottom:8px;font-size:12px;}
.payment-amount{display:inline-flex; flex-direction:column; align-items:flex-start; gap:2px; line-height:1.15;}
.payment-soll{color:#818980; font-family:system-ui,sans-serif; font-size:10px; font-weight:600;}
/* BKA / Notizen */
.payment-year-bka{background:var(--hm-panel-strong); border:1px solid var(--hm-line); border-bottom:0;
  padding:14px 22px; display:flex; flex-direction:column; gap:10px;}
:root[data-theme="dark"] .payment-year-bka{background:rgba(255,255,255,.03);}
.year-bka-item{display:grid; grid-template-columns:minmax(0,1fr) 34px; align-items:start; gap:14px; padding:0;}
.year-bka-text{display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:0;
  color:var(--hm-ink); line-height:1.35; font-size:var(--fs-sm);}
.year-bka-col{display:flex; flex-direction:column; gap:5px; min-width:0; padding:0 18px;
  border-left:1px solid var(--hm-line);}
.year-bka-col:first-child{border-left:0; padding-left:0;}
.year-bka-col:last-child{padding-right:0;}
.year-bka-col b{font-size:var(--fs-sm); font-weight:800; margin-bottom:2px;}
.year-bka-col span{overflow-wrap:anywhere; white-space:normal;}
.sheet-notes{background:var(--hm-panel-strong); border:1px solid var(--hm-line); border-radius:20px; padding:16px 18px;
  box-shadow:var(--hm-shadow);}
.sheet-notes h3{font-size:var(--fs-sm); margin-bottom:12px;}
.sheet-note-row{display:grid; grid-template-columns:92px minmax(0,1fr); gap:12px; padding:12px 0; border-top:1px solid var(--hm-line);}
.sheet-note-row:first-of-type{border-top:0; padding-top:0;}
.sheet-note-row:last-child{padding-bottom:0;}
.sheet-note-year{color:var(--hm-green); font-weight:800;}
.sheet-note-text{white-space:normal; line-height:1.35; font-size:15px;}
.sheet-note-text small{display:block; margin-bottom:4px; color:#818980; font-family:system-ui,sans-serif; font-size:10px; font-weight:600;}
.sheet-note-cells{grid-column:2; display:flex; flex-wrap:wrap; gap:8px 14px; color:var(--hm-soft); font-size:var(--fs-sm);}
.sheet-note-cells b{color:var(--hm-ink);}
.sheet-bka-box{margin-top:8px; padding:8px 10px; border:1px solid rgba(122,91,0,.18); border-radius:10px;
  background:rgba(255,255,255,.56);}
.sheet-bka-box b{display:block; margin-bottom:4px; color:#7A5B00; font-size:var(--fs-xs); letter-spacing:.04em;}
.sheet-bka-box span{display:block; white-space:normal; line-height:1.35;}

/* ---------- Mieter ---------- */
.m-toolbar{display:flex; justify-content:flex-end; margin:0 0 14px;}
.m-toolbar .btn.active{background:var(--hm-green-bg); color:var(--hm-green); border-color:rgba(47,125,45,.34);}
.m-workspace{display:block;}
.m-master{min-width:0;}
.m-owner{background:var(--hm-panel-strong); border:1px solid var(--hm-line); border-radius:20px;
  box-shadow:var(--hm-shadow); overflow:hidden; margin-bottom:18px;}
.m-owner-head{display:flex; align-items:center; justify-content:space-between; gap:18px; padding:20px 24px;
  border-bottom:1px solid var(--hm-line);}
.m-owner-head h2{font-size:var(--fs-xl); line-height:1.1;}
.m-owner-head p{margin:6px 0 0; color:var(--hm-soft); font-size:var(--fs-sm);}
.m-house-code{appearance:none; border:0; padding:0; background:transparent; color:var(--hm-ink);
  font:inherit; font-weight:800; text-align:left; cursor:pointer; text-decoration:none;}
.m-house-code:hover{color:var(--hm-green); text-decoration:underline;}
.m-owner-head .m-house-code{display:inline-flex; margin:0 7px 5px 0; padding:2px 8px;
  border:1px solid var(--hm-line); border-radius:8px; background:rgba(255,255,255,.58); font-size:var(--fs-sm); color:var(--hm-soft);}
.m-owner-head .m-house-code:hover{border-color:rgba(47,125,45,.35); color:var(--hm-green); text-decoration:none;}
.m-table{margin:18px 24px 22px; background:rgba(255,255,255,.72); border:1px solid var(--hm-line);
  border-radius:12px; overflow:auto;}
:root[data-theme="dark"] .m-table{background:rgba(255,255,255,.045);}
.m-table-head,.m-row{min-width:1180px; display:grid; grid-template-columns:minmax(180px,1.2fr) minmax(150px,.9fr)
  minmax(150px,.82fr) minmax(90px,.52fr) minmax(95px,.54fr) minmax(112px,.62fr) minmax(95px,.54fr) minmax(95px,.54fr) 36px;
  gap:12px;}
.m-table-head{position:sticky; top:0; z-index:1; padding:10px 14px; border-bottom:1px solid var(--hm-line);
  background:rgba(25,34,25,.06); color:#39423B; font-size:var(--fs-2xs); font-weight:800; text-transform:uppercase;}
.m-row{width:100%; align-items:start; padding:12px 14px; border-bottom:1px solid var(--hm-line); cursor:pointer;
  background:transparent; color:var(--hm-ink); text-align:left; user-select:text; transition:background .12s ease;}
.m-row:last-child{border-bottom:none;}
.m-row:hover{background:rgba(47,125,45,.07);}
:root[data-theme="dark"] .m-row:hover{background:rgba(255,255,255,.06);}
:root[data-theme="dark"] .m-table-head{background:rgba(255,255,255,.07); color:var(--hm-soft);}
:root[data-theme="dark"] .m-tenant-group-head{background:rgba(255,255,255,.05);}
:root[data-theme="dark"] .m-owner-head .m-house-code{background:rgba(255,255,255,.08);}
.m-tenant-group{border-bottom:1px solid var(--hm-line);}
.m-tenant-group:last-child{border-bottom:none;}
.m-tenant-group .m-row{border-bottom:1px solid rgba(25,34,25,.055);}
.m-tenant-group .m-row:last-child{border-bottom:none;}
.m-tenant-group-head{min-width:1180px; display:grid; grid-template-columns:minmax(180px,1.2fr) minmax(150px,.9fr)
  minmax(150px,.82fr) minmax(90px,.52fr) minmax(95px,.54fr) minmax(112px,.62fr) minmax(95px,.54fr) minmax(95px,.54fr) 36px;
  gap:12px; align-items:start; padding:13px 14px 10px; background:rgba(242,243,242,.76);}
.m-tenant-group-head b{display:block; font-size:var(--fs-md); line-height:1.2;}
.m-tenant-group-head span{display:block; margin-top:2px; color:var(--hm-soft); font-size:var(--fs-xs); font-weight:800;}
.m-group-contact{grid-column:2; min-width:0;}
.m-cell{min-width:0; display:flex; flex-direction:column; gap:3px; font-size:var(--fs-sm); color:var(--hm-ink); overflow-wrap:anywhere;}
.m-cell a{color:var(--hm-ink); text-decoration:none; overflow-wrap:anywhere;}
.m-cell a:hover{color:var(--hm-green); text-decoration:underline;}
.m-cell em{color:var(--hm-muted); font-style:normal;}
.m-lbl{display:none; font-size:var(--fs-xs); font-weight:600; letter-spacing:.06em; text-transform:uppercase; color:var(--hm-muted);}
.m-contact-values{display:flex; flex-direction:column; align-items:flex-start; gap:4px;}
.m-copy{appearance:none; border:0; padding:0; margin:0; background:transparent; color:var(--hm-ink); font:inherit;
  font-weight:600; text-align:left; cursor:pointer; overflow-wrap:anywhere;}
.m-copy:hover{color:var(--hm-green); text-decoration:underline;}
.m-person{display:flex; flex-direction:row; justify-content:flex-start; align-items:center; gap:10px;}
.m-person b{display:block; overflow-wrap:break-word; font-size:var(--fs-md); line-height:1.25;}
.m-person span{display:block; margin-top:2px; color:var(--hm-soft); font-size:var(--fs-xs);}
.m-tenant-name{appearance:none; border:0; padding:0; margin:0; background:transparent; color:var(--hm-ink); font:inherit; font-weight:800; font-size:var(--fs-md); line-height:1.25; text-align:left; cursor:pointer;}
.m-tenant-name:hover{color:var(--hm-green); text-decoration:underline;}
.m-edit{appearance:none; align-self:center; justify-self:end; width:var(--cb-touch); height:var(--cb-touch); border:1px solid var(--hm-line); border-radius:var(--cb-radius); background:transparent; color:var(--hm-soft); font-size:var(--fs-lg); line-height:1; cursor:pointer;}
.m-edit:hover{border-color:rgba(47,125,45,.45); background:var(--hm-green-bg); color:var(--hm-green);}
.m-money span:last-child{font-family:var(--mono); line-height:1.45;}

/* ---------- Häuser ---------- */
.h-toolbar{display:flex; justify-content:flex-end; margin:0 0 14px;}
.h-list{display:flex; flex-direction:column; gap:18px;}
.h-owner{background:var(--hm-panel-strong); border:1px solid var(--hm-line); border-radius:20px;
  box-shadow:var(--hm-shadow); overflow:hidden; margin-bottom:18px;}
.h-owner-head{display:flex; align-items:center; justify-content:space-between; gap:18px; padding:20px 24px;
  border-bottom:1px solid var(--hm-line);}
.h-owner-head h2{font-size:var(--fs-2xl); line-height:1.1;}
.h-owner-head p{margin:8px 0 0; color:var(--hm-soft); font-size:var(--fs-sm);}
.h-owner-stats{display:flex; gap:12px; flex-wrap:wrap; justify-content:flex-end;}
.h-owner-stat{min-width:170px; padding:9px 12px; border:1px solid rgba(28,48,84,.12); border-radius:10px;
  background:rgba(255,255,255,.62);}
:root[data-theme="dark"] .h-owner-stat{background:rgba(255,255,255,.05); border-color:var(--hm-line);}
.h-owner-stat span{display:block; color:var(--hm-soft); font-size:var(--fs-sm); font-weight:800; text-transform:uppercase; letter-spacing:.04em;}
.h-owner-stat b{display:block; margin-top:3px; color:var(--hm-ink); font-size:var(--fs-2xl); line-height:1.1; font-weight:800; font-family:var(--mono); font-variant-numeric:tabular-nums;}
:root[data-theme="dark"] .h-owner-stat b{color:var(--hm-ink);}
.h-grid{display:grid; grid-template-columns:1fr; gap:18px; padding:18px 24px 22px;}
.h-card{min-width:0; background:var(--cb-glass); border:1px solid var(--hm-line); border-radius:var(--cb-radius);
  padding:24px; box-shadow:var(--shadow); backdrop-filter:blur(var(--cb-blur)); -webkit-backdrop-filter:blur(var(--cb-blur));}
:root[data-theme="dark"] .h-card{background:rgba(255,255,255,.06);}
.h-card-main-head{display:grid; grid-template-columns:72px minmax(0,1fr); gap:20px; align-items:start; margin-bottom:24px;}
.h-house-icon{width:72px; height:72px; display:flex; align-items:center; justify-content:center; border:1px solid rgba(28,48,84,.15);
  border-radius:14px; background:rgba(255,255,255,.74); color:var(--hm-ink); box-shadow:0 12px 24px rgba(28,48,84,.12);}
.h-house-icon .h-svg,.h-house-icon svg{width:38px; height:38px;}
.h-title-block h3{font-size:var(--fs-2xl); line-height:1.05; letter-spacing:0; color:var(--hm-ink);}
:root[data-theme="dark"] .h-title-block h3{color:var(--hm-ink);}
.h-badges{display:flex; flex-wrap:wrap; gap:12px; margin-top:16px;}
.h-badge{display:inline-flex; align-items:center; gap:9px; min-height:var(--cb-touch); padding:6px 12px; border-radius:var(--cb-radius);
  background:var(--hm-panel-strong); border:1px solid var(--hm-line); color:var(--hm-soft); font-size:var(--fs-sm); font-weight:800;}
.h-badge.good{background:var(--hm-green-bg); border-color:rgba(47,125,45,.25); color:var(--hm-green);}
.h-svg{display:inline-flex; align-items:center; justify-content:center; flex:none;}
.h-svg svg{width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round;}
.house-fields{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px;}
.house-field{display:flex; flex-direction:column; gap:4px; padding:10px 12px; border:1px solid var(--hm-line);
  border-radius:10px; background:rgba(255,255,255,.55);}
.house-field dt{color:var(--hm-soft); font-size:var(--fs-xs); font-weight:800; text-transform:uppercase; letter-spacing:.04em;}
.house-field dd{margin:0; color:var(--hm-ink); font-size:var(--fs-sm); font-weight:800; overflow-wrap:anywhere;}
:root[data-theme="dark"] .house-field{background:rgba(255,255,255,.04);}

/* Häuser: V1-карточка объекта — секции полей (Objekt, Flächen, Finanzierung, …). */
.h-owner-stat.stat-cashflow b{color:var(--hm-green);}
:root[data-theme="dark"] .h-owner-stat.stat-cashflow b{color:var(--hm-green);}
.h-card .h-code{font-family:var(--mono);}
.house-field-sections{display:grid; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:18px;}
.house-field-section{min-width:0; padding:18px 18px 20px; border:1px solid var(--hm-line); border-radius:12px;
  background:rgba(255,255,255,.55);}
:root[data-theme="dark"] .house-field-section{background:rgba(255,255,255,.045);}
.house-field-section h4{display:flex; align-items:center; gap:10px; margin:0 0 14px; color:var(--hm-ink); font-size:var(--fs-sm); font-weight:800;
  text-transform:none; letter-spacing:0;}
.house-field-section h4 .h-svg{width:32px; height:32px; border-radius:9px; background:var(--hm-green-bg); color:var(--hm-green);}
.house-field-section h4 .h-svg svg{width:17px; height:17px;}
.hfs-flaechen h4 .h-svg{background:var(--line-soft); color:var(--hm-ink);}
.hfs-finanzierung h4 .h-svg{background:var(--orange-bg); color:var(--hm-orange);}
.hfs-versicherung h4 .h-svg{background:var(--blue-bg); color:var(--blue);}
.hfs-ergebnis h4 .h-svg{background:var(--hm-green-bg); color:var(--hm-green);}
.house-field-section dl{margin:0;}
.house-field-row{display:grid; grid-template-columns:minmax(112px,.9fr) minmax(0,1.1fr); gap:10px; align-items:start;
  padding:8px 0; border-bottom:1px solid var(--hm-line);}
.house-field-row:last-child{border-bottom:0;}
.house-field-row dt{min-width:0; color:var(--hm-soft); font-size:var(--fs-xs); font-weight:700; line-height:1.35;}
.house-field-row dd{min-width:0; margin:0; color:var(--hm-ink); font-size:var(--fs-sm); font-weight:800; line-height:1.35;
  overflow-wrap:anywhere; text-align:right; font-family:var(--mono); font-variant-numeric:tabular-nums;}
.house-field-row.important dd{font-size:var(--fs-md);}
.hfs-ergebnis{border-color:rgba(47,125,45,.24); background:rgba(236,247,239,.44);}
:root[data-theme="dark"] .hfs-ergebnis{background:rgba(47,125,45,.12);}

/* ---------- Modal ---------- */
.modal-backdrop{position:fixed; inset:0; background:rgba(17,24,39,.42); backdrop-filter:blur(8px); -webkit-backdrop-filter:blur(8px); display:none; align-items:center;
  justify-content:center; z-index:100; padding:20px;}
.modal-backdrop.open{display:flex;}
.modal{background:var(--cb-glass-strong); border:1px solid var(--cb-glass-line); border-radius:var(--cb-radius); box-shadow:var(--shadow-lg); max-width:420px; width:100%; overflow:hidden; backdrop-filter:blur(var(--cb-blur)); -webkit-backdrop-filter:blur(var(--cb-blur));}
.modal.pay-modal{max-width:520px;}
.modal-head{padding:20px 22px 0;}
.modal-head h3{font-size:var(--fs-md);}
.modal-body{padding:12px 22px 18px; font-size:var(--fs-sm); color:var(--hm-soft); line-height:1.6;}
.modal-body b{color:var(--hm-ink);}
.modal-foot{display:flex; gap:8px; justify-content:flex-end; padding:14px 22px; background:var(--cb-surface); border-top:1px solid var(--line);}

/* Monats-Picker */
.mpick{padding:2px 0 4px;}
.mpick-year{display:flex; align-items:center; justify-content:center; gap:16px; margin-bottom:14px;}
.mpick-yr{font-size:var(--fs-lg); font-weight:800; color:var(--ink); min-width:64px; text-align:center;}
.mpick-nav{width:var(--cb-touch); height:var(--cb-touch); border-radius:50%; border:1px solid var(--line); background:var(--card);
  color:var(--ink); font-size:var(--fs-lg); line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center;}
.mpick-nav:hover{background:var(--line-soft); border-color:var(--blue);}
.mpick-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:8px;}
.mtile{min-height:var(--cb-touch); padding:11px 0; border-radius:var(--cb-radius); border:1px solid var(--line); background:var(--card-sunk);
  color:var(--ink-soft); font-size:var(--fs-sm); font-weight:700; cursor:pointer; transition:background .12s, border-color .12s, color .12s;}
.mtile:hover{background:var(--line-soft); color:var(--ink); border-color:var(--blue);}
.mtile.sel{border-color:var(--blue); color:var(--ink); box-shadow:inset 0 0 0 1px var(--blue);}
.mtile.future{opacity:.5;}
.mpick-hint{display:flex; align-items:center; gap:7px; margin-top:14px; font-size:var(--fs-xs); color:var(--ink-faint);}
.mpick-dot{width:11px; height:11px; border-radius:3px; background:var(--blue-bg); border:1px solid var(--blue); flex:none;}

/* Zahlungs-Editor */
.pay-field{display:flex; flex-direction:column; gap:6px; margin-top:12px; color:var(--hm-soft); font-size:var(--fs-sm); font-weight:800;}
.pay-field input,.pay-field select,.pay-field textarea{min-height:var(--cb-touch); border:1px solid var(--line); border-radius:var(--cb-radius); padding:10px 12px;
  background:#fff; color:var(--hm-ink); font:inherit;}
.pay-field textarea{resize:vertical; min-height:96px; font-weight:500;}
.pay-action-row{display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap; margin-top:12px;}
.w-hint{margin:10px 0 0; font-size:var(--fs-xs); color:var(--ink-faint);}
.w-err{margin:12px 0 0; padding:9px 11px; border-radius:8px; background:var(--red-bg); color:var(--red); font-size:var(--fs-sm);}
.w-plan{display:grid; grid-template-columns:auto 1fr; gap:6px 14px; margin:0;
  padding:12px 14px; background:var(--card-sunk); border-radius:9px; font-size:var(--fs-sm);}
.w-plan dt{color:var(--ink-faint); font-weight:600;}
.w-plan dd{margin:0; font-family:var(--mono); color:var(--ink); overflow-wrap:anywhere;}
.full-pay{width:100%; margin-top:12px; border:0; border-radius:12px; padding:10px 12px; background:var(--hm-green-bg);
  color:var(--hm-green); font-weight:800;}

/* ---------- Zahlungs-Editor (V1-Stil: «Datum | Betrag», Soll-Füllen, Kommentar) ---------- */
.modal.pay-modal.row-edit-modal{max-width:640px;}
.modal.pay-modal.row-edit-modal .modal-body{max-height:82vh; overflow:auto;}
.row-edit-panel{padding:0; background:transparent; border-top:0;}
.row-edit-head{display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px;}
.row-edit-head b{display:block; font-size:var(--fs-xl); line-height:1.15; color:var(--hm-ink); font-weight:800;}
.row-edit-head span:not(.pay-status){display:block; margin-top:4px; color:var(--hm-soft); font-size:var(--fs-md); font-weight:700;}
.row-edit-grid{display:grid; grid-template-columns:repeat(2,minmax(150px,1fr)); gap:10px;}
.row-edit-field{display:flex; flex-direction:column; gap:6px; color:var(--hm-soft); font-size:var(--fs-sm); font-weight:800;}
.row-edit-field.comment{grid-column:1/-1;}
.row-edit-input{width:100%; min-width:0; min-height:var(--cb-touch); border:1px solid var(--hm-line); border-radius:var(--cb-radius); padding:9px 10px;
  background:#fff; color:var(--hm-ink); font-family:inherit; font-size:var(--fs-md); font-weight:500;}
.row-edit-input:focus{outline:0; border-color:var(--hm-green); box-shadow:0 0 0 2px rgba(47,125,45,.08);}
textarea.row-edit-input{resize:vertical; min-height:64px; white-space:normal;}
.row-soll-fill{align-self:flex-start; border:0; padding:0; background:transparent;
  color:var(--hm-soft); font-family:var(--mono); font-size:var(--fs-xs); font-weight:800; cursor:pointer;}
.row-soll-fill:hover{color:var(--hm-green); text-decoration:underline;}

/* Mieterinfo / Hausinfo */
.tenant-info-list{display:grid; grid-template-columns:minmax(120px,.45fr) minmax(0,1fr); gap:8px 14px; margin:0;}
.tenant-info-list dt{color:var(--hm-soft); font-weight:800; font-size:var(--fs-sm);}
.tenant-info-list dd{margin:0; color:var(--hm-ink); overflow-wrap:anywhere;}
.tenant-info-list .ti-sep{grid-column:1/-1; height:0; margin:5px 0 3px; border-top:1px solid var(--hm-line);}
.tenant-info-actions{display:flex; justify-content:flex-end; margin:0 0 12px;}
/* Mieterinfo/Bearbeiten: breiteres Modal, Info in vertikal gestapelte Bloecke. */
#tenantInfoModal .modal.pay-modal{max-width:780px;}
#tenantInfoModal .modal-body{max-height:82vh; overflow:auto;}
#tenantInfoModal .ti-grid{display:grid; grid-template-columns:1fr; gap:12px;}
#tenantInfoModal .ti-name{font-size:var(--fs-lg); font-weight:800; line-height:1.2; color:var(--hm-ink); margin:2px 0 14px;}
#tenantInfoModal .ti-block{background:var(--card-sunk); border:1px solid var(--hm-line); border-radius:var(--cb-radius); padding:12px 14px;}
#tenantInfoModal .ti-block h4{margin:0 0 8px; color:var(--hm-soft); font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.06em;}
#tenantInfoModal .ti-block dl{display:grid; grid-template-columns:minmax(120px,.8fr) minmax(0,1.6fr); gap:5px 16px; margin:0; font-size:var(--fs-sm);}
#tenantInfoModal .ti-block dt{color:var(--hm-muted); font-weight:700;}
#tenantInfoModal .ti-block dd{margin:0; color:var(--hm-ink); overflow-wrap:anywhere;}
#tenantInfoModal .ti-block dd .m-copy{padding:0;}
#tenantInfoModal .ti-block .ti-finance dd{font-family:var(--mono); font-variant-numeric:tabular-nums;}
.tenant-full-note{margin-top:18px; padding-top:12px; border-top:1px solid var(--hm-line);}
.tenant-full-note h4,.tenant-edit-section{margin:0 0 8px; color:var(--hm-soft); font-size:var(--fs-xs); text-transform:uppercase; letter-spacing:.06em;}
.tenant-full-note p{margin:0; color:var(--hm-ink); white-space:pre-wrap;}
.tenant-edit-grid{display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px;}
.tenant-edit-section{margin-top:18px;}
.tenant-edit-grid .row-edit-field:nth-child(14){grid-column:1/-1;}
.tenant-edit-grid .row-edit-field input[disabled]{background:var(--hm-line); color:var(--hm-soft); cursor:not-allowed;}
.info-copy{font:inherit; color:var(--hm-ink); background:none; border:0; padding:0; cursor:pointer; text-align:left;
  border-bottom:1px dashed var(--hm-line); overflow-wrap:anywhere;}
.info-copy:hover{color:var(--hm-green); border-bottom-color:var(--hm-green);}

/* ---------- Loading + Toast ---------- */
.loading-overlay{position:fixed; inset:0; background:rgba(10,13,20,.45); backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(3px); display:none; align-items:center; justify-content:center; z-index:300;}
.loading-overlay.show{display:flex;}
.loading-box{background:var(--cb-glass-strong); border:1px solid var(--cb-glass-line); border-radius:var(--cb-radius); padding:26px 36px;
  display:flex; flex-direction:column; align-items:center; gap:14px; box-shadow:var(--shadow-lg);
  color:var(--ink); font-size:var(--fs-sm); font-weight:700;}
.spin-lg{width:30px; height:30px; border-radius:50%; border:3px solid var(--line); border-top-color:var(--blue);
  animation:spin .7s linear infinite; flex-shrink:0;}
@keyframes spin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion: reduce){.spin-lg{animation:none;}}
.toast-wrap{position:fixed; bottom:22px; right:22px; z-index:200; display:flex; flex-direction:column; gap:8px;}
.toast{background:var(--cb-primary); color:#fff; padding:11px 18px; border-radius:var(--cb-radius); font-size:var(--fs-sm);
  box-shadow:var(--shadow); display:flex; align-items:center; gap:9px; animation:toastin .18s ease-out;}
.toast .tic{color:var(--green);}
@keyframes toastin{from{opacity:0; transform:translateY(6px);} to{opacity:1; transform:translateY(0);}}

/* ---------- Zustände ---------- */
.empty-state{padding:44px 20px; text-align:center; color:var(--ink-faint); font-size:var(--fs-sm);}
.empty-state.small{padding:22px 16px;}
.soon{padding:44px 20px; text-align:center; color:var(--ink-faint); font-size:var(--fs-sm);}
.soon b{color:var(--ink-soft); display:block; margin-bottom:4px; font-size:var(--fs-md);}
.card{background:var(--card); border:1px solid var(--line); border-radius:var(--cb-radius); box-shadow:var(--shadow);}
.muted{color:var(--hm-muted);}

/* ---------- Login ---------- */
.login-screen{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:24px;}
.login-card{width:min(400px,100%); background:var(--hm-panel-strong); border:1px solid var(--hm-line);
  border-radius:var(--hm-radius); box-shadow:var(--hm-shadow); padding:34px 36px; backdrop-filter:blur(16px);}
.login-brand{display:flex; align-items:center; gap:12px; margin-bottom:20px;}
.login-brand .hm-mark{width:44px; height:44px; border-radius:12px; background:var(--hm-green-bg); color:var(--hm-green);
  display:flex; align-items:center; justify-content:center;}
.login-brand .hm-mark svg{width:34px; height:34px; fill:none; stroke:currentColor; stroke-width:2.1; stroke-linecap:round; stroke-linejoin:round;}
.login-brand b{font-size:var(--fs-lg); font-weight:800;}
.login-card h1{font-size:var(--fs-lg); margin-bottom:8px;}
.login-hint{margin:0 0 14px; padding:10px 12px; border-radius:10px; background:var(--orange-bg); color:var(--orange);
  font-size:var(--fs-sm); font-weight:700;}
.login-field{display:flex; flex-direction:column; gap:6px; margin:14px 0 18px; color:var(--hm-soft); font-size:var(--fs-sm); font-weight:800;}
.login-field input{border:1px solid var(--line); border-radius:12px; padding:11px 12px; background:#fff; color:var(--hm-ink); font:inherit;}

/* ---------- Responsive ---------- */
@media (max-width:1280px){
  .owner-head{grid-template-columns:1fr;}
  .owner-stats{max-width:780px;}
  .house-grid,.owner-private .house-grid,.owner-LR .house-grid{grid-template-columns:repeat(2,minmax(0,1fr));}
  .pay-layout{grid-template-columns:1fr;}
  .tenant-tabs{position:static; display:grid; grid-template-columns:repeat(2,minmax(0,1fr));}
}
@media (max-width:760px){
  .app{display:block; padding:0;}
  .sidebar{display:none;}
  main{min-height:100vh;}
  .topheader{padding:20px 16px 12px;}
  .th-left h1{font-size:var(--fs-2xl);}
  .header-actions{display:none;}
  .viewport{padding:0 14px 24px;}
  .dashboard-toolbar{flex-direction:column;}
  .dash-title{font-size:var(--fs-2xl);}
  .warn-card{left:14px; right:14px; bottom:14px; width:auto; min-width:0;}
  .owner-head{padding:20px 16px;}
  .owner-title{gap:14px;}
  .owner-icon{width:54px; height:54px;}
  .owner-title h2{font-size:var(--fs-xl);}
  .owner-stats{grid-template-columns:1fr; gap:12px;}
  .owner-stat{border-left:0; border-top:1px solid var(--hm-line); padding:12px 0; min-height:auto;}
  .owner-stat:first-child{border-top:0;}
  .house-grid,.owner-private .house-grid,.owner-LR .house-grid{grid-template-columns:1fr; padding:14px;}
  .payment-year-head{align-items:flex-start; flex-direction:column; gap:12px;}
  .payment-year-divider{display:none;}
  .year-stats{width:100%; flex-direction:column;}
  .year-stat{padding:10px 0; border-right:0; border-top:1px solid var(--hm-line);}
  .year-bka-text{grid-template-columns:1fr;}
  .year-bka-col{padding:8px 0 0; border-left:0; border-top:1px solid var(--hm-line);}
  .year-bka-col:first-child{padding-top:0; border-top:0;}
  .tenant-tabs{grid-template-columns:1fr;}
}
@media (max-width:860px){
  #tenantInfoModal .modal.pay-modal{max-width:640px;}
  .pay-detail-head{margin-left:16px; margin-right:16px;}
  .payment-year-block{margin-left:16px; margin-right:16px;}
  .m-owner-head{padding-left:16px; padding-right:16px;}
  .m-table{margin-left:16px; margin-right:16px;}
  .m-table-head{display:none;}
  .m-lbl{display:block;}
  .m-row{min-width:0; grid-template-columns:1fr 1fr; align-items:start;}
  .m-tenant-group-head{min-width:0; grid-template-columns:1fr; padding:13px 14px;}
  .m-group-contact{grid-column:1;}
  .m-person{grid-column:1 / -1;}
  .h-owner-head{padding-left:16px; padding-right:16px;}
  .h-owner-head h2{font-size:var(--fs-xl);}
  .h-grid{grid-template-columns:1fr; padding-left:16px; padding-right:16px;}
  .h-card{padding:18px;}
  .h-card-main-head{grid-template-columns:58px minmax(0,1fr); gap:14px;}
  .h-house-icon{width:58px; height:58px;}
  .h-title-block h3{font-size:var(--fs-2xl);}
}
@media (max-width:600px){
  #tenantInfoModal .modal.pay-modal{max-width:100%;}
  #tenantInfoModal .ti-block dl{grid-template-columns:minmax(90px,.8fr) minmax(0,1.6fr);}
  .tenant-edit-grid{grid-template-columns:1fr;}
  .tenant-edit-grid .row-edit-field:nth-child(14){grid-column:1/-1;}
  .pay-detail-head{margin-left:12px; margin-right:12px;}
  .payment-year-block{margin-left:12px; margin-right:12px;}
  .m-toolbar{justify-content:flex-start;}
  .m-owner-head{align-items:flex-start; flex-direction:column;}
  .m-table{margin-left:12px; margin-right:12px;}
  .m-row{grid-template-columns:1fr; gap:9px; padding:13px 14px;}
  .m-cell{grid-column:1 / -1;}
  .h-toolbar{justify-content:flex-start;}
  .h-owner-head{align-items:flex-start; flex-direction:column;}
  .h-owner-stats{justify-content:flex-start; width:100%;}
  .h-owner-stat{min-width:0; width:100%;}
  .h-grid{grid-template-columns:1fr; padding:12px;}
  .h-card{padding:16px;}
  .h-card-main-head{grid-template-columns:48px minmax(0,1fr); gap:12px;}
  .h-house-icon{width:48px; height:48px; border-radius:12px;}
  .h-house-icon .h-svg,.h-house-icon svg{width:28px; height:28px;}
  .h-title-block h3{font-size:var(--fs-xl);}
  .h-badges{gap:8px; margin-top:12px;}
  .h-badge{font-size:var(--fs-sm); min-height:30px; padding:5px 10px;}
  .house-fields{grid-template-columns:1fr;}
}

/* ---------- Abrechnung (IMMO-0009) ---------- */
.nk-workspace{padding:4px 24px 24px;}
.nk-controls{display:flex; flex-wrap:wrap; align-items:flex-end; gap:14px; margin:18px 0; padding:16px 18px;
  background:var(--hm-panel); border:1px solid var(--hm-line); border-radius:var(--hm-radius);}
:root[data-theme="dark"] .nk-controls{background:var(--hm-panel);}
.nk-field{display:flex; flex-direction:column; gap:6px;}
.nk-field span{color:var(--hm-soft); font-size:var(--fs-xs); font-weight:700; text-transform:uppercase; letter-spacing:.04em;}
.nk-field select{min-width:150px; padding:9px 12px; border:1px solid var(--hm-line); border-radius:10px;
  background:var(--hm-panel-strong); color:var(--hm-ink); font-size:var(--fs-md);}
:root[data-theme="dark"] .nk-field select{background:rgba(255,255,255,.06);}
.nk-violations{margin:0 0 16px; padding:14px 16px; border:1px solid rgba(235,43,18,.35); border-radius:12px;
  background:var(--hm-red-bg); color:var(--hm-red); font-size:var(--fs-sm);}
.nk-violations b{font-weight:800;}
.nk-violations ul{margin:8px 0 0; padding-left:18px;}
.nk-cards{display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:14px; margin:0 0 16px;}
.nk-card{display:flex; flex-direction:column; gap:6px; padding:16px 18px; background:var(--hm-panel);
  border:1px solid var(--hm-line); border-radius:var(--hm-radius);}
:root[data-theme="dark"] .nk-card{background:var(--hm-panel);}
.nk-card-label{color:var(--hm-soft); font-size:var(--fs-xs); font-weight:700; text-transform:uppercase; letter-spacing:.04em;}
.nk-card b{font-size:var(--fs-2xl); font-weight:800; line-height:1.1;}
.nk-card-wide{margin:0 0 16px; padding:16px 18px; background:var(--hm-panel); border:1px solid var(--hm-line);
  border-radius:var(--hm-radius);}
:root[data-theme="dark"] .nk-card-wide{background:var(--hm-panel);}
.nk-card-wide h3{margin:0 0 12px; color:var(--hm-ink); font-size:var(--fs-lg); font-weight:800;}
.nk-table{width:100%; border-collapse:collapse; font-size:var(--fs-sm);}
.nk-table thead th{padding:10px 12px; border-bottom:1px solid var(--hm-line); background:rgba(25,34,25,.06);
  color:#39423B; font-size:var(--fs-2xs); font-weight:800; text-transform:uppercase; text-align:left; white-space:nowrap;}
:root[data-theme="dark"] .nk-table thead th{background:rgba(255,255,255,.07); color:var(--hm-soft);}
.nk-table tbody td{padding:10px 12px; border-bottom:1px solid var(--hm-line); color:var(--hm-ink);}
.nk-table tbody tr:last-child td{border-bottom:none;}
.nk-table tbody tr:hover{background:rgba(47,125,45,.07);}
:root[data-theme="dark"] .nk-table tbody tr:hover{background:rgba(255,255,255,.06);}
.nk-table .num{font-family:var(--mono); white-space:nowrap;}
.nk-nachzahlung{color:var(--hm-red); font-weight:700;}
.nk-guthaben{color:var(--hm-green); font-weight:700;}
.nk-actions{display:flex; gap:10px; margin:0 0 18px;}
.nk-print-area{display:none;}
.nk-print-area.open{display:block;}
@media print{
  .sidebar,.topheader,.mobile-nav,.nk-toolbar,.nk-controls,.nk-actions,.loading-overlay,.toast-wrap{display:none !important;}
  .viewport{padding:0 !important;}
  .nk-workspace{padding:0 !important;}
  .nk-workspace > *{display:none !important;}
  .nk-workspace .nk-print-area{display:block !important;}
  body{background:#fff !important;}
}
@media (max-width:860px){
  .nk-workspace{padding:4px 16px 16px;}
}
@media (max-width:600px){
  .nk-workspace{padding:4px 12px 12px;}
}
.nk-frozen{margin:0 0 16px; padding:12px 16px; border:1px solid var(--hm-line); border-radius:12px;
  background:var(--hm-green-bg); color:var(--hm-ink); font-size:var(--fs-sm);}
:root[data-theme="dark"] .nk-frozen{background:rgba(121,200,117,.12);}
.nk-frozen b{font-weight:800;}
.nk-draft{background:var(--hm-red-bg); color:var(--hm-red); border-color:rgba(235,43,18,.35);}
.nk-diff-warn{margin:0 0 16px; padding:12px 16px; border:1px solid rgba(239,91,16,.4); border-radius:12px;
  background:rgba(239,91,16,.08); color:var(--hm-ink); font-size:var(--fs-sm);}
.nk-diff-warn b{color:var(--hm-orange); font-weight:800;}
.nk-versions{display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 16px;}
.nk-versions span{color:var(--hm-soft); font-size:var(--fs-xs); font-weight:700; text-transform:uppercase; letter-spacing:.04em;}
.nk-version{padding:7px 12px; border:1px solid var(--hm-line); border-radius:10px; background:var(--hm-panel-strong);
  color:var(--hm-ink); font-size:var(--fs-sm); cursor:pointer;}
:root[data-theme="dark"] .nk-version{background:rgba(255,255,255,.06);}
.nk-version:hover{background:rgba(47,125,45,.07);}
.nk-version.active{border-color:var(--hm-green); color:var(--hm-green); font-weight:800;}
