:root{--bg:#f6f7f5;--card:#fff;--text:#1f2a24;--muted:#6b756f;--line:#e3e7e3;--brand:#1c9c6b;--brand-dark:#157a53;
 --pos:#1c9c6b;--neg:#e0762b;--zero:#8a938e;--danger:#c93b3b;--radius:12px;--tab-h:60px;--top-h:56px}
@media (prefers-color-scheme:dark){:root{--bg:#141816;--card:#1d2320;--text:#e9ede9;--muted:#9aa49e;--line:#2c3430}.activity.unread{background:#1f2f27}}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--text);font:16px/1.45 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
a{color:inherit;text-decoration:none}h1{font-size:1.4rem;margin:.2rem 0 .8rem}h2{font-size:1.1rem;margin:1rem 0 .5rem}
.muted{color:var(--muted)}.pos{color:var(--pos)}.neg{color:var(--neg)}.zero{color:var(--zero)}.error{color:var(--danger)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:44px;padding:0 1rem;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--text);font:inherit;cursor:pointer}
.btn-primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn-primary:hover{background:var(--brand-dark)}
.btn-danger{color:var(--danger)}.btn-block{width:100%}.btn-sm{min-height:36px;padding:0 .7rem;font-size:.9rem}.btn-ghost{border-color:transparent;background:transparent}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1rem;margin-bottom:1rem}
label{display:block;margin:.6rem 0 .3rem;font-size:.9rem;color:var(--muted)}
input,select,textarea{width:100%;min-height:44px;padding:.5rem .7rem;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--text);font:inherit}
input[type=checkbox],input[type=radio]{width:22px;height:22px;min-height:0;margin:0 .5rem 0 0;vertical-align:middle}
textarea{min-height:88px}.row{display:flex;gap:.6rem;align-items:center}.row>*{flex:1}.right{text-align:right}.between{display:flex;justify-content:space-between;align-items:center;gap:.5rem}
.flash{padding:.7rem 1rem;border-radius:10px;margin-bottom:1rem;background:#e6f6ee;color:#155f41}.flash-error{background:#fbe9e9;color:#8d2323}
.avatar{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:50%;background:var(--brand);color:#fff;font-weight:600;font-size:.85rem;flex:none}
.avatar.lg{width:48px;height:48px;font-size:1rem}
/* Layout */
.topbar{display:none}.sidebar,.rightbar{display:none}
.shell{padding:.8rem .8rem calc(var(--tab-h) + 1.2rem + env(safe-area-inset-bottom));max-width:1200px;margin:0 auto}
.tabbar{position:fixed;left:0;right:0;bottom:0;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom);display:flex;background:var(--card);border-top:1px solid var(--line);z-index:20}
.tabbar a{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;font-size:.7rem;color:var(--muted);gap:2px}.tabbar a span{font-size:1.3rem}.tabbar a.active{color:var(--brand)}
.fab{position:fixed;right:1rem;bottom:calc(var(--tab-h) + 1rem + env(safe-area-inset-bottom));width:56px;height:56px;border-radius:50%;background:var(--brand);color:#fff;font-size:2rem;line-height:56px;text-align:center;box-shadow:0 6px 16px rgba(0,0,0,.25);z-index:21}
.login-card{max-width:400px;margin:3rem auto}
/* Listen */
.list{list-style:none;margin:0;padding:0}.list>li{border-bottom:1px solid var(--line)}
.exp-row{display:grid;grid-template-columns:40px 36px 1fr auto;gap:.6rem;align-items:center;padding:.7rem .3rem;min-height:56px;cursor:pointer}
.exp-row>.right{display:none}
.exp-date{text-align:center;line-height:1.1;color:var(--muted);font-size:.75rem}.exp-date b{display:block;font-size:1.1rem;color:var(--text)}
.exp-icon{font-size:1.5rem;text-align:center}.exp-desc{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.exp-desc small{display:block;color:var(--muted);font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.exp-side{text-align:right;font-size:.8rem;line-height:1.2;flex:none;min-width:88px}.exp-side b{display:block;font-size:.95rem}
.exp-row.payment{min-height:44px;padding:.4rem .3rem;color:var(--muted)}
.month-head{display:flex;justify-content:space-between;align-items:baseline;margin:1rem 0 .3rem;font-weight:600;color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.03em}
.detail{background:var(--bg);border-top:1px dashed var(--line);padding:.8rem;border-radius:0 0 var(--radius) var(--radius)}
.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:.5rem}.kpi{padding:.7rem;border:1px solid var(--line);border-radius:10px;background:var(--card)}.kpi small{display:block;color:var(--muted);font-size:.75rem}.kpi b{font-size:1.05rem}
.person{display:flex;align-items:center;gap:.7rem;padding:.6rem 0;border-bottom:1px solid var(--line)}.person .grow{flex:1;min-width:0}.person small{display:block;color:var(--muted);font-size:.8rem}
.person-wrap{flex-wrap:wrap}.person-wrap .grow{flex-basis:100%}
.activity.unread{background:#eef8f2}.strike{text-decoration:line-through}.badge{display:inline-block;min-width:18px;padding:0 5px;border-radius:9px;background:var(--neg);color:#fff;font-size:.7rem;line-height:18px;text-align:center;margin-left:.2rem}
.chips{display:flex;flex-wrap:wrap;gap:.4rem}.chip{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .6rem;border-radius:999px;background:var(--bg);border:1px solid var(--line);font-size:.9rem}.chip button{border:0;background:transparent;font-size:1rem;cursor:pointer;color:var(--muted);min-height:0;padding:0 .2rem}
.tabs{display:flex;gap:.3rem;overflow-x:auto;padding-bottom:.3rem;margin-bottom:.5rem;-webkit-overflow-scrolling:touch}.tabs a,.tabs button{flex:none;white-space:nowrap;padding:.5rem .8rem;border-radius:999px;border:1px solid var(--line);background:var(--card);font:inherit;font-size:.9rem;cursor:pointer}.tabs .active{background:var(--brand);color:#fff;border-color:var(--brand)}
.segmented{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}.segmented button{border:0;background:var(--card);padding:.5rem .8rem;font:inherit;cursor:pointer;min-height:40px}.segmented .active{background:var(--brand);color:#fff}
.grid-people{display:grid;grid-template-columns:1fr auto;gap:.4rem .8rem;align-items:center}
.grid-people input{max-width:160px;text-align:right}
.row-check{display:flex;align-items:center;min-height:44px}
/* Dialoge: mobil Vollbild-Sheet, Desktop Modal */
.dialog-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.45);z-index:30}
.dialog{position:fixed;inset:0;background:var(--card);z-index:31;overflow:auto;display:flex;flex-direction:column}
.dialog-head{position:sticky;top:0;display:flex;align-items:center;gap:.5rem;padding:.6rem .8rem;border-bottom:1px solid var(--line);background:var(--card);z-index:1}
.dialog-head h2{margin:0;flex:1;font-size:1.1rem}.dialog-body{padding:1rem .8rem 2rem;flex:1}
.dialog-foot{position:sticky;bottom:0;padding:.6rem .8rem calc(.6rem + env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--card);display:flex;gap:.5rem;justify-content:flex-end}
.dialog-foot .btn{flex:1}
.preview{margin-top:.8rem;padding:.6rem .8rem;border-radius:10px;background:var(--bg);font-size:.95rem}
.two-col{display:grid;grid-template-columns:1fr;gap:1rem}
.mobile-hidden{display:none}[x-cloak]{display:none!important}
@media (max-width:767px){
 .card-list{padding:.4rem .5rem}
 .search-form{flex-wrap:wrap}
 .search-form input{flex:1 1 100%}
 .search-form select{flex:1 1 auto}
 .search-form button{flex:0 0 auto}
}
@media (min-width:768px){
 .shell{padding:1.2rem}.two-col{grid-template-columns:1fr 1fr}.kpis{gap:1rem}
 .dialog{inset:auto;top:5vh;left:50%;transform:translateX(-50%);width:min(640px,94vw);max-height:90vh;border-radius:var(--radius);border:1px solid var(--line);box-shadow:0 20px 60px rgba(0,0,0,.3)}
 .dialog-foot .btn{flex:none}
 .search-form input{flex:1 1 auto;min-width:0}
 .search-form select,.search-form button{flex:0 0 auto}
}
@media (min-width:1024px){
 .topbar{display:flex;align-items:center;gap:1.5rem;height:var(--top-h);padding:0 1.5rem;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10}
 .brand{font-weight:700;font-size:1.3rem;color:var(--brand)}.topnav{display:flex;gap:1rem;flex:1}.topnav a{color:var(--muted);padding:.4rem .2rem}.topnav a.active{color:var(--text);border-bottom:2px solid var(--brand)}
 .topsearch input{min-height:36px;width:180px}
 .topbar-right{display:flex;gap:.8rem;align-items:center}
 .tabbar,.fab{display:none}
 .shell{display:grid;grid-template-columns:240px minmax(0,1fr) 300px;gap:1.5rem;padding:1.5rem}
 .sidebar,.rightbar{display:block}.sidebar{position:sticky;top:calc(var(--top-h) + 1.5rem);align-self:start}
 .mobile-only{display:none}.mobile-hidden{display:block}
 .sidebar h3{font-size:.75rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin:1rem 0 .3rem}
 .sidebar a{display:flex;justify-content:space-between;align-items:center;padding:.4rem .5rem;border-radius:8px}.sidebar a:hover,.sidebar a.active{background:var(--card)}
 .exp-row{grid-template-columns:44px 40px minmax(0,1fr) auto 32px}.exp-row.payment{grid-template-columns:44px 40px minmax(0,1fr) auto 32px}.exp-row>.right{display:block}.exp-side{min-width:110px}
}
@media print{.topbar,.tabbar,.fab,.sidebar,.rightbar,.btn,.no-print{display:none!important}.shell{display:block;padding:0}body{background:#fff;color:#000}.card,.print-page{box-shadow:none;border:0}}
table.stats{width:100%;border-collapse:collapse}table.stats td,table.stats th{padding:.4rem 0;border-bottom:1px solid var(--line);text-align:left}
.print-table{font-size:.9rem}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.import-table{width:100%;border-collapse:collapse;font-size:.85rem;min-width:640px}
.import-table th,.import-table td{padding:.35rem .4rem;border-bottom:1px solid var(--line);text-align:left;vertical-align:top;white-space:nowrap}
.import-table td:nth-child(2){white-space:normal;min-width:140px}
.import-balance{display:flex;flex-direction:column;gap:.15rem;padding:.4rem 0;border-bottom:1px solid var(--line)}
@media (min-width:768px){.import-balance{flex-direction:row;justify-content:space-between}}
