:root{--bg:#f6f7f9;--card:#fff;--text:#1b1f24;--muted:#667085;--line:#e3e6eb;--accent:#1f5eff;--ok:#157f3b;--warn:#b45309;--err:#b42318}
@media (prefers-color-scheme:dark){:root{--bg:#14171c;--card:#1d2127;--text:#e8eaed;--muted:#9aa3af;--line:#2d333b;--accent:#6b9bff;--ok:#4ade80;--warn:#fbbf24;--err:#f87171}}
*{box-sizing:border-box}
body{margin:0;font:16px/1.5 system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--text)}
header{background:var(--card);border-bottom:1px solid var(--line);padding:.6rem 1rem;display:flex;flex-wrap:wrap;gap:.75rem 1.25rem;align-items:center}
header nav{display:flex;gap:1rem;flex-wrap:wrap}
header a{color:var(--text);text-decoration:none}
header a:hover{color:var(--accent)}
.spacer{flex:1}
main{max-width:920px;margin:1.5rem auto;padding:0 1rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:1.25rem;margin-bottom:1rem}
h1{font-size:1.5rem;margin:.2rem 0 1rem}
h2{font-size:1.1rem;margin:0 0 .75rem}
label{display:block;font-weight:600;margin:.8rem 0 .25rem}
input,select{width:100%;padding:.55rem .7rem;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);font:inherit}
input[type=file]{padding:1.2rem;border-style:dashed}
button,.btn{display:inline-block;margin-top:1rem;padding:.55rem 1rem;border:0;border-radius:8px;background:var(--accent);color:#fff;font:inherit;cursor:pointer;text-decoration:none}
button.link{background:none;color:var(--accent);margin:0;padding:0}
header form{display:inline;margin:0}
header select{width:auto;padding:.3rem .5rem}
header button{margin:0;padding:.3rem .7rem}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:.5rem .4rem;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-weight:600;font-size:.9rem}
.muted{color:var(--muted)}
.err{color:var(--err)}.ok{color:var(--ok)}.warn{color:var(--warn)}
.error-box{border:1px solid var(--err);color:var(--err);border-radius:8px;padding:.6rem .8rem;margin-bottom:1rem}
.narrow{max-width:420px;margin:2rem auto}
.qr{background:#fff;padding:.5rem;display:inline-block;border-radius:8px}
.qr svg{width:200px;height:200px;display:block}
code{background:var(--bg);padding:.1rem .35rem;border-radius:4px;word-break:break-all}
.ok-box{border:1px solid var(--ok);color:var(--ok);border-radius:8px;padding:.6rem .8rem;margin-bottom:1rem}
label.check{display:flex;gap:.5rem;align-items:center;font-weight:400;margin:.6rem 0 0}
label.check input{width:auto}
.codes{display:grid;grid-template-columns:repeat(auto-fill,minmax(11rem,1fr));gap:.5rem;margin:1rem 0}
.codes code{font-size:1.05rem;padding:.4rem .6rem;text-align:center}
.invite-link{display:block;padding:.6rem;user-select:all}
@media print{header,button,.btn{display:none}}
.review{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:1rem;align-items:start}
.review-left{position:sticky;top:.5rem}
.preview{width:100%;height:70vh;border:1px solid var(--line);border-radius:10px;background:#fff}
.preview-img{width:100%;max-height:70vh;object-fit:contain;border:1px solid var(--line);border-radius:10px;background:#fff}
@media (max-width:900px){.review{grid-template-columns:1fr}.review-left{position:static}.preview{height:50vh}}
main:has(.review){max-width:1300px}
fieldset{border:0;padding:0;margin:0;min-width:0}
.badge{display:inline-block;margin-left:.4rem;padding:0 .45rem;border-radius:999px;font-size:.75rem;font-weight:600;border:1px solid currentColor}
.b-ok{color:var(--ok)}.b-mid{color:var(--warn)}.b-low{color:var(--err)}
label.must{color:var(--warn);font-weight:600}
.warn-box{border:1px solid var(--warn);color:var(--warn);border-radius:8px;padding:.6rem .8rem;margin-bottom:1rem}
.error-box ul,.warn-box ul{margin:.3rem 0 0;padding-left:1.2rem}
table.lines input{padding:.35rem .5rem}
.small{font-size:.85rem}
.actions{display:flex;gap:.75rem;flex-wrap:wrap}
button.secondary{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.control{border-color:var(--accent)}
.attention{border-color:var(--warn)}
form.inline{display:inline}
.rawtext{white-space:pre-wrap;max-height:16rem;overflow:auto;background:var(--bg);padding:.6rem;border-radius:8px;font-size:.8rem}
.small-btn{margin:0;padding:.3rem .7rem}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);border:0}
.opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:0 1rem}
.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.3rem;text-align:center;margin:1rem 0 0;padding:2.2rem 1rem;border:2px dashed var(--line);border-radius:12px;background:var(--bg);cursor:pointer;font-weight:400}
.dropzone:hover,.dropzone.over{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--bg))}
.dropzone.busy{opacity:.6;pointer-events:none}
.dz-title{font-size:1.15rem;font-weight:600}
label.btn{margin:1rem 0 0;font-weight:400}
label.btn.secondary{background:transparent;color:var(--accent);border:1px solid var(--accent)}
.camera{display:none}
@media (pointer:coarse),(max-width:700px){.camera{display:inline-block}}
.move{display:flex;flex-wrap:wrap;gap:.5rem 1rem;align-items:end}
.move select{width:auto;min-width:12rem}
.move button{margin-top:0}
[hidden]{display:none !important}
.row-head{display:flex;justify-content:space-between;align-items:center;gap:1rem}
.row-head form{margin:0}.row-head select{width:auto}
.bars{display:grid;gap:.9rem;margin:.5rem 0}
.bar-row{display:grid;grid-template-columns:minmax(5rem,9rem) 1fr minmax(8rem,12rem);gap:.75rem;align-items:center}
.bar-track{position:relative;height:1.4rem;background:var(--bg);border:1px solid var(--line);border-radius:6px}
.bar-fill{height:100%;background:var(--accent);border-radius:5px 0 0 5px;min-width:2px}
.bar-fill.over{background:var(--warn)}
.bar-target{position:absolute;top:-4px;bottom:-4px;width:2px;background:var(--text)}
.bar-num{text-align:right}.bar-num span{display:block}
@media (max-width:640px){.bar-row{grid-template-columns:1fr}.bar-num{text-align:left}}
.badge.warn{border-color:var(--warn)}
.suggest{display:flex;gap:.5rem;align-items:center;flex-wrap:wrap;margin:.3rem 0 0}
.suggest button{margin:0;padding:.2rem .6rem}
.doc-pick{display:grid;grid-template-columns:auto 1fr;gap:.6rem;align-items:start;padding:.5rem 0;border-bottom:1px solid var(--line)}
.doc-pick input[type=checkbox]{width:auto;margin-top:.35rem}
.doc-pick label{margin:0;font-weight:400}

/* Akkordeon-Listen (Belege, Bank) */
.kpis{display:flex;flex-wrap:wrap;gap:1.5rem;margin:.5rem 0 1rem}
.kpis div{display:flex;flex-direction:column}.kpis strong{font-size:1.3rem}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
@media (max-width:760px){.two-col{grid-template-columns:1fr}}
.dash-block{border-top:1px solid var(--line);padding:.6rem 0}
.bar-fill.inc{background:var(--ok,#2f7d4f)}
.bar-fill.exp{background:var(--accent)}
.acc-row{display:flex;gap:.5rem;align-items:flex-start;border-top:1px solid var(--line);padding:.35rem 0}
.acc-row>details{flex:1;min-width:0}
.acc-row>.btn{flex:none;margin-top:.15rem}
details.acc>summary{display:grid;grid-template-columns:minmax(0,3fr) minmax(0,2fr) auto minmax(0,2fr);gap:.75rem;align-items:center;cursor:pointer;padding:.3rem 0}
details.acc>summary .acc-main{display:flex;flex-direction:column;min-width:0;overflow-wrap:anywhere}
details.acc>summary .acc-sum{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}
.acc-body{padding:.5rem 0 .75rem 1rem}
.assign-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(12rem,1fr));gap:.75rem;align-items:end}
.assign-grid label{display:block;margin-bottom:.15rem}
.assign-grid fieldset{grid-column:1/-1}
.assign-wide{grid-column:1/-1}
.month-block{border-top:2px solid var(--line);padding:.4rem 0}
.month-block>summary{cursor:pointer;display:flex;justify-content:space-between;gap:1rem;padding:.4rem 0;font-weight:600}
.badge.ok{background:transparent}
@media (max-width:760px){details.acc>summary{grid-template-columns:1fr auto}.acc-cat,.acc-state{grid-column:1/-1}}

/* Gesellschafter: Profilbild oder Initialen */
.avatar{display:inline-block;width:2rem;height:2rem;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:.4rem}
.avatar.sm{width:1.5rem;height:1.5rem}
.avatar.initials{display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;color:#fff;background:#5b6b8c}
.avatar.initials.sm{font-size:.6rem}
.avatar.c1{background:#2f7d4f}.avatar.c2{background:#8a5a2b}.avatar.c3{background:#7a3f7a}.avatar.c4{background:#2b6f8a}.avatar.c5{background:#8a2b3d}
.partner-card{border-top:1px solid var(--line);padding:.5rem 0}
.partner-card>summary{cursor:pointer;display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}

.table-wrap{overflow-x:auto}
td.num,th.num{text-align:right;white-space:nowrap;font-variant-numeric:tabular-nums}

/* Breites Layout für große Bildschirme */
main{max-width:1560px}
main:has(.narrow){max-width:920px}
.cards-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,30rem),1fr));gap:1rem;align-items:start}
.cards-grid>.card{margin-bottom:0}
.cards-grid>.wide{grid-column:1/-1}
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,26rem),1fr));gap:1.25rem}
.dash-grid .dash-block{border-top:0;padding:0}
.dash-body{display:grid;grid-template-columns:1fr;gap:1.25rem;padding-top:.6rem}
.nowrap{white-space:nowrap}.strong{font-weight:700}
h3{font-size:1rem;margin:.2rem 0 .5rem}
@media (min-width:1100px){
  details[data-wide-lock]>summary{cursor:default;list-style:none}
  details[data-wide-lock]>summary::-webkit-details-marker{display:none}
  .dash-body{grid-template-columns:1fr}
  .acc-row details.acc[data-wide-lock]>.acc-body{padding-left:0}
}

/* Balken: Breite kommt per Skript (data-w), mit weichem Einlaufen */
[data-w]{width:0;transition:width .7s cubic-bezier(.2,.7,.2,1)}
.bar-target{transition:left .7s cubic-bezier(.2,.7,.2,1)}
@media (prefers-reduced-motion:reduce){[data-w],.bar-target{transition:none}}

/* Ringdiagramm */
.donut-wrap{display:flex;gap:1rem;align-items:center;flex-wrap:wrap}
.donut{width:11rem;height:11rem;flex:none;transform:rotate(0deg)}
.donut .ring{stroke:var(--line)}
.donut .seg{transition:stroke-width .15s}
.donut .seg:hover{stroke-width:7}
.donut-total{font-size:3.2px;font-weight:700;fill:var(--text)}
.donut-sub{font-size:2.2px;fill:var(--muted)}
.legend{list-style:none;margin:0;padding:0;display:grid;gap:.3rem;font-size:.9rem;flex:1;min-width:11rem}
.legend li{display:grid;grid-template-columns:auto 1fr auto;gap:.5rem;align-items:center}
.legend .lg-num{color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.sw{width:.8rem;height:.8rem;border-radius:3px;display:inline-block}
.seg.s0,.sw.s0{stroke:#3b6ef6;background:#3b6ef6}.seg.s1,.sw.s1{stroke:#17a398;background:#17a398}
.seg.s2,.sw.s2{stroke:#e8a317;background:#e8a317}.seg.s3,.sw.s3{stroke:#e5604d;background:#e5604d}
.seg.s4,.sw.s4{stroke:#8b5cf6;background:#8b5cf6}.seg.s5,.sw.s5{stroke:#4caf50;background:#4caf50}
.seg.s6,.sw.s6{stroke:#d6498b;background:#d6498b}.seg.s7,.sw.s7{stroke:#8a94a6;background:#8a94a6}
