:root{
  color-scheme:light;
  --bg:#F2F5FC; --panel:#FFFFFF; --panel-2:#F8FAFE;
  --border:#E0E3FC; --border-2:#B5B8BD;
  --blue:#3F59FF; --blue-mid:#2B45DE; --blue-deep:#212B80;
  --yellow:#FFD440; --text:#212121; --muted:#7A7A80;
  --alert:#D92D20; --green:#2E7D52; --r:12px;
  --gTint:#E4F3EB; --yTint:#FFF6D6; --rTint:#FDE7E5;
  --gLine:#B6DCC7; --yLine:#F0DC94; --rLine:#F1B7B2;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--text);
  font-family:Roboto,-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;
  font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased}
.wrap{max-width:1560px;margin:0 auto;padding:0 24px 64px}

/* ---------- Header ---------- */
header{position:sticky;top:0;z-index:60;background:var(--panel);
  border-bottom:2px solid var(--border);box-shadow:0 2px 10px rgba(33,43,128,.06)}
.hd{max-width:1560px;margin:0 auto;padding:13px 24px;display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.brand b{font-size:23px;font-weight:800;letter-spacing:-.4px;color:var(--blue-deep)}
.kw{background:var(--blue);color:#fff;font-weight:800;font-size:15px;padding:6px 14px;border-radius:999px;white-space:nowrap}
.kwsub{font-size:14px;color:var(--muted);font-weight:600}
.heute{background:var(--blue-deep);color:#fff;font-weight:700;font-size:13.5px;padding:5px 12px;border-radius:999px}
.tabs{display:flex;gap:6px;margin-left:auto;flex-wrap:wrap}
.tab{border:1.5px solid var(--border);background:var(--panel-2);color:var(--blue-deep);
  font:600 15px/1 Roboto,sans-serif;padding:10px 16px;border-radius:10px;cursor:pointer;transition:.12s}
.tab:hover{border-color:var(--blue);background:#fff}
.tab.on{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 2px 8px rgba(63,89,255,.3)}
.tab.priv{border-style:dashed}
.tab.priv.on{background:var(--blue-deep);border-color:var(--blue-deep)}

/* ---------- Legende — ENTDICHTET: einklappbar, zu per Default (Punkt 7) ---------- */
details.leg{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--r);margin-top:18px}
details.leg>summary{list-style:none;cursor:pointer;padding:8px 18px;font-size:13.5px;font-weight:700;
  color:var(--muted);display:flex;align-items:center;gap:8px}
details.leg>summary::-webkit-details-marker{display:none}
details.leg>summary:after{content:"▼";font-size:10px;color:var(--blue)}
details.leg[open]>summary:after{content:"▲"}
.legb{display:flex;gap:22px;flex-wrap:wrap;align-items:center;padding:2px 18px 12px;font-size:14px;
  border-top:1px dashed var(--border);margin-top:2px;padding-top:11px}
.legb .li{display:flex;gap:8px;align-items:center;color:#3d3d42}
.legb .sep{width:1px;height:18px;background:var(--border)}

/* ---------- Übersicht ---------- */
.ueber{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--r);margin-top:14px;overflow:hidden}
.ueber-h{background:linear-gradient(90deg,var(--blue-deep),var(--blue-mid));color:#fff;
  padding:13px 20px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.ueber-h .t{font-size:19px;font-weight:800;letter-spacing:-.2px}
.ueber-h .f{font-size:17px;font-weight:400;opacity:.95;flex:1;min-width:260px}
.ueber-b{display:grid;grid-template-columns:1.5fr 1fr 1fr}
.ueber-b.ohne-top{grid-template-columns:auto 1fr 1fr}
.ueber-b.ohne-top .ub.top{max-width:230px}
.ub{padding:16px 20px;border-right:1.5px solid var(--border)}
.ub:last-child{border-right:0}
.ub.top{background:#FFFCF0}
.mini-h{font-size:11.5px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--muted);margin:0 0 11px}
.ub.top .mini-h{color:#8a6d00}
.topline{display:flex;gap:10px;align-items:baseline;padding:7px 0;border-bottom:1px dashed var(--border)}
.topline:last-child{border-bottom:0}
.topline .tt{font-size:15px;font-weight:650;flex:1;line-height:1.35}
/* Das Projekt traegt die Zeile — es beantwortet "wo gehoert das hin".
   Deshalb faerbig und fett, waehrend der Zieltitel ruhiger geworden ist. */
.topline .tsub{font-weight:800;font-size:13px;color:var(--blue);display:block;
  margin-top:3px;letter-spacing:.2px}
.topline .tm{font-size:13px;color:var(--muted);font-weight:700;white-space:nowrap}
.kvrow{display:flex;gap:10px;font-size:14.5px;padding:5px 0}

/* ---------- Termine als Zeitleiste ----------
   Das Datum wird zum Anker: Wochentag und Tag als Kachel, Text daneben.
   Der Bezugstag ist hervorgehoben, Vergangenes tritt zurueck.          */
.tlr{display:flex;gap:12px;padding:9px 0;align-items:center}
.tlr + .tlr{border-top:1px dashed var(--border)}
.tld{flex:none;width:50px;text-align:center;border-radius:9px;padding:5px 0 6px;
  background:#F2F5FC;border:1.5px solid var(--border);line-height:1.1}
.tld .wd{display:block;font-size:9.5px;font-weight:800;letter-spacing:1px;
  text-transform:uppercase;color:var(--blue)}
.tld .dm{display:block;font-size:14.5px;font-weight:800;color:var(--blue-deep);margin-top:2px}
.tlr.past{opacity:.45}
.tlr.now .tld{background:var(--blue);border-color:var(--blue);
  box-shadow:0 2px 8px rgba(63,89,255,.28)}
.tlr.now .tld .wd, .tlr.now .tld .dm{color:#fff}
.tlt{font-size:14.5px;font-weight:650;line-height:1.35}
.tlt small{display:block;color:var(--muted);font-weight:700;font-size:12.5px;margin-top:2px}
.tl-leer{font-size:14px;color:var(--muted);font-weight:600}

/* ---------- Abwesenheit als Wochenbalken ----------
   Fuenf Segmente Mo-Fr. Man sieht auf einen Blick, ob jemand die ganze
   Woche weg ist oder nur zwei Tage — der Zeitraum als Text daneben.    */
.abwc{display:flex;flex-direction:column;gap:12px}
.abwp{display:grid;grid-template-columns:1fr auto;gap:5px 10px;align-items:center}
.abwp .n{font-size:14.5px;font-weight:750}
.abwp .k{font-size:9.5px;font-weight:800;letter-spacing:.7px;text-transform:uppercase;
  padding:2px 7px;border-radius:5px;background:#E7EAFF;color:var(--blue-deep);white-space:nowrap}
.abwp .k.kr{background:var(--rTint);color:var(--alert)}
.wk{grid-column:1/-1;display:grid;grid-template-columns:repeat(5,1fr);gap:3px}
.wk i{height:7px;border-radius:3px;background:#E4E7F4;display:block}
.wk i.on{background:var(--blue)}
.wk i.on.kr{background:var(--alert)}
.wkl{grid-column:1/-1;display:grid;grid-template-columns:repeat(5,1fr);gap:3px;
  font-size:9px;font-weight:800;color:var(--muted);text-align:center;letter-spacing:.6px;
  text-transform:uppercase;margin-top:-2px}

/* ---------- Ausblick ---------- */
.aus{display:flex;gap:9px;align-items:flex-start;padding:5px 0;font-size:13.5px;line-height:1.4}
.aus + .aus{border-top:1px dashed var(--border)}
.aus .d{flex:none;font-size:10px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;
  color:var(--blue-deep);background:#EEF1FF;border-radius:5px;padding:3px 7px;white-space:nowrap}
.aus .w{font-weight:600;color:#44444a}
.abw-g{margin-bottom:10px}
.abw-g:last-child{margin-bottom:0}
.abw-gh{font-size:11px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;
  padding:2px 8px;border-radius:5px;display:inline-block;margin-bottom:5px}
.abw-g.ur .abw-gh{background:#E7EAFF;color:var(--blue-deep)}
.abw-g.kr .abw-gh{background:var(--rTint);color:var(--alert)}
.abw{display:flex;align-items:baseline;gap:10px;padding:3px 0}
.abw-n{font-size:15px;font-weight:700;color:var(--text)}
.abw-d{font-size:13.5px;font-weight:600;color:#5b5b60;margin-left:auto;white-space:nowrap}
.abw-leer{font-size:14px;color:var(--green);font-weight:600}
.kvrow b{color:var(--muted);font-weight:700;font-size:11.5px;letter-spacing:.7px;text-transform:uppercase;
  min-width:74px;flex:none;padding-top:3px}

/* ---------- Abschnitte ---------- */
.sec{margin-top:28px}
.sec-h{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.sec-h h2{margin:0;font-size:21px;font-weight:800;letter-spacing:-.3px;color:var(--blue-deep)}
.sec-h .hint{font-size:13.5px;color:var(--muted);font-weight:500;margin-left:auto}
.rule{height:2px;background:var(--border);border-radius:2px;margin-top:28px}

/* ---------- Ampel — ENTDICHTET (Punkt 1) ----------
   Projekt = Balken links + Klartext.  Ziel = Punkt + Klartext.
   KEIN getoenter Zeilenhintergrund, KEIN doppelter Balken.          */
.dot{width:12px;height:12px;border-radius:50%;flex:none}
.dot.g{background:var(--green)} .dot.y{background:var(--yellow)} .dot.r{background:var(--alert)}
.stxt{font-size:13px;font-weight:700;white-space:nowrap}
.stxt.n{color:var(--muted);font-weight:600}
.stxt.g{color:var(--green)} .stxt.y{color:#8a6d00} .stxt.r{color:var(--alert)}

/* ---------- Projekt ---------- */
.pj{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--r);
  margin-bottom:12px;overflow:hidden;border-left:6px solid var(--border-2)}
.pj.n{border-left-color:var(--border-2)}
.pj.g{border-left-color:var(--gLine)} .pj.y{border-left-color:var(--yellow)} .pj.r{border-left-color:var(--alert)}
.pj[data-rest="1"]{background:var(--panel-2);border-left-color:var(--border-2);border-style:dashed}
.pj>summary{list-style:none;cursor:pointer;display:block;padding:0}
.pj>summary::-webkit-details-marker{display:none}
.pj>summary:hover{background:var(--panel-2)}
.pjh{display:grid;grid-template-columns:minmax(215px,290px) 1fr auto;gap:20px;align-items:center;
  padding:16px 18px}
.pj[open] .pjh{border-bottom:1.5px solid var(--border)}
.pjh .nm{border-right:1.5px solid var(--border);padding-right:16px}
.pjh .nm b{font-size:18px;font-weight:800;letter-spacing:-.2px}
.pjh .nm .l2{margin-top:2px}
.pjh .stand{font-size:15.5px;line-height:1.45}
.pjh .lead{font-size:13px;color:var(--muted);font-weight:600;margin-top:2px}
.pjh .kdz{font-size:12px;color:var(--blue-deep);font-weight:600;text-transform:uppercase;
  letter-spacing:.5px;margin-bottom:5px}
.pjh .kdz b{font-weight:800}
.pjh .lead{margin-top:6px;padding-top:5px;border-top:1px dashed var(--border)}
.pjh .right{display:flex;align-items:center;gap:9px}
.arw{font-size:12px;color:var(--blue);font-weight:700}
.pj[open] .arw:after{content:"▲"} .arw:after{content:"▼"}
.badge{font-size:11px;font-weight:800;letter-spacing:.7px;padding:3px 8px;border-radius:5px;text-transform:uppercase}
.badge.act{background:#EEF1FF;color:var(--blue-deep)}
.badge.rst{background:#EFEFF2;color:var(--muted)}
.badge.tm{background:var(--yTint);color:#6b5500}
.badge.warn{background:var(--rTint);color:var(--alert)}

/* ---------- Ziel-Zeile — ENTDICHTET (Punkte 3+4) ----------
   4 Spalten: Punkt · Titel+Status+Chips · Datum · Aktion
   Beschreibung steht NICHT mehr in der Zeile, sondern im Aufklapp-Bereich. */
.zl{border-bottom:1px solid var(--border)}
.zl:last-of-type{border-bottom:0}
.zl.istop{background:#FFFDF3}
.zrow{display:grid;grid-template-columns:16px 1fr 132px auto;gap:14px;align-items:center;padding:11px 18px}
.ztitle{font-size:16.5px;font-weight:700;letter-spacing:-.1px}
.ztitle .star{color:#C79A00;margin-right:3px}
.zmeta{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-top:3px}
.zdate{font-size:14px;font-weight:700;color:#5b5b60;background:var(--panel-2);border:1px solid var(--border);
  border-radius:6px;padding:3px 9px;text-align:center;white-space:nowrap}
.zdate.past{background:var(--rTint);border-color:var(--rLine);color:var(--alert)}
.zdate.none{background:transparent;border-color:transparent;color:var(--muted);font-weight:500}
.chip{font-size:12.5px;font-weight:600;padding:2px 8px;border-radius:5px;background:var(--panel-2);
  border:1px solid var(--border);color:var(--blue-deep);white-space:nowrap}
.chip.own{background:var(--blue);border-color:var(--blue);color:#fff}
.chip.carry{background:var(--rTint);border-color:var(--rLine);color:var(--alert);font-weight:800}
.chip.neu{background:var(--yellow);border-color:var(--yellow);color:var(--blue-deep);font-weight:800}
.chip.jira{color:var(--muted);font-weight:500;background:transparent;border-color:transparent;padding:2px 0}
.chip.jira i{font-style:normal;color:var(--blue-deep);font-weight:600}
.zmeld{font-size:14px;color:var(--alert);font-weight:600;padding:0 18px 9px 48px;margin-top:-4px}
.zmeld:before{content:"gemeldet: ";font-weight:800;text-transform:uppercase;font-size:11px;letter-spacing:.8px}

/* Aktion — nur donnerstags sichtbar (Punkt 6) */
.seg{display:flex;border:1.5px solid var(--border);border-radius:8px;overflow:hidden;flex:none}
.seg button{border:0;background:var(--panel-2);font:700 13px Roboto,sans-serif;padding:7px 13px;
  cursor:pointer;color:var(--muted);border-right:1px solid var(--border)}
.seg button:last-child{border-right:0}
.seg button.on[data-v="ja"]{background:var(--green);color:#fff}
.seg button.on[data-v="w"]{background:var(--yellow);color:var(--blue-deep)}

/* Aufklapp-Bereich am Ziel: Beschreibung + Aufteilung (Punkte 3+5) */
details.zd{border-top:1px dashed var(--border)}
details.zd>summary{list-style:none;cursor:pointer;padding:6px 18px 8px 48px;font-size:13px;
  font-weight:600;color:var(--blue);display:flex;gap:7px;align-items:center}
details.zd>summary::-webkit-details-marker{display:none}
details.zd>summary:after{content:"▼";font-size:9px}
details.zd[open]>summary:after{content:"▲"}
.zbody{padding:0 18px 12px 48px}
.zdesc{font-size:15px;color:#3d3d42;margin-bottom:9px}
.sub{display:flex;align-items:center;gap:11px;padding:5px 9px;border-radius:6px}
.sub:nth-child(even){background:var(--panel-2)}
.sub .box{width:18px;height:18px;flex:none;border:2px solid var(--border-2);border-radius:4px;
  display:grid;place-items:center;font-size:11px;color:#fff;cursor:pointer}
.sub.done .box{background:var(--green);border-color:var(--green)}
.sub.done .who,.sub.done .what{opacity:.5;text-decoration:line-through}
.sub .who{font-weight:700;font-size:14px;min-width:118px;color:var(--blue-deep)}
.sub .what{font-size:15px;flex:1}
.sub .when{font-size:13px;color:var(--muted);font-weight:600;white-space:nowrap}
.sub.late .when{color:var(--alert);font-weight:800;background:var(--rTint);border:1px solid var(--rLine);
  border-radius:5px;padding:1px 7px}
.noauf{font-size:13.5px;color:var(--muted)}

/* Gründe — nur bei "läuft weiter" */
.why{padding:0 18px 12px 48px;display:none;gap:8px;align-items:center;flex-wrap:wrap}
.why.show{display:flex}
.why .mini-h{margin:0}
.why button{border:1.5px solid var(--border);background:var(--panel-2);border-radius:7px;
  font:600 13px Roboto,sans-serif;padding:5px 10px;cursor:pointer;color:var(--blue-deep)}
.why button:hover{border-color:var(--blue)}
.why button.on{background:var(--blue-deep);border-color:var(--blue-deep);color:#fff}

/* Offene Tickets im Projekt */
details.offen{border-top:1.5px solid var(--border);background:#FCFDFF}
details.offen>summary{list-style:none;cursor:pointer;padding:9px 18px;display:flex;gap:10px;align-items:center}
details.offen>summary::-webkit-details-marker{display:none}
details.offen>summary:after{content:"▼";margin-left:auto;font-size:10px;color:var(--blue)}
details.offen[open]>summary:after{content:"▲"}
.ohd{font-size:11.5px;font-weight:800;letter-spacing:.9px;text-transform:uppercase;color:var(--blue-deep)}
.oz{background:var(--panel-2);border:1px solid var(--border);border-radius:20px;padding:0 8px;
  font-size:11.5px;font-weight:700;color:var(--blue-deep)}
.ofrei{background:var(--yellow);color:var(--blue-deep);border-radius:5px;padding:2px 8px;
  font-size:11px;font-weight:800;letter-spacing:.5px;text-transform:uppercase}
.opad{padding:0 18px 12px}
.orow{display:grid;grid-template-columns:76px 1fr 130px 160px;gap:12px;align-items:baseline;
  padding:5px 0;border-top:1px dashed var(--border);font-size:14px}
.orow .ok{font-size:11.5px;font-weight:700;color:var(--muted)}
.orow .ostat{font-size:12px;color:var(--muted);font-weight:600}
.orow .owho{font-size:13px;font-weight:700;color:var(--blue-deep);text-align:right}
.orow.frei{background:#FFFCEF}
.orow.frei .owho{color:#8a6d00}
.omehr{font-size:12.5px;color:var(--blue);font-weight:600;padding:7px 0 0 88px}

/* Historie */
details.hist{border-top:1.5px solid var(--border);background:var(--panel-2)}
details.hist>summary{list-style:none;cursor:pointer;padding:9px 18px;font-size:13.5px;font-weight:700;
  color:var(--muted);display:flex;gap:9px;align-items:center}
details.hist>summary::-webkit-details-marker{display:none}
details.hist>summary:after{content:"▼";margin-left:auto;font-size:10px;color:var(--blue)}
details.hist[open]>summary:after{content:"▲"}
.hrow{display:flex;gap:12px;padding:6px 18px 6px 40px;font-size:14.5px;border-top:1px dashed var(--border)}
.hrow .hkw{font-weight:800;color:var(--muted);font-size:12.5px;min-width:56px;flex:none;padding-top:2px}
.hrow .hx{color:var(--green);font-weight:800;flex:none}
.hrow .hwho{color:var(--muted);font-size:13px;font-weight:600;margin-left:auto;white-space:nowrap}
.hist .pad{padding-bottom:10px}

/* ---------- Unten — ENTDICHTET (Punkt 8): kompaktere Kacheln ---------- */
.bottom{display:grid;grid-template-columns:2.15fr 1fr;gap:24px;margin-top:28px}
.people{display:flex;flex-direction:column;gap:14px}
.pers{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--r);
  padding:15px 18px;border-left:5px solid transparent}
.pers.ext{border-left-color:var(--yellow)}
/* abwesend = gestrichelte Umrandung. Die Kachel bleibt VOLLSTAENDIG stehen —
   gerade bei jemandem, der weg ist, will man sehen, woran er zuletzt war.
   Extern (gelbe Kante links) und abwesend (gestrichelt) sind unabhaengig
   voneinander und duerfen gleichzeitig gelten. */
.pers.away{border-style:dashed;border-width:2px;border-color:var(--border-2);
  border-left-style:solid;border-left-width:5px}
.pers.away .pers-n{color:var(--muted)}
.pers-h{display:flex;align-items:baseline;gap:11px;flex-wrap:wrap}
.pers-n{font-size:18px;font-weight:800;letter-spacing:-.2px}
.pers-r{font-size:13px;color:var(--muted);font-weight:600}
.av{font-size:10.5px;font-weight:800;letter-spacing:.5px;text-transform:uppercase;
  padding:2px 8px;border-radius:5px;background:#EFEFF2;color:var(--muted)}
.av.tz{background:var(--yTint);color:#6b5500}
.av.ab{background:var(--rTint);color:var(--alert)}
.av.ez{background:#EEF1FF;color:var(--blue-deep)}
.av.ur{background:#E7EAFF;color:var(--blue-deep)}
.av.extm{background:var(--yellow);color:var(--blue-deep)}

/* Wochenziel-Streifen — Michaels Ebene, ueber dem Jira-Kanban */
.pz{margin-top:11px;padding:9px 12px;background:#FFFDF3;border:1px solid var(--yLine);border-radius:8px}
.pz.leer{background:var(--panel-2);border-color:var(--border);color:var(--muted);
  font-size:13.5px;font-weight:600}
.pzr{display:flex;gap:10px;align-items:flex-start;padding:3px 0;font-size:15px}
.pzr .box{pointer-events:none;width:18px;height:18px;flex:none;border:2px solid var(--border-2);border-radius:4px;
  display:grid;place-items:center;font-size:11px;color:#fff;cursor:pointer;margin-top:2px}
.pzr.done .box{background:var(--green);border-color:var(--green)}
.pzr.done .pzt{opacity:.5;text-decoration:line-through}
.pzt small{display:block;color:var(--muted);font-weight:600;font-size:12.5px}
.pzr.late small{color:var(--alert);font-weight:800}

/* Mini-Kanban pro Person */
.kb{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:12px}
.kbc{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:8px 9px;
  max-height:430px;overflow-y:auto}
.kbh{display:flex;align-items:center;gap:7px;font-size:10.5px;font-weight:800;letter-spacing:.8px;
  text-transform:uppercase;color:var(--muted);padding-bottom:6px;margin-bottom:6px;
  border-bottom:1.5px solid var(--border)}
.kbh .kbn{margin-left:auto;background:#fff;border:1px solid var(--border);border-radius:20px;
  padding:0 7px;font-size:11px;font-weight:700;color:var(--blue-deep)}
.kbc.arbeit{background:#FFFCF0;border-color:var(--yLine)}
.kbc.arbeit .kbh{color:#8a6d00;border-bottom-color:var(--yLine)}
.kbc.review{background:#F4F9FF;border-color:#CBDDF5}
.kbc.review .kbh{color:var(--blue-mid);border-bottom-color:#CBDDF5}
.kbc.naechst{opacity:.82}
.kbk{background:#fff;border:1px solid var(--border);border-left:3px solid var(--border-2);
  border-radius:6px;padding:7px 9px;margin-bottom:6px}
.kbc.naechst .kbk.ready{border-left-color:var(--blue);background:#FCFDFF}
.kbc.naechst .kbk.stapel{opacity:.72}
.kbc.arbeit .kbk{border-left-color:var(--yellow)}
.kbc.wartet .kbk{border-left-color:var(--blue)}
.kbc.staging{background:#F3FAF6;border-color:var(--gLine)}
.kbc.staging .kbh{color:var(--green);border-bottom-color:var(--gLine)}
.kbc.staging .kbk{border-left-color:var(--green)}
.kbc.staging .kbk.liegt{opacity:.6}
.kbh .kbalt{background:var(--rTint);border-color:var(--rLine);color:var(--alert)}
.kbk:last-of-type{margin-bottom:0}
.kbt{font-size:14px;line-height:1.35;font-weight:600}
.kbm{display:flex;gap:8px;align-items:baseline;flex-wrap:wrap;margin-top:4px;font-size:11.5px}
.kbm .kbid{font-weight:700;color:var(--muted)}
.kbm .kbp{color:var(--blue-deep);font-weight:600}
.kbm .kbs{color:var(--muted);margin-left:auto}
.kbmehr{font-size:12px;color:var(--blue);font-weight:600;padding-top:4px}
.kbleer{font-size:13px;color:var(--border-2);font-weight:600;text-align:center;padding:6px 0}

.kap{background:var(--panel);border:1.5px solid var(--yellow);border-radius:var(--r);padding:16px 18px;position:sticky;top:86px}
.kapx{border-top:1px dashed var(--border);padding:10px 0}
.kapx:first-of-type{border-top:0}
.kapx .n{font-size:15px;font-weight:800}
.kapx .v{font-size:14.5px;color:var(--blue-deep);font-weight:700;margin-top:2px}
.kapx .v.no{color:var(--muted);font-weight:500}
.capIn{border:1.5px dashed var(--border-2);background:var(--panel-2);border-radius:7px;padding:5px 9px;
  font:600 14px Roboto,sans-serif;width:100%;margin-top:6px;color:var(--text)}
.kapnote{font-size:13px;color:var(--muted);margin-top:12px;border-top:1px dashed var(--border);padding-top:10px}

/* ---------- Wo brauchen wir was ---------- */
.dev{background:var(--panel);border:1.5px solid var(--border);border-left:6px solid var(--alert);
  border-radius:var(--r);padding:14px 16px;margin-bottom:10px}
.dev.y{border-left-color:var(--yellow)}
.dev-grid{display:grid;grid-template-columns:1.5fr 1fr 1.5fr 1fr;gap:14px;align-items:start}
.dev-lbl{font-size:11.5px;font-weight:800;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);display:block;margin-bottom:3px}
.dev-val{font-size:15.5px}
.dev-val.strong{font-weight:700;font-size:17px}
.calm{margin-top:18px;background:var(--gTint);border:1.5px solid var(--gLine);border-radius:var(--r);
  padding:14px 18px;font-size:16px;color:var(--green);font-weight:600}
.calm b{font-size:19px}

/* ---------- Seite 3: Seit gestern ---------- */
.sgmeta{font-size:13px;color:var(--muted);margin-bottom:14px}
.sgb{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--r);
  margin-bottom:12px;overflow:hidden}
.sgh{display:flex;align-items:center;gap:9px;padding:10px 18px;font-size:11.5px;font-weight:800;
  letter-spacing:.9px;text-transform:uppercase;border-bottom:1.5px solid var(--border)}
.sgh .sgn{margin-left:auto;background:var(--panel-2);border:1px solid var(--border);border-radius:20px;
  padding:0 9px;font-size:11.5px;font-weight:700}
.sgh.erg{color:var(--green);border-bottom-color:var(--gLine);background:var(--gTint)}
.sgh.hak{color:var(--blue-deep);border-bottom-color:var(--blue);background:#EEF1FF}
.sgh.neu{color:#6b5500;border-bottom-color:var(--yLine);background:var(--yTint)}
.sgh.durch{color:var(--alert);border-bottom-color:var(--rLine);background:var(--rTint)}
.sgh.tick{color:var(--muted)}
.sgr{display:grid;grid-template-columns:150px 1fr 150px;gap:14px;align-items:baseline;
  padding:8px 18px;border-top:1px dashed var(--border);font-size:15px}
.sgb .sgr:first-of-type{border-top:0}
.sgr .sgw{font-size:13.5px;font-weight:700;color:var(--blue-deep)}
.sgr .sgk{font-size:12px;font-weight:700;color:var(--muted)}
.sgr .sgt small{display:block;color:var(--muted);font-weight:600;font-size:12.5px}
.sgr .sgv{font-size:13.5px;font-weight:700;text-align:right;color:var(--muted)}
.sgr .sgv.ok{color:var(--green)}
.sgr .sgv.w{color:#8a6d00}
.sgr .sgv.late{color:var(--alert)}
.sgr.tick{grid-template-columns:80px 1fr 130px}
.sgmehr{font-size:12.5px;color:var(--blue);font-weight:600;padding:8px 18px}

/* ---------- Pflege (nicht mehr genutzt, Styles bleiben fuer spaeter) ---------- */
.priv-warn{background:var(--blue-deep);color:#fff;border-radius:var(--r);padding:14px 18px;
  display:flex;gap:14px;align-items:center;margin:22px 0 20px}
.priv-warn .tagx{background:var(--yellow);color:var(--blue-deep);font-weight:800;font-size:12px;
  letter-spacing:1px;padding:5px 11px;border-radius:6px;white-space:nowrap}
.priv-warn p{margin:0;font-size:15.5px}
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.kpi{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--r);padding:16px 18px}
.kpi .v{font-size:34px;font-weight:800;letter-spacing:-1px;color:var(--blue-deep);line-height:1}
.kpi .l{font-size:13px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.6px;margin-top:6px}
.kpi .s{font-size:13px;color:var(--muted);margin-top:4px}
.panel{background:var(--panel);border:1.5px solid var(--border);border-radius:var(--r);padding:18px}
table.arc{width:100%;border-collapse:collapse;font-size:15px}
table.arc th{text-align:left;font-size:11.5px;letter-spacing:.8px;text-transform:uppercase;color:var(--muted);
  padding:8px 10px;border-bottom:2px solid var(--border)}
table.arc td{padding:9px 10px;border-bottom:1px solid var(--border)}
table.arc tr:last-child td{border-bottom:0}
.bar{height:9px;border-radius:5px;background:var(--border);overflow:hidden;min-width:110px}
.bar i{display:block;height:100%;background:var(--blue)}
.chk{list-style:none;margin:0;padding:0}
.chk li{display:flex;gap:10px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--border);font-size:15.5px}
.chk li:last-child{border-bottom:0}
.chk .box{width:18px;height:18px;flex:none;border:2px solid var(--border-2);border-radius:4px;margin-top:2px}

/* Sync-Leiste — Muster aus dem AIMDS Cockpit */
.sync{position:sticky;bottom:0;z-index:50;background:var(--blue-deep);color:#fff;border-radius:10px 10px 0 0;
  padding:10px 18px;display:flex;gap:14px;align-items:center;margin-top:26px;
  box-shadow:0 -3px 14px rgba(33,43,128,.18)}
.sync .st{font-size:14px;flex:1}
.sync .st b{font-weight:800}
.sync button{border:0;background:var(--yellow);color:var(--blue-deep);font:800 14px Roboto,sans-serif;
  padding:8px 16px;border-radius:8px;cursor:pointer;white-space:nowrap}
.sync button.ghost{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.45);font-weight:600}
.sync.none{display:none}

.ph{background:var(--yellow);color:var(--blue-deep);border-radius:var(--r);padding:12px 18px;margin-top:24px;
  font-size:15px;font-weight:600;line-height:1.5}
.ph code{background:rgba(33,43,128,.14);border-radius:4px;padding:1px 6px;font-size:13.5px}
.ph b{font-weight:800}
footer{margin-top:30px;padding-top:16px;border-top:1.5px solid var(--border);font-size:13.5px;color:var(--muted)}
.hide{display:none !important}
@media(max-width:1500px){ .kb{grid-template-columns:repeat(2,1fr)} }
@media(max-width:1100px){ .kb{grid-template-columns:1fr} }
@media(max-width:1240px){
  .bottom{grid-template-columns:1fr} .kap{position:static}
  .zrow{grid-template-columns:16px 1fr auto;row-gap:8px}
  .zdate{justify-self:start} .ueber-b{grid-template-columns:1fr}
  .ub{border-right:0;border-bottom:1.5px solid var(--border)}
  .kpis{grid-template-columns:1fr 1fr} .dev-grid{grid-template-columns:1fr 1fr}
}

/* ---------- Planung im Board: Ziel anlegen, Tickets zuordnen ---------- */
.zbtn{border:1.5px solid var(--border);background:var(--panel-2);color:var(--blue-deep);
  font:700 12.5px/1 Roboto,sans-serif;padding:6px 11px;border-radius:8px;cursor:pointer;transition:.12s}
.zbtn:hover{border-color:var(--blue);background:#fff}
.zbtn.on{background:var(--blue);border-color:var(--blue);color:#fff}
.zbtn.add{border-style:dashed;color:var(--blue)}
.zneu{padding:10px 18px 14px;border-top:1px dashed var(--border)}
.zform{background:var(--panel-2);border:1.5px solid var(--border);border-radius:10px;padding:12px 14px;margin-top:9px}
.zform .fr{display:grid;grid-template-columns:96px 1fr;gap:10px;align-items:center;margin-bottom:8px}
.zform label{font-size:12.5px;font-weight:700;color:var(--muted)}
.zform input,.zform select,.zform textarea{width:100%;border:1.5px solid var(--border);border-radius:8px;
  padding:7px 9px;font:400 14px/1.35 Roboto,sans-serif;color:var(--text);background:#fff}
.zform textarea{min-height:52px;resize:vertical}
.zform .fa{display:flex;gap:8px;justify-content:flex-end;margin-top:4px}
.chip.entw{background:#EDE7FF;color:#4B2FA8;border:1px solid #C9BAFF}
.zl.entwurf{background:#FBFAFF}
.zta{margin:8px 0 2px;padding:9px 12px;background:#FBFCFF;border:1px dashed var(--border);border-radius:9px}
.zta.schmal{background:none;border:none;padding:2px 12px 0}
.zta.schmal .mini-h{opacity:.75}
.ztah{display:flex;align-items:center;gap:10px;margin-bottom:5px}
.ztah .mini-h{margin:0}
.ztah .zbtn{margin-left:auto}
.ztr{display:grid;grid-template-columns:76px 1fr 190px 26px;gap:10px;align-items:center;
  padding:5px 0;border-top:1px dashed var(--border);font-size:14px}
.ztr:first-of-type{border-top:none}
.ztr .ok{font-size:11.5px;font-weight:700;color:var(--muted)}
.ztr select{border:1.5px solid var(--border);border-radius:7px;padding:4px 6px;
  font:600 12.5px/1.2 Roboto,sans-serif;background:#fff;color:var(--blue-deep);width:100%}
.ztr .wg{background:none;border:none;cursor:pointer;color:var(--muted);font-size:15px;line-height:1}
.ztr .wg:hover{color:var(--alert)}
.ztleer{font-size:13px;color:var(--muted);padding:3px 0}
.orow.pickbar{cursor:pointer}
.orow.pickbar:hover{background:#EEF2FF}
.orow .pk{display:inline-flex;width:17px;height:17px;border:1.6px solid var(--border-2);border-radius:5px;
  background:#fff;align-items:center;justify-content:center;font-size:11px;font-weight:800;color:#fff}
.orow.an .pk{background:var(--blue);border-color:var(--blue)}
.orow.an{background:#EEF2FF}
.ozl{font-size:11px;font-weight:700;color:var(--blue);white-space:nowrap}
.pickhint{font-size:12.5px;font-weight:700;color:var(--blue);padding:6px 0 2px}

/* ---- C1: Uebersicht nach Projekten gruppiert ---------------------------- */
.tgrp + .tgrp{margin-top:10px;border-top:1px solid var(--border)}
.tgrph{font-weight:800;font-size:13px;color:var(--blue);letter-spacing:.2px;padding:9px 0 1px}
.tgrp:first-child .tgrph{padding-top:2px}

/* Erledigtes in der Uebersicht: durchgestrichen, rechts „fertig" statt Datum.
   Der gruene Punkt allein wird ueberlesen — beim Ueberfliegen soll die rechte
   Spalte die Frage „was ist noch offen" ohne Nachdenken beantworten.
   Bewusst KEINE Zahl „5 von 10 erledigt": aggregierte Quoten stehen laut
   Wording-Regel nicht in einer Ansicht, die das Team sieht.              */
.topline.erl .tt{text-decoration:line-through;opacity:.55}
.topline .tm.ok{color:var(--green)}

/* ---- C2: Eintrag ohne Verantwortlichen — gilt fuer jeden im Projektteam - */
.chip.alle{background:#EEF1FF;border-color:#C9D0FF;color:var(--blue-deep);font-weight:800}

/* ---- C3: Wochenprioritaet, erste Zeile der Mitarbeiterkachel ------------ */
.pprio{margin-top:11px;padding:8px 12px;background:#EEF1FF;border:1px solid #C9D0FF;
  border-left:4px solid var(--blue);border-radius:8px;font-size:15px;font-weight:700;
  color:var(--blue-deep);line-height:1.35}

/* ---- C3: Prio-Zeile bearbeitbar ----------------------------------------- */
.pprio-add{margin-top:10px}
.pprio .pedit{margin-left:9px;border:none;background:none;color:var(--blue);font:inherit;
  font-size:12.5px;font-weight:800;cursor:pointer;text-decoration:underline;white-space:nowrap}
.pprio.form{background:var(--panel-2);border-color:var(--border);font-weight:600}
.pprio.form label{display:block;font-size:11px;font-weight:800;color:var(--muted);
  text-transform:uppercase;letter-spacing:.7px;margin-bottom:5px}
.pprio.form textarea{width:100%;min-height:56px;font:inherit;font-size:15px;font-weight:600;
  color:var(--text);background:#fff;border:1px solid var(--border-2);border-radius:7px;
  padding:7px 9px;resize:vertical}
.pfa{display:flex;gap:8px;margin-top:7px}

/* ---- als fertig gemeldet: Zeile tritt zurueck --------------------------
   Bewusst KEIN getoenter Zeilenhintergrund — der ist beim Entdichten am
   28.07. rausgeflogen und kommt nicht zurueck. Nur der Titel tritt zurueck,
   den Rest sagt der gruene Statustext „fertig".                          */
.zl.erl .ztitle{text-decoration:line-through;opacity:.55}

/* ---- Ziel-Aktionen: fertig melden und bearbeiten ------------------------
   Seit 12.08.2026 statt der zwei Knoepfe „fertig / laeuft weiter". */
.zact{display:flex;gap:6px;align-items:center}
.zact button{font-size:12.5px;font-weight:700;padding:5px 11px;border-radius:6px;
  border:1px solid var(--border-2);background:#fff;color:var(--text);cursor:pointer;
  white-space:nowrap;font-family:inherit}
.zact button:hover{border-color:var(--blue);color:var(--blue)}
.zact .zfertig.on{background:var(--green);border-color:var(--green);color:#fff}
.zact .zfertig.on:hover{color:#fff}
.zform.zedit{margin:2px 0 10px}

/* ---- C4: Termin, bis zu dem etwas fertig sein muss ---------------------- */
.chip.liefert{background:var(--yTint);border-color:var(--yLine);color:#6b5500;font-weight:800}

/* ==========================================================================
   CONTAINER — Ergänzungen für den Serverbetrieb. Design darüber unverändert.
   ========================================================================== */
@font-face{font-family:"Roboto";font-style:normal;font-weight:400;font-display:swap;src:url("/static/fonts/roboto-400.woff2") format("woff2")}
@font-face{font-family:"Roboto";font-style:normal;font-weight:500;font-display:swap;src:url("/static/fonts/roboto-500.woff2") format("woff2")}
@font-face{font-family:"Roboto";font-style:normal;font-weight:700;font-display:swap;src:url("/static/fonts/roboto-700.woff2") format("woff2")}
@font-face{font-family:"Roboto";font-style:normal;font-weight:800;font-display:swap;src:url("/static/fonts/roboto-700.woff2") format("woff2")}

/* Kopfzeile: Datenstand, Aktualisieren, Login */
.hd .stand{margin-left:auto;display:flex;align-items:center;gap:10px;font-size:12.5px;color:var(--muted);white-space:nowrap}
.hd .stand b{color:var(--text);font-weight:600}
.hd .stand .warn{color:var(--alert);font-weight:600}
.hd .stand .alt{color:#8a6d00;font-weight:600}
.hd .stand button,.hd .stand a{font:inherit;font-size:12.5px;padding:5px 10px;border:1px solid var(--border);border-radius:8px;background:var(--panel);color:var(--blue-mid);cursor:pointer;text-decoration:none}
.hd .stand button:hover,.hd .stand a:hover{border-color:var(--blue)}
.hd .stand button[disabled]{opacity:.55;cursor:progress}
.hd .stand .badge{padding:3px 8px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border);font-size:11.5px}
.hd .stand .badge.ed{background:var(--gTint);border-color:var(--gLine);color:var(--green)}

/* Hinweisleiste des Servers (OpenProject nicht erreichbar, Woche nicht abgeschlossen) */
.srvhinweis{max-width:1480px;margin:12px auto 0;padding:10px 14px;border-radius:var(--r);background:var(--yTint);border:1px solid var(--yLine);color:#6b5500;font-size:13px}
.srvhinweis.rot{background:var(--rTint);border-color:var(--rLine);color:#8a1d15}
.srvhinweis div+div{margin-top:4px}

/* Hinweis je Projekt (z. B. Typ Wochenziel nicht aktiviert) */
.pjh .phinweis{color:#8a6d00;background:var(--yTint);border:1px solid var(--yLine);border-radius:6px;padding:3px 8px;margin-top:4px;display:inline-block;font-size:12px}

/* read-only: Schreib-Affordanzen verschwinden, Layout bleibt */
body.ro .zbtn,body.ro .zact,body.ro .zta button,body.ro .zta select,body.ro .pedit,body.ro .pprio-add,body.ro .zneu,body.ro .sync,body.ro .pickhint{display:none!important}
body.ro .sub .box,body.ro .pzr .box{cursor:default}
body.ro .zta .ztr select{display:none}

/* Drag & Drop */
.griff{display:inline-block;margin-right:8px;color:var(--border-2);cursor:grab;user-select:none;font-size:13px;letter-spacing:-2px}
.griff:active{cursor:grabbing}
.dragging{opacity:.45;outline:2px dashed var(--blue);outline-offset:2px}

/* Login */
.login{max-width:380px;margin:80px auto;background:var(--panel);border:1px solid var(--border);border-radius:var(--r);padding:26px 28px}
.login h1{font-size:18px;margin:0 0 14px}
.login label{display:block;font-size:12.5px;color:var(--muted);margin:10px 0 4px}
.login input{width:100%;box-sizing:border-box;font:inherit;padding:8px 10px;border:1px solid var(--border-2);border-radius:8px}
.login button{margin-top:16px;width:100%;font:inherit;padding:9px;border:none;border-radius:8px;background:var(--blue);color:#fff;font-weight:600;cursor:pointer}
.login .err{color:var(--alert);font-size:13px;margin-top:10px}
.login .hint{color:var(--muted);font-size:12px;margin-top:14px}
