:root{--ink:#1b2330;--muted:#5f6b7a;--line:#e3e8ef;--bg:#f3f5f8;--card:#fff;--side:#18212f;--side2:#222d3d;--akzent:#c8a44d;--blau:#2456a4;--gruen:#15803d;--gelb:#b45309;--rot:#b91c1c;--lila:#6d28d9;--r:12px;--font:Inter,"Segoe UI",system-ui,-apple-system,Roboto,"Helvetica Neue",Arial,sans-serif;--ges:#c8a44d}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;font-family:var(--font);font-size:15px;line-height:1.5;color:var(--ink);background:var(--bg);overflow-x:clip;min-width:0}
a{color:var(--blau);text-decoration:none}a:hover{text-decoration:underline}
h1{font-size:1.45rem;margin:0 0 .6em;letter-spacing:-.01em}h2{font-size:1.12rem;margin:1.2em 0 .5em}h3{font-size:1rem;margin:1em 0 .4em}
code{background:#eef2f7;padding:1px 5px;border-radius:4px;font-size:.9em}
.layout{display:grid;grid-template-columns:250px 1fr;min-height:100vh}
.side{background:var(--side);color:#fff;padding:16px 12px;position:sticky;top:0;height:100vh;overflow:auto;border-right:4px solid var(--ges)}
.side .brand{font-weight:700;font-size:1.05rem;margin:4px 6px 14px;display:block;color:#fff}.side .brand small{display:block;font-weight:400;opacity:.65;font-size:.72rem}
.side .ges-wahl{margin:0 4px 10px}.side .ges-wahl label{color:#aab4c3;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;margin-bottom:3px}
.side .ges-wahl select{background:var(--side2);color:#fff;border-color:#34415a;font-size:.9rem}
.side nav a{display:flex;align-items:center;gap:10px;color:#d6dde8;padding:8px 10px;border-radius:8px;font-size:.93rem}
.side nav a:hover,.side nav a.aktiv{background:rgba(255,255,255,.1);color:#fff;text-decoration:none}.side nav a.aktiv{box-shadow:inset 3px 0 0 var(--ges)}
.side nav a .ic{width:22px;text-align:center}.side nav a.bald{opacity:.55}.side nav a.bald small{margin-left:auto;font-size:.65rem;border:1px solid #556;border-radius:6px;padding:0 5px}
.side nav .gruppe{font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;opacity:.5;margin:14px 10px 4px}
.main{min-width:0;display:flex;flex-direction:column}
.top{background:#fff;border-bottom:1px solid var(--line);padding:9px 22px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;position:sticky;top:0;z-index:20}
.top form.suche{flex:1;min-width:180px}.top .kontext{font-size:.85rem;color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap}.top .kontext i{width:10px;height:10px;border-radius:50%;display:inline-block}
.top .user{margin-left:auto;font-size:.9rem;color:var(--muted);display:flex;gap:10px;align-items:center}.glocke{position:relative;font-size:1.1rem;text-decoration:none}.glocke b{position:absolute;top:-6px;right:-8px;background:var(--rot);color:#fff;font-size:.65rem;border-radius:999px;padding:0 5px}
.content{padding:22px;max-width:1500px;width:100%;flex:1}
.burger{display:none;background:none;border:1px solid var(--line);border-radius:8px;width:40px;height:36px;font-size:1.2rem;cursor:pointer}
.tabbar{display:none}
@media(max-width:960px){.layout{grid-template-columns:1fr}.side{position:fixed;left:-280px;width:270px;z-index:40;transition:.2s;height:100vh}.side.offen{left:0;box-shadow:0 0 40px rgba(0,0,0,.4)}.burger{display:block}.content{padding:14px 14px 90px}.top{padding:8px 12px}.top .uname{display:none}.top .kontext{max-width:40vw;overflow:hidden;text-overflow:ellipsis}
.tabbar{display:flex;position:fixed;left:0;right:0;bottom:0;background:#fff;border-top:1px solid var(--line);z-index:30;padding-bottom:env(safe-area-inset-bottom)}.tabbar a{flex:1;text-align:center;font-size:.68rem;color:var(--muted);padding:6px 2px 5px;text-decoration:none}.tabbar a span{display:block;font-size:1.25rem;line-height:1.2}.tabbar a.aktiv{color:var(--blau)}.tabbar a.plus span{background:var(--blau);color:#fff;border-radius:50%;width:40px;height:40px;line-height:40px;margin:-14px auto 2px;font-size:1.5rem;box-shadow:0 4px 12px rgba(36,86,164,.35)}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;margin-bottom:18px}.card h2:first-child,.card h3:first-child{margin-top:0}.card--dicht{padding:12px 14px}
.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(260px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.kpi{background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px 16px;border-top:3px solid var(--ges)}.kpi strong{font-size:1.5rem;display:block;line-height:1.15}.kpi span{color:var(--muted);font-size:.83rem}.kpi.warn strong{color:var(--rot)}.kpi.gut strong{color:var(--gruen)}.kpi a{color:inherit}
.btn{display:inline-block;padding:7px 14px;border-radius:8px;border:1px solid var(--blau);background:var(--blau);color:#fff;font:inherit;font-size:.9rem;cursor:pointer;text-decoration:none;line-height:1.3;white-space:nowrap}
.btn:hover{background:#1b4482;text-decoration:none;color:#fff}.btn--klein{padding:4px 9px;font-size:.8rem}.btn--outline{background:#fff;color:var(--blau)}.btn--outline:hover{background:#eef3fa;color:var(--blau)}
.btn--rot{background:#fff;color:var(--rot);border-color:#f2c4c4}.btn--rot:hover{background:#fdecec;color:var(--rot);border-color:var(--rot)}.btn--gruen{background:var(--gruen);border-color:var(--gruen)}.btn--gruen:hover{background:#116232}.btn--gross{padding:12px 20px;font-size:1rem}.btn[disabled]{opacity:.5;cursor:not-allowed}
input,select,textarea{font:inherit;padding:8px 10px;border:1px solid #c9d2dd;border-radius:8px;background:#fff;color:var(--ink);width:100%;max-width:100%;font-size:16px}
@media(min-width:961px){input,select,textarea{font-size:.95rem}}
textarea{min-height:100px;resize:vertical}input[type=checkbox],input[type=radio]{width:auto;transform:scale(1.15)}input[type=file]{padding:6px}
label{display:block;font-size:.82rem;color:var(--muted);margin:0 0 4px;font-weight:600}label.cb{display:flex;align-items:center;gap:8px;font-weight:500;color:var(--ink);font-size:.92rem}
.feld{margin-bottom:12px}.zeile{display:grid;gap:12px;grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}.zeile--3{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}
.inline{display:inline}.actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
table{width:100%;border-collapse:collapse;font-size:.92rem}th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}th{font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;white-space:nowrap}
tr:hover td{background:#f8fafc}.tabelle-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}td.r,th.r{text-align:right;white-space:nowrap}tr.summe td{font-weight:700;border-top:2px solid var(--ink)}
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.74rem;font-weight:600;white-space:nowrap}
.badge--gruen{background:#dcfce7;color:#166534}.badge--gelb{background:#fef3c7;color:#92400e}.badge--blau{background:#dbeafe;color:#1e40af}.badge--grau{background:#e5e7eb;color:#374151}.badge--rot{background:#fee2e2;color:#991b1b}.badge--lila{background:#ede9fe;color:#5b21b6}
.ges{display:inline-block;padding:1px 7px;border-radius:6px;font-size:.72rem;font-weight:700;color:#fff;background:var(--gc,#1f3a5f);white-space:nowrap;vertical-align:middle}.ges--holding{background:#c8a44d;color:#1b2330}
.flash{padding:10px 14px;border-radius:8px;margin-bottom:14px;border:1px solid}.flash-ok{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}.flash-error{background:#fef2f2;border-color:#fecaca;color:#991b1b}.flash-info{background:#eff6ff;border-color:#bfdbfe;color:#1e3a8a}
.muted{color:var(--muted)}.klein{font-size:.85rem}.rechts{text-align:right}.mono{font-family:ui-monospace,Menlo,monospace;font-size:.85em}.mt{margin-top:14px}.mb0{margin-bottom:0}
.kopf{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;flex-wrap:wrap;margin-bottom:14px}.kopf h1{margin:0}.kopf .sub{color:var(--muted);font-size:.9rem}
.tabs{display:flex;gap:4px;flex-wrap:wrap;margin-bottom:14px}.tabs a{padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:#fff;font-size:.85rem;color:var(--ink)}.tabs a.aktiv{background:var(--side);color:#fff;border-color:var(--side)}.tabs a b{margin-left:4px;opacity:.7}
.filter{display:flex;gap:8px;flex-wrap:wrap;align-items:end;margin-bottom:14px}.filter .feld{margin:0;min-width:140px}.filter input,.filter select{padding:6px 9px}
.ueberfaellig{color:var(--rot);font-weight:600}.heute{color:var(--gelb);font-weight:600}
.leer{color:var(--muted);padding:24px;text-align:center;border:1px dashed #c9d2dd;border-radius:var(--r)}
.hinweis{background:#eef3fa;border-left:4px solid var(--blau);padding:10px 14px;border-radius:6px;font-size:.9rem;margin:10px 0}.hinweis--warn{background:#fff7ed;border-color:var(--gelb)}
.login{max-width:410px;margin:7vh auto;background:#fff;border:1px solid var(--line);border-radius:16px;padding:30px}.login .brand{font-weight:700;color:var(--side);font-size:1.25rem;margin-bottom:2px}body.auth{background:linear-gradient(160deg,#18212f 0,#2a3a55 60%,#c8a44d 200%);min-height:100vh}
.timeline{border-left:2px solid var(--line);margin-left:10px;padding-left:20px}.timeline .punkt{position:relative;margin-bottom:14px;padding-bottom:6px}.timeline .punkt::before{content:"";position:absolute;left:-27px;top:8px;width:12px;height:12px;border-radius:50%;background:#fff;border:3px solid var(--ges)}
.timeline .meta{font-size:.8rem;color:var(--muted);display:flex;gap:8px;flex-wrap:wrap;align-items:center}.timeline .titel{font-weight:600}.timeline .text{white-space:pre-wrap;font-size:.92rem;margin-top:2px}
.fotos{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}.fotos a{display:block;width:96px;height:96px;border-radius:8px;overflow:hidden;border:1px solid var(--line);background:#eee}.fotos img{width:100%;height:100%;object-fit:cover}
/* Aufgaben-Tafel */
.tafel{display:grid;grid-template-columns:repeat(4,minmax(240px,1fr));gap:12px;overflow-x:auto;align-items:start}.spalte{background:#e9edf3;border-radius:var(--r);padding:10px;min-height:200px}.spalte h3{margin:0 0 8px;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);display:flex;justify-content:space-between}
.karte{background:#fff;border-radius:10px;padding:10px 12px;margin-bottom:8px;border:1px solid var(--line);border-left:4px solid var(--kf,#94a3b8);cursor:grab;display:block;color:var(--ink)}.karte:hover{text-decoration:none;box-shadow:0 4px 14px rgba(0,0,0,.08)}.karte.dragging{opacity:.5}.spalte.over{outline:2px dashed var(--blau)}
.karte .t{font-weight:600;font-size:.93rem}.karte .m{font-size:.78rem;color:var(--muted);margin-top:4px;display:flex;gap:8px;flex-wrap:wrap}.karte.hoch{--kf:var(--rot)}.karte.normal{--kf:var(--blau)}.karte.niedrig{--kf:#94a3b8}
.avatar{display:inline-flex;width:24px;height:24px;border-radius:50%;background:var(--side);color:#fff;font-size:.65rem;align-items:center;justify-content:center;font-weight:700;margin-right:-4px;border:2px solid #fff}
.kalender{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}.kalender .tag{background:#fff;border:1px solid var(--line);border-radius:8px;min-height:90px;padding:4px 6px;font-size:.78rem}.kalender .tag.heute{border-color:var(--blau);box-shadow:inset 0 0 0 1px var(--blau)}.kalender .tag.aus{opacity:.45}.kalender .tag b{display:block;color:var(--muted)}.kalender .tag a{display:block;background:#eef3fa;border-radius:4px;padding:1px 4px;margin-top:2px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;color:var(--ink)}.kalender .wt{font-size:.72rem;text-transform:uppercase;color:var(--muted);text-align:center}
/* Belege */
.pos-tab input,.pos-tab select,.pos-tab textarea{padding:5px 7px;font-size:.9rem}.pos-tab td{padding:4px 5px}.pos-tab .drag{cursor:grab;color:#aaa}.pos-tab tr.titel td{background:#f3f5f8}.pos-tab textarea{min-height:34px;height:34px}
.summen{max-width:380px;margin-left:auto}.summen td{padding:4px 8px}.summen td:last-child{text-align:right;white-space:nowrap}
.vorschau-frame{width:100%;height:80vh;border:1px solid var(--line);border-radius:var(--r);background:#fff}
.suchliste{position:absolute;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.12);z-index:50;max-height:280px;overflow:auto;width:100%}.suchliste div{padding:7px 10px;cursor:pointer;font-size:.9rem}.suchliste div:hover{background:#eef3fa}.suchliste small{color:var(--muted);display:block}
.rel{position:relative}
.dropzone{border:2px dashed #c9d2dd;border-radius:var(--r);padding:20px;text-align:center;color:var(--muted);background:#fff;transition:.15s}.dropzone.over{border-color:var(--blau);background:#eef3fa}
.fotoraster{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px}.fotoraster a{display:block;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:#fff;color:var(--ink)}.fotoraster img{width:100%;height:120px;object-fit:cover;display:block}.fotoraster .dn{font-size:.75rem;padding:5px 7px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.datei-icon{display:flex;align-items:center;justify-content:center;height:120px;font-size:2.2rem;background:#f3f5f8}
.ampel{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:5px}.ampel--gruen{background:var(--gruen)}.ampel--rot{background:var(--rot)}.ampel--gelb{background:var(--gelb)}.ampel--grau{background:#94a3b8}
.qr{display:flex;gap:20px;align-items:center;flex-wrap:wrap}
#offline-hinweis{position:fixed;bottom:70px;left:12px;right:12px;background:#b45309;color:#fff;padding:8px 12px;border-radius:8px;font-size:.85rem;z-index:60;text-align:center}
.kacheln{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.kachel{display:block;background:#fff;border:1px solid var(--line);border-radius:var(--r);padding:14px;text-align:center;color:var(--ink);font-weight:600;font-size:.9rem}.kachel span{display:block;font-size:1.7rem;margin-bottom:4px}.kachel:hover{text-decoration:none;border-color:var(--blau)}
details summary{cursor:pointer;font-weight:600;color:var(--blau)}.prose p{margin:.4em 0}
.warnliste li{margin-bottom:4px}.warnliste .ges{margin-right:4px}
.fortschritt{height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden}.fortschritt div{height:8px;background:var(--gruen)}
.oeffentlich{max-width:520px;margin:5vh auto;background:#fff;border-radius:16px;padding:26px;border:1px solid var(--line)}
@media print{.side,.top,.tabbar,.no-print{display:none!important}.layout{display:block}.content{padding:0}.card{border:0;padding:0}body{background:#fff}}
