/* Coach-Board — Design-Referenz: Mockup Runde 4 (Soft CRM 2.0) */
:root{
  --bg:#EFF3F9; --surface:#FFFFFF; --surface2:#F6F8FC; --line:#E2E8F2; --line2:#CDD8E8;
  --ink:#1D2A3B; --muted:#5C6B81; --faint:#92A0B6;
  --accent:#2E6BE6; --accent-ink:#fff; --accent-soft:#E7EEFC;
  --seg1:#E8EEF7; --seg2:#9DBCF3; --seg3:#1D4FB8;
  --ok:#188055; --ok-bg:#E2F5EC; --yel:#F2C200; --yel-bg:#FFF7D6; --yel-ink:#7A6200;
  --err:#C4372B; --err-bg:#FBE7E4; --info:#6A48C9; --info-bg:#EEE9FB; --grp:#7A3FA0; --grp-bg:#F2E7F9;
  --coach:#1D2A3B; --beob:#7A7C33; --teamer:#2E8CA3;
  --r:14px; --r-sm:10px; --shadow:0 2px 10px rgba(30,42,58,.07);
  --fd:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --wd:760; --fs:14.5px; --pad:20px;
}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{background:var(--bg);color:var(--ink);font-family:var(--fd);font-size:var(--fs);line-height:1.5;-webkit-font-smoothing:antialiased}
button{font-family:inherit}

/* ---------- Login ---------- */
.loginwrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.loginbox{background:var(--surface);border-radius:20px;box-shadow:0 10px 50px rgba(30,42,58,.14);padding:38px 36px;width:400px;max-width:94vw}
.loginbox img{height:30px;margin-bottom:18px;display:block}
.loginbox h1{font-weight:var(--wd);font-size:21px;margin-bottom:4px}
.loginbox p{color:var(--muted);font-size:13px;margin-bottom:20px}
.loginbox label{display:block;font-size:11px;font-weight:750;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);margin:12px 0 5px}
.loginbox input{width:100%;padding:12px 14px;border:1.5px solid var(--line2);border-radius:10px;font-size:15px;font-family:inherit;color:var(--ink)}
.loginbox input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.loginbox .err{color:var(--err);font-size:12.5px;font-weight:700;margin-top:10px;display:none}
.loginbox .err.on{display:block}
/* Passwort anzeigen + Feststelltasten-Warnung: trennt Tippfehler von echten Login-Problemen */
.loginbox .pwwrap{position:relative;display:flex;align-items:center}
.loginbox .pwwrap input{padding-right:88px}
.loginbox .pwwrap button{position:absolute;right:7px;background:none;border:0;color:var(--muted);
  font-size:11.5px;font-weight:800;letter-spacing:.03em;cursor:pointer;padding:6px 8px;border-radius:7px;width:auto;margin:0}
.loginbox .pwwrap button:hover{color:var(--accent);background:var(--accent-soft)}
.loginbox .hintcaps{display:none;margin-top:9px;font-size:12px;font-weight:700;color:var(--yel-ink);
  background:var(--yel-bg);border:1px solid var(--yel);border-radius:8px;padding:6px 9px}
.loginbox .hintcaps.on{display:block}
.loginbox button{margin-top:20px;width:100%;background:var(--accent);color:#fff;border:0;border-radius:99px;padding:13px;font-size:15px;font-weight:800;cursor:pointer}
.loginbox .demo{margin-top:14px;font-size:11.5px;color:var(--faint);text-align:center}

/* ---------- App-Rahmen ---------- */
.app{display:grid;grid-template-columns:226px 1fr;min-height:100vh;position:relative}
@media(max-width:980px){.app{grid-template-columns:1fr}}
.sidebar{background:var(--surface);border-right:1px solid var(--line);padding:18px 12px;display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh}
@media(max-width:980px){.sidebar{position:static;height:auto;flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line);align-items:center}}
.logo{display:flex;align-items:center;gap:10px;padding:4px 10px 18px}
.logo img{height:22px;display:block}
.logo .sub{font-size:10px;font-weight:800;letter-spacing:.08em;color:var(--faint);text-transform:uppercase}
.logo .yr{margin-left:auto;font-size:10px;font-weight:700;color:var(--faint);border:1px solid var(--line);border-radius:99px;padding:2px 8px}
.nav{display:flex;flex-direction:column;gap:2px}
@media(max-width:980px){.nav{flex-direction:row}}
.nav a{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--r-sm);color:var(--muted);font-weight:650;font-size:13.5px;white-space:nowrap;cursor:pointer;text-decoration:none}
.nav a svg{width:16px;height:16px;flex:none;opacity:.72}
.nav a:hover{background:var(--surface2);color:var(--ink)}
.nav a.on{background:var(--accent-soft);color:var(--accent)} .nav a.on svg{opacity:1}
.nav .cnt{margin-left:auto;font-size:10.5px;font-weight:800;background:var(--err);color:#fff;border-radius:99px;padding:1px 7px}
.nav .cnt.y{background:var(--yel);color:var(--yel-ink)}
.nav .cnt:empty{display:none}
.sidefoot{margin-top:auto;padding:10px;font-size:11.5px;color:var(--faint);display:grid;gap:4px}
.sidefoot .row{display:flex;gap:8px;align-items:center}
.sidefoot .sync{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}
.sidefoot .sync.warn{background:var(--yel)} .sidefoot .sync.off{background:var(--faint)}
/* Analoguhr (Europe/Berlin) — ruhig gehalten, gleiche Linienstärken wie die Nav-Icons */
.sidefoot .uhrzeile{gap:11px;align-items:center;font-variant-numeric:tabular-nums;letter-spacing:.02em;color:var(--muted);font-weight:650;font-size:12.5px}
.uhr{flex:none;display:block}
.uhr .uz{fill:var(--surface);stroke:var(--line2);stroke-width:1.4}
.uhr .ut line{stroke:var(--muted);stroke-width:1.6;stroke-linecap:round}
.uhr .ut5 line{stroke:var(--line2);stroke-width:1;stroke-linecap:round}
.uhr .uh{stroke:var(--ink);stroke-width:2.6;stroke-linecap:round}
.uhr .um{stroke:var(--ink);stroke-width:1.8;stroke-linecap:round}
/* Sekundenzeiger mit Gegengewicht — auf einen Blick als laufende Uhr erkennbar */
.uhr .us{stroke:var(--err);stroke-width:1.2;stroke-linecap:round}
.uhr .uc{fill:var(--ink)}
.uhr .ucs{fill:var(--err)}
@media(max-width:980px){.sidefoot{display:none}}
.main{display:flex;flex-direction:column;min-width:0}
.topbar{display:flex;align-items:center;gap:16px;padding:15px var(--pad);border-bottom:1px solid var(--line);background:var(--surface);position:sticky;top:0;z-index:20}
.topbar h1{font-weight:var(--wd);font-size:19px;letter-spacing:-.01em}
.search{margin-left:auto;display:flex;gap:8px;align-items:center;background:var(--surface2);border:1px solid var(--line);border-radius:var(--r-sm);padding:7px 12px;min-width:230px}
.search input{border:0;outline:0;background:transparent;font-family:inherit;font-size:12.5px;color:var(--ink);width:100%}
.user{display:flex;gap:8px;align-items:center;font-size:12.5px;font-weight:700;cursor:pointer}
.user .av{width:29px;height:29px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-size:11px;font-weight:800}
.content{padding:var(--pad);display:grid;gap:var(--pad);align-content:start;width:100%}
.screen{display:none}.screen.on{display:grid;gap:var(--pad)}
.demobanner{background:var(--yel-bg);border:1px solid var(--yel);border-radius:var(--r-sm);padding:10px 15px;font-size:13px;font-weight:650;color:var(--yel-ink)}

/* ---------- Bausteine ---------- */
.kpis{display:grid;grid-template-columns:repeat(5,1fr);gap:13px}
@media(max-width:1200px){.kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.kpis{grid-template-columns:repeat(2,1fr)}}
.kpi{background:var(--surface);border-radius:var(--r);padding:15px 17px;box-shadow:var(--shadow);cursor:pointer}
.kpi .l{font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--faint)}
.kpi .v{font-weight:var(--wd);font-size:28px;letter-spacing:-.02em;margin-top:2px;font-variant-numeric:tabular-nums}
.kpi .v small{font-size:14px;color:var(--faint);font-weight:600}
.kpi .s{font-size:12px;color:var(--muted)}
.kpi .s.up{color:var(--ok)} .kpi .s.yc{color:var(--yel-ink)} .kpi .s.ec{color:var(--err)}
.card{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.card .hd{display:flex;align-items:center;gap:10px;padding:14px 17px;border-bottom:1px solid var(--line);flex-wrap:wrap}
.card .hd h2{font-weight:var(--wd);font-size:15px}
.card .hd .hint{margin-left:auto;font-size:12px;color:var(--faint)}
.card .bd{padding:15px 17px}
.frow{display:grid;grid-template-columns:180px 1fr;gap:6px 16px;align-items:center;padding:9px 0;border-bottom:1px dashed var(--line)}
.frow:last-of-type{border-bottom:0}
.frow .sl{font-size:13px;font-weight:750;white-space:nowrap;grid-row:span 2}
.frow .sl small{display:block;font-weight:500;color:var(--faint);font-size:11px}
.bar{display:flex;height:22px;border-radius:7px;overflow:hidden;background:var(--surface2);border:1px solid var(--line);position:relative}
.bar>i{height:100%}
.bar .s3{background:var(--seg3)} .bar .s2{background:var(--seg2)} .bar .s1{background:var(--seg1)}
.bar .cap{position:absolute;top:0;bottom:0;width:3px;margin-left:-1.5px;background:var(--err);opacity:.95;z-index:3}
.bar .cap2{position:absolute;top:0;bottom:0;border-left:2px dashed rgba(30,30,45,.45);z-index:3}
.bar.nostat{background:repeating-linear-gradient(45deg,var(--surface2),var(--surface2) 5px,var(--line) 5px,var(--line) 10px)}
.frow .nums{font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.frow .nums b{color:var(--seg3)}
.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:12px;color:var(--muted);padding-top:12px}
.legend i{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.todos{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(max-width:1100px){.todos{grid-template-columns:1fr 1fr}}
@media(max-width:700px){.todos{grid-template-columns:1fr}}
.todo{display:flex;align-items:center;gap:13px;background:var(--surface);border-left:5px solid var(--line2);border-radius:var(--r-sm);padding:13px 15px;cursor:pointer;box-shadow:var(--shadow);transition:.1s}
.todo:hover{transform:translateX(2px)}
.todo .n{font-weight:var(--wd);font-size:21px;min-width:26px;text-align:center;font-variant-numeric:tabular-nums}
.todo .tx b{display:block;font-size:13.5px}
.todo .tx span{font-size:12px;color:var(--muted)}
.todo .go{margin-left:auto;color:var(--faint);font-weight:800}
.todo.acc{border-left-color:var(--accent)} .todo.red{border-left-color:var(--err)}
.todo.yel{border-left-color:var(--yel);background:var(--yel-bg)} .todo.vio{border-left-color:var(--grp)} .todo.blu{border-left-color:var(--info)}
.chips{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.chip{border:1px solid var(--line);background:var(--surface);border-radius:99px;padding:7px 14px;font-size:12.5px;font-weight:650;color:var(--muted);cursor:pointer}
.chip.on{background:var(--accent);border-color:var(--accent);color:#fff}
.chip .c{opacity:.65;font-variant-numeric:tabular-nums}
table{width:100%;border-collapse:collapse;font-size:13.5px}
th{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);font-weight:750;text-align:left;padding:10px 13px;border-bottom:1px solid var(--line);white-space:nowrap;cursor:pointer}
td{padding:10px 13px;border-bottom:1px solid var(--line);white-space:nowrap;font-variant-numeric:tabular-nums}
tr:last-child td{border-bottom:0}
tbody tr{cursor:pointer} tbody tr:hover{background:var(--surface2)}
.tblwrap{overflow-x:auto}
.tfoot{display:flex;justify-content:space-between;align-items:center;padding:10px 15px;border-top:1px solid var(--line);font-size:12px;color:var(--faint)}
.pill{display:inline-block;font-size:11px;font-weight:750;border-radius:99px;padding:3.5px 10px;white-space:nowrap}
.pill.ok{background:var(--ok-bg);color:var(--ok)} .pill.acc{background:var(--accent);color:#fff}
.pill.mut{background:var(--surface2);color:var(--muted);border:1px solid var(--line)}
.pill.yel{background:var(--yel-bg);color:var(--yel-ink);border:1px solid var(--yel)}
.pill.err{background:var(--err-bg);color:var(--err)} .pill.info{background:var(--info-bg);color:var(--info)} .pill.grp{background:var(--grp-bg);color:var(--grp)}
.age{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;border-radius:5px;padding:2px 7px;margin-left:6px}
.age.warn{background:var(--yel-bg);color:var(--yel-ink);border:1px solid var(--yel)}
.age.hot{background:var(--err-bg);color:var(--err)}
.kw{display:inline-block;font-size:11px;font-weight:650;background:var(--surface2);border:1px solid var(--line);border-radius:5px;padding:2px 8px;color:var(--muted);margin-right:4px}
.dot{display:inline-block;width:9px;height:9px;border-radius:50%}
.dot.g{background:var(--ok)} .dot.y{background:var(--yel)} .dot.r{background:var(--err)}
.mutx{color:var(--faint)}
.btn{border:1.5px solid var(--accent);background:var(--surface);color:var(--accent);border-radius:99px;padding:9px 14px;font-size:12.5px;font-weight:750;cursor:pointer;text-align:center}
.btn.pri{background:var(--accent);color:#fff}
.btn.ghost{border-color:var(--line);color:var(--muted)}
.btn.dngr{border-color:var(--err);color:var(--err);background:var(--surface)}
.btn.big{padding:12px 18px;font-size:14px}
.btn.sm{padding:5px 11px;font-size:11.5px}
.btn:disabled{opacity:.5;cursor:default}

/* ---------- Profil-Overlay ---------- */
.scrim{position:fixed;inset:0;background:rgba(20,26,36,.35);z-index:60;display:none}
.scrim.on{display:block}
.prof{position:fixed;top:0;right:0;bottom:0;width:600px;max-width:96%;background:var(--surface);box-shadow:-24px 0 60px rgba(0,0,0,.22);z-index:70;display:none;overflow:auto;padding:26px}
.prof.on{display:block}
.prof .close{position:absolute;top:16px;right:16px;border:1px solid var(--line);background:var(--surface2);border-radius:9px;width:32px;height:32px;cursor:pointer;font-weight:800;color:var(--muted);font-size:14px}
.prof .who{display:flex;gap:14px;align-items:center;padding-bottom:16px;border-bottom:1px solid var(--line);margin-bottom:16px}
.prof .who .av{width:54px;height:54px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;font-weight:800;font-size:18px;flex:none}
.prof .who b{font-weight:var(--wd);font-size:19px;display:block;letter-spacing:-.01em}
.prof .who small{color:var(--faint);font-size:12px}
.prof .who .pill{margin-left:auto}
.prow2{display:flex;gap:11px;align-items:center;padding:7px 0;font-size:14px}
.prow2 .ic{width:30px;height:30px;border-radius:9px;background:var(--surface2);border:1px solid var(--line);display:grid;place-items:center;font-size:13px;flex:none}
.prow2 a{color:var(--ink);font-weight:700;text-decoration:none}
.prow2 a:hover{text-decoration:underline;color:var(--accent)}
.prof h4{font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);margin:16px 0 8px}
.prof .box{background:var(--surface2);border:1px solid var(--line);border-radius:var(--r-sm);padding:12px 14px;font-size:13.5px;line-height:1.6}
.prof select,.prof textarea,.prof input[type=text]{width:100%;padding:12px 14px;border:1.5px solid var(--line2);border-radius:var(--r-sm);font-size:14px;background:var(--surface);color:var(--ink);font-family:inherit;font-weight:500}
.prof textarea{min-height:70px;resize:vertical}
.klaer{border:1.5px solid var(--yel);background:var(--yel-bg);border-radius:var(--r-sm);padding:13px 15px;font-size:13px;line-height:1.55}
.klaer.rot{border-color:var(--err);background:var(--err-bg)}
.klaer b{display:block;margin-bottom:3px}
.hist{border-left:2px solid var(--line);margin-left:5px;padding-left:15px;display:grid;gap:10px}
.hist .h{position:relative;font-size:13px;color:var(--muted)}
.hist .h::before{content:"";position:absolute;left:-19.5px;top:5px;width:7px;height:7px;border-radius:50%;background:var(--line2)}
.hist .h b{color:var(--ink)} .hist .h.hot::before{background:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.pacts{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:18px}
.pacts .wide{grid-column:1/-1}
.savedmsg{display:none;margin-top:8px;font-size:12.5px;color:var(--ok);font-weight:700}
.savedmsg.on{display:block}

/* ---------- Gruppen ---------- */
.gcards{display:grid;grid-template-columns:repeat(auto-fill,minmax(560px,1fr));gap:14px}
.gc .ghead{display:flex;align-items:center;gap:10px;padding:13px 16px;border-bottom:1px solid var(--line)}
.gc .ghead b{font-weight:var(--wd);font-size:15px}
.gc .ghead .pill{margin-left:auto}
.member{display:grid;grid-template-columns:1fr auto;gap:6px;align-items:center;padding:7px 0;border-bottom:1px dashed var(--line);font-size:13px}
.member:last-of-type{border-bottom:0}
.member b{font-weight:700;cursor:pointer} .member b:hover{color:var(--accent);text-decoration:underline}
.member small{color:var(--faint);display:block;font-size:11px}
.mslots{display:flex;gap:4px}
.ms{font-size:10px;font-weight:800;border-radius:4px;padding:2px 6px;background:var(--surface2);border:1px solid var(--line);color:var(--faint);white-space:nowrap}
.ms.on{background:var(--accent);border-color:var(--accent);color:#fff}
.gfoot{display:flex;gap:8px;padding-top:11px;flex-wrap:wrap}
.schnitt{font-size:12.5px;padding:9px 12px;border-radius:var(--r-sm)}
.schnitt.ok{background:var(--ok-bg);color:var(--ok);font-weight:700}
.schnitt.bad{background:var(--err-bg);color:var(--err);font-weight:700}

/* ---------- Planung ---------- */
.ptabs{display:flex;gap:8px;flex-wrap:wrap}
.ptab{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);padding:8px 15px;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer}
.ptab.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.ppanel{display:none}.ppanel.on{display:grid;gap:var(--pad)}
.rtool{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.canvas{position:relative;height:460px;background:repeating-linear-gradient(0deg,transparent,transparent 21px,var(--line) 21px,var(--line) 22px),repeating-linear-gradient(90deg,transparent,transparent 21px,var(--line) 21px,var(--line) 22px);border-radius:var(--r-sm);border:1px solid var(--line);overflow:hidden;touch-action:none}
.cr{position:absolute;border:2px solid var(--line2);border-radius:9px;background:rgba(255,255,255,.75);font-size:11px;font-weight:800;color:var(--muted);user-select:none}
.cr.editing{cursor:move}
.cr.sel{border-color:var(--accent)}
.cr .rn{padding:6px 9px 2px;display:block;pointer-events:none}
.cr .rn small{font-weight:600;color:var(--faint)}
.cr.quiet{border-style:dashed}
.cr .rsz{position:absolute;right:-6px;bottom:-6px;width:16px;height:16px;border-radius:5px;background:var(--accent);cursor:nwse-resize;display:none}
.cr.sel .rsz{display:block}
.stpos{position:absolute;width:34px;height:34px;border-radius:8px;background:var(--surface);border:2px solid var(--accent);color:var(--accent);display:grid;place-items:center;font-size:11px;font-weight:800;cursor:grab;box-shadow:var(--shadow);user-select:none}
.stpos.t{border-color:var(--teamer);color:var(--teamer)}
.rank{display:grid;gap:6px;max-width:620px}
.rk{display:flex;gap:10px;align-items:center;background:var(--surface2);border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 13px;font-size:13.5px;cursor:grab}
.rk.dragging{opacity:.4}
.rk .h{color:var(--faint);letter-spacing:2px;font-size:11px}
.rk .no{font-weight:800;font-variant-numeric:tabular-nums;width:24px;color:var(--faint)}
.rk b{font-weight:700}
.rk .lvl{margin-left:auto;font-size:10.5px;font-weight:800;border-radius:5px;padding:2px 8px;cursor:pointer}
.rk .lvl.a{background:var(--ok-bg);color:var(--ok)} .rk .lvl.b{background:var(--info-bg);color:var(--info)} .rk .lvl.c{background:var(--grp-bg);color:var(--grp)}
.never{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.nv{display:inline-flex;gap:7px;align-items:center;background:var(--err-bg);color:var(--err);border-radius:99px;padding:5px 12px;font-size:12px;font-weight:700}
.nv i{cursor:pointer;font-style:normal;opacity:.7}
.pairwrap{display:grid;gap:14px}
.paircards{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:10px}
.pc2{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 11px;box-shadow:var(--shadow)}
.pc2 .n{font-size:10.5px;font-weight:800;letter-spacing:.06em;color:var(--faint);text-transform:uppercase;display:flex;justify-content:space-between;margin-bottom:7px}
.pers{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:650;border:1px solid var(--line);background:var(--surface2);border-radius:7px;padding:6px 9px;margin-top:5px;cursor:pointer}
.pers.sel{border-color:var(--accent);background:var(--accent-soft)}
.pers .lv{margin-left:auto;font-size:10px;font-weight:800;border-radius:4px;padding:1px 6px}
.pers .lv.a{background:var(--ok-bg);color:var(--ok)}.pers .lv.b{background:var(--info-bg);color:var(--info)}.pers .lv.c{background:var(--grp-bg);color:var(--grp)}
.pc2.coll{border-color:var(--err);box-shadow:0 0 0 3px var(--err-bg)}
.collmsg{font-size:11.5px;color:var(--err);font-weight:700;margin-top:7px}

/* ---------- Live-Board ---------- */
.boardbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.slot-t{border:1px solid var(--line);background:var(--surface);border-radius:var(--r-sm);padding:7px 13px;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap}
.slot-t.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.slot-t.locked{opacity:.55}
.slot-t .warnb{color:var(--err);font-weight:900;margin-left:4px}
.rundesw{margin-left:auto;display:flex;gap:6px;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:5px}
.rundesw span{padding:8px 20px;font-size:13px;font-weight:800;color:var(--muted);cursor:pointer;border-radius:8px}
.rundesw span.on{background:var(--accent);color:#fff;box-shadow:var(--shadow)}
.planstat{display:flex;gap:12px;align-items:center;flex-wrap:wrap;background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);padding:12px 16px;font-size:13px}
.planstat .st1{font-weight:800;color:var(--ok)}
.planstat .st0{font-weight:800;color:var(--muted)}
.planstat .upd{background:var(--info-bg);color:var(--info);font-weight:750;border-radius:99px;padding:3px 11px;font-size:11.5px}
.checkstat{font-size:12.5px;color:var(--muted)} .checkstat b{color:var(--ink);font-variant-numeric:tabular-nums}
.rooms{display:grid;grid-template-columns:1fr;gap:14px}
.room{border:1.5px dashed var(--line2);border-radius:var(--r);padding:12px;background:rgba(255,255,255,.45)}
.room h3{font-size:11px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 2px 10px;display:flex;justify-content:space-between;gap:8px}
.room h3 small{font-weight:600;letter-spacing:0;text-transform:none;color:var(--faint)}
.stations{display:grid;grid-template-columns:repeat(auto-fill,minmax(235px,1fr));gap:10px}
@media(max-width:640px){.stations{grid-template-columns:1fr}}
.st{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 11px;box-shadow:var(--shadow)}
.st .n{font-size:10.5px;font-weight:800;letter-spacing:.06em;color:var(--faint);text-transform:uppercase;display:flex;justify-content:space-between;margin-bottom:8px}
.st.warned{border-color:var(--err);box-shadow:0 0 0 3px var(--err-bg)}
.mag{display:flex;align-items:center;gap:8px;font-size:12.5px;font-weight:650;border-radius:7px;padding:5px 8px;margin-top:5px;border:1px solid var(--line);background:var(--surface);cursor:pointer}
.mag:hover{border-color:var(--accent)}
.mag .rl{width:20px;height:20px;border-radius:6px;display:grid;place-items:center;font-size:9.5px;font-weight:900;flex:none}
.mag.coach{background:#E9EDF5;border-color:#C6D0DF}
.mag.coach .rl{background:var(--coach);color:#fff}
.mag.beob{background:#F3F5E4;border-color:#CFD3A6}
.mag.beob .rl{background:var(--beob);color:#fff}
.mag.coachee .rl{background:var(--surface);border:1.5px solid var(--line2);color:var(--muted)}
.mag.tmr{background:#E3F1F5;border-color:#A9D0DC}
.mag.tmr .rl{background:var(--teamer);color:#fff}
.mag .okk{margin-left:auto;color:var(--ok);font-weight:900;font-size:12.5px}
.mag .no{margin-left:auto;color:var(--faint);font-weight:700;font-size:10.5px}
.mag .nsx{margin-left:auto;color:var(--err);font-weight:900;font-size:12px}
.mag.conflict{border-color:var(--err);background:var(--err-bg)}
.warnwrap{border:1.5px solid #E7B5AE;border-radius:var(--r);overflow:hidden;background:var(--surface);box-shadow:var(--shadow)}
.warnbar{display:flex;gap:10px;align-items:center;background:var(--err-bg);padding:11px 14px;font-size:13px}
.warnbar b{color:var(--err)}
.staging{display:flex;gap:9px;align-items:center;flex-wrap:wrap;border:1.5px dashed var(--line2);border-radius:var(--r);padding:11px 13px;font-size:12.5px;color:var(--muted);background:rgba(255,255,255,.4)}
.stagechip{display:inline-flex;align-items:center;gap:7px;background:var(--surface);border:1px solid var(--line2);border-radius:8px;padding:6px 10px;font-size:12.5px;font-weight:650;cursor:pointer}
.stagechip .b{font-size:9.5px;font-weight:800;color:var(--yel-ink);background:var(--yel-bg);border:1px solid var(--yel);border-radius:4px;padding:1px 6px}
.boardlegend{display:flex;gap:14px;flex-wrap:wrap;font-size:11.5px;color:var(--muted);margin-left:auto;align-items:center}
.boardlegend .rl{display:inline-grid;place-items:center;width:16px;height:16px;border-radius:4px;font-size:8.5px;font-weight:900;margin-right:4px;vertical-align:-3px}

/* ---------- Check-in ---------- */
.ci-wrap{max-width:1180px;width:100%;display:grid;gap:14px}
.ci-head{display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.ci-head .big{font-weight:var(--wd);font-size:22px}
.ci-grid{display:grid;grid-template-columns:1fr 290px;gap:16px;align-items:start}
@media(max-width:950px){.ci-grid{grid-template-columns:1fr}}
.ci-side{display:grid;gap:14px}
.ci-search{display:flex;gap:10px;align-items:center;background:var(--surface);border:2px solid var(--accent);border-radius:16px;padding:14px 18px;box-shadow:var(--shadow)}
.ci-search input{border:0;outline:0;flex:1;font-size:19px;font-weight:650;font-family:inherit;color:var(--ink);background:transparent}
.ci-list{display:grid;gap:10px}
.ci{background:var(--surface);border-radius:var(--r);box-shadow:var(--shadow);padding:13px 16px;display:flex;gap:14px;align-items:center;flex-wrap:wrap}
.ci .av{width:42px;height:42px;border-radius:50%;background:var(--surface2);border:1px solid var(--line);display:grid;place-items:center;font-weight:800;font-size:14px;color:var(--muted);flex:none;cursor:pointer}
.ci .nm{cursor:pointer}
.ci .nm b{font-size:16px;display:block}
.ci .nm small{color:var(--faint);font-size:12px}
.ci .stinfo{display:flex;gap:8px;flex-wrap:wrap;font-size:12px}
.ci .stx{background:var(--surface2);border:1px solid var(--line);border-radius:7px;padding:4px 10px;font-weight:700}
.ci .stx.chg{background:var(--info-bg);border-color:var(--info);color:var(--info)}
.ci .doit{margin-left:auto;display:flex;gap:8px;align-items:center}
.ci.done{outline:2px solid var(--ok);outline-offset:-2px}
.ci.noshow{outline:2px solid var(--err);outline-offset:-2px}
.ci .undo{border:1px solid var(--line);background:var(--surface2);border-radius:9px;padding:7px 11px;font-size:11.5px;font-weight:700;color:var(--muted);cursor:pointer}
.stateb{font-weight:800;font-size:13.5px}.stateb.okc{color:var(--ok)}.stateb.nsc{color:var(--err)}

/* ---------- Einstellungen ---------- */
.setgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;align-items:start}
.kv{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px dashed var(--line);font-size:13px}
.kv:last-child{border-bottom:0}
.kv b{font-variant-numeric:tabular-nums;text-align:right}
.tag{font-size:10.5px;font-weight:800;border-radius:5px;padding:2px 8px;background:var(--ok-bg);color:var(--ok)}
.tag.warn{background:var(--yel-bg);color:var(--yel-ink)}
.tag.err{background:var(--err-bg);color:var(--err)}

/* ---------- Toast & Popup ---------- */
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;border-radius:12px;padding:12px 20px;font-size:13.5px;font-weight:650;box-shadow:0 10px 30px rgba(0,0,0,.3);z-index:200;display:none}
.toast.on{display:block}
.pop{position:fixed;z-index:150;background:var(--surface);border-radius:12px;box-shadow:0 14px 50px rgba(0,0,0,.25);border:1px solid var(--line);max-height:340px;overflow:auto;min-width:260px;display:none}
.pop.on{display:block}
.pop .pi{padding:9px 14px;font-size:13px;cursor:pointer;display:flex;gap:8px;align-items:center;border-bottom:1px solid var(--line)}
.pop .pi:last-child{border-bottom:0}
.pop .pi:hover{background:var(--accent-soft)}
.pop .pi small{color:var(--faint);margin-left:auto}
.pop .ph{padding:8px 14px;font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);background:var(--surface2);position:sticky;top:0}

/* ---------- v0.2: breites Profil, Kann-Chips, Kennt-Matching, Kommentare, Drag ---------- */
.prof{width:min(1000px,96vw);padding:30px 34px}
.pgrid{display:grid;grid-template-columns:1fr 1fr;gap:4px 34px;align-items:start}
@media(max-width:800px){.pgrid{grid-template-columns:1fr}}
.pfull{grid-column:1/-1}
.terminbox{border-radius:var(--r-sm);padding:13px 16px;font-size:14px;margin-bottom:4px}
.terminbox b{font-size:16px}
.terminbox.ok{background:var(--ok-bg);border:1.5px solid #9ED4B8;color:var(--ok)}
.terminbox.wait{background:var(--info-bg);border:1.5px solid #C9BCEB;color:var(--info)}
.terminbox.none{background:var(--surface2);border:1.5px dashed var(--line2);color:var(--muted)}
.slotpick{display:flex;gap:7px;flex-wrap:wrap}
.sp{border:1.5px solid var(--line2);background:var(--surface);border-radius:9px;padding:8px 13px;font-size:13px;font-weight:750;color:var(--muted);cursor:pointer}
.sp.kann{border-color:var(--accent);color:var(--accent)}
.sp.on{background:var(--accent);border-color:var(--accent);color:#fff}
.sp.warn3{border-color:var(--yel);color:var(--yel-ink)}
.sp .tiny{display:block;font-size:9.5px;font-weight:700;opacity:.75}
.kannchips{display:flex;gap:6px;flex-wrap:wrap}
.kc{border:1.5px solid var(--line);background:var(--surface2);border-radius:8px;padding:6px 11px;font-size:12px;font-weight:750;color:var(--faint);cursor:pointer;user-select:none}
.kc.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}
.acqrow{display:flex;gap:9px;align-items:center;padding:7px 0;border-bottom:1px dashed var(--line);font-size:13.5px;flex-wrap:wrap}
.acqrow:last-child{border-bottom:0}
.acqrow .st2{font-size:10.5px;font-weight:800;border-radius:5px;padding:2px 8px}
.acqrow .st2.conf{background:var(--ok-bg);color:var(--ok)}
.acqrow .st2.heur{background:var(--yel-bg);color:var(--yel-ink)}
.acqrow .mini{border:1px solid var(--line2);background:var(--surface);border-radius:7px;padding:4px 10px;font-size:11px;font-weight:750;cursor:pointer;color:var(--muted)}
.acqrow .mini.ok2{color:var(--ok);border-color:#9ED4B8}
.acqrow .mini.no2{color:var(--err);border-color:#E7B5AE}
.cmt{display:grid;gap:8px}
.cmt .c1{background:var(--surface2);border:1px solid var(--line);border-radius:var(--r-sm);padding:9px 12px;font-size:13px}
.cmt .c1 small{display:block;color:var(--faint);font-size:11px;margin-top:2px}
.cmtadd{display:flex;gap:8px}
.cmtadd input{flex:1;padding:11px 13px;border:1.5px solid var(--line2);border-radius:9px;font-size:13.5px;font-family:inherit}
.klaerdone{border:1.5px solid var(--line2);background:var(--surface2);border-radius:var(--r-sm);padding:11px 14px;font-size:12.5px;color:var(--muted)}
.klaerdone b{color:var(--ink)}
.searchclear{cursor:pointer;color:var(--faint);font-weight:800;padding:0 2px}
.stpos.sel{outline:3px solid var(--accent-soft);border-color:var(--info)}
/* Rangliste: verschieben ohne Drag (▲▼) und Direktsprung per Klick auf die Zahl */
.rkcell{white-space:nowrap}
.rkjump{cursor:pointer;border-bottom:1px dashed var(--line2);padding:1px 3px;border-radius:4px;font-variant-numeric:tabular-nums;color:var(--muted)}
.rkjump:hover{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.rkarr{display:inline-flex;flex-direction:column;margin-left:5px;vertical-align:middle;line-height:1}
.rkarr i{font-style:normal;font-size:8px;cursor:pointer;color:var(--faint);padding:0 3px;user-select:none}
.rkarr i:hover{color:var(--accent)}
/* Feedback-Erfassung: schmale Zahlenfelder, Tastatur-Fluss, erledigte Zeilen abgesetzt */
.fbtbl td,.fbtbl th{padding:5px 6px;font-size:12.5px}
.fbin{width:42px;text-align:center;padding:6px 2px;border:1.5px solid var(--line2);border-radius:7px;font-family:inherit;
  font-size:14px;font-weight:700;font-variant-numeric:tabular-nums;background:var(--surface);color:var(--ink)}
.fbin:focus{border-color:var(--accent);outline:2px solid var(--accent-soft)}
.fbin.bad{border-color:var(--err);background:var(--err-bg)}
.fbsel{padding:5px;border:1.5px solid var(--line2);border-radius:7px;font-family:inherit;font-size:12px;background:var(--surface);color:var(--ink)}
.fbnotiz{width:100%;min-width:120px;padding:6px 8px;border:1.5px solid var(--line2);border-radius:7px;font-family:inherit;font-size:12px;background:var(--surface);color:var(--ink)}
tr.fbdone{background:var(--ok-bg,#EAF6EE)}
/* Bewertung ohne Board-Belegung: sichtbar machen, damit sie korrigiert oder gelöscht werden kann */
tr.fbweg{background:var(--yel-bg)}
tr.fbweg td:first-child{box-shadow:inset 3px 0 0 var(--yel)}
.fbstat{text-align:center;font-weight:800;white-space:nowrap}
.fbdel{cursor:pointer;opacity:.5;font-size:13px;margin-left:2px}
.fbdel:hover{opacity:1}
/* Verlaufs-Chart (ersetzt die Sparkline aus dem alten Excel-Sheet) */
.fbspark{display:block}
.fbspark .fbline{fill:none;stroke:var(--accent);stroke-width:1.6}
.fbspark .fbref{stroke:var(--line2);stroke-width:1;stroke-dasharray:2 2}
.fbspark .fbdot{fill:var(--accent)}
.fbspark .fbdot.bad{fill:var(--err)}
.fbspark .fbdot.good{fill:var(--ok)}
/* Bewertungs-Badge am Coach (Teams/Board): Note auf einen Blick beim Zuteilen */
.fbbadge{display:inline-block;margin-left:5px;padding:0 5px;border-radius:99px;font-size:9.5px;font-weight:800;
  font-variant-numeric:tabular-nums;vertical-align:middle;border:1px solid transparent}
.fbbadge.ok{background:var(--ok-bg,#EAF6EE);color:var(--ok);border-color:var(--ok)}
.fbbadge.info{background:var(--accent-soft,#E8EEFB);color:var(--accent);border-color:var(--accent)}
.fbbadge.err{background:var(--err-bg);color:var(--err);border-color:var(--err)}
.mag.dragover,.pers.dragover{outline:2.5px dashed var(--accent);outline-offset:2px}
.mag[draggable=true]{cursor:grab}
.csize{display:flex;gap:5px;margin-left:auto}
.csize .chip{padding:5px 10px;font-size:11px}
.tn-slotchips{display:flex;gap:5px;flex-wrap:wrap}
.tsc{border:1.5px solid var(--line);background:var(--surface2);border-radius:7px;padding:4px 9px;font-size:11px;font-weight:800;color:var(--faint);cursor:pointer;user-select:none}
.tsc.on{background:var(--ok-bg);border-color:#9ED4B8;color:var(--ok)}
.ruhigbtn{cursor:pointer;font-size:16px;opacity:.35}
.ruhigbtn.on{opacity:1}

/* v0.5: Overlay-Fix, 3 Ablage-Zonen, Flag */
.prof .who{padding-right:46px}
.prof .close{z-index:5}
.stages{display:grid;grid-template-columns:1.2fr 1.2fr .8fr;gap:12px}
@media(max-width:1000px){.stages{grid-template-columns:1fr}}
.stagezone{border:1.5px dashed var(--line2);border-radius:var(--r);padding:10px 12px;background:rgba(255,255,255,.4);min-height:64px}
.stagezone h5{font-size:10.5px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted);margin:0 0 8px}
.stagezone .zc{display:flex;gap:8px;flex-wrap:wrap}
.stagezone.dragover{outline:2.5px dashed var(--accent);outline-offset:2px}
.flagbtns{display:flex;gap:8px;margin-top:8px}

/* v0.6: Ampel bis aufs Board, sortierbare Spalten */
.fdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:1px;box-shadow:0 0 0 2px rgba(255,255,255,.65)}
.fdot.fg{background:#E5A50A}
.fdot.fr{background:var(--err,#C0392B)}
.thsort{cursor:pointer;user-select:none;white-space:nowrap}
.thsort:hover{color:var(--accent)}

/* v0.7: Teamer überall im Petrol-Ton — egal ob als Coach, Beobachter oder 1:1-Coachee platziert */
.mag.astm{background:#E3F1F5;border-color:#A9D0DC}
.mag.astm .rl{background:var(--teamer);color:#fff;border:none}
.stagechip.tmchip{background:#E3F1F5;border-color:#A9D0DC;color:#1F5E70}

/* ===== v0.8: Planungs-Umbau — Rot/Gelb, Gesamtplan, Tooltip, Adjazenz ===== */
/* Gelbe Konflikt-Stufe (prüfen/abwägen) neben dem bestehenden Rot (lösen) */
.st.warned-y{border:1.5px solid var(--yel);box-shadow:0 0 0 3px var(--yel-bg)}
.mag.conflict-y{border-color:var(--yel);background:var(--yel-bg)}
.mag.mkm-rot{box-shadow:0 0 0 2px var(--err)}
.mag.mkm-gelb{box-shadow:0 0 0 2px var(--yel)}
.warnb.yel{background:var(--yel-bg);color:var(--yel-ink);border-color:var(--yel)}

/* Abwesenheits-Badge: ausgeschrieben, rot umrandet; Chip gesamt abgedimmt */
.abw{display:inline-block;border:1.5px solid var(--err);color:var(--err);background:var(--err-bg);border-radius:6px;padding:0 6px;font-size:10.5px;font-weight:800;margin-left:4px;white-space:nowrap}
.chipabw{opacity:.75;border-color:#E7B5AE !important}

/* Coach-Teams Gesamtplan: 6 Spalten, Teams untereinander, Parkzone je Slot */
.gpgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;align-items:start}
.gpcol{background:var(--surface2);border:1px solid var(--line);border-radius:var(--r);padding:8px;display:grid;gap:7px;align-content:start}
.gpcol.locked{opacity:.82;background:#F3F2EE}
.gph{font-size:12px;font-weight:800;letter-spacing:.04em;display:flex;align-items:center;gap:6px;padding:2px 2px 0}
.pc3{background:var(--surface);border:1.5px solid var(--line);border-radius:9px;padding:7px 8px;display:grid;gap:5px}
.pc3 .n{font-size:10px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--faint)}
.pc3 .pers{margin:0;padding:5px 7px;font-size:12px}
.pc3.coll{border-color:#E7B5AE}
.pc3.coll-late{border-color:var(--err);box-shadow:0 0 0 3px var(--err-bg)}
.pc3.coll-late .pers{font-weight:800;color:var(--err)}
.collmsg{font-size:10.5px}
.gppark{border-top:1px dashed var(--line2);padding-top:6px;display:flex;gap:5px;flex-wrap:wrap;align-items:center;font-size:11.5px}
.gpchip{background:var(--surface);border:1px solid var(--line2);border-radius:7px;padding:3px 7px;font-size:11px;font-weight:650}
.pers.free{border-style:dashed;color:var(--faint);cursor:pointer}
.pers.free:hover{border-color:var(--accent);color:var(--accent)}

/* Custom-Tooltip: klappt nach unten auf */
.tip{position:fixed;z-index:90;max-width:330px;background:var(--surface);border:1.5px solid var(--line2);border-radius:11px;box-shadow:0 14px 34px rgba(20,25,35,.16);padding:11px 13px;font-size:12.5px;line-height:1.5;display:none;pointer-events:none}
.tip.on{display:block}
.cinfo{display:grid;gap:7px}
.cinfo .crow{display:grid;grid-template-columns:74px 1fr;gap:8px;align-items:start}
.cinfo .crow>span{font-size:10.5px;font-weight:800;letter-spacing:.04em;color:var(--faint);padding-top:1px}
.cinfo .crow>div{max-height:130px;overflow:auto}
.pophead{padding:11px 13px;border-bottom:1.5px solid var(--line);background:var(--surface2);border-radius:11px 11px 0 0;font-size:12.5px;line-height:1.5}
/* Warum ist diese Station rot/gelb? Begründung direkt im Auswahl-Kopf — nicht in der Liste oben suchen */
.pophead .popwarn{display:grid;gap:5px;margin:7px 0 2px}
.pophead .popwarn>div{font-size:12px;line-height:1.45;padding:6px 8px;border-radius:7px;border:1px solid}
.pophead .popwarn .r{background:var(--err-bg);border-color:#E7B5AE;color:#7A231A}
.pophead .popwarn .y{background:var(--yel-bg);border-color:var(--yel);color:var(--yel-ink)}
.pophead .popok{margin-top:6px;font-size:11.5px;font-weight:700;color:var(--ok)}

/* Coaches-Tabelle: Zeilen-Drag am Handle */
.rk-handle{cursor:grab;color:var(--faint);font-size:15px;width:26px;text-align:center;user-select:none}
.rk-handle.off{opacity:.3;cursor:pointer}
tr.dragging{opacity:.45;background:var(--accent-soft)}

/* Raumplan: Nachbarschafts-Linien */
.adjsvg{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
.adjline{stroke:var(--info,#4A79C9);stroke-width:1.6;stroke-dasharray:5 4;vector-effect:non-scaling-stroke;opacity:.55}

/* Check-in: AUTO-Badge am automatisch gewählten Slot */
.autob{font-size:8.5px;font-weight:900;letter-spacing:.06em;background:var(--accent);color:#fff;border-radius:4px;padding:1px 4px;vertical-align:1px}

/* v0.9: Undo, Modus-Chips, Raumplan-Overlay, manuelle Kanten */
.adjline.man{stroke:#D97706;opacity:.85}
.modech{border:1px solid var(--line2);border-radius:99px;padding:2px 9px;font-size:10px;font-weight:800;letter-spacing:.04em;color:var(--muted);cursor:pointer;text-transform:uppercase}
.modech.on{background:var(--accent-soft,#E8EEFB);border-color:var(--accent);color:var(--accent)}
.mapov{position:fixed;inset:0;z-index:85;display:none;background:rgba(20,25,35,.45);padding:4vh 4vw;align-items:center;justify-content:center}
.mapov.on{display:flex}
.mapcard{background:var(--bg);border-radius:16px;box-shadow:0 30px 80px rgba(0,0,0,.3);width:min(1150px,100%);max-height:92vh;overflow:auto}
.maphd{display:flex;align-items:center;gap:14px;padding:14px 18px;background:var(--surface);border-bottom:1.5px solid var(--line);font-size:14px}
.mapclose{margin-left:auto;cursor:pointer;font-weight:800;padding:4px 11px;border-radius:8px;border:1.5px solid var(--line2)}
/* Board-Overlay = verkleinerte Kopie des Raumplan-Editors.
   Marken skalieren mit der Fläche (2,6 % Breite, quadratisch) statt fixer Pixel — dadurch
   sieht der Plan in jeder Größe gleich aus und die Kästchen überlappen sich nie. */
.mapov .stpos{cursor:pointer;width:2.6%;height:auto;aspect-ratio:1;min-width:17px;font-size:clamp(8px,1.05vw,12px);
  border-width:1.5px;border-radius:6px;box-shadow:0 0 0 2px var(--surface),var(--shadow);z-index:2}
.mapov .stpos.empty{opacity:.5}
/* Raumname als Chip mit Hintergrund: Stationen sitzen teils direkt darunter (y≈15 %),
   ohne Hintergrund überlagern sich Text und Zahlen. */
.mapov .cr .rn{font-size:9.5px;letter-spacing:.04em;background:var(--surface);padding:1px 5px;border-radius:5px;
  box-shadow:0 1px 3px rgba(0,0,0,.08);white-space:nowrap;max-width:96%;overflow:hidden;text-overflow:ellipsis}
.st.blink{outline:3px solid var(--accent);outline-offset:3px}

/* v0.9b: Beziehungs-Highlight beim Hover (Gruppe/Kennt), vereinheitlichte Team-Stationen */
.mag.hl-grp,.stagechip.hl-grp{outline:2.5px solid #7C5CD6;outline-offset:1px}
.mag.hl-kennt,.stagechip.hl-kennt{outline:2.5px solid #D97706;outline-offset:1px}
.mag.hl-me,.stagechip.hl-me{outline:2.5px solid var(--accent);outline-offset:1px}
/* v0.9c: FESTGEHALTENE Auswahl (Klick) — bleibt beim Chooser, beim Scrollen und nach
   SSE-Updates stehen. Kräftiger als der Hover, damit beides gleichzeitig lesbar bleibt. */
.mag.sel-grp,.stagechip.sel-grp{outline:3px solid #7C5CD6;outline-offset:1px;box-shadow:0 0 0 4px rgba(124,92,214,.18)}
.mag.sel-kennt,.stagechip.sel-kennt{outline:3px solid #D97706;outline-offset:1px;box-shadow:0 0 0 4px rgba(217,119,6,.20)}
.mag.sel-me,.stagechip.sel-me{outline:3px solid var(--accent);outline-offset:1px;box-shadow:0 0 0 4px var(--accent-soft)}
/* Aktionen in der Info-Leiste (nur sichtbar, solange eine Person festgehalten ist) */
.infobar .ibsel{margin-left:auto;display:flex;gap:8px;flex:none}
.infobar .ibsel b{cursor:pointer;font-size:11.5px;font-weight:800;border:1.5px solid var(--line2);border-radius:99px;
  padding:2px 10px;background:var(--surface);white-space:nowrap}
.infobar .ibsel b:hover{border-color:var(--accent);color:var(--accent)}
/* Raumplan-Overlay: kritische Stationen der ausgewählten Person */
.maphd .mapfor{font-size:12.5px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.mapov .stpos.crit{border-color:var(--err);background:var(--err-bg);color:var(--err);
  box-shadow:0 0 0 2px var(--surface),0 0 0 5px rgba(196,55,43,.30);z-index:4}
.mapov .stpos.cwarn{border-color:var(--yel);background:var(--yel-bg);color:var(--yel-ink);
  box-shadow:0 0 0 2px var(--surface),0 0 0 5px rgba(242,194,0,.34);z-index:3}
.mapov .stpos.mine{border-color:var(--accent);background:var(--accent-soft);color:var(--accent);z-index:5}
.mapov .stpos.mine::after{content:'◆';position:absolute;top:-11px;right:-8px;font-size:10px;color:var(--accent)}
.mapov .stpos.src-kennt::before{content:'🤝';position:absolute;bottom:-11px;left:50%;transform:translateX(-50%);font-size:10px}
.mapov .stpos.src-grp::before{content:'👥';position:absolute;bottom:-11px;left:50%;transform:translateX(-50%);font-size:10px}
.mapov .stpos.crit.empty,.mapov .stpos.cwarn.empty,.mapov .stpos.mine.empty{opacity:1}

/* Overflow-Sweep: nichts rutscht mehr rechts aus den Boxen — Zeilen brechen um */
@media(max-width:640px){.gcards{grid-template-columns:1fr}}
.member{flex-wrap:wrap;row-gap:6px}
.member .mslots{flex-wrap:wrap}
.member>div:last-child{flex-wrap:wrap;min-width:0}
.mag{flex-wrap:wrap;min-width:0}
.mag>span:not(.rl){overflow-wrap:anywhere}
.pers{flex-wrap:wrap;min-width:0}
.pc3 .pers{overflow-wrap:anywhere}
.stagechip{max-width:100%;overflow-wrap:anywhere}
.gph{flex-wrap:wrap;row-gap:4px}
.planstat{flex-wrap:wrap;row-gap:8px}
.ghead{flex-wrap:wrap;row-gap:4px}
.member>div{min-width:0}

/* ===== Umgebungs-Band: „Bin ich hier auf dem Testsystem?" =====================
   Wird vom Server nur eingefügt, wenn config.json "umgebung": "test" enthält.
   In der Produktion existiert das Markup nicht — die Regeln greifen dort nie.
   Bewusst laut: Wer im Testsystem plant und glaubt, es sei live, merkt es sonst
   erst, wenn beim Event die Stationen leer sind. */
.umgebungsband{position:fixed;top:0;left:0;right:0;height:30px;z-index:300;
  background:repeating-linear-gradient(135deg,#B0261B,#B0261B 14px,#C4372B 14px,#C4372B 28px);
  color:#fff;font-size:12.5px;font-weight:800;letter-spacing:.01em;
  display:flex;align-items:center;justify-content:center;gap:8px;padding:0 14px;
  text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  box-shadow:0 2px 10px rgba(0,0,0,.25)}
/* Alles um die Bandhöhe nach unten schieben — auch die klebenden Leisten, sonst
   verschwinden Kopfzeile und Seitenleiste unter dem Band. */
body[data-umgebung=test]{padding-top:30px}
body[data-umgebung=test] .sidebar{top:30px;height:calc(100vh - 30px)}
body[data-umgebung=test] .topbar{top:30px}
body[data-umgebung=test] .netbanner{top:30px}
@media(max-width:980px){
  .umgebungsband{font-size:11px;white-space:normal;height:auto;min-height:30px;padding:5px 10px}
  body[data-umgebung=test]{padding-top:44px}
}

/* Feste Info-Leiste am unteren Rand des Live-Boards (Michaels Wahl statt Hover-Box) */
.infobar{position:fixed;left:244px;right:18px;bottom:12px;z-index:40;background:var(--surface);border:1.5px solid var(--line2);border-radius:12px;box-shadow:0 10px 30px rgba(20,25,35,.16);padding:10px 16px;display:flex;gap:16px;align-items:center;font-size:12.5px;min-height:46px}
@media(max-width:980px){.infobar{left:12px}}
.infobar .ibx{display:flex;gap:6px;align-items:flex-start;min-width:0}
.infobar .ibx>span{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
#s-board{padding-bottom:78px}

/* ===== Rollen & Rechte ===== */
/* Nur-lesen-Rollen (z. B. Counter): Editier-Controls im Coachee-Profil ausblenden */
body.noedit #prof .pacts,
body.noedit #prof .cmtadd,
body.noedit #prof .flagbtns,
body.noedit #prof .slotpick,
body.noedit #prof .terminbox button,
body.noedit #prof #p-gruppe{display:none!important}
/* Mail-Läufe-Karte nur bei Recht „mailruns" */
body:not(.can-mailruns) #card-mailruns{display:none}
/* Admin-Verwaltung */
.admform{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;align-items:center}
.admform input,.admform select{padding:9px 11px;border:1.5px solid var(--line2);border-radius:8px;font-family:inherit;font-size:13px;background:var(--surface);color:var(--ink)}
.admform button{grid-column:1/-1}
@media(max-width:640px){.admform{grid-template-columns:1fr}}
.permgrid{width:100%;border-collapse:collapse}
.permgrid th,.permgrid td{padding:8px 10px;border-bottom:1px solid var(--line);font-size:13px}
.permgrid th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--faint)}
.permgrid input[type=checkbox]{width:17px;height:17px;cursor:pointer;accent-color:var(--acc,#4a63e7)}
.rolesel{padding:5px 9px;border:1.5px solid var(--line2);border-radius:7px;font-family:inherit;font-size:12.5px;background:var(--surface);color:var(--ink);cursor:pointer}
/* Passwort-Dialog (verdeckte Eingabe + Wiederholung) */
.pwov{position:fixed;inset:0;background:rgba(20,25,35,.45);z-index:200;display:flex;align-items:center;justify-content:center}
.pwbox{background:var(--surface);border-radius:14px;box-shadow:0 18px 50px rgba(20,25,35,.3);padding:22px 24px;width:min(92vw,380px)}
.pwbox h3{margin:0 0 14px;font-size:15.5px}
.pwbox label{display:block;font-size:11px;font-weight:750;letter-spacing:.07em;text-transform:uppercase;color:var(--faint);margin:10px 0 5px}
.pwbox input{width:100%;padding:11px 13px;border:1.5px solid var(--line2);border-radius:9px;font-family:inherit;font-size:14px;background:var(--surface);color:var(--ink)}
.pwbox .pwerr{color:var(--err);font-size:12.5px;min-height:18px;margin-top:8px;font-weight:650}
.pwbox .pwbtns{display:flex;gap:9px;justify-content:flex-end;margin-top:10px}
/* Passwortfeld mit Auge-Umschalter (Sternchen ↔ Klartext) */
.pwwrap{position:relative}
.pwwrap input{width:100%;padding-right:40px}
.pweye{position:absolute;right:6px;top:50%;transform:translateY(-50%);background:none;border:0;cursor:pointer;font-size:15px;line-height:1;padding:6px;color:var(--muted)}
.pweye:hover{color:var(--ink)}

/* Feedback-Statistik: Verteilung mit Normalkurve.
   Breite begrenzt + height:auto → das SVG skaliert PROPORTIONAL. Ohne die Begrenzung
   wird es über die ganze Kartenbreite gezogen und Zahlen/Balken wirken verzerrt. */
.fbhisto{display:block;width:100%;max-width:760px;height:auto;margin:0 auto;
  background:var(--surface2);border:1px solid var(--line);border-radius:10px}
.fbhisto .hb0{stroke:var(--line2);stroke-width:1}
.fbhisto .hb{fill:var(--seg2)}
.fbhisto .hb:hover{fill:var(--seg3)}
.fbhisto .hk{fill:none;stroke:var(--info);stroke-width:2;stroke-linecap:round;opacity:.85}
.fbhisto .hm{stroke:var(--err);stroke-width:1.5;stroke-dasharray:4 3}
.fbhisto .hg{stroke:var(--line);stroke-width:1}
.fbhisto .ha{font-size:11px;fill:var(--muted);font-weight:700}
.fbhisto .hy{font-size:9.5px;fill:var(--faint)}
/* Entwicklung über die Halbtage — gleiche Regel wie beim Histogramm: proportional skalieren */
.fbverlauf{display:block;width:100%;max-width:820px;height:auto;margin:0 auto;
  background:var(--surface2);border:1px solid var(--line);border-radius:10px}
.fbverlauf .vg{stroke:var(--line);stroke-width:1}
.fbverlauf .vb{stroke:var(--seg2);stroke-width:7;stroke-linecap:round;opacity:.5}
.fbverlauf .vl{fill:none;stroke:var(--seg3);stroke-width:2.4;stroke-linejoin:round;stroke-linecap:round}
.fbverlauf .vk{fill:none;stroke:var(--info);stroke-width:1.8;stroke-dasharray:6 4;stroke-linecap:round}
.fbverlauf .vp{fill:var(--seg3);stroke:var(--surface);stroke-width:2}
.fbverlauf .vw{font-size:11.5px;font-weight:800;fill:var(--seg3)}
.fbverlauf .vx{font-size:11.5px;font-weight:700;fill:var(--ink)}
.fbverlauf .vn{font-size:9.5px;fill:var(--faint)}
.fbverlauf .vy{font-size:10px;fill:var(--muted);font-variant-numeric:tabular-nums}
/* Gelbe Hinweise quittieren: „gesehen, bewusst so gelassen" */
.wzeile{font-size:13px;display:flex;gap:8px;align-items:baseline;flex-wrap:wrap}
.wzeile.ackd{color:var(--muted);padding:3px 0}
.wack{cursor:pointer;font-size:11px;font-weight:800;letter-spacing:.02em;white-space:nowrap;
  border:1px solid var(--line2);border-radius:99px;padding:1px 9px;color:var(--muted);background:var(--surface)}
.wack:hover{border-color:var(--ok);color:var(--ok)}
.wack.alle{border-style:dashed}
/* Verbindungslampe + Offline-Banner: Ohne Netz laufen Eingaben ins Leere — das muss man SEHEN */
.netdot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--ok);box-shadow:0 0 0 3px rgba(24,128,85,.15)}
.netdot.off{background:var(--err);box-shadow:0 0 0 3px rgba(196,55,43,.2);animation:netblink 1.1s ease-in-out infinite}
@keyframes netblink{50%{opacity:.35}}
.sidefoot .row b#nettext{font-weight:800;letter-spacing:.02em}
.netbanner{display:none;position:fixed;top:0;left:0;right:0;z-index:200;background:var(--err);color:#fff;
  padding:11px 18px;font-size:13.5px;font-weight:700;text-align:center;box-shadow:0 3px 14px rgba(0,0,0,.25)}
.netbanner.on{display:block}
/* Feedback-Zeile, die noch nicht beim Server angekommen ist */
.fbtbl tr.fbpend td{background:var(--yel-bg)}
.fbtbl tr.fbpend td:first-child{box-shadow:inset 3px 0 0 var(--yel)}
.fbbadge.yel{background:var(--yel-bg);color:var(--yel-ink);border-color:var(--yel)}
/* Bewertung in der Coach-Auswahl (Live-Board): eigene Zeile statt Mini-Badge */
.fbopt{display:inline-block;margin-top:3px;font-size:11.5px;font-weight:800;padding:2px 9px;border-radius:99px;border:1px solid}
.fbopt.ok{background:var(--ok-bg);color:var(--ok);border-color:var(--ok)}
.fbopt.info{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}
.fbopt.yel{background:var(--yel-bg);color:var(--yel-ink);border-color:var(--yel)}
.fbopt.err{background:var(--err-bg);color:var(--err);border-color:var(--err)}
.fbopt.leer{background:var(--surface2);color:var(--faint);border-color:var(--line2);font-weight:700}
.fbopt .mutx{font-weight:600}
/* Coach ohne erfasste Bewertung: neutrale Marke, damit die Spalte nicht lückenhaft wirkt */
.fbbadge.leer{background:var(--surface2);color:var(--faint);border-color:var(--line2)}
/* Bewertungs-Punkt am Coach-/Beobachter-Magneten des Live-Boards.
   Farbe = Gesamtschnitt (dieselbe Skala wie überall), „!" = Ausreißer unter 3,75.
   Bewusst nur ein Punkt: Die Magnetfarbe selbst zeigt die ROLLE (Coach/Beobachter/Teamer). */
.fbdotm{display:inline-block;font-size:11px;line-height:1;vertical-align:1px;margin-left:4px;cursor:help}
.fbdotm.ok{color:var(--ok)} .fbdotm.info{color:var(--accent)}
.fbdotm.yel{color:#C9A100} .fbdotm.err{color:var(--err)}
.fbdotm i{font-style:normal;font-weight:900;font-size:10px;color:var(--err);margin-left:1px}
.fbbadge i{font-style:normal;font-weight:900;color:var(--err);margin-left:1px}
/* Sortierbare Spaltenköpfe in der Feedback-Auswertung */
th.sortk{cursor:pointer;user-select:none;white-space:nowrap}
th.sortk:hover{color:var(--accent)}
th.sortk.on{color:var(--accent)}
th.sortk .sortpfeil{opacity:.28;margin-left:3px;font-weight:600}
/* Persönlicher Coach-Link in der Coaches-Liste */
.linkbtn{cursor:pointer;font-size:11.5px;font-weight:800;white-space:nowrap;border:1px solid var(--line2);
  border-radius:99px;padding:2px 10px;color:var(--muted);background:var(--surface)}
.linkbtn:hover{border-color:var(--accent);color:var(--accent)}
